【Python Coding】pandas “shift” を使ってデータをずらす方法について解説します
こんにちは、たなです。
今回は、pythonのpandasにある”shift“を使ってデータフレームの値を「ずらす」方法を紹介したいと思います。
「データをずらして分析したい」という場面(特に時系列データの分析)で使える手法となりますが、どちらかというと中上級者向けの分析方法かなと思います。
ただ、初心者の方であったとしても、「こういう方法もあるんだ」と今のうちにインプットしておけば、後々役に立つ時が来るので参考にしてみてください。
本記事では簡単な例を用いて紹介していきます。
本記事の内容
- pandasの「shift」の使い方を知りたい方
- データフレームの値を自由にずらしてデータ分析の幅を広げたい方
僕のブログでは【完全ガイド】pythonの学習サイトをレベル別に紹介!【基礎から機械学習・人工知能までのロードマップ】という記事も公開しています。より高みを目指したい人は参考にしてみてください。
pythonの学習ロードマップへpandas “shift” を使ってデータをずらす方法を解説
必要ライブラリのインポート
import pandas as pd
今回はpandasだけ使うので、これだけインポートしておきます。
利用データの作成
今回はシンプルな例を作成して、shiftを用いた効果をイメージしやすいように「10行3列」のデータフレームを以下のように作っておきます。値自体は自由に変更してもらって構いません。
このデータフレームを用いて、「shift」の使い方を確認していきます。
「shift」の効果を一言で言うと、データを行方向(もしくは列方向)に移動させる(ずらす)ことが出来ます。
shiftの使い方①|periods
色々と引数を設定することは出来ますが、まずは何も指定せずそのまま使ってみます。
すると、一番最初の行がすべて欠損値(Nan)となっていますが、これはデータ全体が1行ずつズレていることを意味します。なぜ「1行」ズレているのかと言うと、デフォルトで「periods」という引数が「1」に設定されているためです。
試しに、「periods」を「3」に設定してみましょう。
すると今度は、すべてのデータが行方向に3行ずつズレていることがわかるかと思います。
このように、`df.shift()`がデータをずらすための基本的な使い方となります。
shiftの使い方②|axis
では次に、行方向ではなく「列方向」にデータをすらす方法を見ていきます。
これは、引数「axis」に「1」もしくは「columns」を設定すればOKです。
すると、カラム名「col1」がすべて欠損値(NaN)となり、データが列方向にずれているのがわかりますね。
「periods」は指定していないので、デフォルト設定で「1列」だけずれていることになります。
shiftの使い方③|fill_value
続いて、データをずらした後の欠損値「NaN」を何かしらの値や文字列で埋めたい場合に使える方法です。
このような時は、引数「fill_value」に値を設定すればOKです。
上記は「3行」ずらした結果ですが、欠損値部分が「999」となっているのがわかりますね。
今回は数値を用いましたが、文字列を指定しても欠損値を置換することは可能なので、試してみてください。
shiftの使い方④|freq
最後に、時系列データを扱うような場合に使える方法を紹介しておきたいと思います。
DataFrame型よりもSeries型の方がイメージ湧きやすいので、新しく別データを作成しておきます。
pandasの「shift」はDataFrameに対してもSeriesに対しても適用可能です。
このデータ自体に特に意味は持たせていませんが、各月末時点における何かしらのデータ(預金残高や在庫金額など)を表しているとイメージしてもらえればOKです。
このデータを「shift」させていきますが、shiftさせる対象は「時間を表しているIndex部分」となります。
以下のコードは「月末起算して3日シフトさせた結果」と「1ヶ月シフトさせた結果」を示しています。
上記図の赤枠部分を見て頂ければわかる通り、それぞれ日付がシフトしていますね。
コード内の「3D」を「xxD」とすることで、「xx日」分だけすらすことが可能となります。
時系列データを扱う場合には使える方法なので、データ分析時には参考にしてみてください。
まとめ:pandas “shift”を使えば時系列データ分析に役立てることが出来る!
今回はpythonのpandasを用いてデータフレームの値をずらす方法を紹介してきました。
時系列データを自由に扱いたい場合やモデル精度を上げたい場合には使える方法となります。Kaggleやデータ分析の現場にいる人はぜひ活用してみてください。
冒頭でも紹介しましたが、pythonの学習方法を【完全ガイド】pythonの学習サイトをレベル別に紹介!【基礎から機械学習・人工知能までのロードマップ】でまとめています。良ければあわせて読んでみてください。
【完全ガイド】pythonの学習サイトをレベル別に紹介!【基礎から機械学習・人工知能までのロードマップ】
pythonを極めたいすべての人に贈る学習ロードマップ。おすすめの学習サイトをレベル別に紹介しているので、pythonのレベルをあげていきたいと考えるすべての人に読んで欲しい記事です。これさえ読めば、自分に合っている学習方法やこれから目指すべき方向性がわかります。pythonライフ、楽しんでいきましょう。
すてきなpythonライフを。