
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 для анализа категориальных данных. Он предоставляет быстрый способ получить статистическую информацию о значениях в столбце, что может быть особенно полезно на начальных этапах анализа данных.
Содержание: