/notebooks/python/Devoir2_correction.ipynb
Jupyter | 340 lines | 340 code | 0 blank | 0 comment | 0 complexity | a35ce478c55d57adc0e052e18c658b54 MD5 | raw file
- {
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Correction du Devoir 2 : lecture de données\n",
- "\n",
- "L'objectif de ce deuxième travail est de valider la partie concernant la syntaxe python.\n",
- "\n",
- "## Consignes\n",
- "\n",
- "Vous devez:\n",
- "\n",
- "* Vérifier que vous maîtrisez les notions abordées dans le notebook concernant la lecture des données.\n",
- "* Télécharger le fichier climat_perpignan.csv\n",
- "* Lire sur le fichier, la température maximale et l'ensoleillement.\n",
- "\n",
- "Deux parties sont demandées :\n",
- "\n",
- "* Lire le fichier par vous même en le parcourant ligne par ligne\n",
- "* Utiliser la fonction read_csv() du module pandas pour lire le tableau.\n",
- "\n",
- "\n",
- "## Partie 1 : lecture à la main"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Janvier 12.400 141.200\n",
- "Février 13.200 160.800\n",
- "Mars 16.000 209.600\n",
- "Avril 18.200 218.000\n",
- "Mai 21.800 235.800\n",
- "Juin 26.200 268.900\n",
- "Juillet 29.200 298.200\n",
- "Août 28.900 267.400\n",
- "Septembre 25.400 222.200\n",
- "Octobre 21.000 167.600\n",
- "Novembre 15.900 149.200\n",
- "Décembre 13.100 126.100\n"
- ]
- }
- ],
- "source": [
- "# ouverture du fichier en mode lecture \"r\"\n",
- "with open(\"climat_perpignan.csv\", \"r\") as f:\n",
- " \n",
- " # préaration des listes pour enregistrer les valeurs\n",
- " temperature_max = list()\n",
- " ensoleillement = list()\n",
- " \n",
- " # lecture des deux premières lignes\n",
- " f.readline()\n",
- " f.readline()\n",
- " \n",
- " # boucle sur les lignes du fichier\n",
- " for line in f:\n",
- " # découpage de la ligne suivant le ;\n",
- " valeurs = line.split(\";\")\n",
- " \n",
- " # on récupère la colonne 2 et 4\n",
- " # on remplace la , par un . avec replace\n",
- " # on convertit en nombre avec float\n",
- " tmax = float(valeurs[2].replace(\",\", \".\"))\n",
- " soleil = float(valeurs[4].replace(\",\", \".\"))\n",
- " \n",
- " # ajout dans les listes \n",
- " temperature_max.append(tmax)\n",
- " ensoleillement.append(soleil)\n",
- " \n",
- " # affichage propre des valeurs\n",
- " mois = valeurs[0]\n",
- " print(f\"{mois:12s} {tmax:8.3f} {soleil:8.3f}\")\n",
- " "
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "On peut afficher le contenu des listes :\n",
- "\n",
- "##### Température maximale"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[12.4, 13.2, 16.0, 18.2, 21.8, 26.2, 29.2, 28.9, 25.4, 21.0, 15.9, 13.1]"
- ]
- },
- "execution_count": 2,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "temperature_max"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "##### Ensoleillement"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[141.2,\n",
- " 160.8,\n",
- " 209.6,\n",
- " 218.0,\n",
- " 235.8,\n",
- " 268.9,\n",
- " 298.2,\n",
- " 267.4,\n",
- " 222.2,\n",
- " 167.6,\n",
- " 149.2,\n",
- " 126.1]"
- ]
- },
- "execution_count": 3,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "ensoleillement"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Partie 2 : lecture du fichier avec pandas\n",
- "\n",
- "Il faut commencer par importer le module pandas :"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "import pandas as pd"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "On utilise maintenant la fonction [`read_csv()`](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html) de pandas pour lire le fichier. Voici les éléments que l'on indique pour lire le fichier :\n",
- "\n",
- "* On donne le nom du fichier\n",
- "* Le séparateur est un point virgule => `sep`\n",
- "* On utilise les colonnes 0, 2 et 4 => `usecolos`\n",
- "* On saute la première ligne => `skiprows`\n",
- "* Les nombres décimaux sont écris avec une virgule => `decimal`\n",
- "* La première colonne est utilisée comme index => `index_col`"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "df = pd.read_csv(\"climat_perpignan.csv\", sep=\";\", usecols=(0, 2, 4), \n",
- " skiprows=1, decimal=\",\", index_col=0)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "<div>\n",
- "<style>\n",
- " .dataframe thead tr:only-child th {\n",
- " text-align: right;\n",
- " }\n",
- "\n",
- " .dataframe thead th {\n",
- " text-align: left;\n",
- " }\n",
- "\n",
- " .dataframe tbody tr th {\n",
- " vertical-align: top;\n",
- " }\n",
- "</style>\n",
- "<table border=\"1\" class=\"dataframe\">\n",
- " <thead>\n",
- " <tr style=\"text-align: right;\">\n",
- " <th></th>\n",
- " <th>Température maximale</th>\n",
- " <th>Durée d'ensoleillement (h)</th>\n",
- " </tr>\n",
- " </thead>\n",
- " <tbody>\n",
- " <tr>\n",
- " <th>Janvier</th>\n",
- " <td>12.4</td>\n",
- " <td>141.2</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>Février</th>\n",
- " <td>13.2</td>\n",
- " <td>160.8</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>Mars</th>\n",
- " <td>16.0</td>\n",
- " <td>209.6</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>Avril</th>\n",
- " <td>18.2</td>\n",
- " <td>218.0</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>Mai</th>\n",
- " <td>21.8</td>\n",
- " <td>235.8</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>Juin</th>\n",
- " <td>26.2</td>\n",
- " <td>268.9</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>Juillet</th>\n",
- " <td>29.2</td>\n",
- " <td>298.2</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>Août</th>\n",
- " <td>28.9</td>\n",
- " <td>267.4</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>Septembre</th>\n",
- " <td>25.4</td>\n",
- " <td>222.2</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>Octobre</th>\n",
- " <td>21.0</td>\n",
- " <td>167.6</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>Novembre</th>\n",
- " <td>15.9</td>\n",
- " <td>149.2</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>Décembre</th>\n",
- " <td>13.1</td>\n",
- " <td>126.1</td>\n",
- " </tr>\n",
- " </tbody>\n",
- "</table>\n",
- "</div>"
- ],
- "text/plain": [
- " Température maximale Durée d'ensoleillement (h)\n",
- "Janvier 12.4 141.2\n",
- "Février 13.2 160.8\n",
- "Mars 16.0 209.6\n",
- "Avril 18.2 218.0\n",
- "Mai 21.8 235.8\n",
- "Juin 26.2 268.9\n",
- "Juillet 29.2 298.2\n",
- "Août 28.9 267.4\n",
- "Septembre 25.4 222.2\n",
- "Octobre 21.0 167.6\n",
- "Novembre 15.9 149.2\n",
- "Décembre 13.1 126.1"
- ]
- },
- "execution_count": 6,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "df"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.6.1"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
- }