2016-05-13 3 views
2

In R/dplyr kann ichGibt es ein Pandas-Äquivalent von dplyr :: summarize?

summarise(iris, max_width=max(Sepal.Width), min_width=min(Sepal.Width)) 

tun und erhalten:

max_width min_width 
1  4.4   2 

Gibt es etwas ähnliches summarise in Pandas? Ich weiß, describe(), aber ich möchte, dass das Ergebnis nur eine bestimmte Zusammenfassung Statistik für eine bestimmte Spalte enthält, nicht alle zusammenfassende Statistiken für alle Spalten. In Pandas, iris.describe() gibt:

 sepal_length sepal_width petal_length petal_width 
count 150.000000 150.000000 150.000000 150.000000 
mean  5.843333  3.057333  3.758000  1.199333 
std  0.828066  0.435866  1.765298  0.762238 
min  4.300000  2.000000  1.000000  0.100000 
25%  5.100000  2.800000  1.600000  0.300000 
50%  5.800000  3.000000  4.350000  1.300000 
75%  6.400000  3.300000  5.100000  1.800000 
max  7.900000  4.400000  6.900000  2.500000 
+0

Dupe: http://StackOverflow.com/Questions/22235245/Calculate-Summary-Statistik-of-Columns-in-Dataframe/22235393#22235393, grundsätzlich ['beschreiben'] (http: //pandas.pydata. org/pandas-docs/stable/generated/pandas.DataFrame.describe.html) ist das Äquivalent. In diesem Fall können Sie eine Subauswahl treffen, indem Sie eine Liste von Spalten übergeben, für die Sie zusammenfassende Informationen zu 'iris [list_of_cols] .describe () 'oder' iris ['sepal_length']. describe() 'gibt dir Statistiken nur für diese Spalte – EdChum

+0

Wenn du nur nach bestimmten Statistiken bist, indexierst du sie 'iris [' sepal_width ']. describe(). loc [ ['min', 'max']] ' – EdChum

+0

Wenn Sie nur diese Berechnungen durchführen möchten, können Sie auch einfach' pd.Series (dict (max_width = iris.sepal_width.max(), min_width = iris.sepal_width.min)())), um fast die gleiche Ausgabe wie die dplyr zu bekommen. – joris

Antwort

1

Ab Version 0.20 können agg auch auf Datenrahmen genannt werden (source).

So können Sie tun Dinge wie:

iris.agg({'sepal_width': 'min', 'petal_width': 'max'}) 

petal_width 2.5 
sepal_width 2.0 
dtype: float64 

iris.agg({'sepal_width': ['min', 'median'], 'sepal_length': ['min', 'mean']}) 

     sepal_length sepal_width 
mean  5.843333   NaN 
median   NaN   3.0 
min   4.300000   2.0 

Auch dplyr summarize equivalent in pandas sehen. Dieser konzentriert sich jedoch auf Groupby-Operationen.