Seite 1 von 1

Pandas DataFrame: Durchschnitt von Spalten mit entsprechender ID erstellen

Verfasst: Sonntag 27. Dezember 2020, 13:02
von seiko2020
Moin zusammen,

ich habe folgendes Problem. Ich habe ein DataFrame mit mehreren ID's pro Zeile, etwa so:

Code: Alles auswählen

data_test = {'ID': [1,1,1,2,2,2,3,3,3],
            'year': [2000,2001,2001,2005,2004,2008,2002,2006,2010],
            'pop': [1.5,1.7,2.4,3,3.2,3.3,5,8,8.2]}
frame_test = pd.DataFrame(data_test)
Nun möchte ich für jede ID den Durchschnitt bilden und in einem neuen DataFrame ausgeben lassen. Dazu habe ich folgenden Befehl verwendet:

Code: Alles auswählen

frame_test["pop"].mean()
Dieser gibt mir allerdings den Durchschnitt für die gesamte Datenmenge an. Mein Ziel ist es am ende ein DataFrame zu erhalten, das etwa so aussieht:

ID_1 - Durchschnitt_year - Durchschnitt_pop
ID_2 - Durchschnitt_year - Durchschnitt_pop
ID_3 - Durchschnitt_year - Durchschnitt_pop

Vielen Dank im Voraus und beste Grüße

Re: Pandas DataFrame: Durchschnitt von Spalten mit entsprechender ID erstellen

Verfasst: Sonntag 27. Dezember 2020, 14:58
von __blackjack__
@seiko2020: Du suchst die `groupby()`- und die `agg()`-Methode:

Code: Alles auswählen

 In [398]: frame_test                                                            
Out[398]: 
   ID  year  pop
0   1  2000  1.5
1   1  2001  1.7
2   1  2001  2.4
3   2  2005  3.0
4   2  2004  3.2
5   2  2008  3.3
6   3  2002  5.0
7   3  2006  8.0
8   3  2010  8.2

In [399]: frame_test.groupby("ID").agg({"pop": "mean"})                         
Out[399]: 
         pop
ID          
1   1.866667
2   3.166667
3   7.066667

Re: Pandas DataFrame: Durchschnitt von Spalten mit entsprechender ID erstellen

Verfasst: Sonntag 27. Dezember 2020, 18:50
von naheliegend

Re: Pandas DataFrame: Durchschnitt von Spalten mit entsprechender ID erstellen

Verfasst: Sonntag 27. Dezember 2020, 19:39
von __blackjack__
@naheliegend: Da kommt dann das hier:

Code: Alles auswählen

In [400]: frame_test.groupby("ID").mean()                                       
Out[400]: 
           year       pop
ID                       
1   2000.666667  1.866667
2   2005.666667  3.166667
3   2006.000000  7.066667
Ich weiss nicht ob der Mittelwert der Jahreszahlen wirklich sinnvoll ist.

Re: Pandas DataFrame: Durchschnitt von Spalten mit entsprechender ID erstellen

Verfasst: Dienstag 29. Dezember 2020, 18:41
von seiko2020
@__blackjack__ & @naheliegend vielen Dank, genau das habe ich gesucht! :)