Pandasの diff
メソッド は、データの「差分」を計算するために使われる便利なメソッドです。
特に、時系列データや累積データから「前の値との差」を簡単に求めたいときによく利用されます。
ここでは、基礎から実用例まで詳しく解説します。
目次
基本的な使い方
import pandas as pd
s = pd.Series([10, 20, 25, 40, 60])
print(s.diff())
- 先頭の要素は差分を取れないため
NaN
になります。 - それ以降は 「現在の値 − 直前の値」 が表示されます。
主な引数
periods
(デフォルト = 1)
- 何個前の要素との差分を取るかを指定します。
- 正の値なら「過去との差分」、負の値なら「未来との差分」を計算します。
print(s.diff(periods=2))
DataFrame に対する diff
Series
だけでなく、DataFrame
にも適用可能です。列ごとに差分を計算します。
df = pd.DataFrame({
"A": [10, 15, 20, 40],
"B": [100, 80, 60, 30]
})
print(df.diff())
実用的な利用シーン
前日比(株価や売上など)
dates = pd.date_range("2023-01-01", periods=5)
stock = pd.Series([100, 102, 101, 105, 110], index=dates)
print(stock.diff())
前日比の変動を簡単に求められます。
前年比・前年同期比
periods=12
を指定すれば「前年同月との差分」などもすぐに計算可能です。
sales = pd.Series([100, 120, 130, 150, 180, 200, 220, 250, 270, 300, 320, 350,
400, 420, 430, 450],
index=pd.date_range("2022-01", periods=16, freq="M"))
print(sales.diff(periods=12)) # 前年同月比
データの変化検知
センサー値やログデータの変化点を探すときに有効。
例えば「差分が0なら変化なし」「差分が大きければ急変」といった解析に使えます。
diff
とよく比較されるメソッド
shift
:データを単純にずらすだけ。差分は自分で計算する必要あり。pct_change
:差分ではなく 「割合の変化率」 を計算する。株価の騰落率や売上成長率などで便利。
print(s.pct_change()) # 割合の変化率
まとめ
diff
は 隣接する(または指定した期間前の)値との差 を計算する。- 引数
periods
を変えることで「前日比」「前年同期比」など柔軟に対応可能。 DataFrame
にも適用可能で、列ごとに差分を計算。- 株価の前日比、売上の前年同月比、センサー異常検知など、実務で広く利用される。
以上、PythonのPandasのdiffメソッドについてでした。
最後までお読みいただき、ありがとうございました。