Python数据分析入门(十二):数据聚合与分组
2021-06-05 03:04
标签:bsp -o str gate 方法 list 均值 函数 min 如图: by:根据什么进行分组,用于确定groupby的组 as_index:对于聚合输出,返回以组便签为索引的对象,仅对DataFrame Python数据分析入门(十二):数据聚合与分组 标签:bsp -o str gate 方法 list 均值 函数 min 原文地址:https://www.cnblogs.com/qshhl/p/14638484.html什么是分组聚合?
df1 = pd.DataFrame({‘fruit‘:[‘apple‘,‘banana‘,‘orange‘,‘apple‘,‘banana‘],
‘color‘:[‘red‘,‘yellow‘,‘yellow‘,‘cyan‘,‘cyan‘],
‘price‘:[8.5,6.8,5.6,7.8,6.4]})
#查看类型
type(df1.groupby(‘fruit‘))
pandas.core.groupby.groupby.DataFrameGroupBy #GruopBy对象,它是一个包含组名,和数据块的2维元组序列,支持迭代
for name, group in df1.groupby(‘fruit‘):
print(name) #输出组名
apple
banana
orange
print(group) # 输出数据块
fruit color price
0 apple red 8.5
3 apple cyan 7.8
fruit color price
1 banana yellow 6.8
4 banana cyan 6.4
fruit color price
2 orange yellow 5.6
#输出group类型
print(type(group)) #数据块是dataframe类型
class ‘pandas.core.frame.DataFrame‘>
class ‘pandas.core.frame.DataFrame‘>
class ‘pandas.core.frame.DataFrame‘>
#选择任意的数据块
dict(list(df1.groupby(‘fruit‘)))[‘apple‘] #取出apple组的数据块
fruit color price
0 apple red 8.5
3 apple cyan 7.8
聚合
#Groupby对象具有上表中的聚合方法
#根据fruit来求price的平均值
df1[‘price‘].groupby(df1[‘fruit‘]).mean()
fruit
apple 8.15
banana 6.60
orange 5.60
Name: price, dtype: float64
#或者
df1.groupby(‘fruit‘)[‘price‘].mean()
#as_index=False
df1.groupby(‘fruit‘,as_index=False)[‘price‘].mean()
fruit price
0 apple 8.15
1 banana 6.60
2 orange 5.60
"""
如果我现在有个需求,计算每种水果的差值,
1.上表中的聚合函数不能满足于我们的需求,我们需要使用自定义的聚合函数
2.在分组对象中,使用我们自定义的聚合函数
"""
#定义一个计算差值的函数
def diff_value(arr):
return arr.max() - arr.min()
#使用自定义聚合函数,我们需要将函数传递给agg或aggregate方法,我们使用自定义聚合函数时,会比我们表中的聚合函数慢的多,因为要进行函数调用,数据重新排列
df1.groupby(‘fruit‘)[‘price‘].agg(diff_value)
fruit
apple 0.7
banana 0.4
orange 0.0
Name: price, dtype: float64