Python Pandas多列分组统计中缺失值显示的误区解析

阿澈
阿澈
发布时间:2026-10-14| 6人浏览过
原创

本文解析Pandas使用groupby与size进行多列分组统计时,多级索引默认不显示重复外层键值的特性。通过具体数据示例说明982499等数值行的显示逻辑,指出这并非数据缺失,而是为了排版直观。文章提供完整代码示例,帮助开发者正确理解并处理此类统计结果,避免误判数据完整性。

Pandas多列分组统计的显示特性

在使用Pandas库进行数据分析时,通过groupby([列名列表]).size()方法执行分组统计是常见操作。需要注意的是,当统计结果包含多级索引时,默认情况下,相同的外层索引值在输出显示中会被省略,仅显示第一行,后续相同值的行对应位置留空。


多级索引省略显示的逻辑解析

以具体数据为例,观察统计结果中的空行可以发现其规律。例如,数值为982499、7、3388且计数为1的那一行,其前两个字段值(user_id为982499,cate为7)与上一行完全一致,因此这两个字段在显示时被省略。同样,数值为390192、22、4278且计数为1的行,其第一个字段值(user_id为390192)与上一行相同,故该字段被省略。这种紧凑的展示方式虽然直观,但对于不熟悉Pandas多级索引机制的新手而言,容易将其误解为数据缺失或空值。

完整数据与操作示例

若对上述现象仍存疑惑,可参考下文提供的完整原始数据及对应的代码操作过程,以便更清晰地理解数据从原始状态到分组统计结果的转换逻辑。


import pandas as pd
res6 = pd.read_csv('test.csv')
res6.shape

(12, 3)

res6.columns

Index(['user_id', 'cate', 'shop_id'], dtype='object')

res6.info()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 12 entries, 0 to 11
Data columns (total 3 columns):
user_id    12 non-null int64
cate       12 non-null int64
shop_id    12 non-null int64
dtypes: int64(3)
memory usage: 368.0 bytes

res6.describe()

user_id cate shop_id
count 1.200000e+01 12.000000 12.000000
mean 6.468688e+05 10.666667 3594.000000
std 3.988181e+05 6.665151 373.271775
min 2.421410e+05 7.000000 3388.000000
25% 3.901920e+05 7.000000 3388.000000
50% 4.938730e+05 7.000000 3388.000000
75% 9.824990e+05 10.250000 3586.250000
max 1.558165e+06 23.000000 4278.000000

res6

user_id cate shop_id
0 390192 20 4178
1 390192 23 4179
2 390192 22 4278
3 1021819 7 3388
4 242141 7 3388
5 283284 7 3388
6 1558165 7 3388
7 533696 7 3388
8 982499 7 3388
9 493873 7 3388
10 493873 7 3388
11 982499 7 3389

res6['user_id'].value_counts()


390192     3
982499     2
493873     2
242141     1
1021819    1
533696     1
1558165    1
283284     1
Name: user_id, dtype: int64

res6.groupby(['user_id']).size().sort_values(ascending=False)


user_id
390192     3
982499     2
493873     2
1558165    1
1021819    1
533696     1
283284     1
242141     1
dtype: int64


res6.groupby(['user_id', 'cate']).size().sort_values(ascending=False)


user_id  cate
982499   7       2
493873   7       2
1558165  7       1
1021819  7       1
533696   7       1
390192   23      1
         22      1
         20      1
283284   7       1
242141   7       1
dtype: int64

res6_test = res6.groupby(['user_id', 'cate', 'shop_id']).size().sort_values(ascending=False)
res6_test

user_id  cate  shop_id
493873   7     3388       2
1558165  7     3388       1
1021819  7     3388       1
982499   7     3389       1
               3388       1
533696   7     3388       1
390192   23    4179       1
         22    4278       1
         20    4178       1
283284   7     3388       1
242141   7     3388       1
dtype: int64

至此,关于Python中Pandas进行多列分组统计时出现的显示特性已介绍完毕。如需了解更多关于Pandas多列分组统计的高级用法或相关技巧,建议查阅本站过往文章或继续浏览后续相关内容。感谢大家的支持与关注!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。