Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengira Statistik Bijak Kumpulan (Kiraan, Min, dll.) dalam Pandas GroupBy?

Bagaimana untuk Mengira Statistik Bijak Kumpulan (Kiraan, Min, dll.) dalam Pandas GroupBy?

Barbara Streisand
Barbara Streisandasal
2024-12-28 04:36:10601semak imbas

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

Dapatkan Statistik untuk Setiap Kumpulan (Kiraan, Min, dll) Menggunakan Kumpulan PandaBy

Masalah:

Anda mempunyai DataFrame df dalam Panda dan ingin mengira statistik mengikut kumpulan seperti min, kiraan dan banyak lagi pada berbilang lajur.

Jawapan Pantas:

Untuk mendapatkan kiraan baris setiap kumpulan, cuma panggil .size(), yang mengembalikan Siri:

df.groupby(['col1','col2']).size()

Untuk hasil DataFrame dengan dikira sebagai lajur, gunakan:

df.groupby(['col1', 'col2']).size().reset_index(name='counts')

Contoh Terperinci:

Pertimbangkan 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

Mendapatkan Baris Kiraan:

df.groupby(['col1', 'col2']).size()

Output:

col1  col2
A     B       4
C     D       3
E     F       2
G     H       1
dtype: int64

Mencipta DataFrame dengan Kiraan:

df.groupby(['col1', 'col2']).size().reset_index(name='counts')

Output:

  col1 col2  counts
0    A    B       4
1    C    D       3
2    E    F       2
3    G    H       1

Termasuk Keputusan untuk Lagi Statistik:

Untuk mengira statistik tambahan seperti min, median dan min, gunakan agg():

(df
.groupby(['col1', 'col2'])
.agg({
    'col3': ['mean', 'count'],
    'col4': ['median', 'min', 'count']
}))

Output:

            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

Memisahkan Statistik kepada Agregasi Individu:

Untuk lebih kawalan ke atas keluarkan, bahagikan statistik dan gabungkannya menggunakan join:

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()
)

Output:

  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

Atas ialah kandungan terperinci Bagaimana untuk Mengira Statistik Bijak Kumpulan (Kiraan, Min, dll.) dalam Pandas GroupBy?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn