详解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实现简单socket程序在两台电脑之间传输消息的方法

本文实例讲述了python实现简单socket程序在两台电脑之间传输消息的方法。分享给大家供大家参考。具体分析如下: python开发简单socket程序在两台电脑之间传输消息,分为客户...

pandas中DataFrame修改index、columns名的方法示例

一般常用的有两个方法: 1、使用DataFrame.index = [newName],DataFrame.columns = [newName],这两种方法可以轻松实现。 2、使用...

python: line=f.readlines()消除line中\n的方法

python: line=f.readlines()消除line中\n的方法

测试代码 #!/ust/bin/env python3 f = open("name.txt") date = f.readlines() print(date) f.close(...

python实现电子产品商店

python实现电子产品商店

利用python实现以下功能:基于python下的电子产品商店 电子产品商店 v0.1 请选择商品: ============================= 1  &nbs...

Python常见文件操作的函数示例代码

复制代码 代码如下: # -*-coding:utf8 -*- ''' Python常见文件操作示例 os.path 模块中的路径名访问函数 分隔 basename() 去掉目录路径,...