python - 如何用 numpy 计算 df.Series 和 df.Series.shift(1) 之间的关系?
问题描述
我正在与 TSA 打交道,需要知道 和 之间的df.Series
关系df.Series.shift(1)
。df.corr()
有帮助,如下所示:
(1)df.DataFrame.corr()
df = pd.read_csv('https://raw.githubusercontent.com/jbrownlee/Datasets/master/daily-min-temperatures.csv',
index_col=0, parse_dates=True)
values = pd.DataFrame(df.values)
dataframe = pd.concat([values.shift(1), values], axis=1)
dataframe.columns = ['col1', 'col2']
print(dataframe.corr())
"""
col1 col2
col1 1.00000 0.77487
col2 0.77487 1.00000
"""
问题是我不知道如何使用numpy.corrcoef
or scipy.stats.stats.pearsonr
,提前谢谢您的帮助!
(2)numpy
并scipy.stats.stats.pearsonr
以这种方式应用
a = dataframe['col1']
b = dataframe['col2']
print(np.corrcoef(a, b))
"""
[[nan nan]
[nan 1.]]
"""
print(scipy.stats.stats.pearsonr(a, b))
"""
ValueError: array must not contain infs or NaNs
"""
解决方案
的第一行将df.shift(1)
是 NaN,因为它之前没有元素。您需要在计算它们时删除该行
>>> scipy.stats.stats.pearsonr(df.values.flatten()[1:],
df.shift(1).values.flatten()[1:])
(0.7748702165384456, 0.0)
>>> np.corrcoef(df.values.flatten()[1:],
df.shift(1).values.flatten()[1:])
array([[1. , 0.77487022],
[0.77487022, 1. ]])
推荐阅读
- azure - 我无法在 azure 上部署我的 nextjs 应用程序
- alias - 如何使用别名来简化 CUDA_VISIBLE_DEVICES
- javascript - 如何在java中构造一个类似json的body对象?
- laravel - 从控制器渲染图表以查看
- php - CodeIgniter 4 重定向功能不起作用
- python - Django manage.py:错误:无法识别的参数:runserver
- python - 使用 lmfit 和差分进化方法设置迭代限制
- javascript - 如何根据 Redux 上按下的按钮来实现从 API 接收不同数据的按钮?
- javascript - 带有 JQuery 的 IE6 Ajax
- java - 使用 Maven 从 Ubuntu 集成 Jenkins 中的 Selenium