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

DataFrame中value_counts(normalize=True)的归一化原理解析

关于pandas中value_counts(normalize=True)的归一化逻辑解释

场景与测试结果

基于泰坦尼克号数据集,对Fsize(家庭规模)分组后,统计Survived(是否存活)的数量与占比:

1. 非归一化统计(normalize=False)

执行代码:

dftitanic.groupby('Fsize')['Survived'].value_counts(normalize=False).reset_index(name='perc')

结果:

Fsize  Survived  perc
0       1         0   374
1       1         1   163
2       2         1    89
3       2         0    72
4       3         1    59
5       3         0    43
6       4         1    21
7       4         0     8
8       5         0    12
9       5         1     3
10      6         0    19
11      6         1     3
12      7         0     8
13      7         1     4
14      8         0     6
15     11         0     7

2. 归一化统计(normalize=True)

执行代码:

dftitanic.groupby('Fsize')['Survived'].value_counts(normalize=True).reset_index(name='perc')

结果:

Fsize  Survived      perc
0       1         0  0.696462
1       1         1  0.303538
2       2         1  0.552795
3       2         0  0.447205
4       3         1  0.578431
5       3         0  0.421569
6       4         1  0.724138
7       4         0  0.275862
8       5         0  0.800000
9       5         1  0.200000
10      6         0  0.863636
11      6         1  0.136364
12      7         0  0.666667
13      7         1  0.333333
14      8         0  1.000000
15     11         0  1.000000

核心逻辑解释

value_counts(normalize=True)的本质是在每个分组内,计算单个类别样本数占该分组总样本数的比例,而非全局的数值归一化(比如你尝试的Z-score或Min-Max归一化)。

用具体分组验证:

  • 对于Fsize=1的分组:总样本数=374+163=537
    • Survived=0的占比=374/537≈0.696462
    • Survived=1的占比=163/537≈0.303538
  • 对于Fsize=2的分组:总样本数=89+72=161
    • Survived=1的占比=89/161≈0.552795
    • Survived=0的占比=72/161≈0.447205

这些计算结果完全匹配normalize=True的输出。

你之前尝试的两种方法(Z-score、Min-Max)是对整个数据集的数值列做全局缩放,和value_counts(normalize=True)的分组内类别占比逻辑完全不同,因此结果无法匹配。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 03:20:03