详解python pandas 分组统计的方法

yipeiwu_com5年前Python基础

首先,看看本文所面向的应用场景:我们有一个数据集df,现在想统计数据中某一列每个元素的出现次数。这个在我们前面文章《如何画直方图》中已经介绍了方法,利用value_counts()就可以实现(具体回看文章)

但是,现在,我们考虑另外一个场景,我们假如要想统计其中两列元素出现次数呢?举个栗子:


在df数据集中,如果我们想统计A、B两列的元素的出现情况,也就是说,得到如下表。


从上面的最后一列可以看到,在A、B两列中,1 2 出现了2次,1 4 出现1次 ,1 6出现1次,2 3出现了2次, 2 4 出现1次, 3 1出现了1次

具体实现的代码:

import pandas as pd
df=pd.DataFrame([[1,2,2],[1,4,5],[1,2,4],[1,6,3],[2,3,1],[2,4,1],[2,3,5],[3,1,1]],columns=['A','B','C'])
gp=df.groupby(by=['A','B'])
gp.size()

所以,如果想统计更多列,只要在groupby()中的by参数添加就可以,例如统计3列。

gp=df.groupby(by=['A','B','C'])

由gp.size()得到的是可以mulitiindex Series。

下面,要转化成DataFrame的结构。

newdf=gp.size()
newdf.reset_index(name='times')

其中name中参数就是我们可以为最后一列添加新的名字,例如这里的“times”

这个时候newdf已经是DataFrame的类型了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

Python 3.8正式发布重要新功能一览

Python 3.8正式发布重要新功能一览

Python3.8有哪些你要关注的新内容?  Python3.8 都有哪些新功能,在文档手册中,大家可以有一个概览。这么多新内容,哪些是大家最先要关注一下的呢?下面,营长就带...

python 实现return返回多个值

函数的return 语句只能返回一个值,可以是任何类型。 因此,我们可以“返回一个 tuple类型,来间接达到返回多个值 ”。 例:   x 除以 y 的余数与商的函...

Python使用urllib模块的urlopen超时问题解决方法

在新的公司开始上班,今天工作的主题内容是市场部门需要抓取一些论坛用户的邮箱,以便发送营销邮件。 于是用了一个python脚本来执行,前面抓了几个都没有什么问题,后来碰到一个论坛,在执行u...

Python多进程并发(multiprocessing)用法实例详解

本文实例讲述了Python多进程并发(multiprocessing)用法。分享给大家供大家参考。具体分析如下: 由于Python设计的限制(我说的是咱们常用的CPython)。最多只能...

Python的randrange()方法使用教程

 choice()方法从一个列表,元组或字符串返回一个随机项。 语法 以下是choice()方法的语法: choice( seq ) 注意:此函数是无法直接访问的,所...