"Les données de l'incidence la varicelle sont disponibles du site Web du Réseau Sentinelles. Nous les récupérons sous forme d'un fichier en format CSV dont chaque ligne correspond à une semaine de la période demandée. Nous téléchargeons toujours le jeu de données complet, qui commence en 1999 semaine 49 et se termine avec une semaine récente : 2022 semaine 6.\n"
"copie des donnés raw_data dans data, sans filtrage car il n'y a pas de données manquantes"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"hideCode": true,
"hidePrompt": true
},
"outputs": [],
"source": [
"data = raw_data.copy()"
]
},
{
"cell_type": "raw",
"metadata": {
"hideCode": true,
"hidePrompt": true
},
"source": [
"Nos données utilisent une convention inhabituelle: le numéro de semaine est collé à l'année, donnant l'impression qu'il s'agit de nombre entier. C'est comme ça que Pandas les interprète.\n",
"\n",
"Un deuxième problème est que Pandas ne comprend pas les numéros de semaine. Il faut lui fournir les dates de début et de fin de semaine. Nous utilisons pour cela la bibliothèque isoweek.\n",
"\n",
"Comme la conversion des semaines est devenu assez complexe, nous écrivons une petite fonction Python pour cela. Ensuite, nous l'appliquons à tous les points de nos donnés. Les résultats vont dans une nouvelle colonne 'period'.\n"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"hideCode": true,
"hidePrompt": true
},
"outputs": [
{
"data": {
"text/plain": [
"1628"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def convert_week(year_and_week_int):\n",
" year_and_week_str = str(year_and_week_int)\n",
" year = int(year_and_week_str[:4])\n",
" week = int(year_and_week_str[4:])\n",
" w = isoweek.Week(year, week)\n",
" return pd.Period(w.day(0), 'W')\n",
"\n",
"data['period'] = [convert_week(yw) for yw in data['week']]\n",
"len(data)"
]
},
{
"cell_type": "raw",
"metadata": {
"hideCode": true,
"hidePrompt": true
},
"source": [
"2 modifications à faire.\n",
"\n",
"Premièrement, nous définissons les périodes d'observation comme nouvel index de notre jeux de données. Ceci en fait une suite chronologique, ce qui sera pratique par la suite.\n",
"\n",
"Deuxièmement, nous trions les points par période, dans le sens chronologique.\n"
"Nous vérifions la cohérence des données. Entre la fin d'une période et le début de la période qui suit, la différence temporelle doit être zéro, ou au moins très faible. Nous laissons une \"marge d'erreur\" d'une seconde.\n",
"Normalement il n'y aura rien."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"hideCode": true,
"hidePrompt": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"cpt = 0\n"
]
}
],
"source": [
"periods = sorted_data.index\n",
"cpt = 0\n",
"for p1, p2 in zip(periods[:-1], periods[1:]):\n",