Pandas DataFrameの列をシフトする方法【shift()メソッド徹底解説】
Pandasでは、DataFrame全体を書き直すことなく、列の値を簡単に上下にシフトできるshift()メソッドが用意されています。時系列データの前後比較や、特徴量エンジニアリングなどで非常に便利な機能です。
shift()メソッドの基本構文
shift(self, periods=1, freq=None, axis=0, fill_value=None)
主なパラメータ
- periods: シフトする期間(行数)を指定します。負の数を指定すると逆方向にシフトできます。デフォルトは1です。
- axis: シフトの方向を指定します。0(デフォルト)でインデックス方向、1で列方向にシフトします。
- fill_value: シフトによって生じた欠損値(NaN)を置き換える値を指定できます。
それでは、実際の例を使ってshift()メソッドの使い方を見ていきましょう。
手順
- 2次元のサイズ可変な表形式データ(DataFrame)dfを作成します。
- 入力のDataFrame df を表示します。
df["column_name"] = df.column_name.shift()のようにして、特定の列を選択してシフトします。- 更新後のDataFrameを表示します。
サンプルコード
import pandas as pd
df = pd.DataFrame(
dict(
name=['John', 'Jacob', 'Tom', 'Tim', 'Ally'],
marks=[89, 23, 100, 56, 90],
subjects=["Math", "Physics", "Chemistry", "Biology", "English"]
)
)
print("入力DataFrame:\n", df)
# name列を1つ下にシフト
df["name"] = df.name.shift(1)
print("name列を1シフト後:\n", df)
# marks列を2つ下にシフト
df["marks"] = df.marks.shift(2)
print("marks列を2シフト後:\n", df)
# subjects列を1つ上にシフト
df["subjects"] = df.subjects.shift(-1)
print("subjects列を-1シフト後:\n", df)実行結果
入力DataFrame:
name marks subjects
0 John 89 Math
1 Jacob 23 Physics
2 Tom 100 Chemistry
3 Tim 56 Biology
4 Ally 90 English
name列を1シフト後:
name marks subjects
0 NaN 89 Math
1 John 23 Physics
2 Jacob 100 Chemistry
3 Tom 56 Biology
4 Tim 90 English
marks列を2シフト後:
name marks subjects
0 NaN NaN Math
1 John NaN Physics
2 Jacob 89.0 Chemistry
3 Tom 23.0 Biology
4 Tim 100.0 English
subjects列を-1シフト後:
name marks subjects
0 NaN NaN Physics
1 John NaN Chemistry
2 Jacob 89.0 Biology
3 Tom 23.0 English
4 Tim 100.0 NaNポイント解説
- 正のperiods指定:値が下方向に移動し、先頭行にはNaNが挿入されます。
- 負のperiods指定:値が上方向に移動し、末尾行にはNaNが挿入されます。
- fill_valueの活用:
df.name.shift(1, fill_value='Unknown')のように指定すれば、NaNの代わりに任意の値で埋めることができます。
このように、shift()メソッドを使えば、元のDataFrameを再作成することなく、特定の列だけを柔軟にシフトできます。データ分析や機械学習の前処理において、ラグ特徴量を作成する際などにぜひ活用してください。
-
【Python入門】MatplotlibでPandasデータフレームを可視化する方法(折れ線グラフ・円グラフ・ヒストグラム)
Pandasのデータフレーム(DataFrame)は、Matplotlibと組み合わせることで、折れ線グラフ・円グラフ・ヒストグラムなど、さまざまな種類のグラフを簡単に描画できます。まずは、PandasとMatplotlibのライブラリをインポートしましょう。import pandas as pd import matplotlib.pyplot as pltそれでは、実際に各グラフの描画方法を見ていきましょう。折れ線グラフの描き方サンプルコード以下は、2列のデータを持つデータフレームから折れ線グラフを作成するコードです。import pandas as pd import matplotli
-
Python Pandasでデータフレームの列の値をX軸ラベルとして設定する方法
PythonのPandasでデータフレームの列の値をX軸ラベルとして設定するには、plot()メソッドの引数にxticksを指定します。これにより、データの値をそのまま目盛りラベルとして表示できるため、グラフがより読みやすくなります。手順図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。Pandasを使って、column1というキーを持つデータフレームを作成します。plot()メソッドでデータフレームをプロットし、column1の値をX軸ラベルとして指定します。図を表示するには、show()メソッドを使用します。コード例import pandas as pd fro