python - 为什么使用 value_counts() 和 shape[0] 时会显示 2 个不同的长度?
问题描述
我试图找出有多少记录,我认为有两种方法可以显示记录总数。但是,它们显示出不同的长度,为什么会这样?
我在下面列出了两种方式,进一步详细说明一行具有 .shape[0] 属性,而另一行具有 .value_counts() 属性
df.loc[(df['rental_store_city'] == 'Woodridge') & (df['film_rental_duration'] > 5)].shape[0]
output: 3186
df.loc[(df['rental_store_city'] == 'Woodridge') & (df['film_rental_duration'] > 5)].value_counts()
解决方案
这是因为value_counts
按重复项分组并计算它们的数量,它会删除额外的重复项,这样会使数据帧更短。
正如您在文档中看到的:
返回包含 DataFrame 中唯一行数的 Series。
例子:
>>> df = pd.DataFrame({'a': [1, 2, 1, 3]})
>>> df
a
0 1
1 2
2 1
3 3
>>> df.value_counts()
a
1 2
3 1
2 1
dtype: int64
>>>
如您所见,重复项使代码数据框更短。
如果要获取数据框的长度,请不要使用value_counts
,请使用len
:
len(df.loc[(df['rental_store_city'] == 'Woodridge') & (df['film_rental_duration'] > 5)])
推荐阅读
- xamarin.forms - Xamarin 形成未在用户控件上触发的未聚焦事件
- css - 更改 Mat 表单域 输入颜色
- javascript - 替换对象数组中的单词 (JavaScript)
- javascript - JS:在 json 中查找下一个键
- c# - 将生成对象移动到随机位置
- excel - 基于独特规则组合的高级查找公式
- java - OrientDB 3.0.4 Java OValidationException:该字段已声明为 EMBEDDEDLIST 但使用了不兼容的类型
- android - Custom setter in Kotlin
- c - 功能结构 - 差异
- hibernate - 线程“主”java.lang.IncompatibleClassChangeError 中的异常:类 org.hibernate.ejb.HibernatePersistence