Pandas中数据的分组:分组->处理->合并

ry Lee ◉‿◉

对数据进行分组操作,往往是为了对数据做进一步的处理。一般情况下,会按照以下的步骤,对数据进行操作:

  1. 将数据按照一定的条件进行分组
  2. 使用特定的方法,对各组数据进行处理
  3. 将结果重新合并为一组数据。

在对分组后数据进行处理时,通常会有以下几种方式:

  1. 聚合: 对每组数据进行汇总统计。例如:求每组数据的和、均值;又或是统计每组数据的个数。
  2. 转化: 通常是将数据按照特定的步骤进行处理。例如:将数据组进行标准化;又或者是利用每组数据的均值填充NA值。
  3. 过滤: 根据规则过滤掉某些组。例如:将含有NA值的数据归为一组并丢弃。

当然,也可以是以上多种处理方式的混合,例如:求出每组数据的均值,然后根据均值过滤掉某些不满足条件的数据组。

1. 将Pandas中的对象分组

在Pandas中,可以使用groupby()方法对Pandas对象在任意轴向上进行分组,并生成一个GroupBy对象。先用DataFrame对象做个简单的演示:

1
2
3
4
5
6
7
8
9
10
11
df = pd.DataFrame(
[
('男', '软件01', 18, 172.5, 64.3),
('女', '软件01', 18, 163.2, 45.6),
('女', '软件01', 17, 159.8, 43.8),
('男', '软件02', 18, 178.5, 78.2),
('男', '软件02', 19, 187.2, 89.5)
],
index=['张三', '李四', '王五', '赵六', '陈七'],
columns=['性别', '班级', '年龄', '身高', '体重']
)
groupby-df1-2023-03-30-15-44-04

使用groupby()进行分组:

1
2
In [2]: grouped = df.groupby('性别')
grouped

运行代码之后,会得到一个DataFrameGroupBy对象:

1
Out[2]: <pandas.core.groupby.generic.DataFrameGroupBy object at 0x10f662cd0>

让我们将这个DataFrameGroupBy对象转换为List,看看分组之后的结果是什么样的:

1
In [3]: list(grouped)
1
2
3
4
5
6
7
8
9
Out[3]: [('女',
性别 班级 年龄 身高 体重
李四 女 软件01 18 163.2 45.6
王五 女 软件01 17 159.8 43.8),
('男',
性别 班级 年龄 身高 体重
张三 男 软件01 18 172.5 64.3
赵六 男 软件02 18 178.5 78.2
陈七 男 软件02 19 187.2 89.5)]

可以看到,转换出的List中含有两个元组,每个元组中含有两个元素。第一个元素是组别,因为我们按照性别列进行的分组,所以最终的结果是两组。第二个元素是对应组别下的子DataFrame

  • 标题: Pandas中数据的分组:分组->处理->合并
  • 作者: ry Lee
  • 创建于 : 2023-03-27 21:37:37
  • 更新于 : 2023-11-28 12:17:56
  • 链接: https://blog.rylee.fun/2023/03/27/pandas-groupby/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
 评论
此页目录
Pandas中数据的分组:分组->处理->合并