ホームページ > バックエンド開発 > Python チュートリアル > Pandas GroupBy でグループごとの統計 (数、平均など) を計算するにはどうすればよいですか?

Pandas GroupBy でグループごとの統計 (数、平均など) を計算するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-28 04:36:10
オリジナル
537 人が閲覧しました

How to Calculate Group-wise Statistics (Count, Mean, etc.) in Pandas GroupBy?

Pandas GroupBy を使用して各グループの統計 (数、平均など) を取得する

問題:

Pandas の DataFrame df を使用し、複数のグループについて平均、カウントなどのグループごとの統計を計算したいcolumns.

簡単な答え:

グループごとの行数を取得するには、.size() を呼び出すだけでシリーズが返されます:

df.groupby(['col1','col2']).size()
ログイン後にコピー

列としてカウントを含む DataFrame 結果の場合、 use:

df.groupby(['col1', 'col2']).size().reset_index(name='counts')
ログイン後にコピー
ログイン後にコピー

詳細な例:

DataFrame df:

  col1 col2  col3  col4  col5  col6
0    A    B  0.20 -0.61 -0.49  1.49
1    A    B -1.53 -1.01 -0.39  1.82
2    A    B -0.44  0.27  0.72  0.11
3    A    B  0.28 -1.32  0.38  0.18
4    C    D  0.12  0.59  0.81  0.66
5    C    D -0.13 -1.65 -1.64  0.50
6    C    D -1.42 -0.11 -0.18 -0.44
7    E    F -0.00  1.42 -0.26  1.17
8    E    F  0.91 -0.47  1.35 -0.34
9    G    H  1.48 -0.63 -1.14  0.17
ログイン後にコピー

Getting Rowカウント:

df.groupby(['col1', 'col2']).size()
ログイン後にコピー

出力:

col1  col2
A     B       4
C     D       3
E     F       2
G     H       1
dtype: int64
ログイン後にコピー

カウントを使用した DataFrame の作成:

df.groupby(['col1', 'col2']).size().reset_index(name='counts')
ログイン後にコピー
ログイン後にコピー

出力:

  col1 col2  counts
0    A    B       4
1    C    D       3
2    E    F       2
3    G    H       1
ログイン後にコピー

含むその他の統計の結果:

平均、中央値、最小などの追加の統計を計算するには、agg():

(df
.groupby(['col1', 'col2'])
.agg({
    'col3': ['mean', 'count'],
    'col4': ['median', 'min', 'count']
}))
ログイン後にコピー

出力:

            col4                  col3      
          median   min count      mean count
col1 col2                                   
A    B    -0.810 -1.32     4 -0.372500     4
C    D    -0.110 -1.65     3 -0.476667     3
E    F     0.475 -0.47     2  0.455000     2
G    H    -0.630 -0.63     1  1.480000     1
ログイン後にコピー

統計を個人に分割する集計:

出力をさらに制御するには、統計を分割し、結合を使用して結合します:

gb = df.groupby(['col1', 'col2'])
counts = gb.size().to_frame(name='counts')
(counts
 .join(gb.agg({'col3': 'mean'}).rename(columns={'col3': 'col3_mean'}))
 .join(gb.agg({'col4': 'median'}).rename(columns={'col4': 'col4_median'}))
 .join(gb.agg({'col4': 'min'}).rename(columns={'col4': 'col4_min'}))
 .reset_index()
)
ログイン後にコピー

出力:

  col1 col2  counts  col3_mean  col4_median  col4_min
0    A    B       4  -0.372500       -0.810     -1.32
1    C    D       3  -0.476667       -0.110     -1.65
2    E    F       2   0.455000        0.475     -0.47
3    G    H       1   1.480000       -0.630     -0.63
ログイン後にコピー

以上がPandas GroupBy でグループごとの統計 (数、平均など) を計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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