Метод count
Метод count применяется к объекту Resampler,
который создаётся при помощи метода resample у DataFrame
или Series с временным индексом. Он возвращает количество
непустых значений (не NaN) в каждой группе, образованной
в результате передискретизации. В отличие от метода size,
который считает все элементы, count учитывает только
непропущенные значения.
Синтаксис
resampler.count()
Метод не принимает параметров и возвращает DataFrame
или Series с количеством непустых значений для
каждого временного интервала.
Пример
Создадим таблицу с временным индексом и выполним передискретизацию по дням с подсчётом непустых значений:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
}, index=pd.date_range('2026-01-01', periods=5, freq='D'))
print(df)
Результат выполнения кода:
a b
2026-01-01 1 10
2026-01-02 2 20
2026-01-03 3 30
2026-01-04 4 40
2026-01-05 5 50
Теперь выполним передискретизацию с периодом в 2 дня и подсчитаем количество непустых значений:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
}, index=pd.date_range('2026-01-01', periods=5, freq='D'))
res = df.resample('2D').count()
print(res)
Результат выполнения кода:
a b
2026-01-01 2 2
2026-01-03 2 2
2026-01-05 1 1
Как видно из результата, в первый интервал (2026-01-01) попали два значения (за 1 и 2 января), во второй интервал (2026-01-03) - два значения (за 3 и 4 января), а в третий интервал (2026-01-05) - одно значение (за 5 января).
Пример
Рассмотрим разницу между методами count и size.
Создадим таблицу с пропущенными значениями:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'a': [1, 2, np.nan, 4, 5],
'b': [10, np.nan, 30, np.nan, 50]
}, index=pd.date_range('2026-01-01', periods=5, freq='D'))
print(df)
Результат выполнения кода:
a b
2026-01-01 1.0 10.0
2026-01-02 2.0 NaN
2026-01-03 NaN 30.0
2026-01-04 4.0 NaN
2026-01-05 5.0 50.0
Выполним передискретизацию по дням и применим оба метода:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'a': [1, 2, np.nan, 4, 5],
'b': [10, np.nan, 30, np.nan, 50]
}, index=pd.date_range('2026-01-01', periods=5, freq='D'))
resampler = df.resample('2D')
print('count:')
print(resampler.count())
print('\nsize:')
print(resampler.size())
Результат выполнения кода:
count:
a b
2026-01-01 1 1
2026-01-03 1 1
2026-01-05 2 1
size:
2026-01-01 2
2026-01-03 2
2026-01-05 1
dtype: int64
Метод count посчитал только непустые значения
в каждом интервале, а size - все элементы,
включая пропуски.
Пример
Применим метод count к объекту Series
для подсчёта непустых значений по месяцам:
import pandas as pd
import numpy as np
ser = pd.Series(
[1, 2, np.nan, 4, 5, 6, 7, 8, 9],
index=pd.date_range('2026-01-01', periods=9, freq='D')
)
print(ser)
Результат выполнения кода:
2026-01-01 1.0
2026-01-02 2.0
2026-01-03 NaN
2026-01-04 4.0
2026-01-05 5.0
2026-01-06 6.0
2026-01-07 7.0
2026-01-08 8.0
2026-01-09 9.0
Freq: D, dtype: float64
Выполним передискретизацию по месяцам и подсчитаем количество непустых значений:
import pandas as pd
import numpy as np
ser = pd.Series(
[1, 2, np.nan, 4, 5, 6, 7, 8, 9],
index=pd.date_range('2026-01-01', periods=9, freq='D')
)
res = ser.resample('M').count()
print(res)
Результат выполнения кода:
2026-01-31 8
Freq: M, dtype: int64
Метод вернул количество непустых значений за январь 2026 года, исключив одно пропущенное значение (NaN).