はじめに
今回はdiff( ), pct_change( )を扱いましょう。これらは時系列データの処理をするときによく使うpandasのメソッドです。diff( )は行・列の差分をpct_change( )は行・列の変化率を簡単に算出することができます。
サンプルデータの作成
まずはサンプルデータを作ることにしましょう。あるWebサイトの2020年9月のアクセス数のデータということにしましょう。
# ライブラリのインポート
import pandas as pd
import random
# 日付データの作成
dates=pd.date_range('2020-09-01','2020-09-30')
# アクセスデータの作成
access_list=[random.randint(5000, 20000) for i in range(len(dates))]
# データフレームの作成
df_webdata=pd.DataFrame({'日付':dates,'アクセス数':access_list})
df_webdata.head()
diff()
まずは行・列の差分をとるdiff( ) メソッドです。defaultでは行の差分をとりますが、axis=1とすると、列の差分をとることもできます。また、引数に何も指定しないと、行方向で1行前のデータとの差分が計算できます。みてみましょう。
df_webdata['前日との差分']=df_webdata['アクセス数'].diff()
df_webdata.head()
一番最初のデータは、「1行前のデータ」がないのでNaNとなっていますが、その他はちゃんと計算できてますね。
次に、1行前ではなくN行前のデータとの差分をとりたいときはどうでしょう?この場合は、引数にNを指定します。(periods=Nでもよいです)試しに2行前のデータとの差分をみてみましょう。
df_webdata['2日前との差分']=df_webdata['アクセス数'].diff(2)
df_webdata.head(10)
簡単ですね。時系列データではこのように差分を扱うことが多いので覚えておくとよいでしょう。
pct_change()
次に変化率を算出するpct_change( )をみていきましょう。基本的な使い方はdiff( )と同じです。みていきましょう。
df_webdata['前日からの変化率']=df_webdata['アクセス数'].pct_change()
df_webdata.head()
前日との差分では、例えば2行目では6341-18337=-11996と計算されているのに対して、前日からの変化率では(6341-18337)/18337=-0.6541が計算されています。diff( )と同様に引数を指定すると、N行前のデータからの変化率を算出することができます。
まとめ
いかがでしたか?時系列データを扱うときには、差分や変化率は必須ですね。是非とも押さえておきましょう。
コメント