当一个列表包含日期值时,如何找到两个列表之间的相关性?
How to find the correlation between two lists when one list consists of date values?
我尝试使用 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
先将它们转换为数值:
arbitrary_date = datetime(1970,1,1)
pearsonr([(d - arbitrary_date).total_seconds() for d in dateValues], saleNumbers)
皮尔逊相关性不受任一轴上的缩放和平移(仿射变换)影响
您可以尝试这样的操作:
import numpy as np
pearsonr(np.array(dateValues, dtype=np.datetime64).astype("int"), np.array(saleNumbers))
我尝试使用 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
先将它们转换为数值:
arbitrary_date = datetime(1970,1,1)
pearsonr([(d - arbitrary_date).total_seconds() for d in dateValues], saleNumbers)
皮尔逊相关性不受任一轴上的缩放和平移(仿射变换)影响
您可以尝试这样的操作:
import numpy as np
pearsonr(np.array(dateValues, dtype=np.datetime64).astype("int"), np.array(saleNumbers))