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
Freigeben: 2024-12-28 04:36:10
Original
579 Leute haben es durchsucht

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()
Nach dem Login kopieren

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

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

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
Nach dem Login kopieren

Zeilenanzahl abrufen:

df.groupby(['col1', 'col2']).size()
Nach dem Login kopieren

Ausgabe:

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

Erstellen eines DataFrame mit Zählungen:

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

Ausgabe:

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

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']
}))
Nach dem Login kopieren

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
Nach dem Login kopieren

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()
)
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage