Problem Versuch eines groupby auf einem einfachen dataframe (downloadable csv) und dann agg, um Aggregatwerte für Spalten (Größe, Summe, Mittelwert, Standardabweichung) zurückzugeben. Was wie ein einfaches Problem aussieht, ist ein unerwartet schwieriger Fehler.Pandas groupby agg mit mehreren Funktionen, um Fehler anzuwenden
Top15.groupby('Continent')['Pop Est'].agg(np.mean, np.std...etc)
# returns
ValueError: No axis named <function std at 0x7f16841512f0> for object type <class 'pandas.core.series.Series'>
Was ich versuche, ist ein df mit Index auf Kontinente und Spalten ['size', 'sum', 'mean', 'std']
Beispielcode
import pandas as pd
import numpy as np
# Create df
df = pd.DataFrame({'Country':['Australia','China','America','Germany'],'Pop Est':['123','234','345','456'],'Continent':['Asia','Asia','North America','Europe']})
# group and agg
df = df.groupby('Continent')['Pop Est'].agg('size','sum','np.mean','np.std')
Die Syntax lautet 'agg ([np.mean, np.std, ...]) '. –
@IgorRaush Ich habe das ausprobiert und bekomme einen 'DataError: Keine numerischen Typen zu aggregieren', was komisch ist, wenn ich mir den Datenframe ansehe, es ist klar, dass da Daten sind. – Adestin
Ihre Beispieldaten enthalten die Spalte 'Pop Est' als Zeichenfolgen, keine numerischen Daten. Deshalb erhalten Sie den Fehler. Probieren Sie 'df ['Pop Est'] = pd.to_numeric (df ['Pop Est'])' oder 'df ['Pop Est'] = df ['Pop Est']. Astype (int)' vor der Ausführung des ' groupby', unter Verwendung der von Igor erwähnten Syntax. – root