El análisis exploratorio de datos (EDA por sus siglas en inglés) es el proceso de entender un dataset antes de hacer cualquier análisis formal. Es como leer un libro nuevo: antes de sacar conclusiones, necesitas saber de qué trata, qué tan larga es la historia y si hay páginas faltantes.

La mayoría de los errores en proyectos de datos ocurren por saltarse este paso. Se construye un modelo con datos sucios, se crea una visualización con categorías duplicadas, o se toman decisiones basadas en datos que tienen valores extremos no detectados.

Cargar el dataset

Pandas puede leer prácticamente cualquier formato de datos: CSV, Excel, JSON, SQL. El más común es CSV:

Python
import pandas as pd

# Cargar desde archivo local
df = pd.read_csv("ventas_2026.csv")

# O desde Excel
df = pd.read_excel("ventas.xlsx", sheet_name="Hoja1")

# Primeras 5 filas para ver la estructura
df.head()

Las primeras preguntas que siempre hago

Una vez cargado el dataset, hay cinco preguntas que respondo siempre antes de continuar:

Python
# 1. ¿Cuántas filas y columnas tiene?
print(df.shape)  # (filas, columnas)

# 2. ¿Qué tipo de dato es cada columna?
print(df.dtypes)

# 3. ¿Hay valores nulos?
print(df.isnull().sum())

# 4. ¿Cómo se distribuyen los valores numéricos?
print(df.describe())

# 5. ¿Hay duplicados?
print(f"Duplicados: {df.duplicated().sum()}")

Limpiar el dataset

En el 90% de los datasets reales hay algo que limpiar. Estos son los casos más frecuentes:

Python — limpieza
# Eliminar filas completamente vacías
df = df.dropna(how="all")

# Rellenar valores nulos en una columna numérica con la mediana
df["precio"] = df["precio"].fillna(df["precio"].median())

# Eliminar duplicados exactos
df = df.drop_duplicates()

# Limpiar espacios en columnas de texto
df["nombre"] = df["nombre"].str.strip().str.lower()

# Convertir columna de fecha a tipo datetime
df["fecha_venta"] = pd.to_datetime(df["fecha_venta"], dayfirst=True)

Explorar con agrupaciones

Una vez limpio el dataset, las agrupaciones son la herramienta más útil para encontrar patrones. Ejemplos concretos:

Python — análisis
# Ventas totales por categoría de producto
ventas_cat = df.groupby("categoria")["total"].sum().sort_values(ascending=False)
print(ventas_cat)

# Ticket promedio por mes
df["mes"] = df["fecha_venta"].dt.to_period("M")
ticket_mes = df.groupby("mes")["total"].mean()
print(ticket_mes)

# Top 10 clientes por compras acumuladas
top_clientes = (
    df.groupby("cliente")["total"]
    .sum()
    .sort_values(ascending=False)
    .head(10)
)
print(top_clientes)

Si trabajas con Google Sheets como fuente de datos, puedes leerlos directamente con pd.read_csv(url_publicada) sin necesidad de descargar el archivo. Esto hace que el análisis se actualice automáticamente cuando actualizas la hoja.

El resumen completo en una sola función

Esta función combina todo lo anterior para darte un diagnóstico inicial de cualquier dataset en segundos:

Python
def diagnostico(df):
    print("=== DIAGNÓSTICO DEL DATASET ===")
    print(f"Filas: {df.shape[0]:,} | Columnas: {df.shape[1]}")
    print(f"Duplicados: {df.duplicated().sum()}")
    print("\nValores nulos por columna:")
    nulos = df.isnull().sum()
    print(nulos[nulos > 0])
    print("\nResumen estadístico:")
    print(df.describe())

diagnostico(df)

¿Tienes datos sin explotar en Excel o Google Sheets?

Puedo ayudarte a convertirlos en insights accionables con un dashboard en Power BI o un análisis en Python.

Analicemos tus datos