時系列データが時間単位になっているものを日にちや月単位に変換したいことがよくある。
以下、Kaggleのhourly energy consumptionデータを用いて、時間単位のデータを、日にち単位に変換する例である。
まず、以下のようにCSVファイルを読み込む。
import pandas as pd import seaborn as sns import matplotlib.pylab as plt import numpy as np import datetime as dt # csvファイルの読み込み df=pd.read_csv('AEP_hourly.csv') df.haed()
以下のように、時間単位のデータになっている。
まず、日時文字列のカラム'Datetime'を、datetime型に変換して、dataframeのインデックスに設定する。
df['Datetime']=pd.to_datetime(df['Datetime']) df=df.set_index(['Datetime'])
以下のように、Datetimeカラムがインデックスに格上げされているのがわかる。
そして、resampleとmeanを用いて、任意の時間単位で平均する。
# 日単位'1d'に変換 dfDaily=df.resample('1d').mean() dfDaily.head()
以下のように、日にち単位に変換されていることがわかる。
最後に、seabornを用いてプロットしてみる。
sns.lineplot(data=dfDaily[dfDaily.index<dt.datetime(2015,12,31)])