Skip to content

Diferencias en series del ISCIII #32

@jlluch

Description

@jlluch

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:
    image
  • 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())
    

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions