Pandas Studiennotizen.
http://pandas.pydata.org/pandas-docs/stable/groupby.html Während ich hier las, war es schwierig, das Beispiel der Gruppe durch Wertvervollständigung zu verstehen, daher werde ich ein einfaches Beispiel schreiben.
Vorbereitung.
In [1]: import pandas as pd
In [2]: import numpy as np
In [3]: key = list('ABCABCABC')
In [4]: value = [1,2,3,np.nan,np.nan,np.nan,4,4,4]
In [5]: df = pd.DataFrame({'key': key, 'value': value})
In [6]: df
Out[6]:
key value
0 A 1.0
1 B 2.0
2 C 3.0
3 A NaN
4 B NaN
5 C NaN
6 A 4.0
7 B 4.0
8 C 4.0
Wenn Sie "ffill ()" ohne Gruppierung ausführen, werden alle drei NaNs mit "value" 3.0 mit "index" von 2 ergänzt.
In [7]: df.ffill()
Out[7]:
key value
0 A 1.0
1 B 2.0
2 C 3.0
3 A 3.0
4 B 3.0
5 C 3.0
6 A 4.0
7 B 4.0
8 C 4.0
Wenn Sie nach Schlüssel gruppieren und dann ffill (), wird NaN für jede Gruppe durch den Wert unmittelbar vor NaN ergänzt. Wenn daher "Index" 0, 1, 2 ist ("Schlüssel" ist A, B, C), "Wert" 1,0, 2,0, 3,0 und "Index" 3, 4, 5 ("Schlüssel" ist A, B) C) "Wert" wird ergänzt.
In [8]: df.groupby('key').ffill()
Out[8]:
key value
0 A 1.0
1 B 2.0
2 C 3.0
3 A 1.0
4 B 2.0
5 C 3.0
6 A 4.0
7 B 4.0
8 C 4.0
Wenn "Wert" "NaN" ist, nehmen Sie den Durchschnittswert für jede Gruppe und füllen Sie ihn aus.
In [9]: f = lambda x: x.fillna(x.mean())
In [10]: transformed = df.groupby('key').transform(f)
In [11]: transformed
Out[11]:
value
0 1.0
1 2.0
2 3.0
3 2.5
4 3.0
5 3.5
6 4.0
7 4.0
8 4.0
Wenn Sie den Durchschnitt für jede Gruppe vor und nach dem Füllen nehmen, erhalten Sie den gleichen Wert (GroupBy.mean ()
[schließt NaN
von der Berechnung aus](http: //pandas.pydata. org / pandas-docs / stabile / generierte / pandas.core.groupby.GroupBy.mean.html # pandas.core.groupby.GroupBy.mean)).
In [12]: df.groupby('key').mean()
Out[12]:
value
key
A 2.5
B 3.0
C 3.5
In [13]: transformed.groupby(key).mean()
Out[13]:
value
A 2.5
B 3.0
C 3.5
Recommended Posts