807 Stimmen

Holen Sie sich Statistiken für jede Gruppe (wie Anzahl, Mittelwert usw.) mit Pandas GroupBy?

Ich habe einen DataFrame df und ich verwende mehrere Spalten daraus, um mit groupby zu gruppieren:

df['col1','col2','col3','col4'].groupby(['col1','col2']).mean()

Auf diese Weise erhalte ich fast die Tabelle (DataFrame), die ich brauche. Was fehlt, ist eine zusätzliche Spalte, die die Anzahl der Zeilen in jeder Gruppe enthält. Mit anderen Worten, ich habe den Mittelwert, aber ich möchte auch wissen, wie viele verwendet wurden, um diese Mittelwerte zu erhalten. Zum Beispiel gibt es in der ersten Gruppe 8 Werte und in der zweiten 10 usw.

Kurz gesagt: Wie erhalte ich gruppenweise Statistiken für einen DataFrame?

0voto

ali bakhtiari Punkte 1031

Eine andere Alternative:

import pandas as pd
import numpy as np

df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',
                          'foo', 'bar', 'foo', 'foo'],
                   'B' : ['one', 'one', 'two', 'three',
                          'two', 'two', 'one', 'three'],
                   'C' : np.random.randn(8),
                   'D' : np.random.randn(8)})
df

    A   B       C           D
0   foo one   0.808197   2.057923
1   bar one   0.330835  -0.815545
2   foo two  -1.664960  -2.372025
3   bar three 0.034224   0.825633
4   foo two   1.131271  -0.984838
5   bar two   2.961694  -1.122788
6   foo one   -0.054695  0.503555
7   foo three 0.018052  -0.746912

pd.crosstab(df.A, df.B).stack().reset_index(name='count')

Ausgabe:

    A   B     count
0   bar one     1
1   bar three   1
2   bar two     1
3   foo one     2
4   foo three   1
5   foo two     2

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X