Pandas DataFrame の複数のフィールドのスコアの差を計算するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-10-31 01:16:03
オリジナル
583 人が閲覧しました

How to Calculate the Difference in Scores for Multiple Fields in a Pandas DataFrame?

差分計算を使用した複数のフィールドに対する Pandas groupby

プログラミングではデータの操作が重要であり、Pandas はこれらのタスクを実行するための強力なライブラリです効率的に。よくある質問の 1 つは、データを複数のフィールドごとにグループ化し、差異を計算する方法です。これを実現する方法を見てみましょう。

問題:

次の構造を持つ DataFrame を考えます:

         date    site country  score
0  2018-01-01  google      us    100
1  2018-01-01  google      ch     50
2  2018-01-02  google      us     70
3  2018-01-03  google      us     60
... 
ログイン後にコピー

目標は、 「サイト/国」の組み合わせごとのスコアの 1/3/5 日の差。

解決策:

この問題を解決するには、Pandas の groupby を利用できます。および diff 関数:

  1. DataFrame の並べ替え:
df = df.sort_values(by=['site', 'country', 'date'])
ログイン後にコピー

並べ替えにより、データが適切なグループ化と差分計算のために整理されます。

  1. Groupby と Calculate Difference:
df['diff'] = df.groupby(['site', 'country'])['score'].diff().fillna(0)
ログイン後にコピー

この行は、groupby を使用して「site」列と「country」列ごとに DataFrame をグループ化します。次に、diff を使用して、各グループ内の連続する各スコアの差を計算します。結果は「diff」という新しい列に保存されます。欠落している値は、fillna(0) を使用して 0 に置き換えられます。

出力:

結果の DataFrame には、元の列と 'diff' 列が含まれます:

         date    site country  score  diff
0  2018-01-01      fb      es    100   0.0
1  2018-01-02      fb      gb    100   0.0
...
ログイン後にコピー

追加メモ:

  • 任意の並べ替えが必要な場合 (例: 'google' を 'fb' より優先する)、次の順序で指定できます。
  • fillna(0) 関数は欠損値を 0 に置き換えますが、これを任意の値に変更できます。
  • このメソッドは使用できます。任意の期間 (1 日、3 か月など) にわたる差異を計算します。

以上がPandas DataFrame の複数のフィールドのスコアの差を計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート