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
#+TITLE:
Quelques statistiques de bas
e
#+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
desc = DataFrame(i).T.describe()
set_option("display.precision", 2)
#+END_SRC
desc = DataFrame(i).T.describe()
tabulate(desc, headers="keys", tablefmt="orgtbl", floatfmt=".2f")
Malheureusement et étonnamment, org-mode ne fournit pas de moyen rapide
#+END_SRC
d'afficher proprement un DataFrame. Il faut jouer avec la syntaxe org mode pour
arriver à un résultat satisfaisant.
#+RESULTS: describe
#+begin_example
Pour exporter l'index, il est préférable de le passer en colonne.
| | 0 |
|-------+--------|
#+NAME: index_as_column
| count | 1.00 |
#+BEGIN_SRC python :results none :exports code :session 5354d0c3-8cd0-4ba0-a6a3-b6db4565e9df
| mean | 1.00 |
desc = desc.reset_index(level=0)
| std | nan |
#+END_SRC
| min | 1.00 |
| 25% | 1.00 |
Puis, on doit sortir le tableau dans un format que emacs sait interpréter.
| 50% | 1.00 |
| 75% | 1.00 |
#+NAME: fixup_desc
| max | 1.00 |
#+BEGIN_SRC python :results value :exports code :session 5354d0c3-8cd0-4ba0-a6a3-b6db4565e9df
#+end_example
[list(desc)] + [None] + desc.values.tolist()
#+END_SRC
#+CALL: describe(i=input)
#+NAME: code
#+RESULTS:
#+BEGIN_SRC python :results value :exports none :var i=input :noweb yes :session 5354d0c3-8cd0-4ba0-a6a3-b6db4565e9df
#+begin_example
<<describe>>
| | 0 |
<<index_as_column>>
|-------+--------|
<<fixup_desc>>
| count | 100.00 |
#+END_SRC
| mean | 14.11 |
| std | 4.33 |
Enfin, pour afficher les résultats avec 2 chiffres après la virgule, il faut
| min | 2.80 |
jouer avec l'affichage d'emacs. On définit un post processing qui transformera
| 25% | 11.85 |
les nombres en leur équivalent formatté convenablement.
| 50% | 14.50 |
| 75% | 16.80 |
#+NAME: round-tbl
| max | 23.40 |
#+BEGIN_SRC emacs-lisp :export code :var tbl="" fmt="%.3f"
#+end_example
(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