Deskriptive Statistik#

pandas-Objekte sind mit einer Reihe von gängigen mathematischen und statistischen Methoden ausgestattet. Die meisten von ihnen fallen in die Kategorie der Reduktionen oder zusammenfassenden Statistiken, Methoden, die einen einzelnen Wert (wie die Summe oder den Mittelwert) aus einer Serie oder einer Reihe von Werten aus den Zeilen oder Spalten eines DataFrame extrahieren. Im Vergleich zu ähnlichen Methoden, die sich bei NumPy-Arrays finden, behandeln sie auch fehlende Daten.

[1]:
import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(7, 3), index=pd.date_range("2022-02-02", periods=7))
new_index = pd.date_range("2022-02-03", periods=7)
df2 = df.reindex(new_index)

df2
[1]:
0 1 2
2022-02-03 -0.013938 -2.260412 2.315637
2022-02-04 -0.499093 1.407191 -0.361063
2022-02-05 -0.236897 -1.164700 0.785671
2022-02-06 -0.133355 -0.754735 -0.185206
2022-02-07 0.259555 -0.612450 0.133201
2022-02-08 -1.132296 0.513303 -1.023171
2022-02-09 NaN NaN NaN

Der Aufruf der pandas.DataFrame.sum-Methode gibt eine Serie zurück, die Spaltensummen enthält:

[2]:
df2.sum()
[2]:
0   -1.756023
1   -2.871803
2    1.665069
dtype: float64

Die Übergabe von axis='columns' oder axis=1 summiert stattdessen über die Spalten:

[3]:
df2.sum(axis='columns')
[3]:
2022-02-03    0.041287
2022-02-04    0.547036
2022-02-05   -0.615925
2022-02-06   -1.073296
2022-02-07   -0.219694
2022-02-08   -1.642164
2022-02-09    0.000000
Freq: D, dtype: float64

Wenn eine ganze Zeile oder Spalte alle NA-Werte enthält, ist die Summe 0. Dies kann mit der Option skipna deaktiviert werden:

[4]:
df2.sum(axis='columns', skipna=False)
[4]:
2022-02-03    0.041287
2022-02-04    0.547036
2022-02-05   -0.615925
2022-02-06   -1.073296
2022-02-07   -0.219694
2022-02-08   -1.642164
2022-02-09         NaN
Freq: D, dtype: float64

Einige Aggregationen, wie z.B. mean, erfordern mindestens einen Nicht-NaN-Wert, um ein wertvolles Ergebnis zu erhalten:

[5]:
df2.mean(axis='columns')
[5]:
2022-02-03    0.013762
2022-02-04    0.182345
2022-02-05   -0.205308
2022-02-06   -0.357765
2022-02-07   -0.073231
2022-02-08   -0.547388
2022-02-09         NaN
Freq: D, dtype: float64

Optionen für Reduktionsmethoden#

Methode

Beschreibung

axis

die Achse der zu reduzierenden Werte: 0 für die Zeilen des DataFrame und 1 für die Spalten

skipna

fehlende Werte ausschließen; standardmäßig True

level

nach Ebene gruppiert reduzieren, wenn die Achse hierarchisch indiziert ist (MultiIndex)

Einige Methoden, wie idxmin und idxmax, liefern indirekte Statistiken wie den Indexwert, bei dem der Mindest- oder Höchstwert erreicht wird:

[6]:
df2.idxmax()
[6]:
0   2022-02-07
1   2022-02-04
2   2022-02-03
dtype: datetime64[ns]

Andere Methoden sind Akkumulationen:

[7]:
df2.cumsum()
[7]:
0 1 2
2022-02-03 -0.013938 -2.260412 2.315637
2022-02-04 -0.513030 -0.853220 1.954574
2022-02-05 -0.749927 -2.017920 2.740245
2022-02-06 -0.883282 -2.772656 2.555039
2022-02-07 -0.623727 -3.385106 2.688240
2022-02-08 -1.756023 -2.871803 1.665069
2022-02-09 NaN NaN NaN

Eine andere Art von Methoden sind weder Reduktionen noch Akkumulationen. describe ist ein solches Beispiel, das mehrere zusammenfassende Statistiken auf einen Schlag erstellt:

[8]:
df2.describe()
[8]:
0 1 2
count 6.000000 6.000000 6.000000
mean -0.292671 -0.478634 0.277511
std 0.481398 1.286844 1.161608
min -1.132296 -2.260412 -1.023171
25% -0.433544 -1.062209 -0.317099
50% -0.185126 -0.683593 -0.026003
75% -0.043792 0.231865 0.622554
max 0.259555 1.407191 2.315637

Bei nicht-numerischen Daten erzeugt describe alternative zusammenfassende Statistiken:

[9]:
data = {'Code': ['U+0000', 'U+0001', 'U+0002', 'U+0003', 'U+0004', 'U+0005'],
        'Octal': ['001', '002', '003', '004', '004', '005']}
df3 = pd.DataFrame(data)

df3.describe()
[9]:
Code Octal
count 6 6
unique 6 5
top U+0000 004
freq 1 2

Deskriptive und zusammenfassende Statistiken:

Methode

Beschreibung

count

Anzahl der Nicht-NA-Werte

describe

Berechnung einer Reihe von zusammenfassenden Statistiken für Serien oder jede DataFrame-Spalte

min, max

Berechnung der Mindest- und Höchstwerte

argmin, argmax

Berechnung der Indexstellen (ganze Zahlen), an denen der Mindest- bzw. Höchstwert erreicht wurde

idxmin, idxmax

Berechnung der Indexbeschriftungen, an denen der Mindest- bzw. Höchstwert erreicht wurde

quantile

Berechnung des Stichprobenquantils im Bereich von 0 bis 1

sum

Summe der Werte

mean

Arithmetisches Mittel der Werte

median

Arithmetischer Median (50%-Quantil) der Werte

mad

Mittlere absolute Abweichung vom Mittelwert

prod

Produkt aller Werte

var

Stichprobenvarianz der Werte

std

Stichprobenstandardabweichung der Werte

skew

Stichprobenschiefe (drittes Moment) der Werte

kurt

Stichprobenwölbung (viertes Moment) der Werte

cumsum

Kumulierte Summe der Werte

cummin, cummax

Kumuliertes Minimum bzw. Maximum der Werte

cumprod

Kumuliertes Produkt der Werte

diff

Berechnung der ersten arithmetischen Differenz (nützlich für Zeitreihen)

pct_change

Berechnung der prozentualen Veränderungen