PREGUNTA: En Python, como bajar los datos de la encuesta de estructura salarial del ine
Respuesta
import requests
# URL del archivo ZIP de la EES 2022
url_zip = "https://www.ine.es/ftp/microdatos/salarial/datos_2022.zip"
# Nombre del archivo ZIP a guardar
nombre_zip = "datos_2022.zip"
# Descargar el archivo ZIP
response = requests.get(url_zip)
if response.status_code == 200:
with open(nombre_zip, "wb") as file:
file.write(response.content)
print(f"Archivo ZIP descargado y guardado como {nombre_zip}")
else:
print(f"Error al descargar el archivo: {response.status_code}datos españoles?
Pregunta: como extraer los datos del zip file
import zipfile
import os
# Carpeta donde se extraerán los archivos
carpeta_destino = "datos_ees_2022"
# Crear la carpeta si no existe
os.makedirs(carpeta_destino, exist_ok=True)
# Descomprimir el archivo ZIP
with zipfile.ZipFile(nombre_zip, 'r') as zip_ref:
zip_ref.extractall(carpeta_destino)
print(f"Archivos extraídos en la carpeta: {carpeta_destino}")
Pregunta: ¿cómo leer los datos en Python?
import pandas as pd
# Ruta del archivo de datos (ajusta según el nombre real del archivo extraído)
archivo_datos = os.path.join(r"F:\clase\clase24_25\laboratorio\lab3\datos_ees_2022\CSV", "EES_2022.tab") # Ejemplo: ajusta el nombre del archivo
# Cargar el archivo en un DataFrame
df = pd.read_csv(archivo_datos, sep=";", encoding="ISO-8859-1") # Ajusta el separador y la codificación según sea necesario
# Mostrar las primeras filas del DataFrame
print(df.head())
Problema: no me lee bien los datos: el separador es un tabulador ’
#Cargar el archivo en un DataFrame
df = pd.read_csv(archivo_datos, sep="\t", encoding="ISO-8859-1") # Ajusta el separador y la codificación según sea necesario
# Mostrar las primeras filas del DataFrame
print(df.head())
#Guardamos los datos en un formato pickle
nombre_pickle = "datos_2022.pkl"
df.to_pickle(nombre_pickle)
#Cargar el archivo en un DataFrame
df = pd.read_csv(archivo_datos, sep="\t", encoding="ISO-8859-1") # Ajusta el separador y la codificación según sea necesario
# Mostrar las primeras filas del DataFrame
print(df.head())