Advertisement
Guest User

fillAPI

a guest
Apr 6th, 2020
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.74 KB | None | 0 0
  1. import argentina_api
  2. import santa_fe_api
  3. import pandas as pd
  4. import numpy as np
  5. import os
  6. import time
  7. from common import *
  8. import pprint
  9.  
  10. GITHUB_URL = 'https://github.com/mariano22/argcovidapi'
  11.  
  12. def format_date(date):
  13.     if date.count('/')==1:
  14.         date+='/2020'
  15.     t = time.strptime(date, "%d/%m/%Y")
  16.     return time.strftime("%Y-%m-%d", t)
  17.  
  18. def get_prev_factory(df):
  19.     cols = list(df.columns)
  20.     col_idx = { cols[idx]: idx for idx in range(len(cols)) }
  21.     prev_day = { c: cols[col_idx[c]-1] for c in cols[1:] }
  22.     def get_prev(r, date):
  23.         return r[date] - (0 if date not in prev_day else r[prev_day[date]])
  24.     return get_prev
  25.  
  26. def province_iterator(apiarg):
  27.     """ Iterator of stats struct formated as API requires of Argentinian provinces. """
  28.     get_prev = get_prev_factory(apiarg.df_provinces)
  29.     for date in apiarg.df_provinces.columns:
  30.         for province_name in apiarg.provinces:
  31.             r_confirmados = apiarg.df_provinces.loc['CONFIRMADOS'].loc[province_name]
  32.             r_muertos = apiarg.df_provinces.loc['MUERTOS'].loc[province_name]
  33.             r_recuperados = apiarg.df_provinces.loc['RECUPERADOS'].loc[province_name]
  34.             entry = {  "fecha": format_date(date),
  35.                        "provincia": province_name.title(),
  36.                        # "ciudad": "",
  37.                        # "departamento":  "",
  38.                        # "zona": "",
  39.                        "confirmados_total": r_confirmados[date],
  40.                        "confirmados_dif": get_prev(r_confirmados,date),
  41.                        "muertes_total": r_muertos[date],
  42.                        "muertes_dif": get_prev(r_muertos,date),
  43.                        "recuperados_total": r_recuperados[date],
  44.                        "recuperados_dif": get_prev(r_recuperados,date),
  45.                        "url": GITHUB_URL
  46.                     }
  47.             yield entry
  48.  
  49. def santafe_departments_iterator(apisafe):
  50.     """ Iterator of stats struct formated as API requires of Santa Fe departments. """
  51.     get_prev = get_prev_factory(apisafe.df_confirmados)
  52.     for date in apisafe.df_confirmados.columns:
  53.         for department in apisafe.departments:
  54.             r_confirmados = apisafe.df_confirmados.loc[department]
  55.             entry = {  "fecha": format_date(date),
  56.                        "provincia": "Santa Fe",
  57.                        # "ciudad": "",
  58.                        "departamento": department[2:].title(),
  59.                        "zona": "Litoral",
  60.                        "confirmados_total": r_confirmados[date],
  61.                        "confirmados_dif": get_prev(r_confirmados,date),
  62.                        # "muertes_total": ,
  63.                        # "muertes_dif": ,
  64.                        # "recuperados_total": ,
  65.                        # "recuperados_dif": ,
  66.                        "url": GITHUB_URL
  67.                     }
  68.             yield entry
  69.  
  70. def santafe_cities_iterator(apisafe):
  71.     """ Iterator of stats struct formated as API requires of Santa Fe cities. """
  72.     get_prev = get_prev_factory(apisafe.df_confirmados)
  73.     for date in apisafe.df_confirmados.columns:
  74.         for city in apisafe.cities:
  75.             r_confirmados = apisafe.df_confirmados.loc[city]
  76.             entry = {  "fecha": format_date(date),
  77.                        "provincia": "Santa Fe",
  78.                        "ciudad": city.title(),
  79.                        "departamento": apisafe.to_department[city][2:].title(),
  80.                        "zona": "Litoral",
  81.                        "confirmados_total": r_confirmados[date],
  82.                        "confirmados_dif": get_prev(r_confirmados,date),
  83.                        # "muertes_total": ,
  84.                        # "muertes_dif": ,
  85.                        # "recuperados_total": ,
  86.                        # "recuperados_dif": ,
  87.                        "url": GITHUB_URL
  88.                     }
  89.             yield entry
  90.  
  91. if __name__ == '__main__':
  92.     apiarg = argentina_api.ArgentinaAPI('./')
  93.     apisafe = santa_fe_api.SantaFeAPI('./')
  94.     provinces_to_api = list(province_iterator(apiarg))
  95.     print('Provinces to API:')
  96.     print('=================')
  97.     pprint.pprint(provinces_to_api[:5])
  98.     print('...')
  99.     pprint.pprint(provinces_to_api[-5:])
  100.     print('')
  101.  
  102.     departments_to_api = list(santafe_departments_iterator(apisafe))
  103.     print('Santa Fe\'s departments to API:')
  104.     print('===============================')
  105.     pprint.pprint(departments_to_api[:5])
  106.     print('...')
  107.     pprint.pprint(departments_to_api[-5:])
  108.     print('')
  109.  
  110.     cities_to_api = list(santafe_cities_iterator(apisafe))
  111.     print('Santa Fe\'s cities to API:')
  112.     print('==========================')
  113.     pprint.pprint(cities_to_api[:5])
  114.     print('...')
  115.     pprint.pprint(cities_to_api[-5:])
  116.     print('')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement