Я определил фрейм данных Pandas, который содержит имя столбца как emp_title. Я хочу увидеть общее количество уникальных записей в этом конкретном столбце.

Я использовал:

len(df['emp_title'].unique())

Что дает мне значение 173106

Тогда как когда я использую:

df['emp_title'].nunique()

Он дает мне значение 173105, которое должно быть фактическим размером.

Может ли кто-нибудь объяснить, почему мне не следует использовать код с функцией len (). Или, вероятно, здесь проблема с набором данных?

3
Saurav Saha 21 Янв 2021 в 14:49

2 ответа

Лучший ответ

Это означает, что пропущены некоторые значения, потому что Series.nunique по умолчанию удаляет отсутствующие значения.

Поэтому для того же вывода измените параметр по умолчанию dropna=True на False:

df['emp_title'].nunique(dropna=False)
2
jezrael 21 Янв 2021 в 11:51

Разница в том, что len длина всех элементов в списке / массиве и unique() возвращает все уникальные элементы, включая отсутствующие nan, тогда как nunique() не учитывает nan:

df = pd.DataFrame({'A':[1,2,3,4,np.nan]})
print(df['A'].nunique()

Право возвращает 4, и

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

Возвращает список всех уникальных элементов:

[ 1.  2.  3.  4. nan]

Которая имеет длину 5.

1
Celius Stingher 21 Янв 2021 в 11:53