【发布时间】:2016-08-13 20:32:29
【问题描述】:
我正在尝试使用 scipy 中的 pearsonr 函数每 30 天计算两个列表之间的相关性。
一个列表包含日期(称为dateValues),另一个包含销售(称为saleNumbers)。我之前已经使用 datetime.strptime 提取了日期,如果我打印出 dateValues,我会得到一个任意长度的日期范围。
datetime.datetime(2016, 8, 12, 0, 0), datetime.datetime(2016, 8, 11, 0, 0), datetime.datetime(2016, 8, 10, 0, 0)...etc
这里是销售清单:
saleNumbers = [3567,2348,1234,....etc]
但是当我这样做时
pearsonr(dateValues,saleNumbers)
我得到了错误
TypeError: unsupported operand type(s) for +: 'datetime.datetime' and 'datetime.datetime'
找了好久,发现可以用datetime.date来做日期之间的算术运算。
所以我这样做了:
print(datetime.date(dateValues[0]) - datetime.date(dateValues[29]))
果然,这给了我 30 天的时差。
然后我尝试了这个:
pearsonr(datetime.date(dateValues[0]) - datetime.date(dateValues[29]),saleNumbers)
然后我得到这个错误
TypeError: len() of unsized object
有什么想法可以让我继续前进吗?另外我不认为 datetime.date(dateValues[0]) - datetime.date(dateValues[2]) 是查找相关性时处理日期列表的正确 Pythonic 方式。
PS:在这张图片中,是一个 Excel 电子表格,显示了我已经完成的工作,但试图在 Python 中复制:http://i.imgur.com/0Fj36Al.jpg
【问题讨论】:
标签: python numpy scipy data-analysis python-datetime