■移動平均
移動平均は、時系列データなどを平滑化する手法である。
以下のデータについて、日付あたりの人数に対する移動平均(7日間隔)を算出し、グラフに表示させる
・ファイル名
mvave.csv
Date,Number
2020/1/16,1
2020/1/17,0
2020/1/18,0
2020/1/19,0
2020/1/20,0
2020/1/21,0
2020/1/22,0
2020/1/23,0
2020/1/24,1
2020/1/25,1
2020/1/26,1
...
2021/2/15,965
2021/2/16,1308
2021/2/17,1446
2021/2/18,1536
2021/2/19,1301
2021/2/20,1233
2021/2/21,1032
2021/2/22,740
2021/2/23,1082
2021/2/24,921
2021/2/25,1076
・サンプルコード
# -*- Coding: UTF-8 -*-
import pandas as pd
import numpy as np
import seaborn as sns
from matplotlib import pyplot as plt
def CalMovingAverage(csv_file_name):
# 7日間の移動平均とする
SPAN = 7
# csvファイル読み込み
df = pd.read_csv(csv_file_name)
# 7日間の移動平均を読み込んだcsvファイルに追加
df['span07'] = df.rolling(window=SPAN).mean()
print(df)
# グラフのデザイン変更
sns.set()
# グラフサイズ指定
plt.subplots(figsize=(16.0, 6.0))
# 1日の人数を棒グラフで表示
plt.bar(df['Date'], df['Number'], color = 'blue')
# 7日間の移動平均人数を折れ線グラフで表示
plt.plot(df['Date'], df['span07'], color = 'red')
# x軸を50日間隔で表示
plt.xticks(range(0, len(df['Date']), 50), df['Date'][::50])
# グラフを表示
plt.show()
if __name__ == '__main__':
file_name = 'mvave.csv'
CalMovingAverage(file_name)
・実行結果
Date Number span07
0 2020/1/16 1 NaN
1 2020/1/17 0 NaN
2 2020/1/18 0 NaN
3 2020/1/19 0 NaN
4 2020/1/20 0 NaN
.. ... ... ...
402 2021/2/21 1032 1260.142857
403 2021/2/22 740 1228.000000
404 2021/2/23 1082 1195.714286
405 2021/2/24 921 1120.714286
406 2021/2/25 1076 1055.000000
コメント