Heim >Backend-Entwicklung >Python-Tutorial >Wie berechnet man gruppenweise Statistiken (Anzahl, Mittelwert usw.) in Pandas GroupBy?

Wie berechnet man gruppenweise Statistiken (Anzahl, Mittelwert usw.) in Pandas GroupBy?

Barbara Streisand
Barbara StreisandOriginal
2024-12-28 04:36:10529Durchsuche

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

Erhalten Sie Statistiken für jede Gruppe (Anzahl, Mittelwert usw.) mit Pandas GroupBy

Problem:

Sie haben ein DataFrame df in Pandas und möchten gruppenweise Statistiken wie Mittelwert, Anzahl und mehr für mehrere berechnen Spalten.

Kurze Antwort:

Um die Zeilenanzahl pro Gruppe zu erhalten, rufen Sie einfach .size() auf, was eine Serie zurückgibt:

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

Für ein DataFrame-Ergebnis mit Anzahlen als Spalte verwenden Sie:

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

Detaillierte Beispiel:

Betrachten Sie den 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

Zeilenanzahl abrufen:

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

Ausgabe:

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

Erstellen eines DataFrame mit Zählungen:

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

Ausgabe:

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

Einschließlich Ergebnisse für weitere Statistiken:

Zur Berechnung zusätzlicher Statistiken wie Mittelwert, Median und Min. verwenden agg():

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

Ausgabe:

            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

Statistik in einzelne Aggregationen aufteilen:

Für mehr Kontrolle über die Ausgabe teilen Sie die Statistiken und kombinieren Sie sie mit 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()
)

Ausgabe:

  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

Das obige ist der detaillierte Inhalt vonWie berechnet man gruppenweise Statistiken (Anzahl, Mittelwert usw.) in Pandas GroupBy?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn