5. El ciclo de vida de un proyecto de datos

Un proyecto de ciencia de datos va mucho más allá de entrenar un modelo. Se compone de etapas que se retroalimentan: recolección, limpieza, análisis exploratorio, modelado y comunicación. Cada fase es clave para lograr resultados útiles y confiables.

Estos temas se profundizarán a lo largo del curso para que puedas aplicarlos de principio a fin.

5.1 Recolección y limpieza de datos

Recolección

  • Fuentes internas: bases de clientes, sistemas de ventas, sensores IoT.
  • Fuentes externas: APIs, encuestas, repositorios abiertos como Kaggle y UCI Machine Learning Repository.
  • Formatos comunes: CSV, Excel, JSON, SQL, NoSQL y flujos en streaming.

Ejemplo en Python con Pandas:

import pandas as pd

# Cargar dataset
df = pd.read_csv("ventas.csv")

print(df.head())

Limpieza

  • Dedica el 70-80 % del tiempo total del proyecto.
  • Manejo de valores nulos (NaN) y eliminación de duplicados.
  • Normalización y estandarización de variables.
  • Conversión de tipos (por ejemplo, textos a fechas).
# Eliminar filas con valores nulos
df = df.dropna()

# Rellenar valores faltantes con la media
df["precio"].fillna(df["precio"].mean(), inplace=True)

# Eliminar duplicados
df = df.drop_duplicates()

5.2 Análisis exploratorio de datos (EDA)

Objetivos:

  • Entender la estructura de los datos.
  • Detectar patrones, correlaciones y valores atípicos.
  • Formular hipótesis antes del modelado.

Herramientas clave: estadísticas descriptivas con Pandas, gráficos con Seaborn y Matplotlib.

import seaborn as sns
import matplotlib.pyplot as plt

# Estadísticas básicas
print(df.describe())

# Histograma de precios
sns.histplot(df["precio"], kde=True)
plt.show()

# Correlación entre variables
sns.heatmap(df.corr(), annot=True, cmap="coolwarm")
plt.show()

5.3 Modelado y predicciones

Proceso típico:

  • División de datos en entrenamiento y prueba.
  • Selección del modelo (regresión, clasificación, clustering, etc.).
  • Entrenamiento con los datos históricos.
  • Evaluación con métricas objetivas.
  • Optimización de hiperparámetros y validación cruzada.

Ejemplo con scikit-learn:

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

X = df[["cantidad", "costo"]]  # Variables predictoras
y = df["precio"]                 # Variable objetivo

# Dividir en train/test
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

# Crear y entrenar modelo
modelo = LinearRegression()
modelo.fit(X_train, y_train)

# Predicciones
predicciones = modelo.predict(X_test)

# Evaluación
print("Error cuadrático medio:", mean_squared_error(y_test, predicciones))

5.4 Comunicación y visualización de resultados

Un modelo es útil cuando los hallazgos se comunican de forma clara:

  • Gráficos que muestren tendencias, distribuciones y predicciones.
  • Tableros interactivos creados con Dash, Plotly o soluciones como Power BI.
  • Resumen ejecutivo que traduzca métricas en decisiones de negocio.
  • Storytelling de datos para responder la pregunta inicial.
plt.scatter(y_test, predicciones)
plt.xlabel("Valores reales")
plt.ylabel("Predicciones")
plt.title("Real vs. Predicho")
plt.show()

Consejos de comunicación: evitar tecnicismos con audiencias no técnicas, explicar qué decisiones se habilitan y ser transparente sobre limitaciones y mejoras futuras.

5.5 Resumen del ciclo de vida

  • Recolección y limpieza: sin datos de calidad, no hay ciencia de datos.
  • EDA: imprescindible para comprender el contexto antes de modelar.
  • Modelado y predicciones: aplicar algoritmos y medir desempeño.
  • Comunicación: traducir los resultados en acciones concretas.

El proyecto es exitoso cuando los hallazgos generan decisiones de negocio o impacto tangible, no solo cuando se obtiene el modelo más exacto.