KaroL3121-web

AD4: conexión con la API de la COVID19 y análisis con Pandas

Me conecto a la API https://api.covid19api.com/

import pandas as pd 

Casos globales de la Covid19

Establezco una variable con el valor de la url.

url = 'https://api.covid19api.com/countries'
url 
'https://api.covid19api.com/countries'

Creo el dataframe

Creamos un dataframe con la función de panda. Luego definimos el dataframe, la estructura de tablas/datos en Phyton y emplearemos la funcion de pd.read_json. Si lo llamo me sale el json en formato de tabla.

df = pd.read_json(url)
df
Country Slug ISO2
0 Gibraltar gibraltar GI
1 Oman oman OM
2 France france FR
3 Jersey jersey JE
4 Mali mali ML
... ... ... ...
243 Puerto Rico puerto-rico PR
244 Papua New Guinea papua-new-guinea PG
245 Saint Pierre and Miquelon saint-pierre-and-miquelon PM
246 Timor-Leste timor-leste TL
247 Montenegro montenegro ME

248 rows × 3 columns

Datos de la covid19 en España

Para que me salgan los datos de España creo una lista nueva donde le indico que el país que voy a seleccionar es == a Spain. Esto gracias a que tengo una lista que se llama Country.

df[df['Country'] == 'Spain']
Country Slug ISO2
141 Spain spain ES

Procedo a buscar los datos de España en tiempo real para lo que defino una url que se llama rt (de real time). También creo el objeto df_rt_es, el cual leerá la información de la url.

url_rt_es = 'https://api.covid19api.com/country/spain/status/confirmed/live'
df_rt_es = pd.read_json(url_rt_es)
df_rt_es
Country CountryCode Province City CityCode Lat Lon Cases Status Date
0 Spain ES 40.46 -3.75 0 confirmed 2020-01-22 00:00:00+00:00
1 Spain ES 40.46 -3.75 0 confirmed 2020-01-23 00:00:00+00:00
2 Spain ES 40.46 -3.75 0 confirmed 2020-01-24 00:00:00+00:00
3 Spain ES 40.46 -3.75 0 confirmed 2020-01-25 00:00:00+00:00
4 Spain ES 40.46 -3.75 0 confirmed 2020-01-26 00:00:00+00:00
... ... ... ... ... ... ... ... ... ... ...
893 Spain ES 40.46 -3.75 12818184 confirmed 2022-07-03 00:00:00+00:00
894 Spain ES 40.46 -3.75 12818184 confirmed 2022-07-04 00:00:00+00:00
895 Spain ES 40.46 -3.75 12890002 confirmed 2022-07-05 00:00:00+00:00
896 Spain ES 40.46 -3.75 12890002 confirmed 2022-07-06 00:00:00+00:00
897 Spain ES 40.46 -3.75 12890002 confirmed 2022-07-07 00:00:00+00:00

898 rows × 10 columns

Casos de España de la parte superior de la tabla de datos

Esta visualización se logra colocando df_rt_es.head()

df_rt_es.head()
Country CountryCode Province City CityCode Lat Lon Cases Status Date
0 Spain ES 40.46 -3.75 0 confirmed 2020-01-22 00:00:00+00:00
1 Spain ES 40.46 -3.75 0 confirmed 2020-01-23 00:00:00+00:00
2 Spain ES 40.46 -3.75 0 confirmed 2020-01-24 00:00:00+00:00
3 Spain ES 40.46 -3.75 0 confirmed 2020-01-25 00:00:00+00:00
4 Spain ES 40.46 -3.75 0 confirmed 2020-01-26 00:00:00+00:00

Casos de España de la parte inferior de la tabla de datos

Esta visualización se logra colocando df_rt_es.tail()

df_rt_es.tail()
Country CountryCode Province City CityCode Lat Lon Cases Status Date
893 Spain ES 40.46 -3.75 12818184 confirmed 2022-07-03 00:00:00+00:00
894 Spain ES 40.46 -3.75 12818184 confirmed 2022-07-04 00:00:00+00:00
895 Spain ES 40.46 -3.75 12890002 confirmed 2022-07-05 00:00:00+00:00
896 Spain ES 40.46 -3.75 12890002 confirmed 2022-07-06 00:00:00+00:00
897 Spain ES 40.46 -3.75 12890002 confirmed 2022-07-07 00:00:00+00:00

Visualización de los casos de covid-19 en España

Para visualizar los casos y fechas de España en una gráfica convierto a fecha en columna de control, estableciendo el tiempo específico que deseo saber, en este caso del 1 de enero de 2020 al 30 de junio de 2022. En esta etapa uso la variable plot_rt_es.

df_rt_es.set_index('Date')['Cases'].plot(title='Casos de Covid19 en España desde 20/1/2020 hasta 30/6/2022')
<AxesSubplot:title={'center':'Casos de Covid19 en España desde 20/1/2020 hasta 30/6/2022'}, xlabel='Date'>

png

url_es = 'https://api.covid19api.com/country/spain/status/confirmed/live'
df_es = pd.read_json(url_es)
df_es
Country CountryCode Province City CityCode Lat Lon Cases Status Date
0 Spain ES 40.46 -3.75 0 confirmed 2020-01-22 00:00:00+00:00
1 Spain ES 40.46 -3.75 0 confirmed 2020-01-23 00:00:00+00:00
2 Spain ES 40.46 -3.75 0 confirmed 2020-01-24 00:00:00+00:00
3 Spain ES 40.46 -3.75 0 confirmed 2020-01-25 00:00:00+00:00
4 Spain ES 40.46 -3.75 0 confirmed 2020-01-26 00:00:00+00:00
... ... ... ... ... ... ... ... ... ... ...
893 Spain ES 40.46 -3.75 12818184 confirmed 2022-07-03 00:00:00+00:00
894 Spain ES 40.46 -3.75 12818184 confirmed 2022-07-04 00:00:00+00:00
895 Spain ES 40.46 -3.75 12890002 confirmed 2022-07-05 00:00:00+00:00
896 Spain ES 40.46 -3.75 12890002 confirmed 2022-07-06 00:00:00+00:00
897 Spain ES 40.46 -3.75 12890002 confirmed 2022-07-07 00:00:00+00:00

898 rows × 10 columns

casos_es = df_es.set_index('Date')['Cases']
casos_es.plot(title='Casos de Covid19 en España')
<AxesSubplot:title={'center':'Casos de Covid19 en España'}, xlabel='Date'>

png

Casos de Covid19 de Panamá

Repetimos el mismo proceso, solo que debemos tener cuidado que los datos sean los de Panamá.

df_es = pd.read_json(url_es)
url_rt_pa = 'https://api.covid19api.com/country/panama/status/confirmed/live'
df_rt_pa = pd.read_json(url_rt_pa)

df_rt_pa
Country CountryCode Province City CityCode Lat Lon Cases Status Date
0 Panama PA 8.54 -80.78 0 confirmed 2020-01-22 00:00:00+00:00
1 Panama PA 8.54 -80.78 0 confirmed 2020-01-23 00:00:00+00:00
2 Panama PA 8.54 -80.78 0 confirmed 2020-01-24 00:00:00+00:00
3 Panama PA 8.54 -80.78 0 confirmed 2020-01-25 00:00:00+00:00
4 Panama PA 8.54 -80.78 0 confirmed 2020-01-26 00:00:00+00:00
... ... ... ... ... ... ... ... ... ... ...
894 Panama PA 8.54 -80.78 925254 confirmed 2022-07-04 00:00:00+00:00
895 Panama PA 8.54 -80.78 925254 confirmed 2022-07-05 00:00:00+00:00
896 Panama PA 8.54 -80.78 925254 confirmed 2022-07-06 00:00:00+00:00
897 Panama PA 8.54 -80.78 925254 confirmed 2022-07-07 00:00:00+00:00
898 Panama PA 8.54 -80.78 925254 confirmed 2022-07-08 00:00:00+00:00

899 rows × 10 columns

casos_pa = df_rt_pa.set_index('Date')['Cases']
casos_pa.plot(title='Casos de Covid19 en Panamá')
<AxesSubplot:title={'center':'Casos de Covid19 en Panamá'}, xlabel='Date'>

png

Ploteamos los países

Es necesario colocar las variables que ya hemos definido para no tener que repetir todo el proceso.

pa_vs_es = pd.concat([casos_es,casos_pa],axis=1)
pa_vs_es
Cases Cases
Date
2020-01-22 00:00:00+00:00 0.0 0
2020-01-23 00:00:00+00:00 0.0 0
2020-01-24 00:00:00+00:00 0.0 0
2020-01-25 00:00:00+00:00 0.0 0
2020-01-26 00:00:00+00:00 0.0 0
... ... ...
2022-07-04 00:00:00+00:00 12818184.0 925254
2022-07-05 00:00:00+00:00 12890002.0 925254
2022-07-06 00:00:00+00:00 12890002.0 925254
2022-07-07 00:00:00+00:00 12890002.0 925254
2022-07-08 00:00:00+00:00 NaN 925254

899 rows × 2 columns

pa_vs_es.columns = ['España','Panamá']
pa_vs_es
España Panamá
Date
2020-01-22 00:00:00+00:00 0.0 0
2020-01-23 00:00:00+00:00 0.0 0
2020-01-24 00:00:00+00:00 0.0 0
2020-01-25 00:00:00+00:00 0.0 0
2020-01-26 00:00:00+00:00 0.0 0
... ... ...
2022-07-04 00:00:00+00:00 12818184.0 925254
2022-07-05 00:00:00+00:00 12890002.0 925254
2022-07-06 00:00:00+00:00 12890002.0 925254
2022-07-07 00:00:00+00:00 12890002.0 925254
2022-07-08 00:00:00+00:00 NaN 925254

899 rows × 2 columns

Gráfica comparativa de los casos de Covid19 en España y Panamá

Ya hemos ploteado los indicadores de ambos países, en primera instacia colocando los casos y luego estableciendo el nombre. Con ellos las líneas de cada país se pueden indentificar con mayor facilidad.

pa_vs_es.plot(title='Comparativa Covid19 España y Panamá')
<AxesSubplot:title={'center':'Comparativa Covid19 España y Panamá'}, xlabel='Date'>

png

Comparativa de casos entre Costa Rica y Panamá

Repetimos nuevamente los pasos, pero en esta ocasión con Costa Rica, con la finalidad de comparar el comportamiento de la pandemia.

url_rt_cr = 'https://api.covid19api.com/country/costa-rica/status/confirmed/live'
df_rt_cr = pd.read_json(url_rt_cr)
casos_cr = df_rt_cr.set_index('Date')['Cases']
pa_vs_cr = pd.concat([casos_cr,casos_pa],axis=1)
pa_vs_cr
Cases Cases
Date
2020-01-22 00:00:00+00:00 0 0
2020-01-23 00:00:00+00:00 0 0
2020-01-24 00:00:00+00:00 0 0
2020-01-25 00:00:00+00:00 0 0
2020-01-26 00:00:00+00:00 0 0
... ... ...
2022-07-04 00:00:00+00:00 904934 925254
2022-07-05 00:00:00+00:00 904934 925254
2022-07-06 00:00:00+00:00 904934 925254
2022-07-07 00:00:00+00:00 904934 925254
2022-07-08 00:00:00+00:00 904934 925254

899 rows × 2 columns

pa_vs_cr.columns = ['Costa Rica','Panamá']
pa_vs_cr
Costa Rica Panamá
Date
2020-01-22 00:00:00+00:00 0 0
2020-01-23 00:00:00+00:00 0 0
2020-01-24 00:00:00+00:00 0 0
2020-01-25 00:00:00+00:00 0 0
2020-01-26 00:00:00+00:00 0 0
... ... ...
2022-07-04 00:00:00+00:00 904934 925254
2022-07-05 00:00:00+00:00 904934 925254
2022-07-06 00:00:00+00:00 904934 925254
2022-07-07 00:00:00+00:00 904934 925254
2022-07-08 00:00:00+00:00 904934 925254

899 rows × 2 columns

pa_vs_cr.plot(title='Comparativa Covid19 Costa Rica y Panamá')
<AxesSubplot:title={'center':'Comparativa Covid19 Costa Rica y Panamá'}, xlabel='Date'>

png

Comparativa con Centroamérica

Los pasos vuelven a ponerse en práctica, pero en esta ocasión con el resto de los países de la región. Es importante cambiar los países para no colocar el de otros y que haya errores.

-Panamá

-Costa Rica

-Nicaragua

-Guatemala

-El Salvador

-Honduras

Gráficas de Panamá vs. el resto de América Central

vs. Honduras
url_rt_hon = 'https://api.covid19api.com/country/honduras/status/confirmed/live'
df_rt_hon = pd.read_json(url_rt_hon)
casos_hon = df_rt_hon.set_index('Date')['Cases']
pa_vs_hon = pd.concat([casos_hon,casos_pa],axis=1)
pa_vs_hon
Cases Cases
Date
2020-01-22 00:00:00+00:00 0 0
2020-01-23 00:00:00+00:00 0 0
2020-01-24 00:00:00+00:00 0 0
2020-01-25 00:00:00+00:00 0 0
2020-01-26 00:00:00+00:00 0 0
... ... ...
2022-07-04 00:00:00+00:00 427718 925254
2022-07-05 00:00:00+00:00 427718 925254
2022-07-06 00:00:00+00:00 427718 925254
2022-07-07 00:00:00+00:00 427718 925254
2022-07-08 00:00:00+00:00 427718 925254

899 rows × 2 columns

pa_vs_hon.columns = ['Honduras','Panamá']
pa_vs_hon
Honduras Panamá
Date
2020-01-22 00:00:00+00:00 0 0
2020-01-23 00:00:00+00:00 0 0
2020-01-24 00:00:00+00:00 0 0
2020-01-25 00:00:00+00:00 0 0
2020-01-26 00:00:00+00:00 0 0
... ... ...
2022-07-04 00:00:00+00:00 427718 925254
2022-07-05 00:00:00+00:00 427718 925254
2022-07-06 00:00:00+00:00 427718 925254
2022-07-07 00:00:00+00:00 427718 925254
2022-07-08 00:00:00+00:00 427718 925254

899 rows × 2 columns

pa_vs_hon.plot(title='Comparativa Covid19 Honduras y Panamá')
<AxesSubplot:title={'center':'Comparativa Covid19 Honduras y Panamá'}, xlabel='Date'>

png

vs. Nicaragua
url_rt_ni = 'https://api.covid19api.com/country/nicaragua/status/confirmed/live'
df_rt_ni = pd.read_json(url_rt_ni)
casos_ni = df_rt_ni.set_index('Date')['Cases']
pa_vs_ni = pd.concat([casos_ni,casos_pa],axis=1)
pa_vs_ni
Cases Cases
Date
2020-01-22 00:00:00+00:00 0 0
2020-01-23 00:00:00+00:00 0 0
2020-01-24 00:00:00+00:00 0 0
2020-01-25 00:00:00+00:00 0 0
2020-01-26 00:00:00+00:00 0 0
... ... ...
2022-07-04 00:00:00+00:00 14690 925254
2022-07-05 00:00:00+00:00 14690 925254
2022-07-06 00:00:00+00:00 14721 925254
2022-07-07 00:00:00+00:00 14721 925254
2022-07-08 00:00:00+00:00 14721 925254

899 rows × 2 columns

pa_vs_ni.columns = ['Nicaragua','Panamá']
pa_vs_ni
Nicaragua Panamá
Date
2020-01-22 00:00:00+00:00 0 0
2020-01-23 00:00:00+00:00 0 0
2020-01-24 00:00:00+00:00 0 0
2020-01-25 00:00:00+00:00 0 0
2020-01-26 00:00:00+00:00 0 0
... ... ...
2022-07-04 00:00:00+00:00 14690 925254
2022-07-05 00:00:00+00:00 14690 925254
2022-07-06 00:00:00+00:00 14721 925254
2022-07-07 00:00:00+00:00 14721 925254
2022-07-08 00:00:00+00:00 14721 925254

899 rows × 2 columns

pa_vs_ni.plot(title='Comparativa Covid19 Nicaragua y Panamá')
<AxesSubplot:title={'center':'Comparativa Covid19 Nicaragua y Panamá'}, xlabel='Date'>

png

vs. Guatemala
url_rt_gua = 'https://api.covid19api.com/country/guatemala/status/confirmed/live'
df_rt_gua = pd.read_json(url_rt_gua)
casos_gua = df_rt_gua.set_index('Date')['Cases']
pa_vs_gua = pd.concat([casos_gua,casos_pa],axis=1)
pa_vs_gua
Cases Cases
Date
2020-01-22 00:00:00+00:00 0 0
2020-01-23 00:00:00+00:00 0 0
2020-01-24 00:00:00+00:00 0 0
2020-01-25 00:00:00+00:00 0 0
2020-01-26 00:00:00+00:00 0 0
... ... ...
2022-07-04 00:00:00+00:00 921146 925254
2022-07-05 00:00:00+00:00 922340 925254
2022-07-06 00:00:00+00:00 927473 925254
2022-07-07 00:00:00+00:00 933259 925254
2022-07-08 00:00:00+00:00 933259 925254

899 rows × 2 columns

pa_vs_gua.columns = ['Guatemala','Panamá']
pa_vs_gua
Guatemala Panamá
Date
2020-01-22 00:00:00+00:00 0 0
2020-01-23 00:00:00+00:00 0 0
2020-01-24 00:00:00+00:00 0 0
2020-01-25 00:00:00+00:00 0 0
2020-01-26 00:00:00+00:00 0 0
... ... ...
2022-07-04 00:00:00+00:00 921146 925254
2022-07-05 00:00:00+00:00 922340 925254
2022-07-06 00:00:00+00:00 927473 925254
2022-07-07 00:00:00+00:00 933259 925254
2022-07-08 00:00:00+00:00 933259 925254

899 rows × 2 columns

pa_vs_gua.plot(title='Comparativa Covid19 Guatemala y Panamá')
<AxesSubplot:title={'center':'Comparativa Covid19 Guatemala y Panamá'}, xlabel='Date'>

png

vs. El Salvador
url_rt_sal = 'https://api.covid19api.com/country/el-salvador/status/confirmed/live'
df_rt_sal = pd.read_json(url_rt_sal)
casos_sal = df_rt_sal.set_index('Date')['Cases']
pa_vs_sal = pd.concat([casos_sal,casos_pa],axis=1)
pa_vs_sal
Cases Cases
Date
2020-01-22 00:00:00+00:00 0 0
2020-01-23 00:00:00+00:00 0 0
2020-01-24 00:00:00+00:00 0 0
2020-01-25 00:00:00+00:00 0 0
2020-01-26 00:00:00+00:00 0 0
... ... ...
2022-07-04 00:00:00+00:00 169646 925254
2022-07-05 00:00:00+00:00 169646 925254
2022-07-06 00:00:00+00:00 169646 925254
2022-07-07 00:00:00+00:00 169646 925254
2022-07-08 00:00:00+00:00 169646 925254

899 rows × 2 columns

pa_vs_sal.columns = ['El Salvador','Panamá']
pa_vs_sal
El Salvador Panamá
Date
2020-01-22 00:00:00+00:00 0 0
2020-01-23 00:00:00+00:00 0 0
2020-01-24 00:00:00+00:00 0 0
2020-01-25 00:00:00+00:00 0 0
2020-01-26 00:00:00+00:00 0 0
... ... ...
2022-07-04 00:00:00+00:00 169646 925254
2022-07-05 00:00:00+00:00 169646 925254
2022-07-06 00:00:00+00:00 169646 925254
2022-07-07 00:00:00+00:00 169646 925254
2022-07-08 00:00:00+00:00 169646 925254

899 rows × 2 columns

pa_vs_sal.plot(title='Comparativa Covid19 El Salvador y Panamá')
<AxesSubplot:title={'center':'Comparativa Covid19 El Salvador y Panamá'}, xlabel='Date'>

png

Comportamiento de la Covid19 en Centro América

Adicional a repetir los pasos, al momento de generar la gráfica final es importante agrupar los contenidos con concatenación y darles un nombre sencillo. En este caso ca incluye los seis países.

df_ca = pd.concat([casos_pa,casos_cr,casos_hon,casos_ni,casos_gua,casos_sal],axis=1)
df_ca
Cases Cases Cases Cases Cases Cases
Date
2020-01-22 00:00:00+00:00 0 0 0 0 0 0
2020-01-23 00:00:00+00:00 0 0 0 0 0 0
2020-01-24 00:00:00+00:00 0 0 0 0 0 0
2020-01-25 00:00:00+00:00 0 0 0 0 0 0
2020-01-26 00:00:00+00:00 0 0 0 0 0 0
... ... ... ... ... ... ...
2022-07-04 00:00:00+00:00 925254 904934 427718 14690 921146 169646
2022-07-05 00:00:00+00:00 925254 904934 427718 14690 922340 169646
2022-07-06 00:00:00+00:00 925254 904934 427718 14721 927473 169646
2022-07-07 00:00:00+00:00 925254 904934 427718 14721 933259 169646
2022-07-08 00:00:00+00:00 925254 904934 427718 14721 933259 169646

899 rows × 6 columns

df_ca.columns = ['Panamá','Costa Rica','Honduras','Nicaragua','Guatemala','El Salvador']
df_ca
Panamá Costa Rica Honduras Nicaragua Guatemala El Salvador
Date
2020-01-22 00:00:00+00:00 0 0 0 0 0 0
2020-01-23 00:00:00+00:00 0 0 0 0 0 0
2020-01-24 00:00:00+00:00 0 0 0 0 0 0
2020-01-25 00:00:00+00:00 0 0 0 0 0 0
2020-01-26 00:00:00+00:00 0 0 0 0 0 0
... ... ... ... ... ... ...
2022-07-04 00:00:00+00:00 925254 904934 427718 14690 921146 169646
2022-07-05 00:00:00+00:00 925254 904934 427718 14690 922340 169646
2022-07-06 00:00:00+00:00 925254 904934 427718 14721 927473 169646
2022-07-07 00:00:00+00:00 925254 904934 427718 14721 933259 169646
2022-07-08 00:00:00+00:00 925254 904934 427718 14721 933259 169646

899 rows × 6 columns

df_ca.plot(title='Comparativa de casos de Covid19 en América Central',logy=True)
<AxesSubplot:title={'center':'Comparativa de casos de Covid19 en América Central'}, xlabel='Date'>

png

¿Cómo ha sido el comportamiento de la covid-19 en América Central?

Para entender el comportamiento de la covid19 en Centroamérica hay que tomar en cuenta el factor político. Este es el caso de Nicaragua, cuyas curvas indican que es el país con menos casos en la región. Sin embargo, hay que considerar que su gobierno fue señalado por esconder los casos y también por no brindar los reportes diarios.

Situación contraria ocurre con Costa Rica y Panamá, en los cuales las cifras se han manejado con mayor transparencia a lo largo de toda la pandemia. Con respecto a los números en Panamá, los contagios han aumentado durante el último año debido a la relajación conferida por la vacunación. La tierra del Canal empezó con la inmunización en enero de 2021 y desde entonces las estrictas medidas se flexibilizaron y la población también comenzó reducir las medidas de cuidado.

Entre los meses de mayo y junio, de acuerdo con datos de la Organización Panamericana de la Salud, Centroamérica fue la única subregión que reportó una tendencia a la baja, con una reducción del 32% de los casos de covid-19 y un descenso del 36% de las muertes.

En este último punto, la estrategia de vacunación ha sido importante debido a que desde que se implementó, el número de fallecimientos se ha reducido considerablemente.

No obstante, los encargados de las instituciones sanitarias de la región recuerdan que la pandemia todavía no se ha terminado y es importante continuar con las medidas de bioseguridad.

Cifras de vacunación en América Central por cada 100,000 habitantes

  1. Costa Rica 209,94
  2. Panamá 190,77
  3. Nicaragua 169,21
  4. El Salvador 167,11
  5. Honduras 143,14
  6. Guatemala 109,84