Saltar al contenido

Eliminación de duplicados en Python: Una guía completa

Los datos duplicados pueden ser un problema común para cualquier persona que trabaje con datos, especialmente aquellos que utilizan Python como lenguaje de programación. Los datos duplicados pueden causar confusión y, en algunos casos, incluso pueden provocar errores en el código. En esta guía, exploraremos las diferentes formas de eliminar duplicados en Python, desde el uso de funciones integradas hasta técnicas más avanzadas.

Usar el tipo de datos set para eliminar duplicados

La forma más sencilla de eliminar duplicados en Python es usar el tipo de datos set. Un set es una colección desordenada de elementos únicos. Por lo tanto, al convertir una lista en un set, podemos eliminar fácilmente todos los duplicados. Aquí tienes un ejemplo:

al convertir una lista en un set, podemos eliminar fácilmente todos los duplicados en una lista de Python

python
my_list = [1, 2, 2, 3, 4, 4, 5]
my_set = set(my_list)
unique_list = list(my_set)
print(unique_list)

Esto producirá la siguiente salida:

console
[1, 2, 3, 4, 5]

Como puedes ver, todos los duplicados han sido eliminados de la lista original. Este método es muy rápido y eficiente, lo que lo convierte en una excelente opción para listas de tamaño pequeño a mediano.

Usar dict.fromkeys() para preservar el orden

El tipo de datos set es excelente para eliminar duplicados, pero no preserva el orden de los elementos en la lista original. En Python 3.7+, los diccionarios estándar preservan el orden de inserción, lo que convierte a dict.fromkeys() en el estándar moderno para la deduplicación manteniendo el orden. Aquí tienes un ejemplo:

al usar dict.fromkeys(), podemos eliminar fácilmente todos los duplicados en una lista de Python

python
my_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = list(dict.fromkeys(my_list))
print(unique_list)

Esto producirá la siguiente salida:

console
[1, 2, 3, 4, 5]

El método dict.fromkeys() preserva el orden de los elementos en la lista original. Para mantener la compatibilidad con versiones anteriores de Python, aún puedes usar OrderedDict del módulo collections.

Usar la biblioteca Pandas para DataFrames

Si estás trabajando con datos en formato tabular, como un archivo CSV, puedes usar la biblioteca Pandas para eliminar duplicados. Pandas es una potente biblioteca para el análisis de datos y proporciona una forma conveniente de trabajar con datos en formato DataFrame.

Aquí tienes un ejemplo:

Lectura de datos desde un CSV usando pandas y eliminación de duplicados en Python

python
import pandas as pd

df = pd.read_csv('my_data.csv')
df.drop_duplicates(inplace=True)
df.to_csv('my_data_unique.csv', index=False)

Esto leerá el archivo CSV, eliminará todos los duplicados y luego guardará los datos únicos en un nuevo archivo. Puedes controlar el comportamiento con parámetros como subset (para especificar columnas) y keep ('first', 'last' o False para eliminar todos los duplicados).

Usar la biblioteca FuzzyWuzzy para coincidencias aproximadas

En algunos casos, es posible que tengas datos que no son exactamente iguales pero que son muy similares. Por ejemplo, puedes tener una lista de nombres con ligeras variaciones en la ortografía o la puntuación. En estos casos, puedes usar la biblioteca FuzzyWuzzy para coincidencias aproximadas.

Aquí tienes un ejemplo:

usar la biblioteca FuzzyWuzzy para coincidencias aproximadas en una lista de Python

python
from thefuzz import fuzz

my_list = ['John Smith', 'John Smithe', 'Jon Smyth', 'Jane Doe', 'Jan Doe']
unique_list = []

for name in my_list:
    if not any(fuzz.ratio(name, x) > 80 for x in unique_list):
        unique_list.append(name)

print(unique_list)

Esto producirá la siguiente salida:

console
['John Smith', 'Jane Doe']

La biblioteca FuzzyWuzzy utiliza un algoritmo de coincidencia basado en ratios para comparar cadenas y encontrar coincidencias cercanas. En este ejemplo, solo estamos conservando los nombres que tienen un ratio de coincidencia aproximada de 80 o superior. Ten en cuenta que fuzzywuzzy está en desuso; thefuzz es la bifurcación mantenida activamente y proporciona un reemplazo directo.

Conclusión

Eliminar duplicados es una tarea común en el procesamiento de datos, y Python proporciona varios métodos para lograrlo. Al usar el tipo de datos set, podemos eliminar rápidamente los duplicados de una lista. El método dict.fromkeys() se puede utilizar para preservar el orden de los elementos en la lista mientras se eliminan los duplicados. Si se trabaja con datos tabulares, la biblioteca Pandas proporciona una forma conveniente de eliminar duplicados de DataFrames. Finalmente, para casos en los que los datos no sean exactos pero sí similares, se puede usar la biblioteca FuzzyWuzzy para coincidencias aproximadas.

En conclusión, siguiendo estas diferentes técnicas, podemos eliminar eficazmente los duplicados de nuestros datos y mejorar la calidad y precisión de nuestro código. Es importante considerar cuál método es el más adecuado para los datos con los que estamos trabajando y siempre probar nuestro código para asegurarnos de que está produciendo los resultados esperados.

¿Te resulta útil?

Vista previa dual-run — compárala con las rutas Symfony en producción.