#+TITLE: Incidence annuelle de la varicelle
#+AUTHOR: Émile Jetzer
#+DATE: 2020-05-18
#+LANGUAGE: fr
# #+PROPERTY: header-args :eval never-export
#+HTML_HEAD:
#+HTML_HEAD:
#+HTML_HEAD:
#+HTML_HEAD:
#+HTML_HEAD:
#+HTML_HEAD:
* Incidence annuelle de la varicelle
** Obtention des données
#+NAME: fichier_loin
https://www.sentiweb.fr/datasets/incidence-PAY-7.csv
#+NAME: fichier_local
donnees.csv
#+BEGIN_SRC python :session "Python" :results output :var local=fichier_local loin=fichier_loin :exports none
import pandas as pd
from urllib.request import urlopen
from pathlib import Path
fichier_local = Path(local)
# Pour enlever le fichier local au besoin
# fichier_local.unlink()
if not fichier_local.exists():
print('Le fichier n\'existe pas...')
t = urlopen(loin)
print('Télécharger...')
with fichier_local.open('w') as f:
f.write(t.read().decode('latin-1'))
print('Téléchargé.')
else:
print('Le fichier local existait déjà.')
assert fichier_local.exists()
#+END_SRC
#+RESULTS:
: Le fichier local existait déjà.
:
:
#+BEGIN_SRC python :session "Python" :results value :var local=fichier_local
df = pd.read_csv(local, header=1, usecols=['week', 'inc'], skiprows=0)
df.head()
#+END_SRC
#+RESULTS:
: week inc
: 0 202019 319
: 1 202018 849
: 2 202017 272
: 3 202016 758
: 4 202015 1918
** Préparer les données
#+BEGIN_SRC python :session "Python" :results silent
def année(semaine):
return int(str(semaine)[:4])
assert année('202019')
#+END_SRC
#+BEGIN_SRC python :session "Python" :results output
df.loc[:, 'annee'] = df.week.apply(année)
résumé = df.loc[:, ['annee', 'inc']].groupby('annee').sum()
# S'assurer de compter des années complètes
nbr_semaines = df.groupby('annee').size()
résumé = résumé.loc[nbr_semaines > 50, :]
print(résumé)
#+END_SRC
#+RESULTS:
#+begin_example
inc
annee
1991 656000
1992 843500
1993 593435
1994 660418
1995 654598
1996 632212
1997 624302
1998 785055
1999 646022
2000 646617
2001 563415
2002 589547
2003 678928
2004 850765
2005 654446
2006 557905
2007 778119
2008 738993
2009 875937
2010 766478
2011 642034
2012 676971
2013 658318
2014 648607
2015 649742
2016 730003
2017 556580
2018 561400
2019 540874
>>> >>>
#+end_example
** Obtenir la pire et la meilleure années
#+BEGIN_SRC python :session "Python" :results output
pire_année = résumé.idxmax()
meilleure_année = résumé.idxmin()
print('Pire année:', pire_année)
print('Meilleure année:', meilleure_année)
#+END_SRC
#+RESULTS:
: Pire année: inc 2009
: dtype: int64
: Meilleure année: inc 2019
: dtype: int64
: >>>