Pandas Groupby Multiple Fields for Time-Based Differences
データ分析の領域では、時間の経過に伴う変化を比較することは重要なタスクです。多用途の Python ライブラリである Pandas は、このような操作を処理するための堅牢な機能を提供します。複数のカテゴリ フィールドと時間によって整理されたデータを扱う場合、groupby.diff() メソッドが非常に有益であることがわかります。
各サイトが国や日付によって異なるスコアを持つ、提供されているようなデータフレームを考えてみましょう。目標は、サイト/国の組み合わせごとにスコアの 1/3/5 日の差を計算することです。
問題解決
これを達成するには、次の手順:
<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 | ch | 50 | 0.0 | |
2018-01-02 | ch | 10 | -40.0 | |
2018-01-01 | us | 100 | 0.0 | |
2018-01-02 | us | 70 | -30.0 | |
2018-01-03 | us | 60 | -10.0 |
高度な並べ替え
「fb」よりも「google」を優先するなど、任意の順序が必要な場合は、カテゴリ列を作成して並べ替えパラメータとして割り当てることができます。これにより、指定された順序が確実に維持されます。
以上がGroupby と diff() を使用して Pandas DataFrame の時間ベースの差分を計算する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。