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

为什么pandas中value_counts()的长度与shape[0]返回记录数不一致?

Pandas两种统计方式结果差异原因
  • shape[0]的统计逻辑是直接返回筛选后DataFrame的全部有效记录行数,不会对行内容做任何额外过滤或去重,3186就是你筛选得到的数据集的真实总记录数。
  • value_counts()的运行逻辑和默认参数是导致结果变小的核心原因:
    • 它本质是统计「所有列取值完全相同的重复行」的出现频次,返回结果的长度代表的是去重后的唯一行组合的数量,不是总行数。
    • 它默认开启dropna=True参数,只要某一行存在任意一个空值(NaN),就会被直接排除在统计结果之外,不会被计数。

你可以通过以下代码验证差异来源:

# 先提取筛选后的数据集
filtered_df = df.loc[(df['rental_store_city'] == 'Woodridge') & (df['film_rental_duration'] > 5)]
# 统计包含空值的行数
print("包含空值的行总数:", filtered_df.isna().any(axis=1).sum())
# 统计去重后的唯一行总数(保留空值行)
print("去重后唯一行总数:", filtered_df.drop_duplicates().shape[0])
# 关闭空值过滤后统计value_counts长度
print("关闭空值过滤的value_counts长度:", filtered_df.value_counts(dropna=False).shape[0])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:27:02