Python Pandas 多列分组聚合以及索引转为列

Pandas是一个数据处理的库,今天我们来学习groupby()这个函数的用法。 

一.通过 pandas.groupby函数

import pandas as pd

data = pd.read_excel(r'分组汇总.xlsx')
print(data)

有如下数据 :

       销售日期  时间段 销售员  天河店销量  番禺店销量  越秀店销量
0      2022-01-01  上午  小敏    118        200    167
1      2022-01-01  上午  李红     88        188    188
2      2022-01-01  上午  马姐    156        180    180
3      2022-01-01  下午  小敏     90        199    188
4      2022-01-01  下午  李红    109        189    198
5      2022-01-01  下午  马姐     88        179    170
6      2022-01-02  上午  小敏    157        190    190
7      2022-01-02  上午  李红    200        200    189
8      2022-01-02  上午  马姐     90        199    188
9      2022-01-02  下午  小敏    109        189    198
10     2022-01-02  下午  李红     88        179    170
11     2022-01-02  下午  马姐    180        190    179

需求:

需要看每一天每个销售员在三个店的销售情况(两个维度,三个指标,多列聚合)

import pandas as pd

data = pd.read_excel(r'分组汇总.xlsx')
print(data)
sum_df = data.groupby(by=['销售日期', '销售员'])['天河店销量', '番禺店销量', '越秀店销量'].sum()
print(sum_df)
  1. # by=['销售日期', '销售员'] 意思是对列表里字段进行分组,然后通过['天河店销量', '番禺店销量', '越秀店销量']列表里字段进行求和汇总

  2. # 返回Series类型对象。 ['销售日期', '销售员']会变成index

  3. # ['天河店销量', '番禺店销量', '越秀店销量']则成为值

运行结果 :

 这样就实现了,但往往还需要把index转换成列

使用 pandas.DataFrame.reset_index

函数作用:重置索引或其level。
重置数据帧的索引,并使用默认索引。如果数据帧具有多重索引,则此方法可以删除一个或多个level。

函数主要有以下几个参数:reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill='')

各个参数介绍:

level:可以是int, str, tuple, or list, default None等类型。作用是只从索引中删除给定级别。默认情况下删除所有级别。

drop:bool, default False。不要尝试在数据帧列中插入索引。这会将索引重置为默认的整数索引。

inplace:bool, default False。修改数据帧(不要创建新对象)。

col_level:int or str, default=0。如果列有多个级别,则确定将标签插入到哪个级别。默认情况下,它将插入到第一层。

col_fill:object, default。如果列有多个级别,则确定其他级别的命名方式。如果没有,则复制索引名称。

重置索引时,将旧索引添加为列,并使用新的顺序索引:

import pandas as pd

data = pd.read_excel(r'分组汇总.xlsx')
print(data)
sum_df = data.groupby(by=['销售日期', '销售员'])['天河店销量', '番禺店销量', '越秀店销量'].sum()
print(sum_df)
sum_df = sum_df.reset_index()
print(sum_df)

运行结果: 

 

  • 8
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值