Series.value_counts() / DataFrame.value_counts()

Метод value_counts() возвращает Series с количеством вхождений каждого уникального значения, отсортированным по убыванию. Удобно для построения гистограмм, анализа распределений событий, поиска аномалий в логах.

Сигнатура

Series.value_counts(normalize=False, sort=True, ascending=False,
                    bins=None, dropna=True)
DataFrame.value_counts(subset=None, normalize=False, sort=True,
                       ascending=False, dropna=True)

Параметры

  • normalize — если True, возвращает доли вместо абсолютных частот.

  • sort — сортировать ли по частоте.

  • ascending — направление сортировки.

  • bins — если число, бинирует числовые значения.

  • dropna — учитывать ли NaN.

  • subset (DataFrame) — список столбцов для группировки.

Возвращаемое значение

Series (с индексом — значения, со значениями — частоты).

Примеры

Пример 1. Частоты режимов работы

import pandas as pd

s = pd.Series(["idle", "run", "idle", "stop", "run", "idle"])
print(s.value_counts())
idle    3
run     2
stop    1
Name: count, dtype: int64

Пример 2. Доли (normalize)

import pandas as pd

s = pd.Series(["A", "B", "A", "A", "C"])
print(s.value_counts(normalize=True))
A    0.6
B    0.2
C    0.2
Name: proportion, dtype: float64

Пример 3. Бинирование числовых данных

import pandas as pd

temps = pd.Series([23, 24, 25, 23, 26, 27, 24, 25, 26, 25])
print(temps.value_counts(bins=3, sort=False))
(22.995, 24.333]    4
(24.333, 25.667]    3
(25.667, 27.0]      3
Name: count, dtype: int64

Пример 4. С учётом NaN

import pandas as pd
import numpy as np

s = pd.Series(["A", "B", np.nan, "A", np.nan])
print(s.value_counts(dropna=False))
A      2
NaN    2
B      1
Name: count, dtype: int64

Пример 5. По нескольким столбцам

import pandas as pd

df = pd.DataFrame({
    "device": ["A", "A", "B", "A", "B"],
    "status": ["ok", "err", "ok", "ok", "err"],
})
print(df.value_counts())
device  status
A       ok        2
A       err       1
B       err       1
B       ok        1
Name: count, dtype: int64

См. также

Примечание

Лицензия и источники

Техническое описание функции адаптировано из официальной документации Pandas (https://pandas.pydata.org/docs/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.