首页 > 解决方案 > 为什么使用 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()

显示长度为 3153 的输出图像

标签: pythonpandasdataframedata-analysisshapes

解决方案


这是因为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)])

推荐阅读