Подсчёт уникальных значений в колонке DataFrame Python
Быстрый ответ
Для подсчёта количества раз, которые определенные значения встречаются в столбце DataFrame, лучше всего использовать метод value_counts() из библиотеки pandas.
# Предположим, что df — это ваш DataFrame, и 'your_column' — столбец, который нужно проанализировать
print(df['your_column'].value_counts()) # Узнаем, какие значения встречаются чаще всего
Замените строку 'your_column' на название фактического столбца в вашем датафрейме для того, чтобы получить данные о частоте встречаемости в нём разных значений.

Основы подсчёта частоты
Метод value_counts() позволяет определить, как часто каждое уникальное значение встречается в столбце, причем результаты сразу отсортированы по убыванию. Чтобы учесть даже отсутствующие значения, можно использовать функцию fillna(0).
# Ни одно значение не останется неучтённым
print(df['your_column'].value_counts().fillna(0))
Если необходимо анализировать частоту символов построчно, стоит задать параметр axis равным 1.
# Проверка каждой строки в нашем DataFrame
print(df.apply(pd.value_counts, axis=1))
Группировка и трансформирование для специфических задач
А чтобы подсчитать частоту значений и при этом добавить результаты в исходный DataFrame, можно воспользоваться сочетанием методов groupby и transform:
# Фокусируемся на данных, минимизируя шум
df['frequency'] = df.groupby('your_column')['your_column'].transform('count')
Стоит помнить, что сочетание groupby с count отличается от value_counts, поскольку оно позволяет подсчитать групповые частоты для всех значений, а не только для уникальных.
Подсчёт частоты для всего DataFrame
Для анализа частоты значений по всем столбцам используйте df.apply(pd.value_counts). Этот подход позволяет получить новый DataFrame, отображающий количество каждого значения по столбцам.
# Проводим детальный анализ подсчёта данных по всему DataFrame
print(df.apply(pd.value_counts))
Опасности при использовании
Если вы хотите посчитать количество уникальных значений, использование groupby в сочетании с count может дать нулевой результат. В таких случаях лучше использовать либо .size(), либо value_counts(), чтобы достичь точности в результатах.
Использование метода перекрёстного подсчёта
Для глубокого анализа можно использовать функцию crosstab, с помощью которой возможно создание многомерных таблиц частот для различных комбинаций переменных.
# Изучим все возможные комбинации значений с помощью crosstab
pd.crosstab(df['column1'], df['column2'])
Предупреждение ошибок с применением
Перед подсчётом частот всегда убеждайтесь, что в DataFrame нет пустых значений, иначе они могут сместить точность результатов. В этом помогут функции dropna() или fillna().
Визуализация
Попробуйте визуализировать подсчёт частот, будто это список товаров в фруктовом магазине:
# Список фруктов в магазине 🍇🍌🍎
| Фрукт | Частота |
| --------- | --------- |
| 🍇 Виноград | 🟣🟣🟣 |
| 🍌 Банан | 🟡🟡 |
| 🍎 Яблоко | 🔴🔴🔴🔴 |
Каждая иконка фрукта отражает его количественное присутствие в столбце DataFrame.
Изображение говорит больше, чем сложные числовые данные
Вы можете использовать утилиты визуализации данных для более понятного представления распределений. Функции построения графиков из Matplotlib и Seaborn, такие как seaborn.countplot(), помогут наглядно иллюстрировать частотное распределение.
Как выбрать подходящий метод подсчёта
При выборе между value_counts() и groupby().size() имейте в виду, что value_counts() в основном используют для подсчета значений в отдельных столбцах, в то время как groupby() идеально подходит для групповых частот в нескольких столбцах.
Советы и предостережения
value_counts(normalize=True)покажет пропорциональное распределение, а не только подсчёт значений.- Примените
head()кvalue_counts(), чтобы получить список N самых часто встречающихся значений. - И всегда проверяйте предположения о вашей выборке данных перед тем, как выбирать метод подсчёта.
Руководство по устранению ошибок
Если при группировке данных возникает ошибка KeyError, убедитесь в правильности названий столбцов и их существовании.
Повышение производительности
Процесс подсчёта частот при работе с большими объёмами данных может затянуться. Чтобы оптимизировать использование памяти и производительность, используйте категориальные типы данных.
Полезные материалы
- Документация pandas 2.2.0 – pandas.Series.value_counts — подробное изложение всего, что касается использования
value_countsв pandas. - Python – Подсчёт частоты встречаемости значений в столбце DataFrame – Stack Overflow — обсуждение и примеры с сайта Stack Overflow.
- DataFrame в pandas: Искусство работы с данными – Real Python — замечательное начальное руководство по работе с DataFrame в pandas.
- Группировка: принцип "разделить, применить, объединить" – Документация pandas 2.2.0 — подробный обзор операций группировки в pandas.
- Документация seaborn 0.13.2 – seaborn.countplot — обучение построению графиков частоты в библиотеке seaborn.
- Горизонтальная гистограмма – Документация Matplotlib 3.8.2 — руководство по визуализации данных в Matplotlib.
- Руководство NumPy v1.26 – numpy.unique — использование функции NumPy для идентификации уникальных элементов и подсчитывания их частот.


