INSEE : Nombre de mort par tranche d’age

J’ai donc fait un nouveau graphique, du nombre de mort par tranche d’age avec les données de l’INSEE. (Tranche de 10 ans)

Le graphique est faux sur la fin 2020, il ne sera juste que vers mi-fevrier 2021. Quand l’INSEE aura publié les données.

Voici donc mon process :

Etape 1 : Téléchargement des données de l’INSEE : https://www.insee.fr/fr/information/4190491

Etape 2 : je mets tout sur un même fichier:

# cat deces-* Deces_2020_M* | grep -v "nomprenom" > Full.csv
# wc -l Full.csv 
  25528867 Full.csv

Etape 3 : Je fais tourner un premier programme en Python :

# cat parse2.py 
import csv
import datetime
from dateutil.relativedelta import relativedelta

with open('Full.csv', 'rt') as f:
    csv_reader = csv.reader(f, quotechar='"', delimiter=';', quoting=csv.QUOTE_ALL, skipinitialspace=True)

    for line in csv_reader:
        #print(line[2])
        if (len(line[2]) == 8) and (not (str(line[2]).endswith("00"))):
            try:
               start_date = datetime.datetime.strptime(line[2],"%Y%m%d");
            except:
               print("error1",line[2])
        #print(line[6])
        if (len(line[6]) == 8) and (not (str(line[6]).endswith("00"))):
             try:
               end_date = datetime.datetime.strptime(line[6],"%Y%m%d");
               age = relativedelta(end_date, start_date).years
               #print(line[6])
               year = end_date.year
               month = end_date.month
               if  age <= 10:
                   print year,",",month,", 0to10"
               if 10 < age <= 20:
                   print year,",",month,", 10to20"
               if 20 < age <= 30:
                   print year,",",month,", 20to30"
               if 30 < age <= 40:
                   print year,",",month,", 30to40"
               if 40 < age <= 50:
                   print year,",",month,", 40to50"
               if 50 < age <= 60:
                   print year,",",month,", 50to60"
               if 60 < age <= 70:
                   print year,",",month,", 60to70"
               if 70 < age <= 80:
                   print year,",",month,", 70to80"
               if 80 < age <= 90:
                   print year,",",month,", 80to90"
               if 90 < age : print year,",",month,", more90" except: print("error2",line[6]) # python parse2.py > age2.csv

Etape 4 : J’ordonne et je fais le ménage (je garde que les année 20xx):

# cat clear.bash 

cat age2.csv | grep -v "error" | sort -n | uniq -c > sort-age2.csv
echo "Date,Number" > 0to10.csv
grep "0to10" sort-age2.csv | awk '{if ($4 > 9) {print  $2 "-" $4 "," $1 ;} else if ($4 < 10) {print $2 "-0" $4 "," $1 ;} }' | grep "^20" | sort -n >> 0to10.csv
echo "Date,Number" > 10to20.csv
grep "10to20" sort-age2.csv  | awk '{if ($4 > 9) {print  $2 "-" $4 "," $1 ;} else if ($4 < 10) {print $2 "-0" $4 "," $1 ;} }' | grep "^20" | sort -n >> 10to20.csv
echo "Date,Number" > 20to30.csv
grep "20to30" sort-age2.csv | awk '{if ($4 > 9) {print  $2 "-" $4 "," $1 ;} else if ($4 < 10) {print $2 "-0" $4 "," $1 ;} }' | grep "^20" | sort -n >> 20to30.csv
echo "Date,Number" > 30to40.csv
grep "30to40" sort-age2.csv | awk '{if ($4 > 9) {print  $2 "-" $4 "," $1 ;} else if ($4 < 10) {print $2 "-0" $4 "," $1 ;} }' | grep "^20" | sort -n >> 30to40.csv
echo "Date,Number" > 40to50.csv
grep "40to50" sort-age2.csv | awk '{if ($4 > 9) {print  $2 "-" $4 "," $1 ;} else if ($4 < 10) {print $2 "-0" $4 "," $1 ;} }' | grep "^20" | sort -n >> 40to50.csv
echo "Date,Number" > 50to60.csv
grep "50to60" sort-age2.csv | awk '{if ($4 > 9) {print  $2 "-" $4 "," $1 ;} else if ($4 < 10) {print $2 "-0" $4 "," $1 ;} }' | grep "^20" | sort -n >> 50to60.csv
echo "Date,Number" > 60to70.csv
grep "60to70" sort-age2.csv | awk '{if ($4 > 9) {print  $2 "-" $4 "," $1 ;} else if ($4 < 10) {print $2 "-0" $4 "," $1 ;} }' | grep "^20" | sort -n >> 60to70.csv
echo "Date,Number" > 70to80.csv
grep "70to80" sort-age2.csv | awk '{if ($4 > 9) {print  $2 "-" $4 "," $1 ;} else if ($4 < 10) {print $2 "-0" $4 "," $1 ;} }' | grep "^20" | sort -n >> 70to80.csv
echo "Date,Number" > 80to90.csv
grep "80to90" sort-age2.csv | awk '{if ($4 > 9) {print  $2 "-" $4 "," $1 ;} else if ($4 < 10) {print $2 "-0" $4 "," $1 ;} }' | grep "^20" | sort -n >> 80to90.csv
echo "Date,Number" > more90.csv
grep "more90" sort-age2.csv | awk '{if ($4 > 9) {print  $2 "-" $4 "," $1 ;} else if ($4 < 10) {print $2 "-0" $4 "," $1 ;} }' | grep "^20" | sort -n >> more90.csv

# ./clear.bash

Ou bien je garde uniquement > 1975 avec clear2.bash

 

cat clear2.bash 

cat age2.csv | grep -v "error" | sort -n | uniq -c > sort-age2.csv
echo "Date,Number" > 0to10.csv
grep "0to10" sort-age2.csv | awk '{if ($2 > 1975) {if ($4 > 9) {print  $2 "-" $4 "," $1 ;} else if ($4 < 10) {print  $2 "-0" $4 "," $1 ;}} }'  | sort -n >> 0to10.csv
echo "Date,Number" > 10to20.csv
grep "10to20" sort-age2.csv  | awk '{if ($2 > 1975) {if ($4 > 9) {print  $2 "-" $4 "," $1 ;} else if ($4 < 10) {print  $2 "-0" $4 "," $1 ;}} }' | sort -n >> 10to20.csv
echo "Date,Number" > 20to30.csv
grep "20to30" sort-age2.csv | awk '{if ($2 > 1975) {if ($4 > 9) {print  $2 "-" $4 "," $1 ;} else if ($4 < 10) {print  $2 "-0" $4 "," $1 ;}} }' | sort -n >> 20to30.csv
echo "Date,Number" > 30to40.csv
grep "30to40" sort-age2.csv | awk '{if ($2 > 1975) {if ($4 > 9) {print  $2 "-" $4 "," $1 ;} else if ($4 < 10) {print  $2 "-0" $4 "," $1 ;}} }' | sort -n >> 30to40.csv
echo "Date,Number" > 40to50.csv
grep "40to50" sort-age2.csv | awk '{if ($2 > 1975) {if ($4 > 9) {print  $2 "-" $4 "," $1 ;} else if ($4 < 10) {print  $2 "-0" $4 "," $1 ;}} }'  | sort -n >> 40to50.csv
echo "Date,Number" > 50to60.csv
grep "50to60" sort-age2.csv | awk '{if ($2 > 1975) {if ($4 > 9) {print  $2 "-" $4 "," $1 ;} else if ($4 < 10) {print  $2 "-0" $4 "," $1 ;}} }'  | sort -n >> 50to60.csv
echo "Date,Number" > 60to70.csv
grep "60to70" sort-age2.csv | awk '{if ($2 > 1975) {if ($4 > 9) {print  $2 "-" $4 "," $1 ;} else if ($4 < 10) {print  $2 "-0" $4 "," $1 ;}} }' | sort -n >> 60to70.csv
echo "Date,Number" > 70to80.csv
grep "70to80" sort-age2.csv | awk '{if ($2 > 1975) {if ($4 > 9) {print  $2 "-" $4 "," $1 ;} else if ($4 < 10) {print  $2 "-0" $4 "," $1 ;}} }' | sort -n >> 70to80.csv
echo "Date,Number" > 80to90.csv
grep "80to90" sort-age2.csv | awk '{if ($2 > 1975) {if ($4 > 9) {print  $2 "-" $4 "," $1 ;} else if ($4 < 10) {print  $2 "-0" $4 "," $1 ;}} }'  | sort -n >> 80to90.csv
echo "Date,Number" > more90.csv
grep "more90" sort-age2.csv | awk '{if ($2 > 1975) {if ($4 > 9) {print  $2 "-" $4 "," $1 ;} else if ($4 < 10) {print  $2 "-0" $4 "," $1 ;}} }'  | sort -n >> more90.csv

Etape 5 : Je dessine :

# cat draw2.py 
import plotly.graph_objects as go

import pandas as pd

fig = go.Figure()

df = pd.read_csv('./0to10.csv')
fig.add_trace(go.Scatter(x=df['Date'], y=df['Number'],name='10 to 20'))

df2 = pd.read_csv('./10to20.csv')
fig.add_trace(go.Scatter(x=df2['Date'], y=df2['Number'],name='10 to 20'))

df3 = pd.read_csv('./20to30.csv')
fig.add_trace(go.Scatter(x=df3['Date'], y=df3['Number'],name='20 to 30'))

df4 = pd.read_csv('./30to40.csv')
fig.add_trace(go.Scatter(x=df4['Date'], y=df4['Number'],name='30 to 40'))

df5 = pd.read_csv('./40to50.csv')
fig.add_trace(go.Scatter(x=df5['Date'], y=df5['Number'],name='40 to 50'))

df6 = pd.read_csv('./50to60.csv')
fig.add_trace(go.Scatter(x=df6['Date'], y=df6['Number'],name='50 to 60'))

df7 = pd.read_csv('./60to70.csv')
fig.add_trace(go.Scatter(x=df7['Date'], y=df7['Number'],name='60 to 70'))

df8 = pd.read_csv('./70to80.csv')
fig.add_trace(go.Scatter(x=df8['Date'], y=df8['Number'],name='70 to 80'))

df9 = pd.read_csv('./80to90.csv')
fig.add_trace(go.Scatter(x=df9['Date'], y=df9['Number'],name='80 to 90'))

df10 = pd.read_csv('./more90.csv')
fig.add_trace(go.Scatter(x=df10['Date'], y=df10['Number'],name='more 90'))


fig.show()

#  python3 draw2.py

Le résultat, j’ai un problème sur décembre 1989 :

INSEE : Espérance de vie des personnes nées sur Biot

J’ai donc obtenu ce graphique :

Le record est donc de 105 ans pour MARIE JEANNE.

Le nombre de décès par mois sur Biot :

  2017 2018 2019 2020
Janvier 5 3 4 4
Février 0 2 5 3
Mars 2 5 3 3
Avril 7 7 2 2
Mai 4 0 2 1
Juin 2 1 2 1
Juillet 7 5 0 1
Aout 4 5 1 6
Septembre 2 2 3 2
Octobre 2 5 3
Novembre 4 3 5
Décembre 3 3 2
TOTAL 42 41 32 23

Je crois que j’ai fini d’esploiter les données de l’INSEE.

INSEE : Nombre de décés par mois dans les Alpes-Maritimes

Voici ce que j’ai obtenu (suite au téléchargement des fichier CSV de l’INSEE voir https://www.cyber-neurones.org/2020/10/insee-fichiers-des-personnes-decedees-depuis-1970/ ) :

  2017 2018 2019 2020
Janvier 1410 1325 1190 1178
Février 1049 1032 1143 1013
Mars 1077 1146 1083 1160
Avril 925 953 962 1073
Mai 999 916 933 935
Juin 925 908 913 870
Juillet 968 968 1004 918
Aout 953 1043 964 979
TOTAL 8306 8291 8192 8126
Septembre 945 900 1035 839 (pas complet)
Octobre 1045 1003 992
Novembre 1043 1003 1002
Décembre 1198 1025 1113
TOTAL 12537 12222 12334

On a bien une augmentation en Mars (+7,11%) et Avril (+11,54%), mais c’est compensé par une diminution en février et juillet. Mais les données sont provisoire, les données seront consolidés 3 ou 4 mois après. Le mieux est donc d’attendre avant de faire des analyses.

Il faut lire aussi https://www.santepubliquefrance.fr/content/download/217396/document_file/bsp_epidemie_hivernale_paca_decembre_2019.pdf pour comprendre l’augmentation en Février 2019.

Sur Nice :

NICE 2017 2018 2019 2020
Janvier 575 519 450 455
Février 390 396 449 397
Mars 425 463 431 440
Avril 329 368 375 453
Mai 403 367 331 335
Juin 368 365 373 366
Juillet 386 374 412 344
Aout 367 403 389 370
TOTAL 3243 3255 3210 3160
Septembre 380 340 415 326 (pas complet)
Octobre 387 376 379
Novembre 409 382 374
Décembre 470 420 391
TOTAL 4889 4773 4769

Sur Antibes :

ANTIBES 2017 2018 2019 2020
Janvier 126 123 122 132
Février 120 115 125 108
Mars 113 117 132 128
Avril 89 103 104 91
Mai 99 99 92 93
Juin 97 89 91 88
Juillet 96 110 87 113
Aout 89 109 105 93
TOTAL 829 865 858 846
Septembre 115 87 94 77 (pas complet)
Octobre 110 98 99
Novembre 95 97 110
Décembre 123 108 133

INSEE : Nombre de décés par mois en France et faux tableaux sur Facebook (suite)

J’ai donc modifié le programme enfin d’avoir les mêmes dates que le tableaux faux sur facebook :

Voici donc mon programme :


MyDate=("201701" "201702" "201703" "201704" "201705" "201706" "201707" "201708" "201709" "201710" "201711" "201712" "201801" "201802" "201803" "201804" "201805" "201806" "201807" "201808" "201809" "201810" "201811" "201812" "201901" "201902" "201903" "201904" "201905" "201906" "201907" "201908" "201909" "201910" "201911" "201912" "202001" "202002" "202003" "202004" "202005" "202006" "202007" "202008" "202009")

for TheDate in ${MyDate[@]}; do
  declare sum_$TheDate=0
done
for entry in *.csv
do
  echo "$entry"
  for TheDate in ${MyDate[@]}; do
	touch temp.dat
  	cat $entry | grep -v "sexe" | sed 's/""/"-"/g'| awk -F'\";\"'  '{print substr($7,1, 6)}' | sort -n | uniq -c | grep $TheDate | awk '{print $1}' > temp.dat
  	declare current_$TheDate=$(cat temp.dat)
	varname=current_$TheDate
	varname2=sum_$TheDate
	if [ ${!varname} > 0 ]
  	then
		echo "In file $entry (dead $TheDate) : ${!varname}"
          	let "${varname2}=${!varname2}+${!varname}"
  	fi
   done
done
for TheDate in ${MyDate[@]}; do
	varname=sum_$TheDate
	echo "Sum dead $TheDate : ${!varname} "
done

Voici donc les données Brutes et le temps pour l’exécution du script :

$ time ./find.bash

...

real	41m20,200s
user	66m12,488s
sys	4m47,886s

Mon tableau :

Voici donc les différences avec le tableau sur Facebook :

Bref, Facebook une source intense de désinformation et de tracing marketing. Misère. En plus de cela sur septembre 2019 je ne dois avoir que 80% des données, il doit donc « manquer » presque 8000 noms. L’explication est la suivante :

Il faut bien comprendre que si je prends le mois de Janvier, sur Janvier on avait 81% des données dans le fichier de Janvier. Et au fils du temps les données ont été consolidées de la façon suivante:

Mise à jours fait 29/10/2020 : Lire l’article : https://www.liberation.fr/checknews/2020/10/29/les-donnees-de-l-insee-montrent-elles-vraiment-qu-il-n-y-a-pas-eu-de-surmortalite-liee-au-covid_1803730 : Les données de l’Insee montrent-elles vraiment qu’il n’y a pas eu de surmortalité liée au Covid ?