是否有相当于dplyr :: summarize的pandas?

时间:2016-05-13 12:20:20

标签: python r pandas dplyr

在R / dplyr中,我可以做到

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

并获得:

  max_width min_width
1       4.4         2

pandas中有类似summarise的内容吗?我知道describe(),但我希望结果只包含给定列的给定摘要统计信息,而不是所有列的所有摘要统计信息。在大熊猫中,iris.describe()给出:

        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

2 个答案:

答案 0 :(得分:1)

从版本0.20开始,agg也可以在DataFrame上调用source)。

所以你可以这样做:

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

另见dplyr summarize equivalent in pandas。那个人专注于groupby操作。

答案 1 :(得分:0)

对于你的问题: 是的,有。

>>> from datar.all import f, summarise, max, min
>>> from datar.datasets import iris
>>> 
>>> summarise(iris, max_width=max(f.Sepal_Width), min_width=min(f.Sepal_Width))
   max_width  min_width
   <float64>  <float64>
0        4.4        2.0

我是 datar 软件包的作者。