分组统计 - DataFrame.groupby() 所见的各种用法 - Python代码
目录
所见 1 :日常用法
所见 2 :解决groupby.sum() 后层级索引levels上移的问题
所见 3 :解决groupby.apply() 后层级索引levels上移的问题
所见 4 :groupby函数的分组结果保存成DataFrame
groupby的函数定义:
DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs)
- by :接收映射、函数、标签或标签列表;用于确定聚合的组。
- axis : 接收 0/1;用于表示沿行(0)或列(1)分割。
- level : 接收int、级别名称或序列,默认为None;如果轴是一个多索引(层次化),则按一个或多个特定级别分组。
- as_index:接收布尔值,默认Ture;Ture则返回以组标签为索引的对象,False则不以组标签为索引。
其他的参数解释就看文档吧:链接:pandas.DataFrame.groupby 介绍文档
所见 1 :日常用法
import pandas as pddf = pd.DataFrame({'Gender' : ['男', '女', '男', '男', '男', '男', '女', '女', '女'],'name' : ['周杰伦', '蔡依林', '林俊杰', '周杰伦', '林俊杰', '周杰伦', '田馥甄', '蔡依林', '田馥甄'],'income' : [4.5, 2.9, 3.8, 3.7, 4.0, 4.1, 1.9, 4.1, 3.2],'expenditure' : [1.5, 1.9, 2.8, 1.7, 4.1, 2.5, 1.1, 3.4, 1.2]})
#根据其中一列分组
df_expenditure_mean = df.groupby(['Gender']).mean()#根据其中两列分组
df_expenditure_mean = df.groupby(['Gender', 'name']).mean()#只对其中一列求均值
df_expenditure_mean = df.groupby(['Gender', 'name'])['income'].mean()
输出示例:
所见 2 :解决groupby.sum() 后层级索引levels上移的问题
上图中的输出二,虽然是 DataFrame 的格式,但是若需要与其他表匹配的时候,这个格式就有些麻烦了。匹配数据时,我们需要的数据格式是:列名都在第一行,数据行中也不能有 Gender 列这样的合并单元格。因此,我们需要做一些调整,将 as_index 改为 False ,默认是 Ture 。
#不以组标签为索引,通过 as_index 来实现
df_expenditure_mean = df.groupby(['Gender', 'name'], as_index=False).mean()
输出:
所见 3 :解决groupby.apply() 后层级索引levels上移的问题
在所见 2 中我们知道,使用参数 as_index 就可使 groupby 的结果不以组标签为索引,但是后来在使用 groupby.apply() 时发现,as_index 参数失去了效果。如下例所示:
# 使用了 as_index=False,但是从输出结果中可见没起到作用
df_apply = df.groupby(['Gender', 'name'], as_index=False).apply(lambda x: sum(x['income']-x['expenditure'])/sum(x['income']))
df_apply = pd.DataFrame(df_apply,columns=['存钱占比'])#转化成dataframe格式
输出:
解决办法: 加一句df_apply_index = df_apply.reset_index()
# 加一句df_apply_index = df_apply.reset_index()
df_apply = df.groupby(['Gender', 'name'], as_index=False).apply(lambda x: sum(x['income']-x['expenditure'])/sum(x['income']))
df_apply = pd.DataFrame(df_apply,columns=['存钱占比'])#转化成dataframe格式
df_apply_index = df_apply.reset_index()
输出:
所见 4 :groupby函数的分组结果保存成DataFrame
所见 1 中的输出三,明显是 Series ,我们需要将其转化为 DataFrame 格式的数据。
#只对其中一列求均值,并转化为 DataFrame
df_expenditure_mean = df.groupby(['Gender', 'name'], as_index=False)['income'].mean()
df_expenditure_mean = pd.DataFrame(df_expenditure_mean)#转化成dataframe格式
df_expenditure_mean.rename(columns={'income':'收入均值'}, inplace = True)
输出:
下班啦,明天继续!
分组统计 - DataFrame.groupby() 所见的各种用法 - Python代码相关推荐
- python三国演义人物出场统计ppt_Python学习之四大名著人物出场次数Python代码-Go语言中文社区...
<三国演义>,<水浒传>,<西游记>的人物出场次数Python代码: 经过代码运行的结果可以看出三国作者对曹操和孔明比较喜爱:水浒作者对宋江和武松比较喜爱:西游作者 ...
- python分组统计数据_数据分组统计
统计分析数据的时候,经常需要进行分组统计.分组操作在python里的实现方式就是groupby语句. 惯例,咱们先造一个DataFrame表. import pandas as pd dic={ 'c ...
- pandas使用groupby函数对dataframe进行分组统计、使用as_index参数设置分组聚合的结果中分组变量不是dataframe的索引(index)
pandas使用groupby函数对dataframe进行分组统计.使用as_index参数设置分组聚合的结果中分组变量不是dataframe的索引(index) 目录
- python dataframe group by_Python DataFrame.groupby()聚合函数,分组级运算
pandas提供了一个灵活高效的groupby功能,它使你能以一种自然的方式对数据集进行切片.切块.摘要等操作.根据一个或多个键(可以是函数.数组或DataFrame列名)拆分pandas对象.计算分 ...
- pandas相关函数sort_values、字符串处理、index、merge、数据合并cancat、groupby分组统计
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.排序函数sort_values() 二.字符串处理 1.介绍 2.代码介绍 3.Categorical类型降低数据 ...
- Pandas数据分析—groupby分组统计
13.Pandas中groupby分组统计 文章目录 13.Pandas中groupby分组统计 前言 一.分组使用聚合函数做数据统计 1.准备数据 二.遍历groupby的结果理解执行流程 三.实例 ...
- pandas分组统计 - groupby功能
数据分组 分组统计 - groupby功能 ① 根据某些条件将数据拆分成组 ② 对每个组独立应用函数 ③ 将结果合并到一个数据结构中 Dataframe在行(axis=0)或列(axis=1)上进行分 ...
- python 数据分组后看每组多少个_【Python】分组统计GroupBy技术详解
摘要 进行数据分析时,GroupBy分组统计是非常常用的操作,也是十分重要的操作之一.基本上大部分的数据分析都会用到该操作,本文将对Python的GroupBy分组统计操作进行讲解. 1.GroupB ...
- groupby函数分组统计
groupby函数分组统计(这里写自定义目录标题) 分组统计后的类别的计数以及某类的总和 data.groupby(['User Id'])['Integral'].count() data.grou ...
最新文章
- Grails里DOMAIN类的一对一,一对多,多对多关系总结及集成测试
- Cacti/Nagios监控系统应用场景
- php 实现tab切换_微信小程序实例:实现顶部tab切换以及滑动切换时导航栏会随着移动的效果(代码)...
- kafka多分区只有一个在消费_kafka多个消费者只有一个消费
- Linux中top命令的用法详解
- java集合sort底层实现_Java面试总结系列之Collections.sort()
- 操作系统使用户和计算机的接口 对吗,计算机操作系统教程--核心与设计原理习题10答案...
- 两则爵士鼓的基础练习
- leetcode 高薪_LeetCode 第 125 号问题:验证回文串
- 有关计算机科学导论的说法,计算机科学导论__练习题_汇总.docx
- webservice studio 参数是DataSet时不支持中文 解决方法
- linux jzmq编译,Linux下ps aux解释
- SpringBoot学习(一)初识SpringBoot、第一个SpringBoot程序
- 需求调研报告模板_精准摸底,把握需求:名师工作室开展培训活动调研报告
- 深度剖析微信小程序搜索的排名机制
- layui 富文本编辑器和textarea值的相互传递
- Java十年 十大组织
- Zookeeper 序列化
- 英语不好能学编程吗?
- 微型计算机内存的基本单元的长度是,2017年计算机应用基础统考试题库