A partir de la ejecución del siguiente código:
Dato meteorológico de todas las estaciones de superficie del país Datos de temperatura, presión, viento y humedad de las estaciones meteorológicas de todo el país.
#Cargar librerías
import requests
import pandas as pd
from datetime import datetime, date, timedelta
from os import mkdir, rmdir, remove, path
# Definir fechas
sdate = date(2018, 2, 1) # fecha de inicio (año, mes, día)
edate = date(2018, 2, 28) # fecha de fin (año, mes, día)
delta = edate - sdate
# Descarga de datos
dir = "meteodata" #carpeta de destino de los archivos
mkdir(str(dir))
for i in range(delta.days + 1):
date = str(sdate + timedelta(days=i)).replace('-', '')
url = 'https://ssl.smn.gob.ar/dpd/descarga_opendata.php?file=observaciones/datohorario' + date + '.txt'
r = requests.get(url, allow_redirects=True)
if 'El archivo no existe.' in str(r.content):
print(date + " does not exist")
else:
with open('./' + dir + '/' + date + '.txt', 'wb') as f: f.write(r.content)
#Filtrado y combinación de archivos
estacion = 'ROSARIO AERO' #filtro de selección de estación
out = pd.DataFrame(columns = ['Fecha', 'Hora', 'Temp[ºC]', 'Hum[%]', 'Pres[hPa]', 'VDir[gr]', 'VVel[km/h]', 'Estacion'])
for i in range(delta.days + 1):
date = str(sdate + timedelta(days=i)).replace('-', '')
if path.isfile('./' + dir + '/' + date + '.txt'):
df = pd.read_fwf('./' + dir + '/' + date + '.txt', header = None, index_col = False,
names = ['Fecha', 'Hora', 'Temp[ºC]', 'Hum[%]', 'Pres[hPa]', 'VDir[gr]', 'VVel[km/h]', 'Estacion'])
df1 = df[df['Estacion'] == estacion]
out = out.append(df1, ignore_index=True)
else:
print(date + " does not exist")
display(out.head())
display(out.tail())
#Estandarización
df = out
df['Horario'] = df['Fecha'].map(str) + ' ' + df['Hora'].map(str) + ':00'
df['Horario'] = pd.to_datetime(df['Horario'], format ='%d%m%Y %H:%M')
df['Temp[ºC]'] = df['Temp[ºC]'].astype(float)
df['Hum[%]'] = df['Hum[%]'].astype(float)
df['Pres[hPa]'] = df['Pres[hPa]'].astype(float)
df['VDir[gr]'] = df['VDir[gr]'].astype(float)
df['VVel[km/h]'] = df['VVel[km/h]'].astype(float)
df = df[['Horario', 'Temp[ºC]', 'Hum[%]', 'Pres[hPa]', 'VDir[gr]', 'VVel[km/h]']]
print(df.info())
#Borra archivos anteriores y exporta la tabla
file = 'datosRosario.csv' #nombre del archivo de destino
df.to_csv(file, index = False)
for i in range(delta.days + 1):
date = str(sdate + timedelta(days=i)).replace('-', '')
if path.isfile('./' + dir + '/' + date + '.txt'):
remove('./' + dir + '/' + date + '.txt')
else:
print(date + " does not exist")
rmdir(str(dir))