Pandas: поиск повторяющихся строк в DataFrame на основе всех или выбранных столбцов

Если вы хотите найти повторяющиеся строки в DataFrame на основе всех или выбранных столбцов, используйте функцию pandas.dataframe.duplicated (). В Data Science иногда вы получаете беспорядочный набор данных. Например, вам, возможно, придется иметь дело с дубликатами, что исказит ваш анализ.

Python Pandas: Найдите повторяющиеся строки в DataFrame

Pandas.DataFrame.duplicated () — это встроенная функция, которая находит повторяющиеся строки на основе всех столбцов или некоторых определенных столбцов. Функция pandas.duplicated () возвращает логическую серию со значением True для каждой дублированной строки.

Синтаксис

Синтаксис функции pandas.dataframe.duplicated () следующий.

 DataFrame.duplicated (subset = None, keep = '  first ') 

Параметры

  • подмножество:
    • Одиночный или Для проверки дублирования следует использовать несколько меток столбцов. Если вы не предоставите, то все столбцы будут проверены на предмет поиска повторяющихся строк.
  • keep:
    • Обозначает вхождение, которое следует пометить как повторяющееся. Его значение может быть {«first», «last», False}, значение по умолчанию — «first».
      • first: все дубликаты, кроме их первого появления, будут помечены как True.
      • last: все дубликаты, кроме их последнего вхождения, будут помечены как True.
      • False: все дубликаты, кроме их, будут отмечены как True.

Пример

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

 # app.pyimport pandas as pdseries = [('Stranger Things', 3, 'Millie'),  («Игра престолов», 8, «Эмилия»), («La Casa De Papel», 4, «Серджио»), («Мир Дикого Запада», 3, «Эван Рэйчел»), («Очень странные дела», 3,  'Millie'), ('La Casa De Papel', 4, 'Sergio')] # Создайте объект DataFrame .dfObj = pd.DataFrame (series, columns = ['Name', 'Seasons', 'Actor']) print (  dfObj) 

Вывод

 python3 app.py Имя Сезоны Актер0 Очень странные дела 3 Милли1 Игра престолов 8 Эмилия2 La Casa De Papel  4  Sergio3 Westworld 3 Evan Rachel4 Stranger Things 3 Millie5 La Casa De Papel 4 Sergio 

Как видите, вышеупомянутый фрейм данных содержит повторяющиеся строки.

Поиск повторяющихся строк на основе всех столбцов.

Если мы хотим найти и выбрать дубликат, все строки основаны на всех столбцах, вызовите Daraframe.duplicate () без каких-либо подмножество . Он вернет логическую серию с True для каждой повторяющейся строки, кроме их первого вхождения (значение по умолчанию аргумента keep — « first» ). Затем передайте эту логическую серию оператору [] фрейма данных, чтобы выбрать повторяющиеся строки..

См. следующий код.

 # app.pyimport pandas as pdseries = [  («Очень странные дела», 3, «Милли»), («Игра престолов», 8, «Эмилия»), («La Casa De Papel», 4, «Серхио»), («Мир Дикого Запада», 3, »  Evan Rachel '), (' Stranger Things ', 3,' Millie '), (' La Casa De Papel ', 4,' Sergio ')] # Создайте объект DataFrame .dfObj = pd.DataFrame (series, columns = [' Name  ',' Seasons ',' Actor ']) # Найдите повторяющиеся строкиduplicateDFRow = dfObj [dfObj.duplicated ()] print (duplicateDFRow) 

Вывод

 python3 app.py Имя Сезоны Actor4 Stranger Things 3 Millie5 La Casa De Papel 4 Sergio 

Здесь возвращаются все повторяющиеся строки, кроме их первого появления, потому что значение аргумента keep по умолчанию был « первым» .

Если мы хотим выбрать все повторяющиеся строки, кроме их последнего вхождения, нам нужно передать keep аргумент как « последний» . См. Следующий код.

 # app.pyimport pandas as pdseries = [('Stranger Things', 3, 'Millie'), ('Game of Thrones', 8, 'Emilia'),  ('La Casa De Papel', 4, 'Sergio'), ('Westworld', 3, 'Evan Rachel'), ('Stranger Things', 3, 'Millie'), ('La Casa De Papel', 4  , 'Sergio')] # Создать объект DataFramedfObj = pd.DataFrame (series, columns = ['Name', 'Seasons', 'Actor']) # Найти повторяющиеся строкиduplicateDFRow = dfObj [dfObj.duplicated (keep = 'last  ')] print (duplicateDFRow) 

Вывод

 pyt python3 app.py Имя Сезоны Актер0 Очень странные дела 3 Millie2 La Casa De  Papel 4 Sergio 

Поиск повторяющихся строк на основе выбранных столбцов.

Если мы хотим сравнить строки и найти дубликаты на основе выбранных столбцов, мы должны передать список имен столбцов в аргументе подмножества функции Dataframe.duplicate (). Он будет выбирать и возвращать повторяющиеся строки только на основе этих переданных столбцов.

Например, давайте найдем и выберем строки на основе одного столбца.

 # app.pyimport  pandas как pdseries = [('Stranger Things', 3, 'Millie'), ('Game of Thrones', 8, 'Emilia'), ('La Casa De Papel', 4, 'Sergio'), ('Westworld  ', 3,' Evan Rachel '), (' Stranger Things ', 3,' Millie '), (' La Casa De Papel ', 4,' Sergio ')] # Создайте объект DataFrame .dfObj = pd.DataFrame (series,  columns = ['Name', 'Seasons', 'Actor']) # Найдите повторяющиеся строкиduplicateDFRow = dfObj [dfObj.duplicated (['Name'])] print (duplicateDFRow) 

Вывод

 приложение pyt python3. py Имя Сезоны Actor4 Stranger Things 3 Millie5 La Casa De Papel 4 Sergio 

Здесь строки с одинаковым значением в столбце « Name» помечены как повторяющиеся и вернулся.

Давайте посмотрим на другой пример.

Найдите и выберите строки на основе имен из двух столбцов.

 # app.pyimport pandas as pdseries = [('Stranger Things', 3, 'Millie')  , ('Игра престолов', 8, 'Эмилия'), ('La Casa De Papel', 4, 'Sergio'), ('Westworld', 3, 'Evan Rachel'), ('Stranger Things', 3  , 'Millie'), ('La Casa De Papel', 4, 'Sergio')] # Создайте объект DataFrame .dfObj = pd.DataFrame (series, columns = ['Name', 'Seasons', 'Actor']) #  Найдите повторяющиеся строкиduplicateDFRow = dfObj [dfObj.duplicated (['Name', 'Seasons'])] print (duplicateDFRow) 

Вывод

 pyt python3 app.py Имя Сезоны Actor4 Stranger Things 3 Millie5 La Casa De Papel 4 Sergio 

Заключение

Если вы хотите найти повторяющиеся строки в Pandas DataFrame, вы можете использовать функцию pandas.dataframe.duplicated ().

См. Также

Pandas set_index ()

Pandas sort_values ​​()

Pandas boolean_indexing ()

Pandas value_counts ()

Оцените статью
nanomode.ru
Добавить комментарий