df.shape返回行数与value_counts().sum()统计结果不一致原因咨询
差异原因说明
df.shape统计的是整个DataFrame的总行数,不会因为部分列存在空值(NaN)改变统计结果,所以你看到的始终是原始数据的1881行- pandas的
value_counts()方法默认会自动忽略列中的NaN值,仅统计非空值的出现次数总和,这是两者数值不一致的核心原因 - 结合你提供的赋值代码来看:
你执行的赋值逻辑是仅对QX_7_1~QX_7_4四个列全部不等于-99的行保留原始值,其余不满足条件的行,这四个列的位置都会被设置为NaN。两者差值为1881-1844=37,代表当前QX_7_3列共有37个NaN值,被value_counts()默认排除在统计外。
验证与调整方法
- 执行
print(dfSPSSstudent['QX_7_3'].isna().sum()),输出的空值数量会等于37,和差值对应 - 如果需要将空值也纳入计数统计,给
value_counts()添加dropna=False参数即可:
此时输出结果就会和总行数1881一致。print(dfSPSSstudent['QX_7_3'].value_counts(dropna=False).sum())
内容的提问来源于stack exchange,提问作者fredooms
相关产品推荐
相关产品推荐

