Quelle tranche d'age est la plus touchée par le Covid

Ce que les données de l'INSEE révèlent de 2020

Insee vient de sortir la mortalité en France pour l’année 2020. Nous pouvons donc la comparer avec 2018 et 2019 pour définir quelle tranche d’âge est le plus durement touchée par le covid. Il est donc temps de prendre un peu recul sur l’actualité, ne plus regarder les chiffres jours par jour, mais depuis un an.

import pandas as pd
import numpy as np
import scipy as sp
import plotly.figure_factory as ff
import plotly.graph_objects as go
from plotly.offline.offline import plot
from plotly.subplots import make_subplots
from datetime import datetime
def get(year: str):
    df = pd.read_csv(f"deces/DC_{year}_det.csv", sep=";")
    for d in ['DEC', 'NAIS']:
        col = [f"{i}{d}" for i in ["A", "M", "J"]]
        a = df.loc[:, col]
        a.columns = ['year', 'month', 'day']
        a.replace(0, 1, inplace=True)
        df[d] = pd.to_datetime(a)
        df.drop(col, axis=1, inplace=True)
        
    df['AGE'] = (df['DEC'] - df['NAIS']) / pd.Timedelta('365 days')
    return df[df['DEC'] < '2021-01-01'].dropna()
y20 = get("2020")
y19 = get("2019")
y18 = get("2018")
print('2019=', y19.shape[0], '2020=', y20.shape[0])
2019= 609297 2020= 662840
up = (y20.shape[0] - y19.shape[0]) / y19.shape[0]
print('hausse de ', up * 100, '%')
hausse de  8.787668411300237 %

On entends souvent parler de la hausses de 9% des décès en 2020, la hausse est véridique. On est bien passé de 609 297 décès en 2019 à 662 840 en 2020.

Examinons de plus près, INSEE donne la date de naissance et de décès de chaque personne, on peut donc regrouper par mois et retrouver les âges.

tout = pd.concat([y20, y19, y18], axis=0)
groups = [(0, 30, '-30 ans', 'rgb(180,151,231)'),
          (30, 60, '30-60 ans', 'rgb(201,219,116)'), 
          (60, 80, '60-80 ans', 'rgb(246,207,113)'), 
          (80, 150, '+80 ans', 'rgb(102,197,204)')]
data = {}
for low, hight, label, color in groups:
    d = tout.loc[(low <= tout['AGE']) & (tout['AGE'] < hight), 'DEC']
    b = d.dt.year.astype(str) + "-" + d.dt.month.astype(str)
    b = b.value_counts().sort_index()
    b.index = pd.to_datetime(b.index)
    
    data[(label, color)] = b
count = sum(data.values())
count.sort_index(ascending=True, inplace=True)

fig = make_subplots(specs=[[{"secondary_y": True}]])

for (k, c), d in data.items():
        fig.add_trace(go.Bar(name=k, x=d.index, y=d / count * 100, marker_color=c), secondary_y=False,)

fig.add_trace(go.Scatter(name="deces", x=count.index, y=count, marker=dict(color='black')), secondary_y=True)
# Change the bar mode
fig.update_layout(barmode='stack', title="Deces en France par mois")
fig.update_yaxes(title_text="repartition de deces par age (%)", secondary_y=False)
fig.update_yaxes(title_text="nombres de deces", secondary_y=True)

# fig.show()
plot(fig, include_plotlyjs=False, include_mathjax=False, output_type='div')

On voit très nettement les deux vagues de Mars et novembre faisant grimper la mortalité à plus de 65 000 personnes en un seul mois. Pourtant là encore le pic n’est pas spectaculaire, rien qu’en janvier 2018 et 2019, on voit un pic à 60 000 décès en un mois. Le triste record restant à l’épidémie de grippe de janvier 2017 avec 67 000 décès en un mois.

La répartition des décès par tranche d’âges semble constante durant l’épidémie. Nous allons regarder ça de plus près en calculant la variation d’une année à l’autre.

fig = fig = go.Figure()
fig.add_trace(go.Scatter(name="tout", x=count.index, y=count.pct_change(periods=12) * 100, line=dict(color='black', dash='dash')))
fig.add_trace(go.Scatter(x=count.index, y=np.zeros(count.size), line=dict(color='grey'), showlegend=False))
for (k, c), d in data.items():
    d = d.sort_index(ascending=True)
    fig.add_trace(go.Scatter(name=k, x=d.index, y=d.pct_change(periods=12) * 100, line=dict(color=c)))

# Change the bar mode
fig.update_layout(title="Varation deces d'une année à l'autre")
fig.update_yaxes(title_text="en (%)")

# fig.show()
plot(fig, include_plotlyjs=False, include_mathjax=False, output_type='div')

Ce graphique compare chaque mois par rapport au même mois l’année d’avant. On voit très nettement le pic de mortalité. Mais la distinction par âge est frappante. Les plus de 60 ans sont clairement les plus atteint. Les -60 ne représentent aucune sur mortalité durant l’épidémie. Il a même une sous-mortalité pour les -25 ans… Moins d’accidents en voiture peut-être ?

Toujours est-il que les données de l’INSEE permettent de répondre à la question. Le covid tue majoritairement les personnes de 60 ans et plus.