Pandas — это мощная библиотека Python для обработки и анализа данных. Распространенная задача включает извлечение уникальных значений из столбца DataFrame и их последующую сортировку. В этой статье рассматриваются два эффективных метода для решения этой задачи.
Содержание
- Извлечение уникальных значений с помощью метода
unique()
- Извлечение уникальных значений с помощью метода
drop_duplicates()
- Сортировка уникальных значений
Извлечение уникальных значений с помощью метода unique()
Метод unique()
предоставляет краткий способ получения уникальных значений из Pandas Series (один столбец). Он возвращает массив NumPy, содержащий только уникальные элементы, сохраняя их исходный порядок.
import pandas as pd
data = {'col1': ['A', 'B', 'A', 'C', 'B', 'D'],
'col2': [1, 2, 1, 3, 2, 4]}
df = pd.DataFrame(data)
unique_values = df['col1'].unique()
print(unique_values) # Вывод: ['A' 'B' 'C' 'D']
Этот код создает пример DataFrame, а затем использует unique()
для столбца ‘col1’. Вывод — это массив NumPy, показывающий уникальные значения в порядке их первого появления.
Извлечение уникальных значений с помощью метода drop_duplicates()
Метод drop_duplicates()
предлагает большую гибкость, особенно при работе с несколькими столбцами. Хотя он в основном используется для удаления дублирующих строк, он может эффективно извлекать уникальные значения из одного столбца.
import pandas as pd
data = {'col1': ['A', 'B', 'A', 'C', 'B', 'D'],
'col2': [1, 2, 1, 3, 2, 4]}
df = pd.DataFrame(data)
unique_values = df['col1'].drop_duplicates().values
print(unique_values) # Вывод: ['A' 'B' 'C' 'D']
В этом примере drop_duplicates()
применяется непосредственно к Series ‘col1’. Атрибут .values
преобразует результат в массив NumPy. Порядок уникальных значений отражает их первое появление в DataFrame.
Сортировка уникальных значений
Оба метода выше возвращают уникальные значения, но не обязательно в отсортированном порядке. Для сортировки используйте функцию sort()
NumPy или метод sort_values()
Pandas.
import pandas as pd
import numpy as np
data = {'col1': ['A', 'B', 'A', 'C', 'B', 'D'],
'col2': [1, 2, 1, 3, 2, 4]}
df = pd.DataFrame(data)
# Использование unique() и sort()
unique_values = np.sort(df['col1'].unique())
print(unique_values) # Вывод: ['A' 'B' 'C' 'D']
# Использование drop_duplicates() и sort_values()
unique_values = df['col1'].drop_duplicates().sort_values().values
print(unique_values) # Вывод: ['A' 'B' 'C' 'D']
Здесь показана сортировка с использованием обоих подходов. np.sort()
работает с массивом NumPy из unique()
, а sort_values()
используется с Pandas Series из drop_duplicates()
. Оба варианта дают отсортированный массив. Для сортировки по убыванию с помощью sort_values()
используйте ascending=False
.
В заключение, как unique()
, так и drop_duplicates()
эффективно извлекают уникальные значения. Оптимальный выбор зависит от ваших конкретных потребностей и от того, работаете ли вы с одним или несколькими столбцами. Не забудьте отсортировать результаты, используя соответствующий метод для желаемого порядка.