Tu primer análisis con Python: salarios en España
Aprenderás a pasar de una tabla oficial a una conclusión defendible: cargar, validar, comparar y explicar sin confundir media, mediana o brecha salarial.
La versión anterior usaba un dataset que terminaba en 2017 y presentaba sus cifras como si describieran la España actual. Esta edición utiliza resultados definitivos de 2024 publicados por el INE el 28 de mayo de 2026.
Cuatro preguntas antes de escribir una línea de código.
Un análisis correcto empieza por comprender qué mide la fuente, la unidad, el periodo y las limitaciones.
Encuesta Anual de Estructura Salarial.
Ganancia bruta anual por trabajador.
Año 2024, datos definitivos.
Las diferencias no explican por sí solas sus causas.
Mira la distribución, no solo el promedio.
Selecciona una vista. Las barras usan la misma escala dentro de cada panel para facilitar la comparación.
INE, EAES 2024. La brecha mostrada es una diferencia no ajustada: mezcla efectos de jornada, ocupación, sector, antigüedad y otras variables. No mide “mismo puesto, distinto salario”.
Carga y revisa antes de calcular.
Descarga la tabla del INE en CSV o prepara un archivo con las columnas `indicador`, `grupo` y `euros`.
import pandas as pd
df = pd.read_csv("salarios_ine_2024.csv")
print(df.head())
print(df.info())
print(df.isna().sum())
print(df.duplicated().sum())No corrijas automáticamente un valor extraño. Primero verifica si es error, valor válido o consecuencia de cómo se construyó la estadística.
Compara medidas que responden preguntas distintas.
La media sirve para resumir el total, pero sube cuando hay salarios altos. La mediana describe mejor el centro de una distribución asimétrica.
resumen = (
df[df["grupo"] == "Total"]
.set_index("indicador")["euros"]
)
media = resumen["Salario medio"]
mediana = resumen["Salario mediano"]
moda = resumen["Salario modal"]
print(f"Media: {media:,.2f} €")
print(f"Mediana: {mediana:,.2f} €")
print(f"Moda: {moda:,.2f} €")Explica lo que sabes y lo que todavía no.
Conclusiones válidas
- La media anual fue superior a la mediana.
- La distribución salarial está concentrada en valores inferiores a la media.
- País Vasco tuvo la media autonómica más alta y Extremadura la más baja.
- La media de mujeres fue inferior a la de hombres.
Conclusiones que requieren más análisis
- Por qué existe la diferencia entre hombres y mujeres.
- Qué parte se explica por jornada, ocupación o sector.
- Qué salario corresponde a un Data Analyst.
- Cómo cambia el poder adquisitivo por coste de vida.
Dos formas sencillas de ejecutar Python.
Google Colab, sin instalación
Colab permite abrir un notebook en el navegador, ejecutar celdas y subir un archivo. Es adecuado para este primer análisis porque evita configurar Python y paquetes. La sesión es temporal: guarda el notebook y no dependas de archivos que solo existan durante esa sesión.
Entorno local
Si quieres conservar datos y proyectos en tu ordenador, instala una versión actual de Python y crea un entorno virtual por proyecto. Instala pandas, openpyxl y matplotlib. El entorno evita que una actualización de otro proyecto rompa este análisis.
python -m venv .venv
.venv\Scripts\activate
python -m pip install pandas openpyxl matplotlibEn macOS o Linux la activación suele ser source .venv/bin/activate. Si tu organización gestiona el equipo, sigue su procedimiento.
Conserva el contexto del dato
Descarga la tabla oficial, guarda una copia sin modificar y registra nombre, fecha, unidad, población y notas metodológicas. Crea carpetas para datos_originales, notebooks y salidas. Nunca sobrescribas el archivo de origen.
De archivo descargado a conclusión defendible.
1. Carga e inspecciona
Mira dimensiones, nombres, tipos y ausentes. No calcules una media hasta comprobar si la columna representa euros anuales, mensuales, brutos o netos, y si cada fila es una persona, una comunidad o una agregación publicada.
import pandas as pd
df = pd.read_excel("datos_originales/tabla_ine.xlsx")
print(df.shape)
print(df.columns.tolist())
print(df.head())
print(df.dtypes)
print(df.isna().sum())2. Limpia sin ocultar decisiones
Normaliza columnas, convierte textos numéricos y filtra solo con una razón. No sustituyas automáticamente un ausente por cero: cero es un dato; ausente significa que no se observó o no se publicó.
3. Describe la distribución
La media se desplaza con salarios altos; la mediana identifica el punto central. Calcula también percentiles, rango y observaciones. Si la tabla del INE ya ofrece agregados, no recalcules como si tuvieras microdatos.
4. Compara grupos con cuidado
La diferencia entre hombres y mujeres es una brecha no ajustada. No demuestra cuánto se paga por el mismo puesto, jornada o experiencia. Las diferencias territoriales también reflejan composición sectorial y ocupacional. Preséntalas como descripción, no como causalidad.
5. Visualiza para comprobar
Un histograma muestra la forma; un boxplot, dispersión y extremos; barras ordenadas comparan territorios. Incluye unidad, periodo y fuente. Si el eje no comienza en cero, indícalo y evita exagerar diferencias.
6. Redacta con límite
Una conclusión completa dice qué se observó, en qué población y periodo, por qué importa y qué no puede inferirse. Ese último elemento separa análisis de publicidad.
Errores normales del primer notebook.
¿Por qué aparece FileNotFoundError?
Python no encuentra la ruta. Comprueba la carpeta de trabajo, el nombre y la extensión real.
¿Y si los números aparecen como texto?
Revisa separadores, símbolos y espacios. Convierte con pd.to_numeric y examina lo que se convirtió en ausente.
¿Este análisis demuestra discriminación?
No por sí solo. Describe diferencias agregadas. Analizar mecanismos requiere variables comparables y un método específico.
Convierte el notebook en un pequeño proyecto.
Guarda entorno y decisiones
Exporta dependencias con python -m pip freeze > requirements.txt, registra la versión del archivo y añade un README con instrucciones. Mantén una celda de configuración al principio y reinicia el entorno para ejecutar todo de principio a fin. Un notebook que solo funciona después de ejecutar celdas en un orden accidental no es reproducible.
Exporta resultados
Guarda tablas finales en CSV y gráficos en PNG o SVG con nombres estables. No copies cifras manualmente a una presentación: genera una tabla de salida y úsala como fuente. Si corriges la limpieza, todas las piezas deben actualizarse.
Ejercicios siguientes
Compara media y mediana por comunidad; calcula diferencias absolutas y relativas; crea una función que formatee tablas; reproduce un gráfico desde cero; y escribe una conclusión de cien palabras con cobertura y límite. Después pide a otra persona que ejecute el notebook sin tu ayuda.
Qué aprender después
Practica uniones, agrupaciones, fechas y visualización; después SQL. La estadística descriptiva y el diseño de preguntas son más importantes al principio que un modelo complejo. Avanza cuando puedas explicar cada transformación.