【发布时间】:2014-08-26 15:03:57
【问题描述】:
似乎要让 OLS 线性回归在 Pandas 中正常工作,参数必须是浮点数。我从以下形式的 csv(称为“gameAct.csv”)开始:
date, city, players, sales
2014-04-28,London,111,1091.28
2014-04-29,London,100,1100.44
2014-04-28,Paris,87,1001.33
...
我想对销售如何依赖日期执行线性回归(随着时间的推移,销售如何变化?)。我下面的代码的问题似乎是日期不是浮点值。对于如何解决 Pandas 中的这个索引问题,我将不胜感激。
我当前的(不工作,但正在编译的代码):
import pandas as pd
from pandas import DataFrame, Series
import statsmodels.formula.api as sm
df = pd.read_csv('gameAct.csv')
df.columns = ['date', 'city', 'players', 'sales']
city_data = df[df['city'] == 'London']
result = sm.ols(formula = 'sales ~ date', data = city_data).fit()
当我改变城市值时,我得到 R^2 = 1 结果,这是错误的。我也尝试index_col = 0, parse_dates == True' 定义dataframe df,但没有成功。
我怀疑有一种更好的方法可以读取此类 csv 文件以对日期执行基本回归,以及进行更一般的时间序列分析。感谢您的帮助、示例和资源!
注意,使用上面的代码,如果我将日期索引(对于给定城市)转换为数组,则该数组中的值的形式为:
'\xef\xbb\xbf2014-04-28'
如何对所有非销售参数进行 AIC 分析? (例如,结果可能是销售额最线性地取决于日期和城市)。
【问题讨论】:
-
当然,一种非pythonic和类似unpandas的解决方案是以下形式: datecol = london['date'];朗达斯 = []; for x in datecol: londates.append(float(x.replace('-',''))) 然后在 londates 数组上回归指定的伦敦数据
标签: python pandas time-series