0Pricing
Learn AI with Python · Lección

Flujo de trabajo de EDA y perfilado de datos

df.info(), df.describe(), auditoría de valores ausentes, comprobación de tipos de datos y análisis de cardinalidad.

Flujo de trabajo de EDA y perfilado de datos es una lección gratuita de Learn AI with Python en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Learn AI with Python, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn AI with Python incluye 4 lecciones en total.

¿Qué es el análisis exploratorio de datos?

El análisis exploratorio de datos (EDA) es lo primero que se hace con cualquier conjunto de datos antes de crear modelos. Su objetivo es comprender la estructura, detectar problemas y desarrollar intuición sobre los datos.

Una lista de comprobación disciplinada para la primera inspección del EDA responde a estas preguntas: ¿Qué tamaño tienen los datos? ¿Qué tipos tienen las columnas? ¿Dónde faltan valores? ¿Hay duplicados? ¿Cómo se distribuyen los valores?

  • Detectar pronto los problemas de calidad de los datos
  • Decidir qué características deben limpiarse
  • Formular hipótesis que se comprobarán más adelante

Carga de los datos

Todo comienza cargando un DataFrame y echando un vistazo rápido con head() y shape.

shape devuelve una tupla (rows, columns), por lo que sabrá de inmediato a qué escala está trabajando.

import pandas as pd

df = pd.read_csv("customers.csv")
print(df.shape)        # (10000, 8)
print(df.head())       # first 5 rows

df.info() — Tipos y recuentos de valores no nulos

df.info() es el primer comando más útil. Imprime el nombre de cada columna, su dtype y el recuento de valores no nulos.

Si una columna numérica aparece como object, algo no está bien (texto residual, comas o símbolos de moneda). Si los recuentos de valores no nulos difieren entre columnas, hay datos faltantes.

df.info()
# <class pandas.DataFrame>
# RangeIndex: 10000 entries
# age      9800 non-null  float64
# city     10000 non-null object
# income   9500 non-null  float64

df.describe() — Resumen numérico

df.describe() proporciona el recuento, la media, la desviación estándar, el mínimo, los cuartiles (25/50/75 %) y el máximo de cada columna numérica.

Busque señales de alerta: un min de -1 en una columna de edad, un max muy superior al percentil 75 (valores atípicos) o una media muy alejada de la mediana (asimetría).

print(df.describe())
# Use include="all" to also summarize categorical columns
print(df.describe(include="all"))

df.isnull().sum() — Recuento de valores faltantes

Encadenar isnull() con sum() cuenta los valores faltantes por columna. Añada otro .sum() para obtener el total general.

Convierta el resultado en un porcentaje para evaluar la gravedad: quizá convenga eliminar una columna que tenga un 60 % de valores faltantes, mientras que un 2 % es fácil de imputar.

print(df.isnull().sum())

missing_pct = df.isnull().sum() / len(df) * 100
print(missing_pct.sort_values(ascending=False))

df.duplicated().sum() — Búsqueda de filas duplicadas

df.duplicated() devuelve una Serie booleana que marca las filas que son copias exactas de una fila anterior. Al sumarla, se cuenta cuántos duplicados existen.

Puede limitar la búsqueda de duplicados a columnas clave con subset, lo que resulta útil cuando un id debe ser único.

print(df.duplicated().sum())            # exact duplicate rows
print(df.duplicated(subset=["id"]).sum()) # duplicate ids

df = df.drop_duplicates()

value_counts() — Frecuencias de las categorías

value_counts() cuenta cuántas veces aparece cada valor único en una columna. Es la herramienta de referencia para inspeccionar variables categóricas.

Use normalize=True para ver proporciones en lugar de recuentos absolutos y dropna=False para incluir los valores faltantes en el recuento.

print(df["city"].value_counts())
print(df["city"].value_counts(normalize=True))
print(df["city"].value_counts(dropna=False))

Comprobación de la cardinalidad

La cardinalidad es el número de valores distintos de una columna, que se obtiene con nunique().

  • Cardinalidad baja (unas pocas categorías) → adecuada para la codificación one-hot.
  • Cardinalidad alta (miles de cadenas únicas, como los identificadores de usuario) → normalmente no es una característica útil tal cual.
for col in df.select_dtypes("object").columns:
    print(col, "->", df[col].nunique(), "unique")

Detección de columnas constantes y similares a identificadores

Durante la creación del perfil conviene señalar dos casos extremos:

  • Columnas constantes (nunique() == 1) no contienen información, por lo que deben eliminarse.
  • Columnas similares a identificadores (nunique() == len(df)) son únicas para cada fila y no aportan información útil a la mayoría de los modelos.
n = len(df)
for col in df.columns:
    u = df[col].nunique()
    if u == 1:
        print(col, "is constant")
    elif u == n:
        print(col, "is ID-like")

dtypes y uso de memoria

Compruebe df.dtypes para confirmar que las columnas están almacenadas correctamente y df.memory_usage(deep=True) para encontrar las columnas que ocupan más memoria.

Reducir el tamaño de los tipos numéricos y convertir las cadenas de cardinalidad baja a category puede reducir drásticamente el uso de memoria en conjuntos de datos grandes.

print(df.dtypes)
print(df.memory_usage(deep=True))

df["city"] = df["city"].astype("category")

Fragmento de código reutilizable para crear un perfil

Puede agrupar toda la lista de comprobación en una función auxiliar para aplicar el mismo tratamiento de primera inspección a cada conjunto de datos nuevo.

Ejecútela en cuanto cargue cualquier DataFrame para detectar de inmediato su forma, tipos, valores faltantes, duplicados y cardinalidad.

def profile(df):
    print("Shape:", df.shape)
    print(df.info())
    print("Missing:\n", df.isnull().sum())
    print("Dupes:", df.duplicated().sum())
    for c in df.select_dtypes("object"):
        print(c, df[c].nunique(), "unique")

profile(df)

Comprobación rápida: valores faltantes

Se desea obtener el porcentaje de valores faltantes de cada columna.

Resumen: lista de comprobación para la primera inspección del EDA

Ahora dispone de una rutina inicial que puede repetir con cualquier conjunto de datos:

  • shape y head() para conocer la escala y obtener una vista previa
  • info() para consultar los dtypes y los recuentos de valores no nulos
  • describe() para obtener resúmenes numéricos e indicios de valores atípicos
  • isnull().sum() para contabilizar los valores faltantes
  • duplicated().sum() para contar las filas duplicadas
  • value_counts() y nunique() para consultar las frecuencias de las categorías y la cardinalidad

A continuación, examinaremos columnas individuales mediante un análisis univariante.

Preguntas frecuentes

¿La lección «Flujo de trabajo de EDA y perfilado de datos» es gratis?

Sí — el texto completo de «Flujo de trabajo de EDA y perfilado de datos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Learn AI with Python, actualiza a CoddyKit PRO. El curso de Learn AI with Python incluye 4 lecciones en total.

¿Qué aprenderé en «Flujo de trabajo de EDA y perfilado de datos»?

df.info(), df.describe(), auditoría de valores ausentes, comprobación de tipos de datos y análisis de cardinalidad. Practicas Learn AI with Python con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Learn AI with Python?

No se requiere experiencia previa. Learn AI with Python en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Flujo de trabajo de EDA y perfilado de datos»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Learn AI with Python?

Sí. Cada lección de Learn AI with Python incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Flujo de trabajo de EDA y perfilado de datos
  2. Análisis univariante
  3. Análisis bivariante y multivariante
  4. Distribución de características y análisis del objetivo
← Volver a Learn AI with Python