为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 pandas value_counts() 显示某些值的计数为零?

为什么 pandas value_counts() 显示某些值的计数为零?

largeQ 2022-12-14 20:28:27
我有一个数据框,其中一列是具有以下标签的分类变量:['Short', 'Medium', 'Long', 'Very Long', 'Extremely Long']。我正在尝试创建一个新的数据框来删除所有Extremely Long.我尝试通过以下方式执行此操作:df2 = df.query('ride_type != "Extremely Long"')df2 = df[df['ride_type'] != 'Extremely Long']但是,当我运行 .value_counts() 时,我得到以下信息:df2.ride_type.value_counts()>>> Short             130474Long              129701Medium            129607Very Long         110988Extremely Long         0Name: ride_type, dtype: int64换句话说,Extremely Long仍然存在,所以我不能只用我想要的四个类别绘制图表。
查看完整描述

2 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

这是分类数据的一个特征。你可能有这样的东西:


df = pd.DataFrame({'ride_type': pd.Categorical(

    ['Long', 'Long'], categories=['Long', 'Short'])})


df

  ride_type

0      Long

1      Long

调用value_counts分类列将记录所有类别的计数,而不仅仅是存在的类别。


df['ride_type'].value_counts()    


Long     2

Short    0

Name: ride_type, dtype: int64

解决方案是删除未使用的类别,或转换为字符串:


df['ride_type'].cat.remove_unused_categories().value_counts() 


Long    2

Name: ride_type, dtype: int64


# or,

df['ride_type'].astype(str).value_counts() 


Long    2

Name: ride_type, dtype: int64


查看完整回答
反对 回复 2022-12-14
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

您可以像这样删除行:


df = df.drop(df.index[df['A'] == 'cat'])

print(df['A'].value_counts())


dog       2

rabbit    2

Name: A, dtype: int64


查看完整回答
反对 回复 2022-12-14
  • 2 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信