Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
mooc-rr
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
014f611535dbfb9da74ce8e723ed1112
mooc-rr
Commits
e27060ed
Unverified
Commit
e27060ed
authored
Jun 23, 2020
by
Samuel Loury
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add a lot of details
parent
88acc073
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
74 additions
and
49 deletions
+74
-49
exercice_python_fr.org
module2/exo2/exercice_python_fr.org
+74
-49
No files found.
module2/exo2/exercice_python_fr.org
View file @
e27060ed
#+TITLE:
Votre titr
e
#+AUTHOR:
Votre nom
#+DATE:
La date du jour
#+TITLE:
Quelques statistiques de bas
e
#+AUTHOR:
Samuel Loury
#+DATE:
[2020-06-23 Tue]
#+LANGUAGE: fr
# #+PROPERTY: header-args :eval never-export
...
...
@@ -15,53 +15,78 @@
** L'entrée
On considère cette série :
On considère cette série :
#+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 |
#+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 |
** 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
des données suivantes ».
Ceci se fait en une seule ligne de code avec pandas.
#+NAME: describe
#+BEGIN_SRC python :results value :var i=[[1]] :exports both :session e4574272-89b0-46a9-878c-dee64eea663b
from pandas import DataFrame, set_option
from tabulate import tabulate
set_option("display.precision", 2)
desc = DataFrame(i).T.describe()
tabulate(desc, headers="keys", tablefmt="orgtbl", floatfmt=".2f")
#+END_SRC
#+RESULTS: describe
#+begin_example
| | 0 |
|-------+--------|
| count | 1.00 |
| mean | 1.00 |
| std | nan |
| min | 1.00 |
| 25% | 1.00 |
| 50% | 1.00 |
| 75% | 1.00 |
| max | 1.00 |
#+end_example
#+CALL: describe(i=input)
#+RESULTS:
#+begin_example
| | 0 |
|-------+--------|
| count | 100.00 |
| mean | 14.11 |
| std | 4.33 |
| min | 2.80 |
| 25% | 11.85 |
| 50% | 14.50 |
| 75% | 16.80 |
| max | 23.40 |
#+end_example
L'énoncé est « Calculer la moyenne et l'écart-type, le min, la médiane et le max
des données suivantes ».
Ceci se fait en une seule ligne de code avec pandas.
#+NAME: describe
#+BEGIN_SRC python :results value :var i=[[]] :exports code :session 5354d0c3-8cd0-4ba0-a6a3-b6db4565e9df
from pandas import DataFrame
desc = DataFrame(i).T.describe()
#+END_SRC
Malheureusement et étonnamment, org-mode ne fournit pas de moyen rapide
d'afficher proprement un DataFrame. Il faut jouer avec la syntaxe org mode pour
arriver à un résultat satisfaisant.
Pour exporter l'index, il est préférable de le passer en colonne.
#+NAME: index_as_column
#+BEGIN_SRC python :results none :exports code :session 5354d0c3-8cd0-4ba0-a6a3-b6db4565e9df
desc = desc.reset_index(level=0)
#+END_SRC
Puis, on doit sortir le tableau dans un format que emacs sait interpréter.
#+NAME: fixup_desc
#+BEGIN_SRC python :results value :exports code :session 5354d0c3-8cd0-4ba0-a6a3-b6db4565e9df
[list(desc)] + [None] + desc.values.tolist()
#+END_SRC
#+NAME: code
#+BEGIN_SRC python :results value :exports none :var i=input :noweb yes :session 5354d0c3-8cd0-4ba0-a6a3-b6db4565e9df
<<describe>>
<<index_as_column>>
<<fixup_desc>>
#+END_SRC
Enfin, pour afficher les résultats avec 2 chiffres après la virgule, il faut
jouer avec l'affichage d'emacs. On définit un post processing qui transformera
les nombres en leur équivalent formatté convenablement.
#+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 |
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment