Подсчет уникальных элементов в Pandas

Количественный анализ уникальных значений в Pandas

value_counts() — один из самых удобных методов в Pandas при работе с категориальными данными или при первичном анализе. Он позволяет быстро подсчитать уникальные элементы в столбце и получить информацию о том, насколько часто каждое значение встречается в данных.

Основное применение

Для начала, давайте создадим простой DataFrame для демонстрации:

import pandas as pd

data = {
    'City': ['NY', 'LA', 'SF', 'TX', 'LA', 'NY', 'TX', 'TX'],
    'Grade': ['A', 'B', 'A', 'C', 'B', 'A', 'C', 'A']
}

df = pd.DataFrame(data)

print(df['City'].value_counts())

# City
# TX    3
# NY    2
# LA    2
# SF    1
# Name: count, dtype: int64

Процентное распределение

Часто полезно видеть не только абсолютные числа, но и процентное распределение. Для этого используйте аргумент normalize:

print(df['City'].value_counts(normalize=True))

# City
# TX    0.375
# NY    0.250
# LA    0.250
# SF    0.125
# Name: proportion, dtype: float64

Работа с отсутствующими данными

По умолчанию value_counts() игнорирует NaN. Если вы хотите учесть их в подсчете, используйте аргумент dropna:

print(df['City'].value_counts(dropna=False))

# City
# TX    3
# NY    2
# LA    2
# SF    1
# Name: count, dtype: int64

Сортировка по значениям или индексам

Метод value_counts() автоматически сортирует результаты по количеству встречаемости. Если вы хотите сортировать по значениям:

df['City'].value_counts(sort=True)

Или по индексу:

df['City'].value_counts().sort_index()

Визуализация результатов

Очень удобно визуализировать результаты value_counts() с помощью графиков:

import pandas as pd
import matplotlib.pyplot as plt

data = {
    'City': ['NY', 'LA', 'SF', 'TX', 'LA', 'NY', 'TX', 'TX'],
    'Grade': ['A', 'B', 'A', 'C', 'B', 'A', 'C', 'A']
}

df = pd.DataFrame(data)

df['City'].value_counts().plot(kind='bar')
plt.title('Распределение городов')
plt.xlabel('Город')
plt.ylabel('Количество')
plt.show()

Многомерный подсчет

Чтобы выполнить подсчет уникальных комбинаций в двух или более столбцах, можно использовать groupby в сочетании с size():

df.groupby(['City', 'Grade']).size()

Применение к числовым данным

Хотя value_counts() чаще всего используется с категориальными данными, он также применим к числовым столбцам:

data['Salary'] = [50000, 54000, 52000, 58000, 54000, 52000, 60000, 62000]
df = pd.DataFrame(data)

print(df['Salary'].value_counts(bins=3))

Здесь bins разделит диапазон зарплат на 3 равных интервала и покажет, сколько значений попадает в каждый из них.

Заключение

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

Содержание: