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.

Instalación recomendada:
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:

NombreVentasZona
0Ana100.0Norte
1Luis200.0Sur
2Marta150.0Norte
3JuanNaNSur

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.

Estrategias para Valores Nulos (NaN):
  • 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:

ZonaVentas
Norte125.0
Sur200.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.