groupby函数详解
⼀、分组原理
核⼼:
1、不论分组键是数组、列表、字典、Series、函数,只要其与待分组变量的轴长度⼀致都可以传⼊groupby进⾏分组。
2、默认axis=0按⾏分组,可指定axis=1对列分组。
groupby()语法格式
groupby就是按XX分组,⽐如将⼀个数据集按A进⾏分组,效果如下
使⽤groupby实现功能
import numpy as np
import pandas as pd
data = pd.DataFrame({
'name': ['Tom', 'Kaggle', 'Litter', 'Sam', 'Sam', 'Sam'],
'race': ['B', 'C', 'D', 'E', 'B', 'C'],
'age': [37.0, 61.0, 56.0, 87.0, 58.0, 34.0],
'signs_of_mental_illness': [True, True, False, False, False, False]
})
返回结果如上 得到⼀个叫DataFrameGroupBy的东西,pandas不能直接显⽰出来 可以调⽤list显⽰出来
groupby()的配合函数
函数 适⽤场景备注
.mean()均值
.count()计数
.min()最⼩值
.mean().unstack()求均值,聚合表的层次索引不堆叠
.size()计算分组⼤⼩GroupBy的size⽅法,将返回⼀个含有分组⼤⼩的Series
.apply()
.agg()
这⾥演⽰.mean()和.count()
# mean()
也可以根据单键多列进⾏聚合
# 单键多列聚合
.agg操作 可以取多个函数进⾏选择 有时候我们既需要平均值,有需要计数(也可是取⼀个) agg为列表
upby('name')['age'].agg(['mean']))
upby('name')['age'].agg(['mean','count']))
也可以传⼊字典,对组内不同列采取不同的操作
upby('race').agg({'age': np.median, 'signs_of_mental_illness': np.mean}))
.apply()
可以使⽤我们⾃⼰所创建的函数
print('apply之前')
grouped = upby('name')
for name, group in grouped:
print(name)
print(group)
print('\n')
print('apply之后')
upby('name').apply(lambda x: x.head(2)))
groupby是什么函数
简单操作基本介绍完成
有时候需要将聚合的另⼀列放到⼀起 并且取消键的重复值 这个时候可以这样做
上⾯是构建的数据,需要对订购时间进⾏处理,这⾥我们是将⽉份+天数/30,然后对ID列进⾏去重,并将后⾯Time列计算的结果放到⼀起
import numpy as np
import pandas as pd
data = pd.read_excel('订购时间预测2.xlsx') def cut_m_d(x):
return h + x.day / 30, 2)
data['m_d'] = data['Time'].apply(cut_m_d) grouped = upby('ID')
# 这⼀步是去重(ID),不去重会出现错误result = grouped['m_d'].unique()
result2 = set_index()
print(result2)
后续将进⾏更复杂操作的更新
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论