Add a lot of details

parent 88acc073
#+TITLE: Votre titre #+TITLE: Quelques statistiques de base
#+AUTHOR: Votre nom #+AUTHOR: Samuel Loury
#+DATE: La date du jour #+DATE: [2020-06-23 Tue]
#+LANGUAGE: fr #+LANGUAGE: fr
# #+PROPERTY: header-args :eval never-export # #+PROPERTY: header-args :eval never-export
...@@ -15,53 +15,78 @@ ...@@ -15,53 +15,78 @@
** L'entrée ** L'entrée
On considère cette série : On considère cette série :
#+NAME: input #+NAME: input
| 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 | | 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 |
** Les calculs ** Les calculs
:PROPERTIES:
:ID: 5354d0c3-8cd0-4ba0-a6a3-b6db4565e9df
:END:
L'énoncé est « Calculer la moyenne et l'écart-type, le min, la médiane et le max L'énoncé est « Calculer la moyenne et l'écart-type, le min, la médiane et le max
des données suivantes ». des données suivantes ».
Ceci se fait en une seule ligne de code avec pandas. Ceci se fait en une seule ligne de code avec pandas.
#+NAME: describe #+NAME: describe
#+BEGIN_SRC python :results value :var i=[[1]] :exports both :session e4574272-89b0-46a9-878c-dee64eea663b #+BEGIN_SRC python :results value :var i=[[]] :exports code :session 5354d0c3-8cd0-4ba0-a6a3-b6db4565e9df
from pandas import DataFrame, set_option from pandas import DataFrame
from tabulate import tabulate
set_option("display.precision", 2)
desc = DataFrame(i).T.describe() desc = DataFrame(i).T.describe()
tabulate(desc, headers="keys", tablefmt="orgtbl", floatfmt=".2f") #+END_SRC
#+END_SRC
Malheureusement et étonnamment, org-mode ne fournit pas de moyen rapide
#+RESULTS: describe d'afficher proprement un DataFrame. Il faut jouer avec la syntaxe org mode pour
#+begin_example arriver à un résultat satisfaisant.
| | 0 |
|-------+--------| Pour exporter l'index, il est préférable de le passer en colonne.
| count | 1.00 |
| mean | 1.00 | #+NAME: index_as_column
| std | nan | #+BEGIN_SRC python :results none :exports code :session 5354d0c3-8cd0-4ba0-a6a3-b6db4565e9df
| min | 1.00 | desc = desc.reset_index(level=0)
| 25% | 1.00 | #+END_SRC
| 50% | 1.00 |
| 75% | 1.00 | Puis, on doit sortir le tableau dans un format que emacs sait interpréter.
| max | 1.00 |
#+end_example #+NAME: fixup_desc
#+BEGIN_SRC python :results value :exports code :session 5354d0c3-8cd0-4ba0-a6a3-b6db4565e9df
#+CALL: describe(i=input) [list(desc)] + [None] + desc.values.tolist()
#+END_SRC
#+RESULTS:
#+begin_example #+NAME: code
| | 0 | #+BEGIN_SRC python :results value :exports none :var i=input :noweb yes :session 5354d0c3-8cd0-4ba0-a6a3-b6db4565e9df
|-------+--------| <<describe>>
| count | 100.00 | <<index_as_column>>
| mean | 14.11 | <<fixup_desc>>
| std | 4.33 | #+END_SRC
| min | 2.80 |
| 25% | 11.85 | Enfin, pour afficher les résultats avec 2 chiffres après la virgule, il faut
| 50% | 14.50 | jouer avec l'affichage d'emacs. On définit un post processing qui transformera
| 75% | 16.80 | les nombres en leur équivalent formatté convenablement.
| max | 23.40 |
#+end_example #+NAME: round-tbl
#+BEGIN_SRC emacs-lisp :export code :var tbl="" fmt="%.3f"
(mapcar (lambda (row)
(mapcar (lambda (cell)
(if (numberp cell)
(format fmt cell)
cell))
row))
tbl)
#+end_src
On peut maintenant appeler le code et observer le résultat suivant :
#+NAME: results
#+CALL: code(input) :export both :post round-tbl(*this*, "%.2f")
#+RESULTS: results
| count | 100.00 |
| mean | 14.11 |
| std | 4.33 |
| min | 2.80 |
| 25% | 11.85 |
| 50% | 14.50 |
| 75% | 16.80 |
| max | 23.40 |
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment