Encuentre filas duplicadas en un marco de datos usando Pandas

Zeeshan Afridi 21 junio 2023
  1. Utilice el método DataFrame.duplicated() para encontrar filas duplicadas en un marco de datos
  2. Crear un marco de datos con filas duplicadas
  3. Seleccionar filas duplicadas basadas en todas las columnas
  4. Conclusión
Encuentre filas duplicadas en un marco de datos usando Pandas

Los valores duplicados deben identificarse a partir de su conjunto de datos como parte del procedimiento de limpieza. Los datos duplicados consumen espacio de almacenamiento innecesario y, como mínimo, ralentizan los cálculos; sin embargo, en el peor de los casos, los datos duplicados pueden distorsionar los resultados del análisis y comprometer la integridad del conjunto de datos.

Un paquete Python de código abierto llamado Pandas mejora el manejo y almacenamiento de datos estructurados. Además, el marco ofrece asistencia integrada para los procedimientos de limpieza de datos, como encontrar y eliminar filas y columnas duplicadas.

Este artículo describe la búsqueda de duplicados en un marco de datos de Pandas utilizando todas las columnas o un subconjunto de ellas. Para ello utilizaremos el método Dataframe.duplicated() de Pandas.

Utilice el método DataFrame.duplicated() para encontrar filas duplicadas en un marco de datos

La biblioteca Pandas para la clase DataFrame de Python ofrece un método miembro para descubrir filas duplicadas en función de todas las columnas o un subconjunto de esas columnas, como:

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

Devuelve una serie de valores booleanos que indican si una fila es única o duplicada.

Parámetros:

  1. subconjunto: Esto requiere una columna o colección de etiquetas de columna. Ninguno es el valor predeterminado para él. Después de pasar columnas, solo tendrá en cuenta los duplicados.
  2. keep: Regula el tratamiento de los valores duplicados. Solo hay tres valores diferentes, siendo primero el valor predeterminado.
  3. Si es “primero”, el primer elemento se trata como único y los valores restantes como duplicados.
  4. Si es “más reciente”, el elemento final se trata como único y los valores restantes como duplicados.
  5. Si es False, todos los valores idénticos se consideran duplicados.
  6. Devuelve las filas duplicadas indicadas por la serie booleana.

Crear un marco de datos con filas duplicadas

Hagamos un marco de datos básico con una colección de listas y nombremos las columnas Nombre, Edad y Ciudad.

Código de ejemplo:

# Import pandas library
import pandas as pd

# List of Tuples
employees = [
    ("Joe", 28, "Chicago"),
    ("John", 32, "Austin"),
    ("Melvin", 25, "Dallas"),
    ("John", 32, "Austin"),
    ("John", 32, "Austin"),
    ("John", 32, "Houston"),
    ("Melvin", 40, "Dehradun"),
    ("Hazel", 32, "Austin"),
]

df = pd.DataFrame(employees, columns=["Name", "Age", "City"])

print(df)

Producción :

    Name  Age      City
0     Joe   28   Chicago
1    John   32    Austin
2  Melvin   25    Dallas
3    John   32    Austin
4    John   32    Austin
5    John   32   Houston
6  Melvin   40  Dehradun
7   Hazel   32    Austin

Seleccionar filas duplicadas basadas en todas las columnas

Llame a Dataframe.duplicate() sin un parámetro de subconjunto para ubicar y seleccionar duplicados para todas las filas dependiendo de todas las columnas. Sin embargo, si hay filas duplicadas, solo devolverá una serie booleana con True en la ubicación de la primera instancia (el valor predeterminado del argumento de retención es primero).

Luego proporcione esta serie booleana al operador [] de DataFrame para elegir las filas duplicadas.

Código de ejemplo:

# Import pandas library
import pandas as pd

# List of Tuples
employees = [
    ("Joe", 28, "Chicago"),
    ("John", 32, "Austin"),
    ("Melvin", 25, "Dallas"),
    ("John", 32, "Austin"),
    ("John", 32, "Austin"),
    ("John", 32, "Houston"),
    ("Melvin", 40, "Dehradun"),
    ("Hazel", 32, "Austin"),
]

df = pd.DataFrame(employees, columns=["Name", "Age", "City"])

duplicate = df[df.duplicated()]

print("Duplicate Rows :")

print(duplicate)

Producción :

Duplicate Rows :
   Name  Age    City
3  John   32  Austin
4  John   32  Austin

Pase retain = "last" como argumento si desea considerar todos los duplicados excepto el final.

Código de ejemplo:

# Import pandas library
import pandas as pd

# List of Tuples
employees = [
    ("Joe", 28, "Chicago"),
    ("John", 32, "Austin"),
    ("Melvin", 25, "Dallas"),
    ("John", 32, "Austin"),
    ("John", 32, "Austin"),
    ("John", 32, "Houston"),
    ("Melvin", 40, "Dehradun"),
    ("Hazel", 32, "Austin"),
]


df = pd.DataFrame(employees, columns=["Name", "Age", "City"])

duplicate = df[df.duplicated(keep="last")]

print("Duplicate Rows :")

print(duplicate)

Producción :

Duplicate Rows :
   Name  Age    City
1  John   32  Austin
3  John   32  Austin

Luego, proporcione la lista de nombres de columna en el subconjunto como parámetro si solo desea seleccionar filas duplicadas dependiendo de algunas columnas específicas.

Código de ejemplo:

# Import pandas library
import pandas as pd

# List of Tuples
employees = [
    ("Joe", 28, "Chicago"),
    ("John", 32, "Austin"),
    ("Melvin", 25, "Dallas"),
    ("John", 32, "Austin"),
    ("John", 32, "Austin"),
    ("John", 32, "Houston"),
    ("Melvin", 40, "Dehradun"),
    ("Hazel", 32, "Austin"),
]

df = pd.DataFrame(employees, columns=["Name", "Age", "City"])

# on 'City' column
duplicate = df[df.duplicated("City")]

print("Duplicate Rows based on City:")

print(duplicate)

Producción :

Duplicate Rows based on City:
    Name  Age    City
3   John   32  Austin
4   John   32  Austin
7  Hazel   32  Austin

Seleccione las filas duplicadas en función de más de un nombre de columna, como Nombre y Edad.

Código de ejemplo:

# Import pandas library
import pandas as pd

# List of Tuples
employees = [
    ("Joe", 28, "Chicago"),
    ("John", 32, "Austin"),
    ("Melvin", 25, "Dallas"),
    ("John", 32, "Austin"),
    ("John", 32, "Austin"),
    ("John", 32, "Houston"),
    ("Melvin", 40, "Dehradun"),
    ("Hazel", 32, "Austin"),
]

df = pd.DataFrame(employees, columns=["Name", "Age", "City"])

# list of the column names
duplicate = df[df.duplicated(["Name", "Age"])]

print("Duplicate the rows based on Name and Age:")

print(duplicate)

Producción :

Duplicate Rows based on Name and Age:
   Name  Age     City
3  John   32   Austin
4  John   32   Austin
5  John   32  Houston

Conclusión

Para ubicar filas duplicadas en un DataFrame, use el método dataframe.duplicated() en Pandas. Devuelve una serie de valores booleanos que indican si una fila es única o duplicada.

Esperamos que este artículo lo haya ayudado a encontrar filas duplicadas en un marco de datos usando todas o un subconjunto de las columnas al verificar todos los ejemplos que hemos discutido aquí. Luego, siguiendo los sencillos pasos mencionados anteriormente, puede determinar rápidamente cómo se pueden usar Pandas para encontrar duplicados.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

Artículo relacionado - Pandas DataFrame Row