From ecb805eadd1c8022cb551b7445d1ef80aa8432bc Mon Sep 17 00:00:00 2001 From: 39781cc7cca0dc30af9d6060ede9947c <39781cc7cca0dc30af9d6060ede9947c@app-learninglab.inria.fr> Date: Mon, 13 Apr 2020 20:01:22 +0000 Subject: [PATCH] Type de l'index en datetime. Ajout code de validation de la BDD. --- module3/exo3/exercice.ipynb | 156 +++++++++++++++++++++++++++++++++--- 1 file changed, 145 insertions(+), 11 deletions(-) diff --git a/module3/exo3/exercice.ipynb b/module3/exo3/exercice.ipynb index 11bdd2c..2b1d4b8 100644 --- a/module3/exo3/exercice.ipynb +++ b/module3/exo3/exercice.ipynb @@ -83,7 +83,7 @@ "hidePrompt": false }, "source": [ - "### 2. Données" + "### 2. Base de données" ] }, { @@ -134,7 +134,7 @@ "source": [ "# Import des librairies\n", "import pandas as pd\n", - "import matplotlib as plt" + "import matplotlib.pyplot as plt" ] }, { @@ -161,8 +161,13 @@ "# Les lignes de commentaires sont ignorées\n", "# Le séparateur de champs utilisé dans la base de données est la virgule (,)\n", "# La colonne des dates est parsé et mise en index\n", - "data = pd.read_csv('weekly_in_situ_co2_mlo.csv', sep=',', comment='\"', header=None, names=[\"date\", \"CO2\"]\n", - " , parse_dates=['date'])\n", + "date_parser = lambda dates: [pd.datetime.strptime(d, '%Y-%m-%d') for d in dates]\n", + "\n", + "data = pd.read_csv('weekly_in_situ_co2_mlo.csv', sep=',', comment='\"', header=None,\n", + " names=[\"date\", \"CO2\"])\n", + "data['date'] = pd.to_datetime(data['date'], format='%Y-%m-%d')\n", + "\n", + "# Les dates sont passées à l'index du dataframe\n", "data.set_index('date', inplace=True)\n", "data.shape" ] @@ -171,9 +176,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Les 44 premières colonnes de commentaires du fichier brut n'ont pas été prises en compte (commande `comment='\"'`). \n", + "Les 44 premières lignes de commentaires du fichier brut n'ont pas été prises en compte (commande `comment='\"'`). \n", "La base de données est composée de 3156 mesures et de 2 colonnes :\n", - "* date : date de relevé. Un relevé par semaine.\n", + "* date : date de relevé. Avec un relevé par semaine.\n", "* CO2 : concentration de CO2 en *ppm*." ] }, @@ -265,21 +270,21 @@ "hidePrompt": false }, "source": [ - "L'inspection visuelle de la base de données montre que le fichier est bien formé et ne comporte pas de valeurs manquantes ou aberrantes." + "L'inspection visuelle de la base de données complète montre que le fichier est bien formé et ne semble pas comporter pas de valeurs manquantes ou aberrantes." ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 5, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, @@ -298,9 +303,138 @@ ], "source": [ "# Graph de la base de données complètes\n", - "data.plot()" + "data.plot()\n", + "#plt.show()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3. Vérification de la \"structure\" de la base de données" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vérifions tout de même avec un code de validation la robustesse de la base de données. Nous vérifions la présence de valeurs manquantes et le type des variables (date, float)." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "CO2 0\n", + "dtype: int64" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Isolation des lignes comportant des données absentes\n", + "data[pd.isnull(data).any(axis=1)].count()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Il n'y a aucune valeur manquante." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "CO2 float64\n", + "dtype: object" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Vérification du type de la variable CO2\n", + "data.dtypes" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dtype('