Метод Pandas unique() имеет преимущество перед numpy.unique, поскольку здесь мы также можем иметь значения NA, и она сравнительно быстрее. Функция unique() основана на хеш-таблице. Уникальные значения возвращаются в порядке их появления в наборе данных.
Что такое функция Series unique() в Pandas?
Функция Pandas unique() извлекает уникальные данные из набора данных. Метод unique() не принимает никаких параметров и возвращает пустой массив уникальных значений в этом конкретном столбце.
Когда мы много раз анализируем набор данных, и нам нужно, чтобы уникальные данные решали проблемы такого типа, мы используем метод Pandas unique(), который возвращает уникальные данные из заданного набора данных.
Синтаксис
|
1 |
Series.unique() |
Параметры
Функция unique() не принимает никаких параметров, но ее следует применять к одномерному массиву.
Возвращаемое значение
Функция unique() возвращает массив уникальных значений в этом конкретном столбце.
Возвращаемое значение может быть:
- Index: когда вход является индексом.
- Categorical: когда вход является категориальным типом.
- ndarray: когда в качестве входных данных используется Series/ndarray.
Пример

- Напишем программу, показывающую работу метода unique() в Python.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
import pandas as pd dataset = { 'Name': ['Rohit', 'Arun', 'Sohit', 'Arun', 'Shubh'], 'Roll no': ['01', '02', '03', '04', '05'], 'maths': ['93', '63', '74', '94', '83'], 'science': ['88', '55', '66', '94', '35'], 'english': ['93', '74', '84', '92', '87']} df = pd.DataFrame(dataset) group = df["Name"].unique() print(group) |
Выход:
|
1 |
['Rohit' 'Arun' 'Sohit' 'Shubh'] |
В этом примере мы видим, что мы пытались найти все уникальные элементы столбца «Name». Здесь мы видим, что Arun повторяется в столбце дважды; следовательно, с помощью функции unique() мы извлекли только уникальные имена.
- Напишем программу, которая использует unique() для элементов списка и возвращает уникальные элементы из этого списка.
В этом примере мы будем использовать серию Pandas и находить уникальные предметы из последовательности.
|
1 2 3 |
import pandas as pd print(pd.unique(pd.Series([1, 2, 3, 4, 5, 6, 7, 7, 7, 7, 8]))) |
Выход:
|
1 |
[1 2 3 4 5 6 7 8] |
В этом коде мы напечатали все уникальные элементы серии.
Неупорядоченный категориальный список
Если наш ввод является неупорядоченным категориальным типом dtype, мы получим следующий вывод.
|
1 2 3 |
import pandas as pd print(pd.unique(pd.Series(pd.Categorical(list('tenet'))))) |
Выход:
|
1 2 |
[t, e, n] Categories(3, object): [t, e, n] |
Упорядоченный категориальный список
Если наш ввод является упорядоченным категориальным типом dtype, мы получим следующий вывод.
|
1 2 3 4 5 |
import pandas as pd print(pd.unique(pd.Series(pd.Categorical(list('tenet'), categories=list('ent'), ordered=True)))) |
Выход:
|
1 2 |
[t, e, n] Categories(3, object): [e < n < t] |
Массив кортежей
Давайте передадим массив кортежей функции pd.unique() и посмотрим на результат.
|
1 2 3 |
import pandas as pd print(pd.unique([('x', 'y'),('y', 'x'),('x', 'z'),('y', 'x')])) |
Выход:
|
1 |
[('x', 'y')('y', 'x')('x', 'z')] |
В этом примере мы передали(‘y’, ‘x’) два раза, но в выводе отображается только один раз. Это означает, что функция pd.unique() отфильтровала повторяющийся кортеж. Помните одну вещь: метод unique() работает только с сериями, а не с DataFrames.
Если вы вызовете метод unique() для DataFrame, он выдаст следующую ошибку.
|
1 |
AttributeError: 'DataFrame' object has no attribute 'unique' |

Pandas unique() с NaN и None
Метод pd.unique() включает значение NULL, None или NaN в качестве уникального значения.
Если вы еще не установили numpy, установите и импортируйте numpy в файл.
|
1 2 3 4 |
import pandas as pd import numpy as np print(pd.unique([('x', 'y'),('y', 'x'),('x', 'z'), np.nan, None, np.nan])) |
Выход:
|
1 |
[('x', 'y')('y', 'x')('x', 'z') nan None] |
В этом примере мы взяли значения np.nan два раза, но на выходе они возвращаются только один раз.
