DataFrame.nunique() / Series.nunique()
Метод nunique() подсчитывает количество уникальных значений (аналог SQL COUNT(DISTINCT)). По умолчанию NaN не учитываются.
Сигнатура
DataFrame.nunique(axis=0, dropna=True)
Series.nunique(dropna=True)
Параметры
axis—0(по столбцам) или1(по строкам); только дляDataFrame.dropna— игнорироватьNaN(по умолчаниюTrue).
Возвращаемое значение
Целое число (для Series) или Series целых чисел (для DataFrame).
Примеры
Пример 1. Series
import pandas as pd
s = pd.Series(["FWD", "LEFT", "FWD", "STOP", "FWD"])
print(s.nunique())
3
Пример 2. DataFrame по столбцам
import pandas as pd
df = pd.DataFrame({
"sensor": ["A", "B", "A", "C", "B"],
"status": ["ok", "ok", "ok", "err", "ok"],
})
print(df.nunique())
sensor 3
status 2
dtype: int64
Пример 3. dropna=False
import pandas as pd
import numpy as np
s = pd.Series([1, 2, np.nan, 2, np.nan])
print(s.nunique())
print(s.nunique(dropna=False))
2
3
Пример 4. По строкам
import pandas as pd
df = pd.DataFrame({
"a": [1, 1, 1],
"b": [2, 2, 3],
"c": [3, 2, 3],
})
print(df.nunique(axis=1))
0 3
1 2
2 2
dtype: int64
Пример 5. Сколько разных датчиков в логе
import pandas as pd
log = pd.DataFrame({
"ts": [0.0, 0.5, 1.0, 1.5, 2.0],
"sensor_id": ["s1", "s1", "s2", "s1", "s3"],
"value": [22, 22, 23, 22, 24],
})
print("уникальных датчиков:", log["sensor_id"].nunique())
уникальных датчиков: 3
См. также
Примечание
Лицензия и источники
Техническое описание функции адаптировано из официальной документации Pandas (https://pandas.pydata.org/docs/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.