pandas – diff、pct_change で変化量を計算する方法

目次

概要

pandas の diff で変化量、pct_change で変化率を計算する方法を解説します。

pandas.DataFrame.diff

pandas.DataFrame.diff は、行または列方向の値の変化量を計算します。

DataFrame.diff(self, periods=1, axis=0) → ’DataFrame’
引数
名前 デフォルト値
periods int 1
差分をとる際の間隔。負の値も指定可。
axis {0 or ‘index’, 1 or ‘columns’} 0
差分をとる方向

返り値
名前 説明
DataFrame 差分結果

サンプルコード

In [1]:
import numpy as np
import pandas as pd

X = np.array([[0, 0, 0], [1, 2, 3], [2, 4, 6], [3, 6, 9], [4, 8, 12],])

df = pd.DataFrame(X)
df
0 1 2
0 0 0 0
1 1 2 3
2 2 4 6
3 3 6 9
4 4 8 12

axis – 差分をとる方向を指定する

In [2]:
df.diff(axis=0)
0 1 2
0 NaN NaN NaN
1 1.0 2.0 3.0
2 1.0 2.0 3.0
3 1.0 2.0 3.0
4 1.0 2.0 3.0
In [3]:
df.diff(axis=1)
0 1 2
0 NaN 0.0 0.0
1 NaN 1.0 1.0
2 NaN 2.0 2.0
3 NaN 3.0 3.0
4 NaN 4.0 4.0

periods – 差分をとる間隔を指定する

In [4]:
df.diff(periods=2)
0 1 2
0 NaN NaN NaN
1 NaN NaN NaN
2 2.0 4.0 6.0
3 2.0 4.0 6.0
4 2.0 4.0 6.0
In [5]:
df.diff(periods=-1)
0 1 2
0 -1.0 -2.0 -3.0
1 -1.0 -2.0 -3.0
2 -1.0 -2.0 -3.0
3 NaN NaN NaN

pandas.DataFrame.pct_change

pandas.DataFrame.pct_change は、行または列方向の値の変化率を計算します。

DataFrame.pct_change(self: ~ FrameOrSeries, periods=1, fill_method='pad', limit=None, freq=None, **kwargs) → ~FrameOrSeries
引数
名前 デフォルト値
periods int 1
差分をとる際の間隔。負の値も指定可。
fill_method str ‘pad’
NaN の補間方法
limit int None
この値より NaN が連続した場合は補間を行いません。
freq DateOffset, timedelta, or str, optional
時系列データの場合の差分をとる間隔
**kwargs
DataFrame.shift に渡す引数

返り値
名前 説明
chgSeries or DataFrame 差分結果

サンプルコード

In [6]:
X = np.array([[1, 2, 3], [2, 4, 6], [3, 6, 9], [4, 8, 12]])

df = pd.DataFrame(X)
df
0 1 2
0 1 2 3
1 2 4 6
2 3 6 9
3 4 8 12

axis – 差分をとる方向を指定する

In [7]:
df.pct_change(axis=0)
0 1 2
0 NaN NaN NaN
1 1.000000 1.000000 1.000000
2 0.500000 0.500000 0.500000
3 0.333333 0.333333 0.333333
In [8]:
df.pct_change(axis=1)
0 1 2
0 NaN 1.0 0.5
1 NaN 1.0 0.5
2 NaN 1.0 0.5
3 NaN 1.0 0.5

periods – 差分をとる間隔を指定する

In [9]:
df.pct_change(periods=2)
0 1 2
0 NaN NaN NaN
1 NaN NaN NaN
2 2.0 4.0 6.0
3 2.0 4.0 6.0
In [10]:
df.pct_change(periods=-1)
0 1 2
0 -0.500000 -0.500000 -0.500000
1 -0.333333 -0.333333 -0.333333
2 -0.250000 -0.250000 -0.250000
3 NaN NaN NaN

pandas.Series.diff

pandas.Series.diff は、値の変化量を計算します。

Series.diff(self, periods=1)
引数
名前 デフォルト値
periods int 1
差分をとる際の間隔。負の値も指定可。

返り値
名前 説明
Series 差分結果

サンプルコード

In [11]:
s = pd.Series([1, 3, 5, 6, 7])
print(s.diff())
0    NaN
1    2.0
2    2.0
3    1.0
4    1.0
dtype: float64

pandas.Series.pct_change

pandas.Series.pct_change は、値の変化率を計算します。

Series.pct_change(self: ~ FrameOrSeries, periods=1, fill_method='pad', limit=None, freq=None, **kwargs) → ~FrameOrSeries
引数
名前 デフォルト値
periods int 1
差分をとる際の間隔。負の値も指定可。
fill_method str ‘pad’
NaN の補間方法
limit int None
この値より NaN が連続した場合は補間を行いません。
freq DateOffset, timedelta, or str, optional
時系列データの場合の差分をとる間隔
**kwargs
Series.shift に渡す引数

返り値
名前 説明
Series 差分結果

サンプルコード

In [12]:
s = pd.Series([1, 3, 5, 6, 7])
print(s.pct_change())
0         NaN
1    2.000000
2    0.666667
3    0.200000
4    0.166667
dtype: float64

コメント

コメントする

目次