pandas中对数值分组计算频率的方法

(一)value_counts函数
在这里插入图片描述
normalize: 如果设置为 True,则返回每个值出现的频率(即每个值出现的次数除以总数),而不是计数。默认值为 False。
sort: 是否对输出进行排序。默认为 True,但你也可以设置为 False 以保持原始顺序。
ascending: 如果 sort 为 True,则决定是按升序还是降序排序。默认为 False,即降序排列。
bins: 当你处理的是数值数据时,你可以使用 bins 参数来指定分组的边界。这允许你将连续的数值数据划分为离散的区间,并计算每个区间的计数。
dropna: 是否忽略 NaN 值。默认为 True。

如下例,要对loanmoney列进行分组汇总,并计算各组别的占比。分组规则为:>500000,(200000,500000],(100000,200000],<100000.

import pandas as pd
import numpy as np
c_id=np.random.choice(['A001','B001','C001','D001'],size=100)
lo=np.round(np.random.random(size=100)*1000000,2)
df=pd.DataFrame({'id':c_id,'loanmoney':lo})
df['loanmoney'].value_counts(normalize=True,bins=[0, 100000, 200000, 500000, float('inf')])

在这里插入图片描述
(二)cut函数

import pandas as pd
import numpy as np
c_id=np.random.choice(['A001','B001','C001','D001'],size=100)
lo=np.round(np.random.random(size=100)*1000000,2)
df=pd.DataFrame({'id':c_id,'loanmoney':lo})
# 定义分组条件  
bins = [0, 100000, 200000, 500000, float('inf')]  
labels = ['<100000', '(100000,200000]', '(200000,500000]', '>500000']  
# 使用cut函数对loanmoney进行分组  
df['loan_group'] = pd.cut(df['loanmoney'], bins=bins, labels=labels)  
# 计算各组别的占比  
group_counts = df['loan_group'].value_counts(normalize=True)  
# 打印结果  
print(group_counts)

在这里插入图片描述
参数:

x: 需要分箱的数组或 Series。
bins: 区间的边界。可以是一个整数(表示等宽的区间数量),一个序列(表示区间边界),或者是一个 IntervalIndex。
right: 是否包含右边界。默认为 True。
labels: 用于指定每个区间的标签。如果没有提供,则默认使用区间的左边界和右边界的字符串表示。
retbins: 是否返回(bins, categories)。默认为 False。
precision: 用于间隔标签的精度。默认为 3。
include_lowest: 是否包含最低值在第一个区间中。默认为 False。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值