为什么在使用 value_counts() 和 shape[0] 时会显示 2 个不同的长度?

Why are 2 different lengths are showing when using value_counts() and shape[0]?

我想知道有多少条记录,我认为有两种方法可以显示记录总数。但是,它们显示的长度不同,为什么会这样?

我在下面列出了两种方式,进一步详细说明一行具有 .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()

output image that shows length of 3153

这是因为 value_counts 按重复项分组并计算它们的数量,并删除多余的重复项,这样会使数据帧更短。

如您在 documentation 中所见:

Return a Series containing counts of unique rows in the DataFrame.

示例:

>>> 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)])