(一)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。