如何计算 Pandas 数据框中的聚合摘要统计数据

Jav*_*ide 5 python statistics pandas

我有一个与此类似的 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
Run Code Online (Sandbox Code Playgroud)

计算每种可能的颜色和商品组合的价格汇总统计的最简洁方法是什么?

预期输出例如:

colour     item      mean     stdev
red        cup       1.625    0.176
blue       jug       2.4      NA
blue       cup       2.3      NA
Run Code Online (Sandbox Code Playgroud)

WeN*_*Ben 4

请注意,创建数据框的方式强制价格列不再是数字,因为numpy array只接受一个dtype

跑步:

df.price=pd.to_numeric(df.price)
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

或者你可以使用agg

df.groupby(['colour','item']).price.agg(['std','mean'])
Run Code Online (Sandbox Code Playgroud)