【Python】 移動平均の算出・結果をグラフに出力

■移動平均

移動平均は、時系列データなどを平滑化する手法である。

以下のデータについて、日付あたりの人数に対する移動平均(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
タイトルとURLをコピーしました