Python中groupby函数原理及实现功能是什么
Admin 2022-07-27 群英技术资讯 1096 次浏览
在实际应用中,我们有时候会遇到“Python中groupby函数原理及实现功能是什么”这样的问题,我们该怎样来处理呢?下文给大家介绍了解决方法,希望这篇“Python中groupby函数原理及实现功能是什么”文章能帮助大家解决问题。一、分组原理
核心:
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 np
import 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 np
import 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)

总结
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
本文介绍了如何运用Python快速的对现有的数据库进行重命名,有此需求的朋友可以参考下
在定义了函数之后,就可以使用该函数了,下面这篇文章主要给大家介绍了关于python打印经典故事从前有座山的几种写法,通过这个有意思的实例帮助大家学习python,需要的朋友可以参考下
python中的多线程锁lock=threading.Lock()使用方式,下文有实例供大家参考,对大家了解操作过程或相关知识有一定的帮助,而且实用性强,希望这篇文章能帮助大家,下面我们一起来了解看看吧。
telepath库它提供了一种将包括Python对象在内的结构化数据打包为JSON可序列化格式的机制。通过向相应的JavaScript实现注册该机制,可以扩展该机制以支持任何Python类。然后,打包的数据可以包含在HTTP响应中,并在JavaScript中解压缩以获得与原始数据等效的数据结构。
本文主要给大家介绍OpenCV中实现图像梯度的方法,本文有具体示例代码及解释,有这方面学习需要的朋友可以参考,接下来跟随小编一起学习一下吧。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008