Как подсчитать уникальные значения в pandas dataframe

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для подсчета уникальных элементов в столбце DataFrame из библиотеки Pandas используется nunique(). value_counts() позволяет исследовать частоту появления указанных значений:

Python
Скопировать код
import pandas as pd

# Создаем датафрейм
df = pd.DataFrame({'col': ['X', 'Y', 'X', 'Z', 'Y', 'X']})

# Подсчитываем количество уникальных значений
unique_count = df['col'].nunique()

# Визуализируем частоту появления каждого значения
frequency = df['col'].value_counts()

print(unique_count)  # Вывод: 3
print(frequency)

Результат:

X    3
Y    2
Z    1
Name: col, dtype: int64
Кинга Идем в IT: пошаговый план для смены профессии

Особые приемы

Чтобы стать профессионалом в анализе данных, важно изучить разнообразные подходы к подсчету информации. Поговорим о них сегодня:

Исключение нулевых значений? Легко!

Отфильтровать нулевые значения при подсчете можно с помощью count():

Python
Скопировать код
# Игнорируем нулевые значения
non_null_count = df['col'].count()

Включаем нулевые значения

Иногда нули тоже важны. Чтобы учесть их, используйте свойство size, которое подсчитывает все элементы:

Python
Скопировать код
# Учитываем все элементы, включая нулевые
total_elements = df['col'].size

Подсчет по условиям

Используйте булевы маски для фильтрации и подсчета по условиям:

Python
Скопировать код
# Считаем количество 'X', исключая пустые значения
x_count = df[df['col'] == 'X']['col'].count()

Комбинированный подсчет через agg()

Функция agg() позволяет применять несколько операций подсчета одновременно:

Python
Скопировать код
# Инструмент с множеством возможностей: представляем `agg()`
summary_counts = df.agg({'col': ['count', 'nunique', 'size']})

Сначала фильтр, потом подсчет

Сначала используйте query() для фильтрации данных, а затем приступайте к подсчету, чтобы получить более точные результаты:

Python
Скопировать код
# Чистые данные — верный путь к точному подсчету
filtered_x_count = df.query('col == "X"')['col'].count()

Подсчет уникальных значений по всему DataFrame

Для подсчета уникальных значений сразу по всем столбцам используйте nunique() для всего DataFrame:

Python
Скопировать код
# Отмечаем уникальность в каждой ячейке данных
overall_unique_counts = df.nunique()

Групповой подсчет с groupby()

Сгруппируйте похожие данные с помощью groupby(), а затем используйте count() для их подсчета:

Python
Скопировать код
# Разделяем и подсчитываем по группам
grouped_values_count = df.groupby('col')['value'].count()

Важно помнить о фундаментальном правиле: обязательно убедитесь в отсутствии дублирующихся записей с помощью df.drop_duplicates(), чтобы избежать ошибок в расчетах!

Визуализация

Представьте, что у нас есть "сад DataFrame'ов" и мы хотим подсчитать различные виды цветов, где каждый вид -- это уникальное значение в столбце.🌸🌼🌺

Выполним команду:

Python
Скопировать код
garden['species'].value_counts()

И получим красивую строку чисел, демонстрирующих всю красоту нашего сада:

Вид цветкаКоличество
🌸15
🌼7
🌺12

Да, мы считаем цветы, но используем для этого формат pandas DataFrame. 🌟

Современные подходы к подсчету

В Pandas есть множество способов работы с сложными данными. Давайте узнаем, как выполнять подсчеты в условиях сложных данных!

Группировка и стекирование для наглядности

Используйте groupby() в сочетании со стекированием результатов для лучшего понимания результата:

Python
Скопировать код
# Превращаем подсчеты в наглядные стеки
stacked_count_view = df.groupby('col').size().unstack()

Подсчет уникальных значений через pivot_table

pivot_table – отличный инструмент для обобщения данных и подсчета уникальных значений:

Python
Скопировать код
# Создаем сводную таблицу для наглядного представления подсчетов
pivot_unique_count = df.pivot_table(index='col1', columns='col2', aggfunc='nunique')

Работа с большими объемами данных

При работе с большими данными используйте параметр chunksize, чтобы оптимизировать использование памяти:

Python
Скопировать код
# Оптимизируем работу с большим объемом данных через `chunksize`
chunkwise_counts = pd.read_csv('large_dataset.csv', chunksize=10000)

Полезные материалы

  1. pandas.Series.value_counts — документация pandas 2.2.0 — Подробное руководство по эффективному подсчету уникальных значений в Pandas.
  2. pandas.DataFrame.nunique — документация pandas 2.2.0 — Работаем с данными, исходя из фактического числа уникальных элементов в DataFrame.
  3. Python pandas: секретные приемы, о которых вы, возможно, не слышали – Real Python — Лайфхаки, раскрывающие неочевидные возможности Pandas.
  4. Group by: сила объединения и подсчета – документация pandas 2.2.0 — Глубокое погружение в агрегацию данных с помощью group by.
  5. pandas.pivot_table — документация pandas 2.2.0 — Сводные таблицы для быстрого подсчета и группировки данных в Pandas.
  6. pandas.DataFrame.drop_duplicates — документация pandas 2.2.0 — Ваш путеводитель по удалению дублирующихся строк.
  7. Шпаргалка по работе с данными в Pandas — Ваша отправная точка для быстрого освоения основных операций с Pandas.