Pandas Value_counts для подсчета уникальных значений
В этом руководстве вы узнаете, как использовать метод .value_counts() в Pandas для подсчёта значений в вашем DataFrame и создания таблиц частот. Умение подсчитывать значения в наборе данных — важный шаг к лучшему пониманию распределения ваших данных. Метод .value_counts() содержит множество полезных параметров, которые позволяют тонко настраивать анализ.
К концу этого урока вы научитесь:
Использовать метод
.value_counts()в PandasСоздавать таблицы абсолютных и относительных частот
Обрабатывать пропущенные данные
Упрощать группировку (биннинг) значений в столбце
Комбинировать
.value_counts()с методом.groupby(), чтобы исследовать частоты по разным группам
Содержание
Обзор метода .value_counts() в Pandas
.value_counts() в PandasМетод .value_counts() можно применять как к отдельному столбцу DataFrame, так и ко всему DataFrame целиком. Поведение метода немного отличается в зависимости от контекста применения, но в большинстве случаев он работает одинаково. Если будут различия, они будут указаны отдельно.
Давайте посмотрим на сигнатуру метода и его параметры по умолчанию:
Метод .value_counts() имеет только необязательные параметры, что означает, что если вы просто хотите подсчитать частоты значений, вы можете применить метод напрямую, без необходимости передавать какие-либо аргументы.
Загрузка примера DataFrame
Чтобы следовать данному руководству, загрузите приведённый ниже набор данных, скопировав и вставив предоставленный код. Если у вас есть собственные данные, вы можете использовать их — разумеется, ваши результаты будут отличаться.
Набор данных содержит всего три столбца, два из которых можно считать категориальными. Данные охватывают различные оценки (grades), типы классов и количество студентов в каждой группе.
Создание таблицы частот в Pandas с помощью .value_counts()
.value_counts()В этом разделе вы узнаете, как применять метод .value_counts() к столбцу DataFrame в Pandas. Например, если вы хотите подсчитать, сколько раз каждое уникальное значение встречается в столбце Students, вы можете просто применить этот метод к данному столбцу.
Давайте посмотрим, как это выглядит без передачи дополнительных аргументов — они будут рассмотрены позже в этом руководстве.
Метод возвращает объект Series, содержащий все уникальные значения и их количество. Поскольку результат является Series, вы можете легко получить доступ к данным с помощью индексации. Например, если вы хотите узнать, сколько раз встречается значение 20 (то есть, сколько классов содержат 20 студентов), вы можете обратиться к индексу [20]:
В следующем разделе вы узнаете, как сортировать таблицу частот в Pandas.
Сортировка таблицы частот в Pandas
Сортировка таблицы частот, созданной с помощью метода .value_counts(), управляется двумя параметрами:
sort=— определяет, нужно ли сортировать данные (по умолчаниюTrue).ascending=— указывает порядок сортировки: по возрастанию (True) или по убыванию (False).
По умолчанию Pandas сортирует значения по убыванию (то есть самые частые значения отображаются первыми).
Мы можем изменить это поведение и выполнить сортировку по возрастанию, установив параметр ascending=True. Это может быть полезно, если вы хотите увидеть наименее часто встречающиеся значения в наборе данных.
В этом случае наименее часто встречающиеся значения находятся выше в возвращаемой Series.
Отключив сортировку полностью (установив sort=False), данные будут отображаться в том порядке, в котором Pandas встречает их в наборе данных.
Сортировка таблицы частот по индексу (меткам)
В предыдущем разделе вы узнали, что метод .value_counts() возвращает объект Series, который может быть отсортирован или оставлен без изменений. Однако бывают случаи, когда вместо сортировки по частоте значений вы хотите отсортировать данные по их меткам (то есть по категориям).
Это можно сделать, добавив к результату метод .sort_index(). Данные можно отсортировать по возрастанию или убыванию, используя параметр ascending=.
Давайте отсортируем нашу таблицу частот по категориям в алфавитном порядке:
В следующем разделе вы узнаете, как рассчитать таблицу частот в Pandas, где вместо абсолютных значений будут использоваться нормализованные проценты.
Расчёт таблицы частот в Pandas с использованием процентов
Библиотека Pandas позволяет очень легко отображать частоты в процентах. Это делает данные проще для понимания, особенно при анализе распределения. Чтобы преобразовать подсчитанные значения в доли (проценты), можно использовать параметр normalize=.
По умолчанию этот параметр установлен в значение False. Если изменить его на True, значения будут представлены в виде долей от общей суммы (в диапазоне от 0 до 1):
Имейте в виду, что по умолчанию Pandas сортирует значения по убыванию. Нормализация данных позволяет легко понять, какую долю от всего набора данных представляет каждая категория.
Группировка (биннинг) данных в таблицах частот Pandas
Метод .value_counts() также позволяет разбивать числовые данные на группы (бины) равного размера. Это удобная обёртка над методом .cut() из Pandas и позволяет подсчитать количество значений в каждой группе.
Давайте разделим данные на четыре числовые группы, воспользовавшись параметром bins=:
Работа с пропущенными значениями в таблицах частот Pandas
В этом разделе вы узнаете, как обрабатывать пропущенные данные при использовании метода .value_counts(). Чтобы подробнее рассмотреть этот вопрос, давайте добавим в наш DataFrame некоторые пропущенные значения (NaN).
Теперь, когда в нашем DataFrame появились пропущенные значения (NaN), применим метод .value_counts() с параметрами по умолчанию и посмотрим, как будут выглядеть результаты:
По умолчанию метод исключает все пропущенные значения (NaN) из результата. Однако зачастую бывает полезно включить эти значения в анализ. Это можно сделать, передав dropna=True в параметрах метода .value_counts().
Расчёт таблицы частот для нескольких столбцов с помощью .value_counts()
.value_counts()Метод .value_counts() также можно применять к нескольким столбцам одновременно. Преимущество применения метода ко всему DataFrame заключается в том, что становится доступен параметр subset=. Он позволяет передать список столбцов, по которым будет рассчитана комбинация уникальных значений и их частота.
Давайте посмотрим, как распределены значения по столбцам Grade и Class Type:
Сейчас результат возвращается в виде довольно неупорядоченного объекта Series. Вы можете улучшить восприятие данных, отсортировав индекс, чтобы лучше понимать иерархию комбинаций значений.
Упражнения
Пришло время проверить, насколько хорошо вы усвоили материал! Попробуйте выполнить приведённые ниже упражнения. Для их решения используйте предоставленный ниже DataFrame:
Заключение и повторение материала
В этом руководстве вы узнали, как использовать метод .value_counts() в Pandas для создания таблиц частот, подсчитывающих количество значений в Series или DataFrame. Ниже приведены основные моменты, которые вы изучили:
Метод
.value_counts()можно применять как к Series (столбцу), так и ко всему DataFrame.Он подсчитывает, сколько раз каждое значение встречается в данных.
С помощью параметра
normalize=Trueможно получить относительные частоты (в долях от общего числа).Метод можно использовать для нескольких столбцов одновременно, чтобы исследовать комбинации значений и их частоты.
Этот инструмент особенно полезен на этапе анализа данных, когда важно понимать распределение категорий или числовых значений.
Дополнительные ресурсы
Последнее обновление