[PYTHON] Pandas: groupby (), um den Wert nach Gruppe zu vervollständigen

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

Füllen Sie () gruppenweise aus

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

Nehmen Sie den Durchschnitt für jede Gruppe und füllen Sie ihn aus

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

Pandas: groupby (), um den Wert nach Gruppe zu vervollständigen
Standardisieren Sie nach Gruppen mit Pandas
So beheben Sie mehrere Spalten, die von der Pandas-Gruppe generiert wurden, indem Sie sie zu einer einzelnen verarbeiten
Bearbeiten von Strings mit Pandas gruppieren nach
Feature-Generierung mit Pandas gruppieren nach
Geschwindigkeitsvergleich beim Umschalten nach Gruppen nach Pandas
Zeichnen Sie ein Diagramm, indem Sie es mit Pandas groupby verarbeiten
[Pandas] GroupBy-Tipps
Pandas mit fehlendem Wert
Nach Pandas sortieren
So extrahieren Sie mit Pandas Daten, denen der Wert nan nicht fehlt
So extrahieren Sie mit Pandas Daten, denen der Wert nan nicht fehlt
Verwendung von Pandas 2
Konvertieren Sie 202003 bis 2020-03 mit Pandas
Übergeben von Wert, Übergeben von Referenz, Übergeben von Referenz,
[Einführung in Pandas] Ich habe versucht, die Austauschdaten durch Dateninterpolation zu erhöhen ♬