Introducción
Como analista de datos, es nuestra responsabilidad garantizar la integridad de los datos para obtener información precisa y confiable. La limpieza de datos juega un papel vital en este proceso, y los valores duplicados se encuentran entre los problemas más comunes que enfrentan los analistas de datos. Los valores duplicados pueden tergiversar los conocimientos. Por lo tanto, es crucial contar con métodos eficientes para tratar con valores duplicados. En este artículo, aprenderemos cómo identificar y manejar valores duplicados, así como las mejores prácticas para administrar duplicados.
Identificación de valores duplicados
El primer paso para manejar valores duplicados es identificarlos. La identificación de valores duplicados es un paso importante en la limpieza de datos. Pandas ofrece múltiples métodos para identificar valores duplicados dentro de un marco de datos. En esta sección, discutiremos la duplicated()
función y value_counts()
Función para identificar valores duplicados.
Usin duplicado()
La duplicated()
La función es una función de biblioteca de Pandas que busca filas duplicadas en un DataFrame. La salida del duplicated()
La función es una serie booleana con la misma longitud que el DataFrame de entrada, donde cada elemento indica si la fila correspondiente es un duplicado o no.
Consideremos un ejemplo simple de la duplicated()
función:
import pandas as pd data = { 'StudentName': ['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark'], 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data) df_duplicates = df.duplicated()
print(df_duplicates)
Salida:
0 False
1 False
2 False
3 False
4 False
5 True
dtype: bool
En el ejemplo anterior, creamos un DataFrame que contiene los nombres de los estudiantes y sus puntajes totales. invocamos duplicated()
en el DataFrame, que generó una serie booleana con False
representando valores únicos y True
representando valores duplicados.
En este ejemplo, la primera aparición del valor se considera única. Sin embargo, ¿qué sucede si queremos que el último valor se considere único y no queremos considerar todas las columnas al identificar valores duplicados? Aquí podemos modificar el duplicated()
función modificando los valores de los parámetros.
Parámetros: subconjunto y mantenimiento
La duplicated()
La función ofrece opciones de personalización a través de sus parámetros opcionales. Tiene dos parámetros, como se describe a continuación:
-
subset
: Este parámetro nos permite especificar el subconjunto de columnas a considerar durante la detección de duplicados. El subconjunto se establece enNone
por defecto, lo que significa que se considera cada columna en el DataFrame. Para especificar nombres de columnas, podemos proporcionar al subconjunto una lista de nombres de columnas.Aquí hay un ejemplo del uso del parámetro de subconjunto:
df_duplicates = df.duplicated(subset=['StudentName'])
Salida:
0 False 1 False 2 False 3 False 4 False 5 True dtype: bool
-
keep
: Esta opción nos permite elegir qué instancia de la fila duplicada debe marcarse como duplicada. Los valores posibles para mantener son:"first"
: Este es el valor predeterminado para elkeep
opción. Identifica todos los duplicados excepto la primera aparición, considerando que el primer valor es único."last"
: esta opción identifica la última ocurrencia como un valor único. Todas las demás ocurrencias se considerarán duplicados.False
: esta opción etiqueta cada instancia como un valor duplicado.
A continuación, se muestra un ejemplo del uso de keep
parámetro:
df_duplicates = df.duplicated(keep='last')
print(df_duplicates)
Salida:
0 True
1 False
2 False
3 False
4 False
5 False
dtype: bool
Visualizar valores duplicados
La value_counts()
La función es el segundo enfoque para identificar duplicados. El value_counts()
La función cuenta el número de veces que aparece cada valor único en una columna. Al aplicar el value_counts()
función a una columna específica, se puede visualizar la frecuencia de cada valor.
A continuación, se muestra un ejemplo del uso de value_counts()
función:
import matplotlib.pyplot as plt
import pandas as pd data = { 'StudentName': ['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark'], 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data) name_counts = df['StudentName'].value_counts()
print(name_counts)
Salida:
Mark 2
Ali 1
Bob 1
John 1
Johny 1
Name: StudentName, dtype: int64
Ahora visualicemos valores duplicados con un gráfico de barras. Podemos visualizar efectivamente la frecuencia de valores duplicados usando un gráfico de barras.
name_counts.plot(kind='bar')
plt.xlabel('Student Name')
plt.ylabel('Frequency')
plt.title('Duplicate Name Frequencies')
plt.show()
Manejo de valores duplicados
Después de identificar valores duplicados, es hora de abordarlos. En esta sección, exploraremos varias estrategias para eliminar y actualizar valores duplicados utilizando los pandas drop_duplicates()
y replace()
funciones Además, discutiremos la agregación de datos con valores duplicados usando el groupby()
función.
Eliminación de valores duplicados
El enfoque más común para manejar duplicados es eliminarlos del DataFrame. Para eliminar registros duplicados del DataFrame, utilizaremos el drop_duplicates()
función. De forma predeterminada, esta función conserva la primera instancia de cada fila duplicada y elimina las apariciones posteriores. Identifica valores duplicados basados en todos los valores de columna; sin embargo, podemos especificar la columna a considerar utilizando parámetros de subconjunto.
Sintaxis de drop_duplicates()
con valores predeterminados en los parámetros es el siguiente:
dataFrame.drop_duplicates(subset=None, keep='first', inplace=False)
La subset
y keep
Los parámetros tienen la misma explicación que en duplicates()
. Si establecemos el tercer parámetro inplace
a True
, todas las modificaciones se realizarán directamente en el DataFrame original, lo que dará como resultado que el método regrese None
y el DataFrame original siendo modificado. Por defecto, inplace
is False
.
A continuación se muestra un ejemplo de drop_duplicates()
función:
df.drop_duplicates(keep='last', inplace=True)
print(df)
Salida:
StudentName Score
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45
Consulte nuestra guía práctica y práctica para aprender Git, con las mejores prácticas, los estándares aceptados por la industria y la hoja de trucos incluida. Deja de buscar en Google los comandos de Git y, de hecho, aprenden ella!
En el ejemplo anterior, se eliminó la primera entrada porque era un duplicado.
Reemplazar o actualizar valores duplicados
El segundo método para manejar duplicados implica reemplazar el valor usando Pandas replace()
función. los replace()
La función nos permite reemplazar valores o patrones específicos en un DataFrame con nuevos valores. De forma predeterminada, reemplaza todas las instancias del valor. Sin embargo, al usar el parámetro de límite, podemos restringir el número de reemplazos.
He aquí un ejemplo del uso de la replace()
función:
df['StudentName'].replace('Mark', 'Max', limit=1, inplace=True)
print(df)
Salida:
StudentName Score
0 Max 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45
Aquí, el límite se usó para reemplazar el primer valor. ¿Qué pasa si queremos reemplazar la última ocurrencia? En este caso, combinaremos el duplicated()
y replace()
funciones. Utilizando duplicated()
, indicaremos la última instancia de cada valor duplicado, obtenga el número de fila usando el loc
función, y luego reemplácelo usando el replace()
función. He aquí un ejemplo de uso duplicated()
y replace()
funciones juntas.
last_occurrences = df.duplicated(subset='StudentName', keep='first') last_occurrences_rows = df[last_occurrences] df.loc[last_occurrences, 'StudentName'] = df.loc[last_occurrences, 'StudentName'].replace('Mark', 'Max') print(df)
Salida:
StudentName Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Max 45
Funciones personalizadas para reemplazos complejos
En algunos casos, el manejo de valores duplicados requiere reemplazos más complejos que simplemente eliminarlos o actualizarlos. Las funciones personalizadas nos permiten crear reglas de reemplazo específicas adaptadas a nuestras necesidades. Usando los pandas apply()
función, podemos aplicar la función personalizada a nuestros datos.
Por ejemplo, supongamos que la columna "StudentName" contiene nombres duplicados. Nuestro objetivo es reemplazar los duplicados mediante una función personalizada que agrega un número al final de los valores duplicados, haciéndolos únicos.
def add_number(name, counts): if name in counts: counts[name] += 1 return f'{name}_{counts[name]}' else: counts[name] = 0 return name name_counts = {} df['is_duplicate'] = df.duplicated('StudentName', keep=False)
df['StudentName'] = df.apply(lambda x: add_number(x['StudentName'], name_counts) if x['is_duplicate'] else x['StudentName'], axis=1)
df.drop('is_duplicate', axis=1, inplace=True)
print(df)
Salida:
StudentName Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark_1 45
Datos agregados con valores duplicados
Los datos que contienen valores duplicados se pueden agregar para resumir y obtener información de los datos. los pandas groupby()
La función le permite agregar datos con valores duplicados. Al usar el groupby()
función, puede agrupar una o más columnas y calcular la media, la mediana o la suma de otra columna para cada grupo.
He aquí un ejemplo del uso de la groupby()
método:
grouped = df.groupby(['StudentName']) df_aggregated = grouped.sum()
print(df_aggregated)
Salida:
Score
StudentName Ali 65
Bob 76
John 44
Johny 39
Mark 90
Técnicas avanzadas
Para manejar escenarios más complejos y garantizar un análisis preciso, existen algunas técnicas avanzadas que podemos utilizar. Esta sección tratará el manejo de duplicados inexactos, la duplicación en datos de series de tiempo y los valores de índice duplicados.
Duplicados Fuzzy
Los duplicados inexactos son registros que no son coincidencias exactas pero son similares y pueden ocurrir por varias razones, incluidos errores de ingreso de datos, faltas de ortografía y variaciones en el formato. Usaremos el fuzzywuzzy
Biblioteca de Python para identificar duplicados mediante coincidencia de similitud de cadenas.
Aquí hay un ejemplo de manejo de valores borrosos:
import pandas as pd
from fuzzywuzzy import fuzz def find_fuzzy_duplicates(dataframe, column, threshold): duplicates = [] for i in range(len(dataframe)): for j in range(i+1, len(dataframe)): similarity = fuzz.ratio(dataframe[column][i], dataframe[column][j]) if similarity >= threshold: duplicates.append(dataframe.iloc[[i, j]]) if duplicates: duplicates_df = pd.concat(duplicates) return duplicates_df else: return pd.DataFrame() data = { 'StudentName': ['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark'], 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data) threshold = 70 fuzzy_duplicates = find_fuzzy_duplicates(df, 'StudentName', threshold)
print("Fuzzy duplicates:")
print(fuzzy_duplicates.to_string(index=False))
En este ejemplo, creamos una función personalizada. find_fuzzy_duplicates
que toma un DataFrame, un nombre de columna y un umbral de similitud como entrada. La función itera a través de cada fila en el DataFrame y la compara con las filas posteriores usando el fuzz.ratio
método del fuzzywuzzy
biblioteca. Si la puntuación de similitud es mayor o igual que el umbral, las filas duplicadas se agregan a una lista. Finalmente, la función devuelve un DataFrame que contiene los duplicados inexactos.
Salida:
Fuzzy duplicates:
StudentName Score Mark 45 Mark 45 John 44 Johny 39
En el ejemplo anterior, los duplicados inexactos se identifican en la columna "StudentName". La función 'find_fuzzy_duplicates' compara cada par de cadenas usando el fuzzywuzzy
de la biblioteca fuzz.ratio
función, que calcula una puntuación de similitud basada en la distancia de Levenshtein. Hemos establecido el umbral en 70, lo que significa que cualquier nombre con una relación de coincidencia superior a 70 se considerará un valor confuso. Después de identificar los valores borrosos, podemos administrarlos utilizando el método descrito en la sección titulada "Manejo de duplicados".
Manejo de duplicados de datos de series temporales
Pueden ocurrir duplicados cuando se registran múltiples observaciones en la misma marca de tiempo. Estos valores pueden conducir a resultados sesgados si no se manejan adecuadamente. Aquí hay algunas formas de manejar valores duplicados en datos de series temporales.
- Descartar duplicados exactos: En este método, eliminamos filas idénticas usando el
drop_duplicates
función en Pandas. - Marcas de tiempo duplicadas con diferentes valores: si tenemos la misma marca de tiempo pero diferentes valores, podemos agregar los datos y obtener más información utilizando
groupby()
, o podemos seleccionar el valor más reciente y eliminar los demás usandodrop_duplicates()
con elkeep
parámetro establecido en 'último'.
Manejo de valores de índice duplicados
Antes de abordar los valores de índice duplicados, primero definamos qué es un índice en Pandas. Un índice es un identificador único asignado a cada fila del DataFrame. Pandas asigna un índice numérico que comienza en cero por defecto. Sin embargo, se puede asignar un índice a cualquier columna o combinación de columnas. Para identificar duplicados en la columna Índice, podemos usar el duplicated()
y drop_duplicates()
funciones, respectivamente. En esta sección, exploraremos cómo manejar los duplicados en la columna Índice usando reset_index()
.
Como su nombre lo indica, el reset_index()
La función en Pandas se usa para restablecer el índice de un DataFrame. Al aplicar el reset_index()
función, el índice actual se descarta automáticamente, lo que significa que los valores del índice inicial se pierden. Al especificar el drop
parámetro como False
existentes reset_index()
función, podemos conservar el valor del índice original mientras restablecemos el índice.
Aquí hay un ejemplo de uso reset_index()
:
import pandas as pd data = { 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data, index=['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark']) df.reset_index(inplace=True)
print(df)
Salida:
index Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45
BUENAS PRÁCTICAS
-
Comprender la naturaleza de los datos duplicados: Antes de tomar cualquier acción, es crucial comprender por qué existen valores duplicados y qué representan. Identifique la causa raíz y luego determine los pasos apropiados para manejarlos.
-
Seleccione un método apropiado para manejar duplicados: Como se discutió en las secciones anteriores, hay varias formas de manejar los duplicados. El método que elija depende de la naturaleza de los datos y del análisis que pretenda realizar.
-
Documentar el enfoque: Es vital documentar el proceso para detectar valores duplicados y abordarlos, permitiendo que otros entiendan el proceso de pensamiento.
-
Precaución de ejercicio: Siempre que eliminemos o modifiquemos datos, debemos asegurarnos de que la eliminación de duplicados no introduzca errores o sesgos en el análisis. Realice pruebas de cordura y valide los resultados de cada acción.
-
Conservar los datos originales: Antes de realizar cualquier operación en los datos, cree una copia de seguridad de los datos originales.
-
Evita futuros duplicados: Implemente medidas para evitar que se produzcan duplicados en el futuro. Esto puede incluir la validación de datos durante la entrada de datos, las rutinas de limpieza de datos o las restricciones de la base de datos para imponer la unicidad.
Consideraciones Finales:
En el análisis de datos, abordar los valores duplicados es un paso crucial. Los valores duplicados pueden conducir a resultados inexactos. Al identificar y administrar valores duplicados de manera eficiente, los analistas de datos pueden obtener información precisa y significativa. La implementación de las técnicas mencionadas y el seguimiento de las mejores prácticas permitirán a los analistas preservar la integridad de sus datos y extraer información valiosa de ellos.
- Distribución de relaciones públicas y contenido potenciado por SEO. Consiga amplificado hoy.
- EVM Finanzas. Interfaz unificada para finanzas descentralizadas. Accede Aquí.
- Grupo de medios cuánticos. IR/PR amplificado. Accede Aquí.
- PlatoAiStream. Inteligencia de datos Web3. Conocimiento amplificado. Accede Aquí.
- Fuente: https://stackabuse.com/handling-duplicate-values-in-a-pandas-dataframe/
- :posee
- :es
- :no
- :dónde
- 1
- 11
- 12
- 20
- 70
- 8
- 9
- a
- arriba
- preciso
- la columna Acción
- adicional
- Adicionalmente
- dirección
- direccionamiento
- avanzado
- Después
- agregando
- objetivo
- Todos
- Permitir
- permite
- entre
- an
- análisis
- analista
- Analistas
- y
- Otra
- cualquier
- aparece
- Aplicá
- La aplicación de
- enfoque
- adecuado
- somos
- artículo
- AS
- asigna
- At
- automáticamente
- Backup
- de caramelos
- basado
- BE
- antes
- "Ser"
- a continuación
- MEJOR
- y las mejores prácticas
- parcialidad
- parcial
- grano
- frontera
- pero
- by
- calcular
- calcula
- PUEDEN
- case
- cases
- Causa
- Tabla
- Cheques
- Elige
- Limpieza
- Columna
- Columnas
- combinación
- combinar
- Algunos
- integraciones
- comprender
- Conducir
- Considerar
- considerado
- en vista de
- restricciones
- contiene
- Correspondiente
- Para crear
- creado
- crucial
- Current
- personalizado
- personalización
- datos
- análisis de los datos
- de entrada de datos
- Base de datos
- tratar
- Predeterminado
- depende
- descrito
- Detección
- Determinar
- una experiencia diferente
- directamente
- discutir
- discutido
- distancia
- documento
- sí
- don
- duplicados
- durante
- cada una
- de manera eficaz
- eficiente
- eficiente.
- elementos
- eliminarlos
- eliminando
- habilitar
- permite
- final
- hacer cumplir
- garantizar
- entrada
- igual
- Errores
- ejemplo
- Excepto
- existe
- explicación
- explorar
- extraerlos
- pocos
- Finalmente
- Nombre
- Focus
- siguiendo
- siguiente
- Frecuencia
- Desde
- función
- funciones
- futuras
- Obtén
- generado
- Git
- objetivo
- gráfica
- mayor
- Grupo procesos
- guía
- encargarse de
- Manejo
- emprendedor
- Tienen
- esta página
- flotar
- Cómo
- Como Hacer
- Sin embargo
- HTTPS
- i
- idéntico
- no haber aun identificado una solucion para el problema
- identificador
- identifica
- Identifique
- identificar
- if
- implementar
- implementación
- importante
- in
- incorrecto
- incluir
- incluido
- Incluye
- índice
- indicar
- Indica
- información
- inicial
- Las opciones de entrada
- penetración
- Insights
- ejemplo
- integridad
- dentro
- introducir
- Introducción
- invocado
- cuestiones
- IT
- SUS
- Juan
- Guardar
- Etiquetas
- Apellido
- Lead
- APRENDE:
- aprendizaje
- Longitud Mínima
- dejar
- LG
- Biblioteca
- LIMITE LAS
- Lista
- perdido
- Realizar
- gestionan
- administrar
- marca
- marcado
- Match
- pareo
- matplotlib
- max
- Puede..
- personalizado
- sentido
- significa
- medidas
- mencionado
- Método
- métodos
- errores
- Modificaciones
- modificado
- modificar
- más,
- MEJOR DE TU
- múltiples
- debe
- nombre
- nombres
- Naturaleza
- Nuevo
- ahora
- número
- obtener
- ocurriendo
- of
- Ofertas
- on
- ONE
- Inteligente
- Optión
- Opciones
- or
- reconocida por
- Otro
- Otros
- nuestros
- salir
- esbozado
- salida
- par
- Los pandas
- parámetro
- parámetros
- .
- Realizar
- realizado
- realizar
- Platón
- Inteligencia de datos de Platón
- PlatónDatos
- juega
- posible
- la posibilidad
- Metodología
- prácticas
- necesidad
- evitar
- anterior
- correctamente
- proporcionar
- Python
- proporción
- razones
- reciente
- grabado
- archivos
- remove
- la eliminación de
- reemplazar
- reemplazo
- representar
- que representa
- requiere
- respectivamente
- responsabilidad
- restringir
- resultante
- Resultados
- conservar
- volver
- devoluciones
- Anillos
- Función
- raíz
- FILA
- reglas
- s
- mismo
- escenarios
- Puntuación
- Segundo
- Sección
- (secciones)
- Serie
- set
- Shadow
- hoja
- tienes
- importante
- similares
- sencillos
- simplemente
- desde
- algo
- soluciones y
- Abuso de pila
- estándares de salud
- Comience a
- paso
- pasos
- Detener
- estrategias
- Cordón
- Estudiante
- Estudiantes
- posterior
- resumir
- adaptado
- toma
- toma
- técnicas
- pruebas
- que
- esa
- La
- El futuro de las
- su
- Les
- luego
- Ahí.
- por lo tanto
- Estas
- ellos
- Código
- así
- pensamiento
- umbral
- A través de esta formación, el personal docente y administrativo de escuelas y universidades estará preparado para manejar los recursos disponibles que derivan de la diversidad cultural de sus estudiantes. Además, un mejor y mayor entendimiento sobre estas diferencias y similitudes culturales permitirá alcanzar los objetivos de inclusión previstos.
- equipo
- Series de tiempo
- veces
- fecha y hora
- titulada
- a
- juntos
- Total
- transición
- digno de confianza
- dos
- entender
- único
- unicidad
- Actualizar
- actualización
- us
- utilizan el
- usado
- usando
- VALIDAR
- validación
- Valioso
- propuesta de
- Valores
- diversos
- Ve
- vital
- quieres
- fue
- formas
- we
- WELL
- ¿
- cuando
- cuando
- sean
- que
- mientras
- porque
- seguirá
- dentro de
- X
- Usted
- zephyrnet
- cero