PageRenderTime 41ms CodeModel.GetById 13ms RepoModel.GetById 1ms app.codeStats 0ms

/notebooks/python/Devoir2_correction.ipynb

https://gitlab.com/gvallverdu/cours-python
Jupyter | 340 lines | 340 code | 0 blank | 0 comment | 0 complexity | a35ce478c55d57adc0e052e18c658b54 MD5 | raw file
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "markdown",
  5. "metadata": {},
  6. "source": [
  7. "# Correction du Devoir 2 : lecture de données\n",
  8. "\n",
  9. "L'objectif de ce deuxième travail est de valider la partie concernant la syntaxe python.\n",
  10. "\n",
  11. "## Consignes\n",
  12. "\n",
  13. "Vous devez:\n",
  14. "\n",
  15. "* Vérifier que vous maîtrisez les notions abordées dans le notebook concernant la lecture des données.\n",
  16. "* Télécharger le fichier climat_perpignan.csv\n",
  17. "* Lire sur le fichier, la température maximale et l'ensoleillement.\n",
  18. "\n",
  19. "Deux parties sont demandées :\n",
  20. "\n",
  21. "* Lire le fichier par vous même en le parcourant ligne par ligne\n",
  22. "* Utiliser la fonction read_csv() du module pandas pour lire le tableau.\n",
  23. "\n",
  24. "\n",
  25. "## Partie 1 : lecture à la main"
  26. ]
  27. },
  28. {
  29. "cell_type": "code",
  30. "execution_count": 1,
  31. "metadata": {},
  32. "outputs": [
  33. {
  34. "name": "stdout",
  35. "output_type": "stream",
  36. "text": [
  37. "Janvier 12.400 141.200\n",
  38. "Février 13.200 160.800\n",
  39. "Mars 16.000 209.600\n",
  40. "Avril 18.200 218.000\n",
  41. "Mai 21.800 235.800\n",
  42. "Juin 26.200 268.900\n",
  43. "Juillet 29.200 298.200\n",
  44. "Août 28.900 267.400\n",
  45. "Septembre 25.400 222.200\n",
  46. "Octobre 21.000 167.600\n",
  47. "Novembre 15.900 149.200\n",
  48. "Décembre 13.100 126.100\n"
  49. ]
  50. }
  51. ],
  52. "source": [
  53. "# ouverture du fichier en mode lecture \"r\"\n",
  54. "with open(\"climat_perpignan.csv\", \"r\") as f:\n",
  55. " \n",
  56. " # préaration des listes pour enregistrer les valeurs\n",
  57. " temperature_max = list()\n",
  58. " ensoleillement = list()\n",
  59. " \n",
  60. " # lecture des deux premières lignes\n",
  61. " f.readline()\n",
  62. " f.readline()\n",
  63. " \n",
  64. " # boucle sur les lignes du fichier\n",
  65. " for line in f:\n",
  66. " # découpage de la ligne suivant le ;\n",
  67. " valeurs = line.split(\";\")\n",
  68. " \n",
  69. " # on récupère la colonne 2 et 4\n",
  70. " # on remplace la , par un . avec replace\n",
  71. " # on convertit en nombre avec float\n",
  72. " tmax = float(valeurs[2].replace(\",\", \".\"))\n",
  73. " soleil = float(valeurs[4].replace(\",\", \".\"))\n",
  74. " \n",
  75. " # ajout dans les listes \n",
  76. " temperature_max.append(tmax)\n",
  77. " ensoleillement.append(soleil)\n",
  78. " \n",
  79. " # affichage propre des valeurs\n",
  80. " mois = valeurs[0]\n",
  81. " print(f\"{mois:12s} {tmax:8.3f} {soleil:8.3f}\")\n",
  82. " "
  83. ]
  84. },
  85. {
  86. "cell_type": "markdown",
  87. "metadata": {},
  88. "source": [
  89. "On peut afficher le contenu des listes :\n",
  90. "\n",
  91. "##### Température maximale"
  92. ]
  93. },
  94. {
  95. "cell_type": "code",
  96. "execution_count": 2,
  97. "metadata": {},
  98. "outputs": [
  99. {
  100. "data": {
  101. "text/plain": [
  102. "[12.4, 13.2, 16.0, 18.2, 21.8, 26.2, 29.2, 28.9, 25.4, 21.0, 15.9, 13.1]"
  103. ]
  104. },
  105. "execution_count": 2,
  106. "metadata": {},
  107. "output_type": "execute_result"
  108. }
  109. ],
  110. "source": [
  111. "temperature_max"
  112. ]
  113. },
  114. {
  115. "cell_type": "markdown",
  116. "metadata": {},
  117. "source": [
  118. "##### Ensoleillement"
  119. ]
  120. },
  121. {
  122. "cell_type": "code",
  123. "execution_count": 3,
  124. "metadata": {},
  125. "outputs": [
  126. {
  127. "data": {
  128. "text/plain": [
  129. "[141.2,\n",
  130. " 160.8,\n",
  131. " 209.6,\n",
  132. " 218.0,\n",
  133. " 235.8,\n",
  134. " 268.9,\n",
  135. " 298.2,\n",
  136. " 267.4,\n",
  137. " 222.2,\n",
  138. " 167.6,\n",
  139. " 149.2,\n",
  140. " 126.1]"
  141. ]
  142. },
  143. "execution_count": 3,
  144. "metadata": {},
  145. "output_type": "execute_result"
  146. }
  147. ],
  148. "source": [
  149. "ensoleillement"
  150. ]
  151. },
  152. {
  153. "cell_type": "markdown",
  154. "metadata": {},
  155. "source": [
  156. "## Partie 2 : lecture du fichier avec pandas\n",
  157. "\n",
  158. "Il faut commencer par importer le module pandas :"
  159. ]
  160. },
  161. {
  162. "cell_type": "code",
  163. "execution_count": 4,
  164. "metadata": {
  165. "collapsed": true
  166. },
  167. "outputs": [],
  168. "source": [
  169. "import pandas as pd"
  170. ]
  171. },
  172. {
  173. "cell_type": "markdown",
  174. "metadata": {},
  175. "source": [
  176. "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",
  177. "\n",
  178. "* On donne le nom du fichier\n",
  179. "* Le séparateur est un point virgule => `sep`\n",
  180. "* On utilise les colonnes 0, 2 et 4 => `usecolos`\n",
  181. "* On saute la première ligne => `skiprows`\n",
  182. "* Les nombres décimaux sont écris avec une virgule => `decimal`\n",
  183. "* La première colonne est utilisée comme index => `index_col`"
  184. ]
  185. },
  186. {
  187. "cell_type": "code",
  188. "execution_count": 5,
  189. "metadata": {
  190. "collapsed": true
  191. },
  192. "outputs": [],
  193. "source": [
  194. "df = pd.read_csv(\"climat_perpignan.csv\", sep=\";\", usecols=(0, 2, 4), \n",
  195. " skiprows=1, decimal=\",\", index_col=0)"
  196. ]
  197. },
  198. {
  199. "cell_type": "code",
  200. "execution_count": 6,
  201. "metadata": {},
  202. "outputs": [
  203. {
  204. "data": {
  205. "text/html": [
  206. "<div>\n",
  207. "<style>\n",
  208. " .dataframe thead tr:only-child th {\n",
  209. " text-align: right;\n",
  210. " }\n",
  211. "\n",
  212. " .dataframe thead th {\n",
  213. " text-align: left;\n",
  214. " }\n",
  215. "\n",
  216. " .dataframe tbody tr th {\n",
  217. " vertical-align: top;\n",
  218. " }\n",
  219. "</style>\n",
  220. "<table border=\"1\" class=\"dataframe\">\n",
  221. " <thead>\n",
  222. " <tr style=\"text-align: right;\">\n",
  223. " <th></th>\n",
  224. " <th>Température maximale</th>\n",
  225. " <th>Durée d'ensoleillement (h)</th>\n",
  226. " </tr>\n",
  227. " </thead>\n",
  228. " <tbody>\n",
  229. " <tr>\n",
  230. " <th>Janvier</th>\n",
  231. " <td>12.4</td>\n",
  232. " <td>141.2</td>\n",
  233. " </tr>\n",
  234. " <tr>\n",
  235. " <th>Février</th>\n",
  236. " <td>13.2</td>\n",
  237. " <td>160.8</td>\n",
  238. " </tr>\n",
  239. " <tr>\n",
  240. " <th>Mars</th>\n",
  241. " <td>16.0</td>\n",
  242. " <td>209.6</td>\n",
  243. " </tr>\n",
  244. " <tr>\n",
  245. " <th>Avril</th>\n",
  246. " <td>18.2</td>\n",
  247. " <td>218.0</td>\n",
  248. " </tr>\n",
  249. " <tr>\n",
  250. " <th>Mai</th>\n",
  251. " <td>21.8</td>\n",
  252. " <td>235.8</td>\n",
  253. " </tr>\n",
  254. " <tr>\n",
  255. " <th>Juin</th>\n",
  256. " <td>26.2</td>\n",
  257. " <td>268.9</td>\n",
  258. " </tr>\n",
  259. " <tr>\n",
  260. " <th>Juillet</th>\n",
  261. " <td>29.2</td>\n",
  262. " <td>298.2</td>\n",
  263. " </tr>\n",
  264. " <tr>\n",
  265. " <th>Août</th>\n",
  266. " <td>28.9</td>\n",
  267. " <td>267.4</td>\n",
  268. " </tr>\n",
  269. " <tr>\n",
  270. " <th>Septembre</th>\n",
  271. " <td>25.4</td>\n",
  272. " <td>222.2</td>\n",
  273. " </tr>\n",
  274. " <tr>\n",
  275. " <th>Octobre</th>\n",
  276. " <td>21.0</td>\n",
  277. " <td>167.6</td>\n",
  278. " </tr>\n",
  279. " <tr>\n",
  280. " <th>Novembre</th>\n",
  281. " <td>15.9</td>\n",
  282. " <td>149.2</td>\n",
  283. " </tr>\n",
  284. " <tr>\n",
  285. " <th>Décembre</th>\n",
  286. " <td>13.1</td>\n",
  287. " <td>126.1</td>\n",
  288. " </tr>\n",
  289. " </tbody>\n",
  290. "</table>\n",
  291. "</div>"
  292. ],
  293. "text/plain": [
  294. " Température maximale Durée d'ensoleillement (h)\n",
  295. "Janvier 12.4 141.2\n",
  296. "Février 13.2 160.8\n",
  297. "Mars 16.0 209.6\n",
  298. "Avril 18.2 218.0\n",
  299. "Mai 21.8 235.8\n",
  300. "Juin 26.2 268.9\n",
  301. "Juillet 29.2 298.2\n",
  302. "Août 28.9 267.4\n",
  303. "Septembre 25.4 222.2\n",
  304. "Octobre 21.0 167.6\n",
  305. "Novembre 15.9 149.2\n",
  306. "Décembre 13.1 126.1"
  307. ]
  308. },
  309. "execution_count": 6,
  310. "metadata": {},
  311. "output_type": "execute_result"
  312. }
  313. ],
  314. "source": [
  315. "df"
  316. ]
  317. }
  318. ],
  319. "metadata": {
  320. "kernelspec": {
  321. "display_name": "Python 3",
  322. "language": "python",
  323. "name": "python3"
  324. },
  325. "language_info": {
  326. "codemirror_mode": {
  327. "name": "ipython",
  328. "version": 3
  329. },
  330. "file_extension": ".py",
  331. "mimetype": "text/x-python",
  332. "name": "python",
  333. "nbconvert_exporter": "python",
  334. "pygments_lexer": "ipython3",
  335. "version": "3.6.1"
  336. }
  337. },
  338. "nbformat": 4,
  339. "nbformat_minor": 2
  340. }