当尝试在pandas中绘制滚动平均值以使用以下代码平滑我的数据时,我得到一个奇怪的出现图
data['mean_Kincaid'] = pd.rolling_mean(data.Kincaid,30, min_periods=1)
data['Year']= data['Date'].dt.year
data.plot(x='Date', y='mean_Kincaid')
我希望图表“更平滑”(我的目标是使用rolling_mean函数开始)。
非常感谢任何帮助:)
的图片更新2:使用以下代码,我能够生成以下图像 - 关于如何将x轴固定到年份的任何想法?
data['mean_Kincaid'] = data.Kincaid.rolling(75, min_periods=1).mean()
data.plot(x='Date', y='mean_Kincaid')
当我使用以下代码运行它时,我收到错误“AttributeError:只能使用带有datetimelike值的.dt访问器”谢谢!
更新3:
data['mean_Kincaid'] = data.Kincaid.rolling(10000,
min_periods=1).mean()
data.Date = pd.to_datetime(data.Date)
data.plot(x='Date', y='mean_Kincaid', legend=False, title="Kincaid
scores over time")
答案 0 :(得分:1)
这不足以平滑。
n = 8001
df = pd.DataFrame(dict(
Kincaid=np.sin(np.linspace(-4, 4, n)) + np.random.rand(n) * 2,
Date=pd.date_range('2010-03-31', periods=n)
))
df['mean_Kincaid'] = df.Kincaid.rolling(30, min_periods=1).mean()
df.plot(x='Date', y=['Kincaid', 'mean_Kincaid'])
这是更好的
df['mean_Kincaid'] = df.Kincaid.rolling(360, min_periods=1).mean()
df.plot(x='Date', y=['Kincaid', 'mean_Kincaid'])
请注意较大的窗口参数。