Pandasとは
Pandasは、Pythonでデータ解析を行うためのライブラリです。Pandasを使うことで、Excelのような表形式のデータを簡単に操作することができます。Pandasは、データの読み込み、整形、加工、分析、可視化などの機能を提供しています。
行をずらす基本操作:shiftメソッド
Pandasで行をずらすには、shiftメソッドを使います。shiftメソッドは、指定した数だけ行をずらすことができます。以下は、shiftメソッドを使って1行ずつ下にずらす例です。
import pandas as pd df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50]}) shifted_df = df.shift(1) print(df) print(shifted_df)
上記のコードを実行すると、以下のような出力が得られます。
A B 0 1 10 1 2 20 2 3 30 3 4 40 4 5 50 A B 0 NaN NaN 1 1.0 10.0 2 2.0 20.0 3 3.0 30.0 4 4.0 40.0
元のデータフレームdfと、1行下にずらしたshifted_dfが表示されています。shifted_dfの先頭行はNaNになっています。これは、データを1行下にずらすことで、先頭行が欠損値になったためです。
shiftメソッドのパラメータについて
shiftメソッドには、以下のようなパラメータがあります。
- periods:ずらす行数を指定します。正の整数であれば下にずらし、負の整数であれば上にずらします。
- freq:時間的なずらし方を指定します。デフォルトはNoneで、行を単純にずらします。freqには、pandasの時系列オフセット文字列を指定することができます。例えば、freq=’D’とすると、1日ずつずらすことができます。
- axis:ずらす方向を指定します。デフォルトは0で、行方向にずらします。1を指定すると、列方向にずらします。
- fill_value:欠損値をどのように埋めるかを指定します。デフォルトはNaNです。
実際のデータを用いたshiftメソッドの使用例
ここでは、実際のデータを用いてshiftメソッドを使った例を紹介します。以下は、株価データを表したデータフレームです。
import pandas as pd data = {'Date': ['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04', '2021-01-05'], 'Open': [100, 110, 105, 95, 100], 'High': [120, 130, 120, 100, 105], 'Low': [90, 100, 95, 90, 95], 'Close': [110, 120, 100, 95, 100]} df = pd.DataFrame(data) df['Date'] = pd.to_datetime(df['Date']) print(df)
上記のコードを実行すると、以下のような出力が得られます。
Date Open High Low Close 0 2021-01-01 100 120 90 110 1 2021-01-02 110 130 100 120 2 2021-01-03 105 120 95 100 3 2021-01-04 95 100 90 95 4 2021-01-05 100 105 95 100
次に、Close列を1行下にずらしたデータフレームを作成してみます。
shifted_df = df.copy() shifted_df['Close'] = df['Close'].shift(1) print(shifted_df)
上記のコードを実行すると、以下のような出力が得られます。
Date Open High Low Close 0 2021-01-01 100 120 90 NaN 1 2021-01-02 110 130 100 110.0 2 2021-01-03 105 120 95 120.0 3 2021-01-04 95 100 90 100.0 4 2021-01-05 100 105 95 95.0
Close列が1行下にずれ、先頭行がNaNになっていることがわかります。
shiftメソッドを活用したデータ分析の応用例
ここでは、shiftメソッドを活用したデータ分析の応用例を紹介します。以下は、ある企業の株価データを表したデータフレームです。
import pandas as pd data = {'Date': ['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04', '2021-01-05'], 'Open': [100, 110, 105, 95, 100], 'High': [120, 130, 120, 100, 105], 'Low': [90, 100, 95, 90, 95], 'Close': [110, 120, 100, 95, 100]} df = pd.DataFrame(data) df['Date'] = pd.to_datetime(df['Date']) print(df)
このデータフレームを使って、以下のような分析を行ってみます。
- 前日の終値と当日の始値を比較し、株価の上昇率を求める。
上記の分析を行うためには、以下のようなコードを書くことができます。
shifted_df = df.copy() shifted_df['Close_shifted'] = df['Close'].shift(1) shifted_df['Change'] = (df['Open'] - shifted_df['Close_shifted']) / shifted_df['Close_shifted'] print(shifted_df)
上記のコードを実行すると、以下のような出力が得られます。
Date Open High Low Close Close_shifted Change 0 2021-01-01 100 120 90 110 NaN NaN 1 2021-01-02 110 130 100 120 110.0 0.090909 2 2021-01-03 105 120 95 100 120.0 -0.125000 3 2021-01-04 95 100 90 95 100.0 -0.050000 4 2021-01-05 100 105 95 100 95.0 0.052632
Close_shifted列が前日の終値を表しており、Change列が株価の上昇率を表しています。
注意点とよくあるエラー
shiftメソッドを使う際には、以下のような注意点があります。
- shiftメソッドは、データフレーム全体に対して適用されます。特定の列だけずらす場合は、列を抽出してからshiftメソッドを適用してください。
- shiftメソッドでずらした結果、欠損値が発生する可能性があります。欠損値の扱いには注意してください。
- shiftメソッドでずらす行数を指定する際には、負の整数を指定することもできます。しかし、負の整数を指定した場合には、データフレームの先頭行が失われるため、注意が必要です。
まとめ
Pandasのshiftメソッドを使うことで、データフレームの行を簡単にずらすことができます。shiftメソッドを活用することで、株価データなどの時系列データを分析する際に便利な機能を提供しています。