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.