Pandas 数据分组
最后修改时间:2025年3月1日
Pandas 是一个强大的 Python 数据处理库。在分析数据集时,分组数据是一项常见任务。本教程将通过实际示例介绍如何使用 Pandas 进行数据分组和聚合。
分组允许您根据条件将数据拆分成组,对每个组应用函数,然后合并结果。Pandas 为此提供了 `groupby` 函数。
基本分组
此示例展示了如何按单个列对数据进行分组。
import pandas as pd data = { 'Category': ['A', 'B', 'A', 'B', 'A'], 'Values': [10, 20, 30, 40, 50] } df = pd.DataFrame(data) grouped = df.groupby('Category').sum() print(grouped)
groupby('Category').sum()
会按“Category”列对数据进行分组,并计算每个组中“Values”的总和。这对于聚合数据很有用。
按多列分组
此示例演示了按多列进行分组。
import pandas as pd data = { 'Category': ['A', 'B', 'A', 'B', 'A'], 'Subcategory': ['X', 'X', 'Y', 'Y', 'X'], 'Values': [10, 20, 30, 40, 50] } df = pd.DataFrame(data) grouped = df.groupby(['Category', 'Subcategory']).sum() print(grouped)
groupby(['Category', 'Subcategory']).sum()
会按“Category”和“Subcategory”两列对数据进行分组。这对于层次分组很有用。
应用多重聚合
此示例展示了如何对分组数据应用多个聚合函数。
import pandas as pd data = { 'Category': ['A', 'B', 'A', 'B', 'A'], 'Values': [10, 20, 30, 40, 50] } df = pd.DataFrame(data) grouped = df.groupby('Category').agg(['sum', 'mean', 'count']) print(grouped)
agg(['sum', 'mean', 'count'])
将多个聚合函数应用于分组数据。这对于全面的分析很有用。
分组和过滤
此示例演示了如何根据聚合结果过滤组。
import pandas as pd data = { 'Category': ['A', 'B', 'A', 'B', 'A'], 'Values': [10, 20, 30, 40, 50] } df = pd.DataFrame(data) grouped = df.groupby('Category').filter(lambda x: x['Values'].sum() > 50) print(grouped)
filter(lambda x: x['Values'].sum() > 50)
会过滤掉“Values”总和大于 50 的组。这对于条件分组很有用。
分组和转换
此示例展示了如何转换分组数据。
import pandas as pd data = { 'Category': ['A', 'B', 'A', 'B', 'A'], 'Values': [10, 20, 30, 40, 50] } df = pd.DataFrame(data) df['Normalized'] = df.groupby('Category')['Values'].transform(lambda x: (x - x.mean()) / x.std()) print(df)
transform(lambda x: (x - x.mean()) / x.std())
会在每个组内对“Values”列进行标准化。这对于数据标准化很有用。
分组和计数
此示例演示了如何对分组数据进行计数。
import pandas as pd data = { 'Category': ['A', 'B', 'A', 'B', 'A'], 'Values': [10, 20, 30, 40, 50] } df = pd.DataFrame(data) grouped = df.groupby('Category').size() print(grouped)
size
方法会计算每个组中的行数。这对于频率分析很有用。
分组和自定义聚合
此示例展示了如何对分组数据应用自定义聚合函数。
import pandas as pd data = { 'Category': ['A', 'B', 'A', 'B', 'A'], 'Values': [10, 20, 30, 40, 50] } df = pd.DataFrame(data) def custom_agg(x): return x.max() - x.min() grouped = df.groupby('Category').agg(custom_agg) print(grouped)
agg(custom_agg)
将自定义聚合函数应用于分组数据。这对于专门的计算很有用。
数据分组最佳实践
- 了解数据:分组前分析数据结构。
- 选择合适的聚合:使用 `sum`、`mean` 等函数或自定义逻辑。
- 过滤组:使用 `filter` 排除不相关的组。
- 验证结果:检查分组数据的准确性和完整性。
来源
在本文中,我们探讨了如何在 Pandas 中对数据进行分组和聚合。
作者
列出 所有 Python 教程。