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