首页 > 解决方案 > 使用 Pandas 计算某些列/条目的统计信息?

问题描述

我基本上是在尝试使用 pandas 从 .csv 文件中获取最大值、最小值、平均值等,尽管我得到了一些奇怪的输出。我也想按特定品牌过滤。例如,假设品牌 Ford 有更多条目,我想打印所有 Fords 的最大值。

前任。CSV

**Brand**              **Color**           **Price**

  Ford                    Red                  5

 Ferrari                  Blue                 10 

 Chevy                    Green                15

我的代码

import pandas as pd

df=pd.read_csv(r'Cars.csv')
df1 = df[['Brand','Price']]

groupby_MAX = df1.groupby(['Brand']).max()
groupby_MIN = df1.groupby(['Brand']).min()
groupby_AVG = df1.groupby(['Brand']).mean()
groupby_STD = df1.groupby(['Brand']).std()
groupby_RNG = (df1.groupby(['Brand']).max() - df1.groupby(['Brand']).min())


print('Max of values, grouped by Brand: ' + str(groupby_MAX))
print('\nMin of values, grouped by Brand: ' + str(groupby_MIN))

我的输出

Max of values, grouped by Brand:             Price
Brand         
Ford          5
Ferrari       10
Chevy         15

Min of values, grouped by Brand:             Price
Brand         
Ford         5
Ferrari      10
Chevy        15

我想要的是

Stats, grouped by Brand:             
    Brand        Max       Min     Mean   S.Dev 
    Ford          5         5        5      5
    Ferrari       10        10      10      10
    Chevy         15        15      15      15

标签: pythonpandas

解决方案


您可以使用.agg聚合数据框上的几个函数。

例子:

用户自定义范围函数:

def rng(x):
    return x.max() - x.min()

.agg与内置函数和用户定义函数一起使用:

df.groupby(by='Brand').agg(['max', 'min', 'mean', 'std', rng])

这产生:

        Price                  
          max min mean  std rng
Brand                          
Chevy      15  15   15  0.0   0
Ferrari    10  10   10  0.0   0
Ford        5   5    5  0.0   0

推荐阅读