python - 用数据绘制移动平均线
问题描述
我正在尝试计算和绘制移动平均值以及计算得出的数据:
def movingAvg(df):
window_size = 7
i = 0
moving_averages = []
while i < len(df) - window_size + 1:
current_window = df[i : i + window_size]
window_average = current_window.mean()
moving_averages.append(window_average)
i += 1
return moving_averages
dates = df_valid['dateTime']
startDay = dates.iloc[0]
lastDay = dates.iloc[-1]
fig, ax = plt.subplots(figsize=(20, 10))
ax.autoscale()
#plt.xlim(startDay, lastDay)
df_valid.sedentaryActivityMins.reset_index(drop=True, inplace=True)
df_moving = pd.DataFrame(movingAvg(df_valid['sedentaryActivityMins']))
df_nan = [np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan]
df_nan = pd.DataFrame(df_nan)
df_moving = pd.concat([df_nan, df_moving])
plt.plot(df_valid.sedentaryActivityMins)
plt.plot(df_moving)
#plt.show()
但由于移动平均线使用 7 个窗口,移动平均线列表少了 7 个项目,因此这些图不能正确地相互跟随。
我尝试将 7 "NaN" 放入移动平均列表中,但是当我绘图时这些都被忽略了。
df_valid.sedentaryActivityMins.head(40)
0 608
1 494
2 579
3 586
4 404
5 750
6 573
7 466
8 389
9 604
10 351
11 553
12 768
13 572
14 616
15 522
16 675
17 607
18 229
19 529
20 746
21 646
22 625
23 590
24 572
25 462
26 708
27 662
28 649
29 626
30 485
31 509
32 561
33 664
34 517
35 587
36 602
37 601
38 495
39 352
Name: sedentaryActivityMins, dtype: int64
关于如何做的任何想法?提前致谢!
解决方案
推荐阅读
- vue.js - 如何在使用 v-for 时更新文本输入值
- javascript - 如何访问嵌套数组中的特定值
- firebase - 错误:Firebase:没有创建 Firebase 应用“[DEFAULT]”
- android - 关于在我的第一个 android 应用程序中使用 Selenium
- python - 从 x**2 的 MATLAB 运算符错误中调用 Python
- python - Scipy odeint 在负时间值处评估
- regex - 如何删除记事本++中第一个冒号之前的所有内容?
- ios - Google NearBy API 使用和定价
- javascript - 如何通过 Safari 中的 FontFace 界面加载文件名以数字开头的字体
- deep-learning - BERT 输出不确定