【发布时间】:2021-02-03 19:04:25
【问题描述】:
我想查看时间序列数据中滚动周的相关性。原因是我想看看滚动相关性每年如何变化。为此,我尝试使用pandas.corr()、pandas.rolling_corr() 内置函数来获取滚动相关并尝试制作折线图,但我无法更正相关折线图。我不知道我应该如何聚合时间序列以获得滚动相关折线图。有谁知道在python中这样做的任何方法?是否有任何解决方法可以从熊猫中的时间序列数据中获取滚动相关折线图?有什么想法吗?
我的尝试:
我尝试使用pandas.corr() 获得相关性,但生成滚动相关性折线图没有帮助。所以,这是我的新尝试,但它不起作用。我想我应该考虑正确的数据聚合方式来制作滚动相关折线图。
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
url = 'https://gist.githubusercontent.com/adamFlyn/eb784c86c44fd7ed3f2504157a33dc23/raw/79b6aa4f2e0ffd1eb626dffdcb609eb2cb8dae48/corr.csv'
df = pd.read_csv(url)
df['date'] = pd.to_datetime(df['date'])
def get_corr(df, window=4):
dfs = []
for key, value in df:
value["ROLL_CORR"] = pd.rolling_corr(value["prod_A_price"],value["prod_B_price"], window)
dfs.append(value)
df_final = pd.concat(dfs)
return df_final
corr_df = get_corr(df, window=12)
fig, ax = plt.subplots(figsize=(7, 4), dpi=144)
sns.lineplot(x='week', y='ROLL_CORR', hue='year', data=corr_df,alpha=.8)
plt.show()
plt.close()
这样做对我不起作用。通过这样做,我想看看滚动相关性每年如何变化。谁能指出我可以从python中的时间序列数据中做滚动相关折线图吗?有什么想法吗?
期望的输出
这是我想要得到的desired rolling correlation line chart。请注意,所需的绘图是从 MS excel 生成的。我想知道在python中有没有可能的方法?是否有任何解决方法可以从 python 中的时间序列数据中获取滚动相关折线图?我应该如何纠正我当前的尝试以获得所需的输出?有什么想法吗?
【问题讨论】:
标签: python pandas matplotlib