diff --git a/module2/exo4/exercice_python_fr.org b/module2/exo4/exercice_python_fr.org index c7157ba42216cf2e1d291112bb351ce48811115c..8c6a429bf60eeb2ff0c747d92bb266157f6453cb 100644 --- a/module2/exo4/exercice_python_fr.org +++ b/module2/exo4/exercice_python_fr.org @@ -1,93 +1,85 @@ -#+TITLE: Votre titre -#+AUTHOR: Votre nom -#+DATE: La date du jour -#+LANGUAGE: fr -# #+PROPERTY: header-args :eval never-export - -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: - -* Quelques explications - -Ceci est un document org-mode avec quelques exemples de code -python. Une fois ouvert dans emacs, ce document peut aisément être -exporté au format HTML, PDF, et Office. Pour plus de détails sur -org-mode vous pouvez consulter https://orgmode.org/guide/. +#+begin_src python :results output :exports both :session s1 +import numpy as np +import pandas as pd +values = np.array([14.0, 7.6, 11.2, 12.8, 12.5, 9.9, 14.9, 9.4, 16.9, 10.2, 14.9, 18.1, 7.3, 9.8, 10.9,12.2, 9.9, 2.9, 2.8, 15.4, 15.7, 9.7, 13.1, 13.2, 12.3, 11.7, 16.0, 12.4, 17.9, 12.2, 16.2, 18.7, 8.9, 11.9, 12.1, 14.6, 12.1, 4.7, 3.9, 16.9, 16.8, 11.3, 14.4, 15.7, 14.0, 13.6, 18.0, 13.6, 19.9, 13.7, 17.0, 20.5, 9.9, 12.5, 13.2, 16.1, 13.5, 6.3, 6.4, 17.6, 19.1, 12.8, 15.5, 16.3, 15.2, 14.6, 19.1, 14.4, 21.4, 15.1, 19.6, 21.7, 11.3, 15.0, 14.3, 16.8, 14.0, 6.8, 8.2, 19.9, 20.4, 14.6, 16.4, 18.7, 16.8, 15.8, 20.4, 15.8, 22.4, 16.2, 20.3, 23.4, 12.1, 15.5, 15.4, 18.4, 15.7, 10.2, 8.9, 21.0]) +print(values.shape) +#+end_src -Lorsque vous utiliserez le raccourci =C-c C-e h o=, ce document sera -compilé en html. Tout le code contenu sera ré-exécuté, les résultats -récupérés et inclus dans un document final. Si vous ne souhaitez pas -ré-exécuter tout le code à chaque fois, il vous suffit de supprimer -le # et l'espace qui sont devant le ~#+PROPERTY:~ au début de ce -document. +#+RESULTS: +: (100,) -Comme nous vous l'avons montré dans la vidéo, on inclue du code -python de la façon suivante (et on l'exécute en faisant ~C-c C-c~): +#+begin_src python :results file :session s1 :var matplot_lib_filename=(org-babel-temp-file "figure" ".png") :exports both +import matplotlib.pyplot as plt +plt.figure(figsize=(10,5)) +plt.plot(values) +plt.tight_layout() -#+begin_src python :results output :exports both -print("Hello world!") +plt.savefig(matplot_lib_filename) +matplot_lib_filename #+end_src #+RESULTS: -: Hello world! +[[file:/tmp/babel-ckBwwa/figureT2xwWJ.png]] +Nous allons étudier la saisonnalité des données fournies par le MOOC. +L'idée est de décomposer le signal en une tendance(trend), une +composante saisonnière et des résidus. + +#+begin_src python :results output :exports both :session s1 +import statsmodels.api as sm + +# set arbitrary time index to study seasonality +time_index = pd.date_range('1/1/2000', periods=len(values), freq='D') +series = pd.Series(values, index=time_index) +df = pd.DataFrame({'series': series}) +print(df.head()) +#+end_src -Voici la même chose, mais avec une session python, donc une -persistance d'un bloc à l'autre (et on l'exécute toujours en faisant -~C-c C-c~). -#+begin_src python :results output :session :exports both -import numpy -x=numpy.linspace(-15,15) -print(x) +#+RESULTS: +: series +: 2000-01-01 14.0 +: 2000-01-02 7.6 +: 2000-01-03 11.2 +: 2000-01-04 12.8 +: 2000-01-05 12.5 + +#+begin_src python :results file :var matplot_lib_filename=(org-babel-temp-file "figure" ".png") :exports both :session s1 +res = sm.tsa.seasonal_decompose(df) +resplot = res.plot() +plt.tight_layout() +resplot.savefig(matplot_lib_filename) +matplot_lib_filename #+end_src #+RESULTS: -#+begin_example -[-15. -14.3877551 -13.7755102 -13.16326531 -12.55102041 - -11.93877551 -11.32653061 -10.71428571 -10.10204082 -9.48979592 - -8.87755102 -8.26530612 -7.65306122 -7.04081633 -6.42857143 - -5.81632653 -5.20408163 -4.59183673 -3.97959184 -3.36734694 - -2.75510204 -2.14285714 -1.53061224 -0.91836735 -0.30612245 - 0.30612245 0.91836735 1.53061224 2.14285714 2.75510204 - 3.36734694 3.97959184 4.59183673 5.20408163 5.81632653 - 6.42857143 7.04081633 7.65306122 8.26530612 8.87755102 - 9.48979592 10.10204082 10.71428571 11.32653061 11.93877551 - 12.55102041 13.16326531 13.7755102 14.3877551 15. ] -#+end_example +[[file:/tmp/babel-ckBwwa/figure6n6cj7.png]] -Et enfin, voici un exemple de sortie graphique: -#+begin_src python :results output file :session :var matplot_lib_filename="./cosxsx.png" :exports results -import matplotlib.pyplot as plt +Apparemment, la tendance comporte elle aussi une saisonnalité, +essayons de l'exhiber: -plt.figure(figsize=(10,5)) -plt.plot(x,numpy.cos(x)/x) +#+begin_src python :results file :session s1 :var matplot_lib_filename=(org-babel-temp-file "figure" ".png") :exports both +df_trend = pd.DataFrame({'trend': res.trend.dropna()}) +res_trend = sm.tsa.seasonal_decompose(df_trend) +resplot_trend = res_trend.plot() plt.tight_layout() - -plt.savefig(matplot_lib_filename) -print(matplot_lib_filename) +resplot_trend.savefig(matplot_lib_filename) +matplot_lib_filename #+end_src #+RESULTS: -[[file:./cosxsx.png]] - -Vous remarquerez le paramètre ~:exports results~ qui indique que le code -ne doit pas apparaître dans la version finale du document. Nous vous -recommandons dans le cadre de ce MOOC de ne pas changer ce paramètre -(indiquer ~both~) car l'objectif est que vos analyses de données soient -parfaitement transparentes pour être reproductibles. +[[file:/tmp/babel-ckBwwa/figuresLDoXm.png]] -Attention, la figure ainsi générée n'est pas stockée dans le document -org. C'est un fichier ordinaire, ici nommé ~cosxsx.png~. N'oubliez pas -de le committer si vous voulez que votre analyse soit lisible et -compréhensible sur GitLab. +On observe une belle saisonnalité au sein même de la tendance ! +Il semblerait qu'il existe une tendance linéaire au sein même de la +tendance. Vérifions cela: -Enfin, n'oubliez pas que nous vous fournissons dans les ressources de -ce MOOC une configuration avec un certain nombre de raccourcis -claviers permettant de créer rapidement les blocs de code python (en -faisant ~