-
Notifications
You must be signed in to change notification settings - Fork 22
Description
Hola,
el ISCIII publica dos series de datos por provincias:
casos_tecnica_ccaa.csv: Número de casos por técnica diagnóstica y CCAA (de residencia)
https://cnecovid.isciii.es/covid19/resources/casos_tecnica_ccaa.csv
casos_hosp_uci_def_sexo_edad_provres.csv: Número de hospitalizaciones, número de ingresos en UCI y número de defunciones por sexo, edad y provincia de residencia.
https://cnecovid.isciii.es/covid19/resources/casos_hosp_uci_def_sexo_edad_provres.csv
Empecé a hacer gráficas con la primera, ya que lo único que quería era estudiar los casos diagnosticados por fecha y es una tabla mucho más pequeña, pero después empecé a utilizar la segunda para estudiar hospitalizados, uci y fallecidos.
Como en ambas incluyen los casos diagnosticados empecé a utilizar la segunda también para calcular la IA14, IA7 por provincias y me di cuenta que el resultado no era el mismo, así que calculé la diferencias entre ambas series y el resultado es el siguiente:
- Ambas series tienen el mismo número de casos pero distribuidos en los días de forma diferente:

- Las series de cada provincia pasa lo mismo todas las diferencias suman 0, pero también los casos están distribuidos en diferentes días
- Por lo que he visto el ISCIII utiliza la primera serie para calcular las IA por provincias de la web
Aquí tenéis el código en python que he utilizado para comparar la serie completa y por cada una de las provincias.
A ver si alguien puede aportar luz al tema.
Un saludo.
(soy novato en python y es posible que el código se pueda optimizar, por ejemplo incluir los xticks con las fechas en las gráficas)
# -*- coding: utf-8 -*-
"""
Created on Thu Jan 28 12:58:10 2021
@author: Xavi Lluch
"""
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.dates import WeekdayLocator
def graficar(df,tit):
fig, ax = plt.subplots(figsize=(20,8))
df.fecha = df.fecha.apply(lambda x: x.strftime('%d-%b'))
df.plot(kind = 'bar', x='fecha', y='dif', width=0.7, figsize=(15,8), ax=ax)
ax.text(0.2, 0.8, '@xavi_runner', transform=ax.transAxes,fontsize=20, color='gray', alpha=0.3,
ha='center', va='center', rotation='30')
plt.grid(True)
plt.xticks([])
#plt.xticks(fontsize=8, rotation=45)
plt.title(tit,fontsize=18)
plt.show()
def graficarS(df,tit):
fig, ax = plt.subplots(figsize=(15,8))
ax.plot_date(df.fecha, df.num_casos, fmt="g-")
ax.xaxis.set_major_locator(WeekdayLocator())
fig.autofmt_xdate()
plt.xticks(fontsize=8, rotation=45)
ax.text(0.2, 0.8, '@xavi_runner', transform=ax.transAxes,fontsize=20, color='gray', alpha=0.3,
ha='center', va='center', rotation='30')
plt.grid(True)
plt.title(tit,fontsize=18)
plt.savefig("CovidVLC\\" +tit+".png")
plt.show()
URLa = "https://cnecovid.isciii.es/covid19/resources/casos_tecnica_provincia.csv"
URLb = "https://cnecovid.isciii.es/covid19/resources/casos_hosp_uci_def_sexo_edad_provres.csv"
# #provincia_iso sexo grupo_edad fecha num_casos num_hosp num_uci num_def
# fecha_ini = "2020-08-31"
# fecha_fin = "2021-01-26"
dfa = pd.read_csv(URLa,encoding="utf-8")
dfb = pd.read_csv(URLb,encoding="utf-8")
dfa.fecha = pd.to_datetime(dfa.fecha)
dfb.fecha = pd.to_datetime(dfb.fecha)
dfaC = (dfa.groupby("fecha")).num_casos.sum().reset_index()
dfbC = (dfb.groupby("fecha")).num_casos.sum().reset_index()
graficarS(dfaC,"Serie A")
graficarS(dfbC,"Serie B")
difAB = pd.DataFrame(dfaC.fecha)
difAB['dif'] = 0
difAB['dif'] = dfbC.num_casos - dfaC.num_casos
graficar(difAB, "Diferencias entre series")
prov = dfa.provincia_iso.unique().tolist()
prov = [x for x in prov if str(x) != 'nan']
for pr in prov:
dfaC = (dfa[dfa.provincia_iso==pr].groupby("fecha")).num_casos.sum().reset_index()
dfbC = (dfb[dfb.provincia_iso==pr].groupby("fecha")).num_casos.sum().reset_index()
difAB = pd.DataFrame(dfaC.fecha)
difAB['dif'] = 0
difAB['dif'] = dfbC['num_casos'] - dfaC['num_casos']
graficar(difAB, "Diferencias entre series prov: "+pr)
print(difAB.dif.sum())