recursos

Todo lo que uso para aprender Data Science: herramientas, apps, cursos, webs y mi setup de estudio

Mi setup de estudio

Lo que uso cada día para estudiar y crear contenido.

💻

MacBook Air M1 (2020)

Mi portátil principal para todo: código, dashboards, edición de vídeo. Los 8GB de RAM van muy justos — me las apaño, pero estoy pensando en dar el salto a un modelo superior.

🎧

Sony WH-1000XM6

Imprescindibles para concentrarse en la cafetería. Cancelación de ruido brutal — la diferencia entre estudiar 1 hora y estudiar 4.

📝

iPad + Apple Pencil

Para tomar apuntes a mano de estadística y hacer esquemas. Uso Goodnotes.

Divoom Ditoo Pro

Mi reloj pixel art para el método Pomodoro. Configuro 25 min de foco + 5 de descanso. La pantalla pixel lo hace todo más divertido.

Café y un buen sitio

Estudio mejor fuera de casa. Mis cafeterías favoritas son las que tienen buena wifi y no te miran raro por estar 3 horas.

Apps y herramientas para aprender

Las aplicaciones que uso a diario para estudiar Data Science.

gratuita

Google Colab

Notebooks de Python en la nube. Sin instalar nada, con GPU gratis. Donde hago todos mis EDA y prácticas.

colab.research.google.com →
gratuita

Kaggle

Datasets gratuitos + notebooks de la comunidad + competiciones. El mejor sitio para practicar con datos reales.

kaggle.com →
gratuita

VS Code

Mi editor de código principal. Con las extensiones de Python y Jupyter es todo lo que necesitas.

code.visualstudio.com →
freemium

Notion

Donde organizo mi roadmap, apuntes de cursos, y el calendario de contenido. Mi segundo cerebro.

notion.so →
gratuita

Tableau Public

Versión gratuita de Tableau para crear y publicar dashboards interactivos. Perfecto para el portfolio.

public.tableau.com →
gratuita

GitHub

Donde guardo todos mis proyectos y código. Imprescindible para el portfolio y para aprender Git.

github.com →

Cursos y webs para aprender desde cero

Los recursos que realmente me han servido.

gratis

freeCodeCamp (español)

Curso completo de análisis de datos con Python. Gratuito, en español, y con certificado.

freecodecamp.org/espanol →
gratis

Kaggle Learn

Módulos cortos y prácticos de Python, Pandas, SQL, Machine Learning. Ideales para empezar.

kaggle.com/learn →
gratis

Khan Academy

La mejor base de estadística y probabilidad. Explicaciones claras con ejercicios interactivos.

khanacademy.org →
gratis

SQLBolt

Ejercicios interactivos de SQL en el navegador. De cero a JOINs en pocas horas.

sqlbolt.com →
gratis

StatQuest (YouTube)

Josh Starmer explica estadística y ML de forma visual. El canal que me desatasca cuando no entiendo algo.

youtube.com/@statquest →
gratis

datos.gob.es

Datos abiertos del gobierno de España. Perfecto para proyectos con datos reales y relevantes.

datos.gob.es →
de pago

DataCamp

Cursos interactivos de Python, SQL y R. Caro pero muy completo. Tienen plan para estudiantes.

datacamp.com →
gratis

HackerRank SQL

Ejercicios de SQL organizados por dificultad. Ideal para practicar después de aprender la sintaxis.

hackerrank.com/sql →

Libros que recomiendo

Los que de verdad he leído y me han aportado.

Storytelling with Data

Cole Nussbaumer Knaflic. Me cambió la forma de pensar sobre dashboards y gráficos. Lectura obligatoria para cualquier persona que trabaje con datos.

Python para análisis de datos

Wes McKinney. El creador de Pandas escribió el libro definitivo. Denso pero muy útil como referencia.

Naked Statistics

Charles Wheelan. Estadística explicada sin fórmulas, con ejemplos reales. Perfecto para perderle el miedo a la estadística.

Para crear contenido tech

Lo que uso para TikTok, Reels y este blog.

gratuita

CapCut

Editor de video gratuito. Lo uso para todos mis TikToks y Reels. Subtítulos automáticos incluidos.

freemium

Canva

Para crear thumbnails, carousels de Instagram y gráficos para el blog. La versión gratuita es suficiente.

gratuita

GitHub Pages

Donde está alojada esta web. Hosting gratuito con dominio personalizado. Perfecto para portfolios.

Cheatsheet: Python para datos

Los comandos que más uso. Copia y pega lo que necesites.

Importar librerías

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

Cargar y explorar datos

df = pd.read_csv('archivo.csv')
df.head()           # primeras 5 filas
df.shape            # (filas, columnas)
df.info()           # tipos y nulos
df.describe()       # estadisticas basicas
df.columns.tolist() # lista de columnas
df.dtypes           # tipo de cada columna

Limpiar datos

df.isnull().sum()             # contar nulos
df.dropna()                   # eliminar filas con nulos
df.fillna(0)                  # rellenar nulos con 0
df.drop_duplicates()          # eliminar duplicados
df['col'] = df['col'].astype(int)  # cambiar tipo
df.rename(columns={'old': 'new'})  # renombrar

Filtrar y agrupar

# Filtrar
df[df['edad'] > 25]
df[df['ciudad'].isin(['Madrid', 'Barcelona'])]

# Agrupar
df.groupby('ciudad')['salario'].mean()
df.groupby(['ciudad', 'genero']).agg({'salario': ['mean', 'count']})

Visualizar

# Histograma
df['col'].hist(bins=20)

# Barras
df.groupby('cat')['val'].mean().plot(kind='bar')

# Scatter
plt.scatter(df['x'], df['y'])

# Heatmap de correlaciones
sns.heatmap(df.corr(), annot=True, cmap='coolwarm')

Cheatsheet: SQL esencial

Las queries que necesitas saber para cualquier entrevista.

Básico: SELECT, WHERE, ORDER

SELECT nombre, edad, ciudad
FROM clientes
WHERE edad >= 25
  AND ciudad = 'Madrid'
ORDER BY edad DESC
LIMIT 10;

Agregaciones y GROUP BY

SELECT ciudad,
       COUNT(*) AS total,
       AVG(salario) AS salario_medio,
       MAX(salario) AS salario_max
FROM empleados
GROUP BY ciudad
HAVING COUNT(*) > 5
ORDER BY salario_medio DESC;

JOINs

-- INNER JOIN: solo coincidencias
SELECT c.nombre, p.producto
FROM clientes c
INNER JOIN pedidos p ON c.id = p.cliente_id;

-- LEFT JOIN: todos los de la izquierda
SELECT c.nombre, p.producto
FROM clientes c
LEFT JOIN pedidos p ON c.id = p.cliente_id;

Subqueries y CTEs

-- Subquery
SELECT nombre FROM empleados
WHERE salario > (SELECT AVG(salario) FROM empleados);

-- CTE (mas legible)
WITH salario_medio AS (
  SELECT AVG(salario) AS media FROM empleados
)
SELECT nombre FROM empleados, salario_medio
WHERE salario > salario_medio.media;

Window functions

SELECT nombre, departamento, salario,
  RANK() OVER (PARTITION BY departamento ORDER BY salario DESC) AS ranking,
  AVG(salario) OVER (PARTITION BY departamento) AS media_depto
FROM empleados;