Python groupby函数图文详解

 更新时间:2022年07月12日 09:07:31   作者:Vergil_Zsh  
pandas中DataFrame提供了一个灵活高效的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)

总结

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

相关文章

  • OpenCV实现背景分离(证件照背景替换)

    OpenCV实现背景分离(证件照背景替换)

    本文主要介绍了OpenCV实现背景分离(证件照背景替换),文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Python Selenium截图功能实现代码

    Python Selenium截图功能实现代码

    这篇文章主要介绍了Python Selenium截图功能实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Python通过len函数返回对象长度

    Python通过len函数返回对象长度

    这篇文章主要介绍了Python通过len函数返回对象长度,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • 用python实现文件备份

    用python实现文件备份

    大家好,本篇文章主要讲的是用python实现文件备份,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • Python中字典与恒等运算符的用法分析

    Python中字典与恒等运算符的用法分析

    这篇文章主要介绍了Python中字典与恒等运算符的用法,结合实例形式分析了Python中字典与恒等运算符功能、常见用法及操作注意事项,需要的朋友可以参考下
    2019-08-08
  • JSON文件及Python对JSON文件的读写操作

    JSON文件及Python对JSON文件的读写操作

    JSON和XML都是互联网上数据交换的主要载体。这篇文章主要介绍了JSON文件及Python对JSON文件的读写操作,需要的朋友可以参考下
    2018-10-10
  • Python第三方库h5py_读取mat文件并显示值的方法

    Python第三方库h5py_读取mat文件并显示值的方法

    今天小编就为大家分享一篇Python第三方库h5py_读取mat文件并显示值的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • pandas分区间,算频率的实例

    pandas分区间,算频率的实例

    今天小编就为大家分享一篇pandas分区间,算频率的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Flask框架使用DBUtils模块连接数据库操作示例

    Flask框架使用DBUtils模块连接数据库操作示例

    这篇文章主要介绍了Flask框架使用DBUtils模块连接数据库操作,结合实例形式较为详细的分析了flask框架使用DBUtils模块连接数据库的常见操作技巧与相关注意事项,需要的朋友可以参考下
    2018-07-07
  • Python装饰器有哪些绝妙的用法

    Python装饰器有哪些绝妙的用法

    本文主要介绍了Python装饰器有哪些绝妙的用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07

最新评论