python 分组计数_Python数据分组

本文介绍了Python pandas库中的cut和qcut函数,用于数据分组和计数。cut函数允许根据指定值或等宽区间进行分组,而qcut则基于分位数进行等频分组。通过实例展示了这两个函数的使用方法,帮助理解如何利用它们进行数据汇总和分析。
摘要由CSDN通过智能技术生成

  当我们要汇总很多数据的时候,常见的比如商品价格是数据,要看看那些价格段的销售情况,这个时候就需要对价格段先进行分组,然后再按分组求和或者计数,就能看每个价格段的数据情况了。当只分几组的时候,还可以手动操作一下,但是要分几十组的时候,手动操作就很麻烦了,这个时候就需要专门的函数来帮忙了,Python的pandas提供了两个分箱函数,很好用,cut和qcut。

【cut函数】

功能就是按照指定的值进行分组,或者指定需要分成几组,它自动给你分好,参数如下↓

pd.cut(x,  #一维数组       bins, #整数,标量序列或者间隔索引,是进行分组的依据;如果是标量序列,序列中的数值表示用来分档的分界值       right=True, #布尔值,默认为True表示包含最右侧的数值       labels=None, #数组或布尔值,可选:指定分箱的标签       retbins=False, #是否显示分箱的分界值。默认为False,当bins取整数时可以设置retbins=True以显示分界值,得到划分后的区间       precision=3, #整数,默认3,存储和显示分箱标签的精度       include_lowest=False, #布尔值,表示区间的左边是开还是闭,默认为false,也就是不包含区间左边       duplicates='raise', ) #如果分箱临界值不唯一,则引发ValueError或丢弃非唯一

我们先导入一个简单的数据,然后在操作一下,就明白了。

import osos.chdir(r"E:\Python\小工具")import pandas as pddf = pd.read_excel("分箱测试.xlsx",sheet_name=0)

2827bc98e5a377c0833ab214f7f1c15e.png

数据就是这样,主要就是按照年龄就行分组操作。

#分成4组,默认左开右闭

df['左开右闭'] = pd.cut(df['age'],bins=4)

1d36c85912d35a8d1934c324168dd2c7.png

#添加标签,结果按标签显示

df['加标签'] = pd.cut(df['age'],bins=4,                    labels=["A","B","C","D"])

b8ee49d56b32f7ecdb40f1913e88ee3d.png

#左闭,右开

df['左闭右开'] = pd.cut(df['age'],bins=4,                    right=False,                    include_lowest=True)

de83280ed1eebf60bcde9d3e883d9994.png

#自定义区间

df['自定义'] = pd.cut(df['age'],bins=[0,18,35,60,100],                    right=False,                    include_lowest=True)

76acf767e789e943a6e142682f7dc127.png

#自定义区间+自定义标签

df['自定义标签'] = pd.cut(df['age'],bins=[0,18,35,60,100],                   labels=["未成年","青年","中年","老年人"],                    right=False,                    include_lowest=True)

496b163592efe5f95f57d76ee72bccee.png

【qcut函数】

  基于分位数的离散化功能。将变量离散化为基于等级或样本分位数的相等大小的存储桶。

  和pd.cut()相比,pd.qcut()的参数少了两个,少了right和include_lowest两个参数,剩下的参数几乎和pd.cut()一模一样了。

pd.qcut(x,        q, #表示分位数的整数或者数组,如果是分位数的整数,例如10用于十分位,4用于四分位;如果是分位数数组,例如[0,0.25,0.5,0.75,1]用于四分位数        labels=None,        retbins=False,        precision=3,        duplicates='raise')

#q=4表示分成四个箱子,边界值分别为四分位数,四分之二分位数和四分之三分位数,并给每个箱子都指定了标签

pd.qcut([*range(1,101)],        q=4)

cf62864c3e56e1282941f98fa8d6a853.png

#q=[0,0.25,0.5,0.75,1]和上面q=4效果一样

pd.qcut([*range(1,101)],        q=[0,0.25,0.5,0.75,1])

d9570059cd0b3bddb78057aefd20ef7b.png

df['qcut1'] = pd.qcut(df['age'],                     q=4)

3069a04afe695a7b9ca4e05962a67d8b.png

df['qcut2'] = pd.qcut(df['age'],                     q=4,                     labels=['AA','BB',"CC",'DD'])

e1ef0d384ce67d43b08ada6c6578cbfe.png

88dfb758d7990080cca5c18e1093a94e.gif

End

f5271d7e81e652f697db83a6f2b82a4e.gif

◆ Python高德地图可视化 ◆ Python拼音 ◆ Python_头像动漫化
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值