Python编程之数据分组
- 有哪些方式可以进行数据分组
 - 利用Pandas库进行分组
 - 使用itertools库的groupby分组操作
 - 构建Python字典方式实现(小规模数据,不适用数量特别大的情况,不需要依赖其它python库)
 - 利用NumPy的groupby函数分组操作
 - 利用Python的Dask库提供的函数进行分组
 - 下面看一个如何去实现坐标数据的分组示例
 - 总结
 
HI,各位老铁们,今天我们利用Python来介绍一下数据分组的相关知识点。众所周知Python是一种被广泛应用的高级编程语言,在团队项目开发和实际应用中,经常需要使用python来对数据进行拆分或分组等操作,因为它是一个跨平台语言,操作和兼容性都比较方便;既然如此,接下来详细的收罗与介绍一下Python都哪些库和方法可以对数据进行分组和拆分等操作;
有哪些方式可以进行数据分组
- Python pandas插件的groupby函数,用于对数组按key进行分组处理;
 - Python itertools插件的groupby,利用迭代器功能进行分组处理;
 - 利用Python的字典方式进行分组处理;
 - Python NumPy科学计算插件库的groupby进行分组处理;
 - 使用dask.dataframe库进行分组处理;
 - Python SciPy插件的group函数,用于对原数组进行相应的子集操作进行分组处理;
 
不同库其调用和处理方式各不相同,接下来将一一列出相应功能使用方式和示例。
利用Pandas库进行分组
使用pandas前需要提前安装pip3 install pandas
 
基本分组操作
import pandas as pd
# 示例数据
data = {
   
    'Category': ['A', 'B', 'A', 'B', 'A'],
    'Values': [10, 20, 30, 40, 50]
}
df = pd.DataFrame(data)
# 按 'Category' 分组并计算均值
grouped = df.groupby('Category')['Values'].mean()
print(grouped)
 
运行后输出结果:
Category
A    30.0
B    30.0
Name: Values, dtype: float64
 
分裂分组
grouped_multiple = df.groupby(['Category'])['Values'].agg(['sum', 'mean', 'count'])
 
运行后输出结果:
          sum  mean  count
Category                  
A          90  30.0      3
B          60  30.0      2
 
利用分组后再进行遍历
for name, group in df.groupby('Category'):
    print(f"Group: {
     name}")
    print(group)
 
运行后输出结果:
Group: A
  Category  Values
0        A      10
2        A      30
4        A      50
Group: B
  Category  Values
1        B      20
3        B      40
 
利用自定义聚合函数进行分组
def custom_agg(x):
    return x.max() - x.min()
result = df.groupby('Category')['Values'].agg(custom_agg)
 
运行后输出结果:
Category    
A    40
B    20
 
分组后进行条件过滤
filtered = df.groupby('Category').filter(lambda x: x['Values'].sum() > 50)
 
运行后输出结果:
  Category  Values
0        A      10
1        B      20
2        A      30
3        B      40
4        A      50
 
使用itertools库的groupby分组操作
需要掌握python迭代器的使用技巧
from itertools import groupby
# 示例数据(需按分组键排序)
data = sorted([
                