您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch |

自学教程:Python

51自学网 2022-07-22 18:47:57
  python
这篇教程Python写得很实用,希望能帮到您。

一、分组原理

核心:

1、不论分组键是数组、列表、字典、Series、函数,只要其与待分组变量的轴长度一致都可以传入groupby进行分组。

2、默认axis=0按行分组,可指定axis=1对列分组。

groupby()语法格式

DataFrame.groupby(by=None, axis=0, level=None, as_index=True, group_keys=True, squeeze=False,  observed=False, **kwargs)

groupby原理

groupby就是按XX分组,比如将一个数据集按A进行分组,效果如下

使用groupby实现功能

import numpy as npimport pandas as pd data = pd.DataFrame({    'name': ['Tom', 'Kaggle', 'Litter', 'Sam', 'Sam', 'Sam'],    'race': ['B', 'C', 'D', 'E', 'B', 'C'],    'age': [37.0, 61.0, 56.0, 87.0, 58.0, 34.0],    'signs_of_mental_illness': [True, True, False, False, False, False]}) data.groupby('race')

 返回结果如上  得到一个叫DataFrameGroupBy的东西,pandas不能直接显示出来 可以调用list显示出来

groupby()的配合函数 函数 适用场景备注.mean()均值.count()计数.min()最小值.mean().unstack()求均值,聚合表的层次索引不堆叠.size()计算分组大小GroupBy的size方法,将返回一个含有分组大小的Series.apply().agg()

这里演示.mean()和.count()

# mean()data.groupby('name')['age'].mean()# count()data.groupby('name')['age'].count()data.groupby('age').count()

 也可以根据单键多列进行聚合

# 单键多列聚合data.groupby('name')[['race','age',]].count()

 .agg操作 可以取多个函数进行选择 有时候我们既需要平均值,有需要计数(也可是取一个)

agg为列表

print(data.groupby('name')['age'].agg(['mean'])) print(data.groupby('name')['age'].agg(['mean','count']))

也可以传入字典,对组内不同列采取不同的操作

print(data.groupby('race').agg({'age': np.median, 'signs_of_mental_illness': np.mean}))

.apply()

可以使用我们自己所创建的函数

print('apply之前')grouped = data.groupby('name')for name, group in grouped:    print(name)    print(group)print('/n')print('apply之后')print(data.groupby('name').apply(lambda x: x.head(2)))

 简单操作基本介绍完成

有时候需要将聚合的另一列放到一起 并且取消键的重复值 这个时候可以这样做

上面是构建的数据,需要对订购时间进行处理,这里我们是将月份+天数/30,然后对ID列进行去重,并将后面Time列计算的结果放到一起

import numpy as npimport pandas as pd  data = pd.read_excel('订购时间预测2.xlsx')def cut_m_d(x):	return round(x.month + x.day / 30, 2) data['m_d'] = data['Time'].apply(cut_m_d)grouped = data.groupby('ID')# 这一步是去重(ID),不去重会出现错误result = grouped['m_d'].unique()result2 = result.reset_index()print(result2)

总结

到此这篇关于Python groupby函数详解的文章就介绍到这了,更多相关groupby函数详解内容请搜索wanshiok.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持wanshiok.com!


Python实现解析参数的三种方法详解
一文教你将Visual Studio Code变成Python开发神器
51自学网,即我要自学网,自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1