Pandas unique(): Получение уникальных значений в DataFrame

В этом учебнике вы узнаете, как получать уникальные значения в DataFrame Pandas, включая получение уникальных значений для одного столбца и для нескольких столбцов. Умение работать с уникальными значениями является важным навыком для данных учёных или инженеров данных любого уровня подготовки.

К концу этого урока вы научитесь следующему:

  • Как использовать метод Pandas .unique() для получения уникальных значений в столбце Pandas DataFrame

  • Как получить уникальные значения в нескольких столбцах

  • Как подсчитать уникальные значения и создать таблицы частот для уникальных значений

Содержание

Быстрый ответ: используйте Pandas unique()

Вы можете использовать метод .unique() библиотеки Pandas, чтобы получить уникальные значения в столбце DataFrame Pandas. Значения возвращаются в порядке их появления и не сортируются.

Взгляните на блок кода ниже, чтобы узнать, как работает этот метод:

# Получите уникальные значения в столбце DataFrame Pandas
import pandas as pd
df = pd.DataFrame({'Education': ['Graduate','Graduate','Undergraduate','Postgraduate']})
unique_vals = df['Education'].unique()
print(unique_vals)

# Возвращает: ['Graduate' 'Undergraduate' 'Postgraduate']

Если вы хотите узнать больше, читайте дальше! Это руководство научит вас работе с уникальными данными в DataFrame библиотеки Pandas.

Реальное применение уникальных данных

Давайте погрузимся в изучение реальных применений работы с уникальными данными и поймем, почему это важно. Рассмотрим пример DataFrame, который мы создадим ниже. Мы будем использовать этот набор данных в течение всего учебного пособия.

# Загрузка образца набора данных
import pandas as pd
dataset = {
 'Education Status': ['Graduate','Graduate','Undergraduate','Postgraduate','Graduate','Undergraduate','Postgraduate','Graduate','Undergraduate','Postgraduate','Graduate','Undergraduate','Graduate','Postgraduate','Postgraduate'],
 'Employment Status': ['Employed','employed','Unemployed','Employed','Employed','Unemployed','Employed','Employed','Employed','Employed','Unemployed','Employed','Employed','Employed','Employed'],
 'Gender': ['F','M','M','F','M','F','M','F','M','F','M','F','M','F','F']}

df = pd.DataFrame(dataset)
print(df.head())

# Возвращает: 
#   Education Status Employment Status Gender
# 0         Graduate          Employed      F
# 1         Graduate          employed      M
# 2    Undergraduate        Unemployed      M
# 3     Postgraduate          Employed      F
# 4         Graduate          Employed      M

Понимание уникальных данных в DataFrame позволяет вам понять:

  1. Сами данные, например, какие данные включены, а какие нет.

  2. Существуют ли проблемы с качеством данных. Например, мы видим, что в столбце «Статус занятости» слово «Занят» написано с двух заглавных букв. Понимание того, какие уникальные значения существуют, позволяет нам лучше понять, нужно ли нам очищать наши данные.

Давайте теперь углубимся в понимание метода Pandas .unique().

Понимание метода unique() Pandas

Метод unique() в Pandas на самом деле не имеет параметров. Это функция уровня Series, применяемая к столбцу DataFrame без входных параметров. При применении к конкретному столбцу DataFrame возвращает массив уникальных значений, присутствующих в этом столбце.

Вот разбивка того, как работает метод unique()

  • Выберите столбец, к которому будет применяться функция unique(), указав имя столбца в скобках после имени DataFrame.

  • Вызовите метод unique() без каких-либо входных параметров или аргументов.

  • Получите массив уникальных значений, найденных в выбранной колонке.

Давайте рассмотрим функцию unique() на примере набора данных, который мы создали ранее.

Получите уникальные значения для столбца DataFrame Pandas

Чтобы получить уникальные значения в столбце DataFrame Pandas, вы можете применить к столбцу метод .unique(). Метод вернет массив NumPy в том порядке, в котором появляются значения.

Давайте посмотрим, как мы можем получить уникальные значения в столбце `Статус образования

# Получите уникальные значения для столбца в Pandas
print(df['Education Status'].unique())

# Возвращает: 
# ['Graduate' 'Undergraduate' 'Postgraduate']

В приведенном выше примере мы использовали метод .unique() для столбца df['Education Status']. Это вернуло три уникальных значения в виде массива NumPy.

Давайте исследуем, как мы можем вернуть уникальные значения в виде списка в следующем разделе.

Получите уникальные значения для столбца Pandas в виде списка

По умолчанию метод .unique() в Pandas возвращает массив NumPy уникальных значений. Чтобы получить результат в виде списка, можно применить метод .tolist() к массиву, чтобы преобразовать его в список Python.

Давайте посмотрим, как это выглядит:

# Получите уникальные значения для столбца в Pandas в виде списка
print(df['Education Status'].unique().tolist())

# Возвращает:
# ['Graduate' 'Undergraduate' 'Postgraduate']

В приведенном выше примере мы применили метод .tolist() к нашему массиву NumPy, преобразовав его в список.

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

Получите уникальные значения для нескольких столбцов DataFrame Pandas

По умолчанию метод .unique() в Pandas может быть применен только к одному столбцу. Это связано с тем, что метод относится к Pandas Series, а не к DataFrame.

Чтобы получить уникальные значения нескольких столбцов DataFrame, мы можем использовать метод .drop_duplicates(). Это вернет DataFrame со всеми уникальными комбинациями.

Давайте посмотрим, как это выглядит:

# Получите уникальные значения для нескольких столбцов DataFrame
unique = df[['Education Status', 'Gender']].drop_duplicates()
print(unique)

# Возвращает:
#   Education Status  Gender
# 0         Graduate  Female
# 1         Graduate    Male
# 2    Undergraduate    Male
# 3     Postgraduate  Female
# 5    Undergraduate  Female
# 6     Postgraduate    Male

Метод .drop_duplicates() в Pandas может быть полезен для определения только уникальных значений по двум или более столбцам

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

Чтобы посчитать, сколько уникальных значений содержится в определенной колонке (или колонках) DataFrame, мы можем применить метод .nunique(). Метод вернет одно значение, если применен к одной колонке, и серию Pandas, если применен к нескольким колонкам.

Давайте посмотрим, как мы можем использовать метод .nunique() для подсчета количества уникальных значений в колонке:

# Подсчет уникальных значений в столбце DataFrame Pandas
num_statuses = df['Employment Status'].nunique()
print(num_statuses)

# Возвращает: 3

Метод nunique может быть чрезвычайно полезен для понимания количества уникальных значений, существующих в столбце.

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

В этом разделе мы рассмотрим, как подсчитать количество вхождений значений среди уникальных значений. Это, по сути, создает таблицу частот уникальных значений в столбце DataFrame.

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

# Подсчет появления уникальных значений в столбце DataFrame Pandas
print(df['Education Status'].value_counts())

# Возвращает:
# Graduate         6
# Postgraduate     5
# Undergraduate    4
# Name: Education Status, dtype: int64

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

Часто задаваемые вопросы

Что такое метод unique() в Pandas?

Метод unique() — это метод Pandas, который используется для нахождения уникальных значений в объекте Series. Его можно применить к определенному столбцу DataFrame, чтобы вернуть массив уникальных значений, присутствующих в этом столбце.

Как значения NaN обрабатываются методом unique()?

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

Как я могу отсортировать уникальные значения столбца DataFrame при использовании метода unique()?

После использования метода unique() для получения уникальных значений в столбце DataFrame, вы можете сортировать полученный массив, используя встроенную функцию sorted() Python. Эта функция принимает в качестве аргумента последовательность (такую как массив, возвращенный unique()) и возвращает отсортированный список элементов.

Как найти общее количество уникальных значений в столбце DataFrame?

Чтобы найти общее количество уникальных значений в столбце DataFrame, используйте метод nunique(). Его применение аналогично unique(), но он возвращает целочисленное количество уникальных значений, а не список уникальных значений.

Заключение

В этом руководстве вы научились получать уникальные значения в DataFrame библиотеки Pandas, включая получение уникальных значений для одного столбца и для нескольких столбцов. Сначала вы узнали, как получить уникальные значения для одного столбца, а также для нескольких столбцов. Затем вы узнали, как подсчитать уникальные значения, а также количество вхождений уникальных значений. Чтобы узнать больше о методе .unique(), ознакомьтесь с официальной документацией.

Last updated