如何在Pandas数据框中计算汇总的摘要统计信息

时间:2019-03-28 00:52:18

标签: python pandas statistics

我有一个与此类似的Pandas数据框:

>>> df = pd.DataFrame(data=np.array([['red', 'cup', 1.50], ['blue', 'jug', 2.40], ['red', 'cup', 1.75], ['blue', 'cup', 2.30]]),
...                   columns=['colour', 'item', 'price'])
>>> df
  colour item price
0    red  cup   1.5
1   blue  jug   2.4
2    red  cup  1.75
3   blue  cup   2.3

对于每种可能的颜色和项目组合,计算价格摘要统计信息的最简洁方法是什么?

预期输出,例如:

colour     item      mean     stdev
red        cup       1.625    0.176
blue       jug       2.4      NA
blue       cup       2.3      NA

2 个答案:

答案 0 :(得分:2)

请注意,由于numpy array仅接受一个dtype,因此创建数据框的方式已迫使列价格不再是数字字符串

运行:

df.price=pd.to_numeric(df.price)

我将在describe之后使用groupby

df.groupby(['colour','item']).price.describe()# you can add reset_index() here
             count   mean       std  min     25%    50%     75%   max
colour item                                                          
blue   cup     1.0  2.300       NaN  2.3  2.3000  2.300  2.3000  2.30
       jug     1.0  2.400       NaN  2.4  2.4000  2.400  2.4000  2.40
red    cup     2.0  1.625  0.176777  1.5  1.5625  1.625  1.6875  1.75

或者您可以使用agg

df.groupby(['colour','item']).price.agg(['std','mean'])

答案 1 :(得分:1)

您可以结合使用pd = %athena select 1 pd %%athena select col1, count(*) from my_table group by col1 并将其传递给groupby.agg函数:

mean