代码之家  ›  专栏  ›  技术社区  ›  Soerendip

线性符合pandas.datetime64值?

  •  3
  • Soerendip  · 技术社区  · 6 年前

    我有一个数据框,有两列(年龄、日期),指示一个人的年龄和当前日期。我想根据这些数据估计出生日期。我想用一个线性模型来找到截获,但它不是开箱即用的。熊猫不支持 ols()

    import pandas as pd
    import seaborn as sns
    from pandas import Timestamp
    
    age = [30, 31, 31, 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 34, 34]
    date = [Timestamp('2001-02-10 00:01:00'),
     Timestamp('2001-11-12 00:01:00'),
     Timestamp('2002-02-27 00:01:00'),
     Timestamp('2002-07-05 00:01:00'),
     Timestamp('2002-07-20 00:01:00'),
     Timestamp('2002-08-15 00:01:00'),
     Timestamp('2002-09-08 00:01:00'),
     Timestamp('2002-10-15 00:01:00'),
     Timestamp('2002-12-21 00:01:00'),
     Timestamp('2003-04-04 00:01:00'),
     Timestamp('2003-07-29 00:01:00'),
     Timestamp('2003-08-11 00:01:00'),
     Timestamp('2004-02-28 00:01:00'),
     Timestamp('2005-01-11 00:01:00'),
     Timestamp('2005-01-12 00:01:00')]
    
    df = pd.DataFrame({'age': age, 'date': date})
    
    sns.regplot(df.age, df.date)
    

    类型错误:此数据类型不允许还原操作“mean”

    1 回复  |  直到 6 年前
        1
  •  3
  •   ALollz    6 年前
    df[“日期”]=从pd.到\数字(df.日期)
    
    
    导入numpy as np df[“日期”]=从pd.到\数字(df.日期) fit=np.polyfit(df.年龄,df.日期,1) #这是Unix时代的预期生日 np.polyval(拟合,0) #4.966460634146548E+16 #这是转换为日期的相同结果。 pd.to_日期时间(np.polyval(fit,0)) #时间戳('1971-07-29 19:43:26.341465480')

    enter image description here

    然后您可以轻松地将此转换回日期pd.to_datetime().


    示例:这里是一个简单的线性拟合

    import numpy as np
    df['date'] = pd.to_numeric(df.date)
    fit = np.polyfit(df.age, df.date, 1)
    
    # Here's the predicted Birthday in unix time
    np.polyval(fit, 0)
    #4.966460634146548e+16
    
    # Here's the same result transformed to a date.
    pd.to_datetime(np.polyval(fit,0))
    #Timestamp('1971-07-29 19:43:26.341465480')