ホームページ >バックエンド開発 >Python チュートリアル >Groupby と diff() を使用して Pandas DataFrame の時間ベースの差分を計算する方法

Groupby と diff() を使用して Pandas DataFrame の時間ベースの差分を計算する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-10-30 07:45:27525ブラウズ

How to Calculate Time-Based Differences in Pandas DataFrames Using Groupby and diff()?

Pandas Groupby Multiple Fields for Time-Based Differences

データ分析の領域では、時間の経過に伴う変化を比較することは重要なタスクです。多用途の Python ライブラリである Pandas は、このような操作を処理するための堅牢な機能を提供します。複数のカテゴリ フィールドと時間によって整理されたデータを扱う場合、groupby.diff() メソッドが非常に有益であることがわかります。

各サイトが国や日付によって異なるスコアを持つ、提供されているようなデータフレームを考えてみましょう。目標は、サイト/国の組み合わせごとにスコアの 1/3/5 日の差を計算することです。

問題解決

これを達成するには、次の手順:

  1. DataFrame の並べ替え: sort_values() を使用して、サイト、国、日付ごとに一貫した順序でデータを並べ替えます。
  2. サイトと国によるグループ化: groupby() を利用して、サイトと国のフィールドに基づいてグループを作成します。
  3. 差異の計算: 各グループ内で diff() を適用してスコアを計算します。
<code class="python">df = df.sort_values(by=['site', 'country', 'date'])
df['diff'] = df.groupby(['site', 'country'])['score'].diff().fillna(0)</code>

出力:

結果は、計算されたスコアの差を示す DataFrame です:

date site country score diff
2018-01-01 fb es 100 0.0
2018-01-02 fb gb 100 0.0
2018-01-01 fb us 50 0.0
2018-01-02 fb us 55 5.0
2018-01-03 fb us 100 45.0
2018-01-01 google ch 50 0.0
2018-01-02 google ch 10 -40.0
2018-01-01 google us 100 0.0
2018-01-02 google us 70 -30.0
2018-01-03 google us 60 -10.0

高度な並べ替え

「fb」よりも「google」を優先するなど、任意の順序が必要な場合は、カテゴリ列を作成して並べ替えパラメータとして割り当てることができます。これにより、指定された順序が確実に維持されます。

以上がGroupby と diff() を使用して Pandas DataFrame の時間ベースの差分を計算する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。