Метод nunique класса Resampler
Метод nunique применяется к объекту Resampler,
который возвращается после вызова метода resample для
временного ряда. Метод подсчитывает количество уникальных
значений в каждом столбце для каждой группы (периода
времени). Результатом является новый DataFrame или
Series с количеством уникальных значений по периодам.
По умолчанию метод исключает пропущенные значения NaN
при подсчёте. Параметр dropna позволяет изменить
это поведение.
Синтаксис
resampler.nunique(dropna=True)
Пример
Создадим временной ряд и выполним ресемплинг по дням, подсчитав количество уникальных значений в каждом столбце:
import pandas as pd
import numpy as np
dates = pd.date_range('2026-01-01', periods=10, freq='D')
df = pd.DataFrame({
'a': [1, 2, 2, 3, 3, 3, 4, 4, 5, 5],
'b': ['x', 'y', 'y', 'z', 'z', 'z', 'w', 'w', 'v', 'v']
}, index=dates)
res = df.resample('2D').nunique()
print(res)
Результат выполнения кода:
a b
2026-01-01 2 2
2026-01-03 1 1
2026-01-05 1 1
2026-01-07 2 2
2026-01-09 1 1
Пример
Подсчитаем количество уникальных значений с пропусками.
Параметр dropna=False включает NaN в подсчёт:
import pandas as pd
import numpy as np
dates = pd.date_range('2026-01-01', periods=8, freq='D')
df = pd.DataFrame({
'a': [1, 2, 2, np.nan, 3, 3, 3, 4],
'b': ['x', 'y', np.nan, 'z', 'z', 'z', 'w', 'w']
}, index=dates)
res = df.resample('3D').nunique(dropna=False)
print(res)
Результат выполнения кода:
a b
2026-01-01 3 3
2026-01-04 2 2
2026-01-07 1 1
Пример
Применим метод к одному столбцу, используя выборку по времени после ресемплинга:
import pandas as pd
import numpy as np
dates = pd.date_range('2026-01-01', periods=12, freq='H')
ser = pd.Series(
[1, 1, 2, 2, 2, 3, 3, 4, 4, 4, 5, 5],
index=dates
)
res = ser.resample('3H').nunique()
print(res)
Результат выполнения кода:
2026-01-01 00:00:00 2
2026-01-01 03:00:00 2
2026-01-01 06:00:00 2
2026-01-01 09:00:00 1
Freq: 3H, dtype: int64