Pandas数据处理(续)/数据聚合

5. 数据聚合【重点】

数据聚合是数据处理的最后一步,通常是要使每一个数组生成一个单一的数值。

数据分类处理:

  • 分组:先把数据分为几组
  • 用函数处理:为不同组的数据应用不同的函数以转换数据
  • 合并:把不同组得到的结果合并起来

数据分类处理的核心: groupby()函数

  • 创建数据集
df = DataFrame({'item':np.random.randint(0,4,50),
                'level':np.random.randint(0,3,size = 50),
                'price':np.random.randint(1,10,size = 50),
                'sailer':np.random.randint(0,3,size = 50),
                'weight':np.random.randint(50,100,size = 50)})
df

  • 赋值转换
# = 赋值 :使用map({字典集}) 
df['item'] = df['item'].map({0:'萝卜',1:'白菜',2:'西红柿',3:'黄瓜'})
df['level'] = df['level'].map({0:'差',1:'中',2:'优'})
df['sailer'] = df['sailer'].map({0:'张大妈',1:'李大妈',2:'赵大叔'})
df

  • 聚合操作
# 按 sailer,item分组,显示价格的最大值
aa=df.groupby(['sailer','item'])['price'].max()
aa

Out:[Series]
sailer  item
张大妈     白菜      8
        萝卜      8
        西红柿     9
        黄瓜      2
李大妈     白菜      4
        萝卜      6
        西红柿     7
        黄瓜      9
赵大叔     白菜      8
        萝卜      9
        西红柿     8
        黄瓜      8
Name: price, dtype: int32

# 按等级,类别分组,显示价格和体重的最小值
df.groupby(['level','item'])['price','weight'].min()

  • 求总和
weight_sum = df.groupby(['level'])['weight'].sum()
weight_sum
Out:
level
中    1570
优     790
差    1250
Name: weight, dtype: int64
weight_sum = DataFrame(weight_sum)
weight_sum

# 给表头修改名字
weight_sum = weight_sum.rename({'weight':'weight_sum'},axis = 1)
weight_sum

  • 合并聚合表格【左连接:left_on='level',right_index=True】注意:没有right_index=True会报错
df2 = df.merge(weight_sum,left_on='level',right_index=True)
df2

  • 求平均价格
price_mean = df.groupby(['item'])['price'].mean()
price_mean = DataFrame(price_mean)
price_mean

# 修改标题名称
price_mean.columns = ['price_mean']
price_mean

  • 合并聚合数据表格
df2.merge(price_mean,left_on='item',right_index=True)

猜你喜欢

转载自blog.csdn.net/Dorisi_H_n_q/article/details/82343462