Ценный анализ данных с помощью Pandas Value Counts

Вы можете проводить больше анализа данных, чем вы думаете, с помощью этого простого инструмента.

Функция value_counts() в популярной библиотеке науки о данных Python Pandas - это быстрый способ подсчета уникальных значений в одном столбце, также известном как ряд данных.

Эта функция чрезвычайно полезна для очень быстрого выполнения базового анализа данных для определенных столбцов данных, содержащихся в Pandas DataFrame. Для введения в pandas DataFrames, пожалуйста, прочтите сообщение за последнюю неделю, которое можно найти здесь.

В статье ниже я покажу вам несколько советов по использованию этого инструмента для анализа данных. В этом посте вы узнаете, как с помощью нескольких дополнений к вашему коду вы можете проводить довольно много анализа с помощью этой функции.

Данные

В примерах, показанных в этой статье, я буду использовать набор данных, взятых с веб-сайта Kaggle. Он разработан для задачи классификации машинного обучения и содержит информацию о медицинских приемах и целевую переменную, которая указывает, явился ли пациент на прием.

Его можно скачать здесь.

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

import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
data = pd.read_csv('KaggleV2-May-2016.csv')
data.head()

Основные подсчеты

Функцию value_counts() можно использовать следующим образом, чтобы получить количество уникальных значений для одного столбца в наборе данных. В приведенном ниже коде указано количество каждого значения в столбце Пол.

data['Gender'].value_counts()

Чтобы отсортировать значения в порядке возрастания или убывания, мы можем использовать аргумент sort. В приведенном ниже коде я добавил sort=True, чтобы отображать счетчики в столбце Возраст в порядке убывания.

data['Age'].value_counts(sort=True)

Комбинировать с groupby ()

Функция value_counts может быть объединена с другими функциями Panadas для более обширных методов анализа. Одним из примеров является сочетание с функцией groupby(). В приведенном ниже примере я подсчитываю значения в столбце «Пол» и применяю groupby(), чтобы лучше понять количество неявок в каждой группе.

data['No-show'].groupby(data['Gender']).value_counts(sort=True)

Нормализовать

В приведенном выше примере отображение абсолютных значений не позволяет нам легко понять различия между двумя группами. Лучшим решением было бы показать относительные частоты уникальных значений в каждой группе.

Мы можем добавить аргумент normalize в value_counts (), чтобы отображать значения таким образом.

data['No-show'].groupby(data['Gender']).value_counts(normalize=True)

Биннинг

Для столбцов, содержащих большое количество уникальных значений, вывод функции value_counts () не всегда особенно полезен. Хорошим примером этого может быть столбец «Возраст», для которого мы ранее в этом посте отображали количество значений.

К счастью, value_counts () имеет аргумент bins. Этот параметр позволяет нам указать количество бункеров (или групп, на которые мы хотим разделить данные) как целое число. В приведенном ниже примере я добавил bins=5, чтобы разделить счетчик возраста на 5 групп. Теперь у нас есть количество значений в каждой из этих ячеек.

data['Age'].value_counts(bins=5)

Опять же, показ абсолютных чисел не особенно полезен, поэтому давайте также добавим аргумент normalize=True. Теперь у нас есть полезный анализ.

data['Age'].value_counts(bins=5, normalize=True)

Комбинировать с nlargest ()

В нашем наборе данных есть и другие столбцы, которые имеют большое количество уникальных значений, для которых биннинг по-прежнему не дает нам полезной части анализа. Хорошим примером этого может служить столбец Окрестности.

Если мы просто запустим value_counts () против этого, мы получим вывод, который не особенно информативен.

data['Neighbourhood'].value_counts(sort=True)

Лучшим способом отобразить это может быть просмотр 10 лучших районов. Мы можем сделать это, объединив с другой функцией Pandas, называемой nlargest(), как показано ниже.

data['Neighbourhood'].value_counts(sort=True).nlargest(10)

Мы также можем использовать nsmallest() для отображения 10 нижних окрестностей, что также может оказаться полезным.

data['Neighbourhood'].value_counts(sort=True).nsmallest(10)

Сюжет

Еще одна удобная комбинация - это функция построения графиков Pandas вместе с value_counts (). Возможность отображать результаты анализа, полученные от value_counts (), в виде визуализаций, может значительно упростить просмотр тенденций и закономерностей.

Мы можем отобразить все приведенные выше примеры и многое другое с помощью большинства типов графиков, доступных в библиотеке Pandas. Полный список доступных опций можно найти здесь.

Давайте посмотрим на несколько примеров.

Мы можем использовать гистограмму, чтобы просмотреть 10 лучших районов.

data['Neighbourhood'].value_counts(sort=True).nlargest(10).plot.bar()

Мы можем сделать круговую диаграмму, чтобы лучше визуализировать столбец «Пол».

data['Gender'].value_counts().plot.pie()

Функция value_counts () часто является одной из моих первых отправных точек для анализа данных, поскольку она позволяет мне очень быстро строить тенденции и извлекать аналитические данные из отдельных столбцов в наборе данных. В этой статье дается краткий обзор различных типов анализа, для которых вы можете использовать это, но эта функция имеет больше применений, выходящих за рамки этой публикации.

Спасибо за прочтение!

Я отправляю ежемесячный информационный бюллетень, если вы хотите присоединиться, зарегистрируйтесь по этой ссылке. С нетерпением жду возможности принять участие в вашем образовательном путешествии!