Lección 5 de 16 · Nivel 2: Intermedio
Limpieza de datos: duplicados, errores y valores faltantes
- ⏱ 13 min de lectura
- ❓ 4 preguntas de repaso
- ✍️ Ejercicio con solución
- 📥 Plantilla descargable
En esta lección
- Perfilar una tabla para descubrir sus errores antes de analizarla.
- Encontrar y eliminar filas duplicadas sin borrar datos válidos.
- Unificar textos mal escritos con ESPACIOS, BUSCARX y una tabla de correcciones.
- Decidir qué hacer con los valores faltantes y convertir fechas guardadas como texto.
- Validar el resultado y documentar cada cambio en un registro.
Limpia la hoja Ventas (200 filas con errores) en una copia y compara tu resultado con Ventas_limpias.
- ventas-practica-analisis.xlsx · hojas Ventas, Regiones y Ventas_limpias
- ventas-practica-analisis.csv · los mismos datos sin limpiar, para hacerlo con Python
Limpiar datos es corregir o eliminar lo que está duplicado, mal escrito, vacío o en un formato incorrecto, para que los cálculos reflejen la realidad. Es la parte menos vistosa del análisis y una de las que más tiempo consume, pero también la que más errores evita: un análisis brillante sobre datos sucios es un error bien presentado. En esta lección limpiarás la hoja Ventas del archivo de práctica, que trae a propósito los problemas más comunes que encontrarás en tu trabajo.
Por qué limpiar cambia las conclusiones
Antes de corregir nada, mira lo que pasa si analizas la hoja Ventas tal cual: sumas el importe, traes el país con BUSCARX y resumes. Los errores no solo inflan el total; cambian el ranking de países.
Sin limpiar, en Excel 5 filas con regiones mal escritas («CDMX», «Bogota», «Nuevo Leon», «Lima ») no encuentran su país: 1.612,40 USD quedan como «No encontrado». Además, los duplicados suman de más. El resultado: Perú parece vender más que México, cuando en realidad es al revés.
Con datos sucios, el informe habría dicho que Perú lideraba las ventas. Ninguna fórmula avisa de este error.
El proceso de limpieza, paso a paso
- Paso 0Guarda el originalDuplica la hoja (clic derecho › Mover o copiar › Crear una copia). Nunca limpies sobre el único original.
- Paso 1Perfila los datosCuenta filas, valores únicos, vacíos y tipos de cada columna para saber qué errores hay.
- Paso 2Quita duplicadosPrimero investiga, luego elimina.
- Paso 3Unifica textosEspacios, mayúsculas, abreviaturas y tildes.
- Paso 4Trata los faltantesRecalcula, imputa, marca o elimina, según el caso.
- Paso 5Corrige tipos y fechasNúmeros como número y fechas como fecha.
- Paso 6Valida y documentaComprueba las reglas del diccionario y anota cada cambio.
Paso 1: perfila los datos
Perfilar es hacer un diagnóstico rápido de cada columna. En la hoja Ventas (filas 2 a 201), estas fórmulas revelan los cuatro problemas:
| Pregunta | Fórmula | Resultado | Qué significa |
|---|---|---|---|
| ¿Cuántas filas hay? | =CONTARA(A2:A201) | 200 | Hay más filas… |
| ¿Cuántos pedidos distintos? | =CONTARA(UNICOS(A2:A201)) | 197 | …que pedidos: 3 duplicados |
| ¿Cuántos importes vacíos? | =CONTAR.BLANCO(I2:I201) | 4 | Faltan 4 importes |
| ¿Cuántas regiones distintas? | =CONTARA(UNICOS(C2:C201)) | 13 en Excel | Deberían ser 9 |
| ¿Cuántas fechas son fecha? | =CONTAR(B2:B201) | 199 | 1 fecha está guardada como texto |
El último truco funciona porque CONTAR solo cuenta números, y una fecha real es un número por dentro. Sobre las regiones: UNICOS de Excel no distingue mayúsculas, así que cuenta «lima» y «Lima» como una sola y devuelve 13. Google Sheets, pandas y SQL sí las distinguen y devuelven 15. En ambos casos sobran valores: abre el filtro de la columna region y verás «CDMX», «Bogota» y otras variantes.
Paso 2: duplicados
Para ver los duplicados antes de borrarlos, agrega una columna auxiliar que marque la segunda aparición de cada identificador:
J2: =CONTAR.SI($A$2:A2; A2)>1
El rango $A$2:A2 crece al copiar la fórmula hacia abajo, así que solo marca VERDADERO cuando el pedido ya apareció más arriba. Filtra por VERDADERO y verás tres filas: P-0026 (La Libertad, 44,90), P-0071 (Ciudad de México, 274,50) y P-0136 (Arequipa, 649,00). Son copias exactas de filas anteriores, así que se eliminan. Sumaban 968,40 USD de más.
La alternativa rápida es Datos › Quitar duplicados, marcando todas las columnas. Ojo: si marcas solo id_pedido y dos filas tienen el mismo ID pero datos distintos, Excel borrará una sin avisarte. Ese caso no es un duplicado: es un problema de identificadores que hay que investigar.
1. Después de eliminar los duplicados de la hoja Ventas, ¿cuántas filas quedan?
Había 200 filas y 197 pedidos únicos. Se eliminan solo las 3 segundas apariciones; las primeras se conservan. Por eso no son 194: borrar las dos copias de cada pedido haría desaparecer ventas reales.
Paso 3: unifica los textos
Las 8 regiones mal escritas tienen tres tipos de error: espacios invisibles («Lima »), mayúsculas («lima», «antioquia») y variantes o abreviaturas («CDMX», «Bogota», «Nuevo Leon»). Excel perdona las mayúsculas en SUMAR.SI.CONJUNTO, BUSCARX y las tablas dinámicas, pero Power Query, pandas y la mayoría de bases de datos no: «lima» y «Lima» serían dos regiones distintas. Unifícalas igual. La solución más segura combina dos herramientas:
- Una pequeña tabla de correcciones (por ejemplo, en una hoja nueva llamada Correcciones) con el valor incorrecto en la columna A y el correcto en la B: lima → Lima, CDMX → Ciudad de México, Bogota → Bogotá, Nuevo Leon → Nuevo León, antioquia → Antioquia.
- Una fórmula que primero quita espacios y luego busca la corrección; si no la encuentra, deja el texto como estaba:
=BUSCARX(ESPACIOS(C2); Correcciones!$A$2:$A$6; Correcciones!$B$2:$B$6; ESPACIOS(C2))
Después, copia la columna y pégala como valores sobre la original. Comprueba con =CONTARA(UNICOS(...)) que ahora hay 9 regiones.
La tentación es usar =NOMPROPIO(C2) para poner mayúscula inicial. Funciona con «lima», pero convierte «Ciudad de México» en «Ciudad De México» y «CDMX» en «Cdmx», que tampoco coinciden con la tabla Regiones. Las funciones automáticas ayudan, pero la tabla de correcciones es la que garantiza el valor exacto.
2. ¿Qué devuelve =NOMPROPIO("ciudad de méxico")?
NOMPROPIO pone en mayúscula la primera letra de cada palabra, incluidas «de», «la» o «del». Por eso no sirve para unificar nombres oficiales sin revisión.
Paso 4: valores faltantes
No hay una única forma correcta de tratar un vacío. Depende de por qué falta el dato y de si puedes recuperarlo:
| Estrategia | Cuándo usarla | Riesgo |
|---|---|---|
| Recalcular | El valor se deriva de otras columnas | Ninguno, si la regla es fiable |
| Recuperar de la fuente | Puedes consultar el sistema original | Toma tiempo |
| Imputar (media, mediana) | Pocos vacíos y no se pueden recuperar | Inventa un valor «típico» que no es real |
| Marcar y excluir | El dato no se puede estimar con sentido | Pierdes filas; documenta cuántas |
En Nexo, el diccionario dice que importe = unidades × precio_unitario, así que los 4 vacíos se recalculan. Imputarlos con el promedio (195,29) sería un error grave: el pedido P-0035 es una mochila de 39,90.
=SI(ESBLANCO(I2); G2*H2; I2)
Los cuatro importes recuperados son P-0017 (159,90), P-0035 (39,90), P-0068 (44,90) y P-0099 (3 × 27,50 = 82,50): 327,20 USD que la suma original no contaba.
Paso 5: tipos y fechas
El pedido P-0104 tiene la fecha «13/08/2025» guardada como texto, mientras el resto son fechas reales. Detéctala con =ESNUMERO(B2), que devuelve FALSO solo en esa fila. Para convertirla, extrae día, mes y año del texto:
=FECHA(DERECHA(B2;4); EXTRAE(B2;4;2); IZQUIERDA(B2;2))
También sirve Datos › Texto en columnas, eligiendo el formato DMA en el último paso. Si no corriges esta fila, el pedido desaparece de cualquier resumen por mes y de los filtros de fecha. En herramientas más potentes, Power Query permite hacer todos estos pasos con clics y repetirlos cada vez que llega un archivo nuevo; lo verás en la lección de Power Query en Excel.
3. Un importe está vacío y la fila tiene unidades = 2 y precio_unitario = 54,90. ¿Qué haces?
Si el valor se puede derivar con una regla fiable, se recalcula. Imputar el promedio inventaría 85,49 USD de más, y eliminar la fila borraría una venta real.
Paso 6: valida y documenta
La limpieza termina cuando los datos cumplen las reglas del diccionario. Estas comprobaciones deben dar el resultado esperado:
| Regla | Comprobación | Esperado |
|---|---|---|
| Un pedido por fila | =CONTARA(UNICOS(A2:A198))=CONTARA(A2:A198) | VERDADERO (197) |
| Sin importes vacíos | =CONTAR.BLANCO(I2:I198) | 0 |
| Solo regiones válidas | =CONTARA(UNICOS(C2:C198)) | 9 |
| Importe coherente | =SUMAPRODUCTO(--(ABS(I2:I198-G2:G198*H2:H198)>0,01)) | 0 filas con diferencia |
| Total correcto | =SUMA(I2:I198) | 38.472,20 |
Por último, anota lo que hiciste en un registro de cambios: una tabla con fecha, problema, filas afectadas, acción y responsable. Por ejemplo: «3 filas duplicadas (P-0026, P-0071, P-0136) eliminadas; 968,40 USD». Así, si alguien pregunta por qué tu total no coincide con el del sistema, tienes la respuesta en un minuto.
Lo mismo en Python, en pocas líneas
Si los datos llegan cada semana, conviene automatizar la limpieza. Este es un adelanto de lo que harás en la lección 14 con pandas:
import pandas as pd
df = pd.read_csv("ventas-practica-analisis.csv")
df = df.drop_duplicates()
df["region"] = df["region"].str.strip().replace({
"lima": "Lima", "CDMX": "Ciudad de México", "Bogota": "Bogotá",
"Nuevo Leon": "Nuevo León", "antioquia": "Antioquia"})
df["importe"] = df["importe"].fillna((df["unidades"] * df["precio_unitario"]).round(2))
print(len(df), round(df["importe"].sum(), 2)) # 197 38472.2
Errores comunes (y qué hacer en su lugar)
Limpiar directamente sobre el archivo original.
Trabaja en una copia y conserva siempre los datos crudos.
Borrar todas las filas con algún vacío.
Primero intenta recuperar o recalcular; elimina solo si no hay alternativa y documenta cuántas filas.
Rellenar vacíos con el promedio por costumbre.
Imputa solo cuando no exista una regla mejor, y nunca en columnas que se pueden derivar.
Corregir a mano fila por fila sin dejar rastro.
Usa fórmulas o pasos repetibles (tabla de correcciones, Power Query, pandas) y un registro de cambios.
Lista de control de limpieza
4. En la hoja Ventas, =CONTAR(B2:B201) devuelve 199. ¿Qué te indica?
CONTAR solo cuenta valores numéricos y las fechas reales lo son. Como hay 200 filas con fecha escrita, la que no se cuenta es texto: la del pedido P-0104.
Ejercicio práctico
Haz una copia de la hoja Ventas y límpiala completa siguiendo los seis pasos. Al terminar, comprueba que obtienes estos cinco resultados:
- Número de filas.
- Ventas totales.
- Ventas y pedidos de Lima.
- Número de regiones distintas.
- Fecha del pedido P-0104 como fecha real.
Ver solución
- 197 filas, tras eliminar las 3 duplicadas (P-0026, P-0071 y P-0136).
- 38.472,20 USD. Cuadra así: 39.113,40 (suma original) − 968,40 (duplicados) + 327,20 (importes recalculados) = 38.472,20.
- Lima: 7.516,60 USD en 33 pedidos. Antes de limpiar,
=SUMAR.SI.CONJUNTO(I2:I201;C2:C201;"Lima")daba 7.252,10: Excel sí incluía «lima» (no distingue mayúsculas), pero no «Lima » con espacio (219,60) ni el importe vacío del pedido P-0068 (44,90). En pandas, que distingue mayúsculas, el error habría sido mayor: 6.792,90. - 9 regiones (antes 13 según UNICOS de Excel; 15 en Google Sheets o pandas).
- 13 de agosto de 2025; ahora
=ESNUMERO()devuelve VERDADERO y=CONTAR(B2:B198)da 197.
Si alguno no coincide, compara tu hoja con Ventas_limpias usando BUSCARX por id_pedido para encontrar la fila diferente.
Resumen
- Datos sucios cambian conclusiones: en Nexo, invertían el ranking de países.
- Perfila antes de limpiar: filas, únicos, vacíos, valores distintos y tipos.
- Elimina duplicados después de revisarlos y unifica textos con una tabla de correcciones.
- Recalcula lo que se pueda derivar; imputa solo como último recurso.
- Valida con las reglas del diccionario y deja un registro de cambios.
En la próxima lección: Estadística descriptiva: media, mediana, desviación y percentiles. Con los datos ya limpios, aprenderás a describir cómo se reparten los importes de los pedidos y a detectar valores atípicos.
Crea tu cuenta en 30 segundos, marca tus lecciones y descarga el certificado al terminar.