Descargar automáticamente de CAMMESA

A partir de la ejecución del siguiente código:

  1. Se descargan los archivos de datos cada 5 minutos de Despacho de Renovables y cubrimiento de la demanda de CAMMESA.
  2. Se estandarizan los mismos.
  3. Se los exporta como archivo CSV.

Fuente: https://despachorenovables.cammesa.com/renovables/

In [1]:
#Cargar librerías
import requests
import pandas as pd
import datetime as dt
from datetime import date, datetime, timedelta
from os import mkdir, rmdir, remove, path
In [2]:
# Definir
sdate = date(2020, 6, 1)   # fecha de inicio (año, mes, día)
edate = date(2020, 6, 7)   # fecha de fin (año, mes, día)

file = 'renovables.csv' #nombre del archivo de destino
In [3]:
# Descarga de datos
dir = "renovables" #carpeta de destino de los archivos
mkdir(str(dir))

delta = edate - sdate

for i in range(delta.days + 1):
    date = (sdate + timedelta(days=i))
    date1 = date.strftime('%d-%m-%Y')
    date2 = (date + timedelta(days=1))
    date2 = date2.strftime('%d-%m-%Y')
    url = 'https://cdsrenovables.cammesa.com/exhisto/RenovablesService/GetChartTotalTRDataSource?desde=' + str(date1) + '&hasta=' + str(date2)
    r = requests.get(url, allow_redirects=True)
    if 'NOT_FOUND' in r.content.decode():
        print(str(date) + ' not Found.')  
    else:
        with open('./' + dir + '/' + str(date) + '.json', 'wb') as f: f.write(r.content)
In [4]:
#Combinación de archivos
out = pd.DataFrame(columns = ['momento', 'eolica', 'fotovoltaica', 'biocombustible', 'hidraulica', 'cubrimientoDem'])

for i in range(delta.days + 1):
    date = str(sdate + timedelta(days=i))
    if path.isfile('./' + dir + '/'  + date + '.json'):
        df = pd.read_json('./' + dir + '/'  + date + '.json')
        out = out.append(df, ignore_index=True)
    else:
        print(date + " does not exist")

display(out.head())
display(out.tail())
momento eolica fotovoltaica biocombustible hidraulica cubrimientoDem
0 2020-06-01T11:00:00.000-0300 597.77 256.36 77.17 172.58 6.28
1 2020-06-01T15:30:00.000-0300 584.14 293.12 94.68 172.17 6.82
2 2020-06-02T13:10:00.000-0300 1174.30 280.98 105.01 143.36 10.04
3 2020-06-01T17:00:00.000-0300 557.05 255.97 99.43 172.42 6.41
4 2020-06-02T14:40:00.000-0300 857.92 286.02 104.55 142.35 8.50
momento eolica fotovoltaica biocombustible hidraulica cubrimientoDem
4027 2020-06-07T20:10:00.000-0300 872.93 0.0 94.17 143.28 6.49
4028 2020-06-07T21:40:00.000-0300 1028.40 0.0 96.48 143.28 7.44
4029 2020-06-08T02:10:00.000-0300 943.04 0.0 96.33 136.57 9.41
4030 2020-06-08T23:50:00.000-0300 1417.16 0.0 96.94 131.76 10.19
4031 2020-06-08T03:40:00.000-0300 1262.87 0.0 98.68 135.44 12.25
In [5]:
# estandarizar datos
df = out

df['momento'] = pd.to_datetime(df.momento)
df['momento'] = df['momento'].dt.strftime('%d/%m/%Y %H:%M')
df.sort_values(by = 'momento', ascending=True, inplace=True, kind='quicksort', na_position='last')
df = df.reset_index(drop=True)

display(out.head())
display(out.tail())
momento eolica fotovoltaica biocombustible hidraulica cubrimientoDem
423 01/06/2020 00:05 355.59 0.0 79.33 165.31 3.80
145 01/06/2020 00:10 376.65 0.0 78.30 165.31 3.93
445 01/06/2020 00:15 382.86 0.0 78.30 165.31 4.00
167 01/06/2020 00:20 377.63 0.0 78.30 163.03 3.98
369 01/06/2020 00:25 372.09 0.0 78.30 163.03 3.98
momento eolica fotovoltaica biocombustible hidraulica cubrimientoDem
3719 08/06/2020 23:40 1360.08 0.0 97.95 131.76 9.59
3730 08/06/2020 23:45 1383.48 0.0 97.95 131.76 9.81
4030 08/06/2020 23:50 1417.16 0.0 96.94 131.76 10.19
3753 08/06/2020 23:55 1457.90 0.0 97.94 131.76 10.47
3477 09/06/2020 00:00 1468.18 0.0 97.94 131.76 10.61
In [6]:
#Borra archivos anteriores y exporta la tabla
df.to_csv(file, index = False) 

for i in range(delta.days + 1):
    date = str(sdate + timedelta(days=i))
    if path.isfile('./' + dir + '/'  + date + '.json'):
        remove('./' + dir + '/' + date + '.json')
    else:
        print(date + " does not exist")
rmdir(str(dir))