wangxishi

2020-11-06   阅读量: 5121

Python大数据

python 按照某列多维度分组统计(单列统计)

想把金额列分成(0-5],(5-20],(20-50],(50,+]这几组,然后按照标识列为1的列和标识列为2的列分别统计分组后的每组为“1”的个数,请问如何实现?

image.png

新建 Microsoft Excel 工作表 (3).xlsx


添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
38.7250 2 6 关注作者 收藏

评论(6)

wangxishi
2020-11-09
问题已解决,谢谢!
0.0000 0 0 回复
wangxishi
2020-11-09

谢谢,单列统计已解决!

0.0000 0 0 回复
ermutuxia
2020-11-06
import pandas as pd
data=pd.read_excel("D:\\360安全浏览器下载\\1604632491_331249.xlsx")
data["金额分组"]=pd.cut(data.金额, [0,5, 20, 50,float('inf')])

image.png


data[data["标识"]==1]["金额"].groupby(data[data["标识"]==1]["金额分组"]).count()

image.png

0.2718 2 0 回复
Sasyo
2020-11-06

提供在df外操作的解法

df =pd.read_excel("C:\\Users\\Administrator\\Downloads\\1604632491_331249.xlsx")
ls = list(df['金额'].loc[df['标识'] == 1])
dic = {}
intervals = {'0-5':0,'5-20':0,'20-50':0,'50-{}'.format(max(ls)):0}
for _ in ls:
    for i in intervals:
        star,end = tuple(i.split('-'))
        if int(star) < _ <= int(end) :
            intervals[i] += 1
print(intervals)


35.2538 1 0 回复
Sasyo
2020-11-06

计算出来的四个组的个数也不适合放在原表里面啊,放到另一个DF里面算就好了

0.0000 0 0 回复
Sasyo
2020-11-06

根据金额复合标识来定义一个辅助列,然后groupby('辅助列').count()

0.0000 0 0 回复
wangxishi
2020-11-06

可不可以不新增辅助列,辅助列已经太多了

0.0000 0 0 回复

推荐课程