Ciencia de Datos con Python
En el mundo moderno, los datos son el nuevo petróleo. Aquí aprenderás a extraerlo, refinarlo y convertirlo en información valiosa usando las librerías estándar de la industria.
1. El Entorno de Trabajo: Jupyter
Los científicos de datos no suelen usar scripts normales (`.py`). Usan Notebooks (`.ipynb`). Un Notebook es un documento "vivo" donde mezclas celdas de código ejecutable con texto explicativo y gráficos.
Abre tu terminal y ejecuta:
pip install jupyterlab pandas numpy matplotlib seaborn
Luego, para iniciar:
jupyter lab
2. NumPy: La Base Matemática
¿Por qué no usar listas normales de Python? Porque son lentas. NumPy introduce el Array (vector), que es hasta 50 veces más rápido.
In [1]:import numpy as np
# Lista Python normal
lista = [1, 2, 3]
# lista * 2 -> [1, 2, 3, 1, 2, 3] (Duplica los elementos, no multiplica)
# Array de NumPy
arr = np.array([1, 2, 3])
resultado = arr * 2
print(resultado)
# Salida: [2 4 6] (Matemática vectorial real)
3. Pandas: El DataFrame
Pandas es como tener un Excel programable súper potente. La estructura principal se llama DataFrame (una tabla con filas y columnas).
In [2]:import pandas as pd
# Crear un DataFrame manual
datos = {
"Nombre": ["Ana", "Luis", "Marta", "Juan"],
"Ventas": [100, 200, 150, None], # None será un NaN (Not a Number)
"Zona": ["Norte", "Sur", "Norte", "Sur"]
}
df = pd.DataFrame(datos)
df
Visualización del DataFrame resultante:
| Nombre | Ventas | Zona | |
|---|---|---|---|
| 0 | Ana | 100.0 | Norte |
| 1 | Luis | 200.0 | Sur |
| 2 | Marta | 150.0 | Norte |
| 3 | Juan | NaN | Sur |
4. Inspección de Datos
Lo primero que haces al cargar un archivo (Excel o CSV) es "mirarlo" para entender qué tienes.
# Cargar archivo
# df = pd.read_csv("mis_datos.csv")
# Muestra las primeras 5 filas
df.head()
# Información técnica (Tipos de datos y valores nulos)
df.info()
# Resumen estadístico (Media, máx, mín, cuartiles)
df.describe()
5. Limpieza (Data Cleaning)
El 80% del trabajo de un Data Scientist es limpiar datos. En nuestro ejemplo anterior, Juan tiene NaN en ventas.
- Eliminar: Si faltan muchos datos, borramos la fila.
- Imputar: Rellenar el hueco con la media o un cero.
# Opción A: Borrar filas con nulos
df_limpio = df.dropna()
# Opción B: Rellenar con 0
df_relleno = df.fillna(0)
# Opción C (Profesional): Rellenar con la media
media_ventas = df["Ventas"].mean()
df["Ventas"] = df["Ventas"].fillna(media_ventas)
6. Filtrado y Consultas
¿Cómo extraemos información específica? Usamos "máscaras booleanas".
# 1. Crear la condición (Devuelve True/False para cada fila)
condicion = df["Ventas"] > 120
# 2. Aplicar la condición
mejores_vendedores = df[condicion]
# En una sola línea (Pythonic Way)
norte_top = df[ (df["Zona"] == "Norte") & (df["Ventas"] > 100) ]
7. GroupBy (Split-Apply-Combine)
Esta es la función más poderosa. Permite agrupar datos por categorías y calcular estadísticas. Es como las "Tablas Dinámicas" de Excel.
# Agrupar por 'Zona' y calcular el promedio de las columnas numéricas
resumen = df.groupby("Zona").mean()
print(resumen)
Resultado:
| Zona | Ventas |
|---|---|
| Norte | 125.0 |
| Sur | 200.0 |
8. Visualización Rápida
Pandas se integra con Matplotlib para graficar directamente desde el DataFrame.
import matplotlib.pyplot as plt
# Gráfico de barras de las ventas por persona
df.plot(kind='bar', x='Nombre', y='Ventas', color='skyblue')
# Mostrar el gráfico
plt.show()
🚀 Siguiente paso: Machine Learning
Ahora que tienes tus datos limpios y numéricos en un DataFrame, estás listo para usar Scikit-Learn para predecir el futuro.