You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas groupby/value_counts:无匹配值时的分类计数需求

解决Pandas中无匹配值类别统计缺失的问题

我来帮你搞定这个统计难题!你遇到的核心问题是Pandas默认会忽略没有匹配条目的类别,要让所有目标类别都出现在统计结果里(哪怕计数为0),用分类数据类型就能完美解决。

先理清楚你的需求和现有数据

你手里的数据集是这样的:

Name,Count1,Count2,PercentDiff,Category
Store A,10,4,0.4,Less than 1%
Store B,20,26,1.3,Less than 5%
Store C,12,48,4,Less than 5%
Store D,30,180,6,Less than 10%

需要统计这5个类别的条目数:

  • 小于0
  • Less than 1%
  • Less than 5%
  • Less than 10%
  • 大于10%

之前尝试用loc做分类,但groupby或value_counts会自动丢掉没有匹配值的类别,导致统计结果不完整。

具体解决方案

方法1:基于现有Category列强制保留所有目标类别

这个方法适合你已经有Category列的情况,核心是把Category列转成Pandas分类类型,强制指定所有你需要统计的类别:

  1. 先导入Pandas并加载数据:
import pandas as pd

# 加载你的数据集
df = pd.DataFrame({
    'Name': ['Store A', 'Store B', 'Store C', 'Store D'],
    'Count1': [10, 20, 12, 30],
    'Count2': [4, 26, 48, 180],
    'PercentDiff': [0.4, 1.3, 4, 6],
    'Category': ['Less than 1%', 'Less than 5%', 'Less than 5%', 'Less than 10%']
})
  1. 定义你要统计的所有目标类别:
target_cats = [
    '小于0',
    'Less than 1%',
    'Less than 5%',
    'Less than 10%',
    '大于10%'
]
  1. 将Category列转换为分类类型,指定所有目标类别:
df['Category'] = pd.Categorical(df['Category'], categories=target_cats, ordered=True)

这里ordered=True是为了保持你定义的类别顺序,避免统计结果乱序。

  1. 统计各类别数量:
    用value_counts时记得加dropna=False,确保空类别也被统计:
count_result = df['Category'].value_counts(dropna=False).sort_index()
print(count_result)

输出结果会是:

小于0            0
Less than 1%    1
Less than 5%    2
Less than 10%   1
大于10%          0
Name: Category, dtype: int64

完美包含了所有5个类别,没有匹配的显示0。

方法2:直接基于PercentDiff分箱统计

如果你不想依赖现有的Category列,也可以直接用pd.cut对PercentDiff进行分箱,一步生成包含所有目标类别的统计:

# 定义分箱区间和对应标签
bins = [-float('inf'), 0, 1, 5, 10, float('inf')]
labels = ['小于0', 'Less than 1%', 'Less than 5%', 'Less than 10%', '大于10%']

# 生成目标类别列
df['TargetCat'] = pd.cut(df['PercentDiff'], bins=bins, labels=labels, include_lowest=True)

# 统计数量
count_result = df['TargetCat'].value_counts(dropna=False).sort_index()
print(count_result)

这个方法更直接,从原始数值生成分类,同样能得到完整的统计结果。

内容的提问来源于stack exchange,提问作者Taukheer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:48:07