pandas第四章-分组、聚合函数

一、分组模式及其对象

例子:依据 季节 分组,求每一个季节的 温度 的均值
想要实现分组操作,必须明确三个要素:分组依据 、 数据来源 、 操作及其返回结果
df.groupby(分组依据)[数据来源].使用操作
例子则可以表现为:

#依据 季节 分组,求每一个季节的 温度  的均值
df.groupby('jijie')['shuju'].mean()

#依据性别分组统计身高中位数
df.groupby('Gender')['Height'].median()

#根据多维进行分组
#例:根据学校和性别进行分组,统计身高的均值
df.groupby(['School', 'Gender'])['Height'].mean()

#例:根据学生体重是否超过总体均值来分组,再计算身高的均值。
condition = df.Weight > df.Weight.mean()
df.groupby(condition)['Height'].mean()
Out[7]: 
Weight
False    159.034646
True     172.705357

分组的三大操作:聚合、变换和过滤

二、聚合函数

max/min/mean/median/count/all/any/idxmax/idxmin/mad/nunique/skew/quantile/sum/std/var/sem/size/prod

五、练习

第一题
在这里插入图片描述
1.先过滤出所属 Country 数超过2个的汽车,即若该汽车的 Country 在总体数据集中出现次数不超过2则剔除,再按 Country 分组计算价格均值、价格变异系数、该 Country 的汽车数量,其中变异系数的计算方法是标准差除以均值,并在结果中把变异系数重命名为 CoV。

df = pd.read_csv('数据')
df.head(10)
#剔除filter   ,agg计算多个返回值
df.groupby('Country').filter(lambda x:x.shape[0]>2).groupby('Country')['Price'].agg([('coV',lambda x:x.std()/x.men()),'mean','count'])

2.按照表中位置的前三分之一、中间三分之一和后三分之一分组,统计 Price 的均值。

df.shape[0]  #60
#分割表中位置的方法
condition = ['HEad']*20+['Mid']*20+['Tail']*20
df.groupby(condition)['Price'].mean()

3,对类型 Type 分组,对 Price 和 HP 分别计算最大值和最小值,结果会产生多级索引,请用下划线把多级列索引合并为单层索引。

res=df.groupby('Type').agg({'Price':['max'],'HP':['min']})
#agg的使用
#map()函数
res.columns = res.columns.map(lambda x:'_'.join(x))
res
         Price_max  HP_min
Type                      
Compact      18900      95
Large        17257     150
Medium       24760     110
Small         9995      63
Sporty       13945      92
Van          15395     106

4.对类型 Type 分组,对 HP 进行组内的 min-max 归一化。

def normalize(s):
	s_min,s_max = s.min(),s.max()
	res = (s-s_min)/(s_max-s_min)
	return res
#定义标准化函数
df.groupby('Type')['HP'].transform(normalize).head()

5,对类型 Type 分组,计算 Disp. 与 HP 的相关系数。

df.groupby('Type')[['HP','Disp.']].apply(lambda x:np.corrcoef(x['HP'].values,x['Disp.'].values)[0,1])

第二题
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值