Python

Python基礎:shift()メソッド

スポンサーリンク

はじめに

今回はshift()メソッドを扱います。 行や列の差分や変化率を取得するには、shift()を使わなくても、diff()pct_change()で同じことができます。ただ時系列データを扱うときには、ずらす幅(期間)を指定できるので便利です。

サンプルデータの作成

サンプルデータを作成して、このデータに対してshift()を適用して動きを確認することにしましょう。

# サンプルデータの作成
df_sample=pd.DataFrame({
    'A':np.random.randint(0,10,5),
    'B':np.random.randint(0,10,5),
    'C':np.random.randint(0,10,5)
})
df_sample

shift()の利用例

shift()の基本は、periodsでズラし幅の指定とaxisでズラす方向の指定(defaultでは下方向に1行ズレる) となります。さっそく試してみましょう。

df_sample.shift()

全体をした方向に1行ズラすことができました。行数はそのままとなるので、最後の行は削除されます。

では、ズラし幅を指定してみましょう。periodsでズラす幅を2に指定してみます。

df_sample.shift(periods=2)

簡単ですね。2行ずれたので、後ろの2行は削除されています。次にズラす方向を指定してみましょう。横方向にズラしてみます。

df_sample.shift(axis=1)

これも簡単ですね。次に時系列の場合の例をみておきましょう。時系列では引数freqでD(日)、H(時)などの単位で頻度を指定することができます。

# サンプルデータの作成
df_sample = pd.DataFrame({'value': np.random.randint(1,10,8)},
                  index=pd.date_range('2020-06-01', '2020-06-15', freq='2D'))
df_sample

引数periodsでズラし幅を決めることもできますが、時系列データの場合には日や時間単位で指定することができます。この場合はfreqという引数を使います。

df_sample.shift(freq='1D')

valueが変わっていないように見えますが、indexをみてください。1日ずつズレていますね。同じように3日分ズラしてみましょう。

df_sample.shift(freq='3D')

indexが3日分ズレているのが確認できますね。

スポンサーリンク

まとめ

いかがでしょうか?
知らないとどうやってやるんだろう?って思いますが、知ってしまえば簡単ですね。データ分析しているときには、前日比や前年比を算出したい場面がありますね。是非、利用してみてください。

コメント

タイトルとURLをコピーしました