
Pandasとは
Pandasは、Pythonでデータ解析を行うためのライブラリです。Pandasを使うことで、Excelのような表形式のデータを簡単に操作することができます。Pandasは、データの読み込み、整形、加工、分析、可視化などの機能を提供しています。
行をずらす基本操作:shiftメソッド
Pandasで行をずらすには、shiftメソッドを使います。shiftメソッドは、指定した数だけ行をずらすことができます。以下は、shiftメソッドを使って1行ずつ下にずらす例です。
1 2 3 4 5 | 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) |
上記のコードを実行すると、以下のような出力が得られます。
1 2 3 4 5 6 7 8 9 10 11 12 | 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メソッドを使った例を紹介します。以下は、株価データを表したデータフレームです。
1 2 3 4 5 6 7 8 9 | 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) |
上記のコードを実行すると、以下のような出力が得られます。
1 2 3 4 5 6 | 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行下にずらしたデータフレームを作成してみます。
1 2 3 | shifted_df = df.copy() shifted_df[ 'Close' ] = df[ 'Close' ].shift( 1 ) print (shifted_df) |
上記のコードを実行すると、以下のような出力が得られます。
1 2 3 4 5 6 | 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メソッドを活用したデータ分析の応用例を紹介します。以下は、ある企業の株価データを表したデータフレームです。
1 2 3 4 5 6 7 8 9 | 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) |
このデータフレームを使って、以下のような分析を行ってみます。
- 前日の終値と当日の始値を比較し、株価の上昇率を求める。
上記の分析を行うためには、以下のようなコードを書くことができます。
1 2 3 4 | 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) |
上記のコードを実行すると、以下のような出力が得られます。
1 2 3 4 5 6 | 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メソッドを活用することで、株価データなどの時系列データを分析する際に便利な機能を提供しています。