📜  pandas 通过根据 ID 求和来压缩数据帧 - Python (1)

📅  最后修改于: 2023-12-03 15:33:24.972000             🧑  作者: Mango

pandas 通过根据 ID 求和来压缩数据帧 - Python

在实际应用中,我们通常会遇到需要对数据进行汇总处理的情况。比如:对某个公司的某个月份的销售数据进行统计,需要汇总各个部门的销售总和;对某个地区的电力数据进行统计,需要汇总各个发电站的发电总量等等。

而这个时候,pandas 就提供了一种非常便捷的方法来对数据进行处理,那就是通过根据 ID 求和来压缩数据帧。

原数据

我们以一份某公司员工销售数据为例,假设数据如下表所示:

| ID | Name | Department | Sales | |----|-------|------------|-------| | 1 | 张三 | 电商部 | 1000 | | 2 | 李四 | 电商部 | 1500 | | 3 | 王五 | 实体店部 | 2000 | | 4 | 赵六 | 实体店部 | 1200 | | 5 | 钱七 | 电商部 | 800 | | 6 | 周八 | 实体店部 | 600 | | 7 | 吴九 | 客服部 | 300 | | 8 | 郑十 | 客服部 | 500 |

处理过程

我们可以使用 pandas 库中的 groupby() 函数,来对 ID 进行分组,并对 Sales 进行求和操作。

import pandas as pd

# 创建数据帧
df = pd.DataFrame({'ID': [1, 2, 3, 4, 5, 6, 7, 8],
                   'Name': ['张三', '李四', '王五', '赵六', '钱七', '周八', '吴九', '郑十'],
                   'Department': ['电商部', '电商部', '实体店部', '实体店部', '电商部', '实体店部', '客服部', '客服部'],
                   'Sales': [1000, 1500, 2000, 1200, 800, 600, 300, 500]})

# 按照 ID 分组,并求和 Sales
df_sum = df.groupby(['ID', 'Name']).sum()

# 打印处理后的数据
print(df_sum)

结果如下所示:

           Sales
ID Name         
1  张三     1000
2  李四     1500
3  王五     2000
4  赵六     1200
5  钱七      800
6  周八      600
7  吴九      300
8  郑十      500
结论

通过以上操作,我们成功地将原数据进行了压缩,得到了以 ID 为索引,Sales 为值的新数据帧,并可以方便地进行下一步的数据分析。如果你还没有掌握 pandas 库中的 groupby() 函数,那么这篇文章对你来说是非常重要的参考资料,希望它可以对你有所帮助。