pandasの累積和をとったり、特定のwindowごとの和をとったりする方法はこれまで紹介してきたので、
次はDataFrameの差分を取る関数の紹介です。
元のデータが単位根過程の時に差分をとって定常化するなど、結構頻繁に使います。
さて、その方法ですが、DataFrameのdiffというメソッドを使います。
引数には periods と axis を指定できますが、大抵はどちらもデフォルトでいけるでしょう。
periods(デフォルト:1)を指定することで、いくつ前の値との差分を取るかを指定でき、
axis(デフォルト:0) に1を指定すると隣の行との差分をれます。
import pandas as pd
df = pd.DataFrame(
{
'a': [1, 2, 3, 4, 5],
'b': [1, 4, 9, 16, 25],
'c': [1, 8, 27, 64, 125],
}
)
print(df.diff())
'''
a b c
0 NaN NaN NaN
1 1.0 3.0 7.0
2 1.0 5.0 19.0
3 1.0 7.0 37.0
4 1.0 9.0 61.0
'''
print(df.diff(periods=2))
'''
a b c
0 NaN NaN NaN
1 NaN NaN NaN
2 2.0 8.0 26.0
3 2.0 12.0 56.0
4 2.0 16.0 98.0
'''
print(df.diff(axis=1))
'''
a b c
0 NaN 0.0 0.0
1 NaN 2.0 4.0
2 NaN 6.0 18.0
3 NaN 12.0 48.0
4 NaN 20.0 100.0
'''
なお、それぞれ次のようにshiftして値をずらしたものとの差分を取るのと結果は同じです。
df - df.shift()
df - df.shift(periods=2)
df - df.shift(axis=1)