Skip to content

Commit

Permalink
Relecture TD2 par Antoine (#418)
Browse files Browse the repository at this point in the history
* relecture 02a_pandas

* typos 2b

* typo

* correction espaces

* oubli

* Update content/manipulation/02b_pandas_TP.qmd

* Update content/manipulation/02b_pandas_TP.qmd

* Update content/modelisation/index.qmd

---------

Co-authored-by: Lino Galiana <lino.galiana@insee.fr>
  • Loading branch information
antoine-palazz and linogaliana committed Oct 9, 2023
1 parent f8831e7 commit a771183
Show file tree
Hide file tree
Showing 34 changed files with 121 additions and 119 deletions.
2 changes: 1 addition & 1 deletion README.md
Expand Up @@ -44,7 +44,7 @@ centralisatrice [`data.gouv`](https://www.data.gouv.fr) ou du site
_web_ de l'[Insee](https://www.insee.fr)) ou de données
américaines.

Un bon complément du contenu du site web est le cours que nous donnons avec Romain Avouac ([@avouacr](https://github.com/avouacr)) en dernière année de l'ENSAE plus tourné autour de la mise en production de projets _data-science_ : [https://ensae-reproductibilite.github.io/website/](https://ensae-reproductibilite.github.io/website/)
Un bon complément du contenu du site web est le cours que nous donnons avec Romain Avouac ([@avouacr](https://github.com/avouacr)) en dernière année de l'ENSAE plus tourné autour de la mise en production de projets _data science_ : [https://ensae-reproductibilite.github.io/website/](https://ensae-reproductibilite.github.io/website/)


<details>
Expand Down
2 changes: 1 addition & 1 deletion content/NLP/01_intro.qmd
Expand Up @@ -400,7 +400,7 @@ des librairies `Python` a extraire du sens d'un texte. La librairie

`NTLK` est la librairie historique d'analyse textuelle en `Python`. Elle existe
depuis les années 1990. L'utilisation industrielle du NLP dans le monde
de la _data-science_ est néanmoins plus récente et doit beaucoup à la collecte
de la _data science_ est néanmoins plus récente et doit beaucoup à la collecte
accrue de données non structurées par les réseaux sociaux. Cela a amené à
un renouvelement du champ du NLP, tant dans le monde de la recherche que dans
sa mise en application dans l'industrie de la donnée.
Expand Down
4 changes: 2 additions & 2 deletions content/NLP/02_exoclean.qmd
Expand Up @@ -520,7 +520,7 @@ liée à son rang $n_i$ dans l'ordre des fréquences par une loi de la forme
$f(n_i) = c/n_i$ où $c$ est une constante. Zipf, dans les années 1930, se basait sur l'oeuvre
de Joyce, *Ulysse* pour cette affirmation.

Plus généralement, on peut dériver la loi de Zipf d'une distribution exponentielle des fréquences: $f(n_i) = cn_{i}^{-k}$. Cela permet d'utiliser la famille des modèles linéaires généralisés, notamment les régressions poissonniennes, pour mesurer les paramètres de la loi. Les modèles linéaire traditionnels en `log` souffrent en effet, dans ce contexte, de biais (la loi de Zipf est un cas particulier d'un modèle gravitaire, où appliquer des OLS est une mauvaise idée, cf. [@galiana2020segregation](https://linogaliana.netlify.app/publication/2020-segregation/) pour les limites).
Plus généralement, on peut dériver la loi de Zipf d'une distribution exponentielle des fréquences : $f(n_i) = cn_{i}^{-k}$. Cela permet d'utiliser la famille des modèles linéaires généralisés, notamment les régressions poissonniennes, pour mesurer les paramètres de la loi. Les modèles linéaire traditionnels en `log` souffrent en effet, dans ce contexte, de biais (la loi de Zipf est un cas particulier d'un modèle gravitaire, où appliquer des OLS est une mauvaise idée, cf. [@galiana2020segregation](https://linogaliana.netlify.app/publication/2020-segregation/) pour les limites).

```{=html}
</div>
Expand Down Expand Up @@ -748,7 +748,7 @@ for word in ["women","daughters", "leaves"]:
<h3 class="alert-heading"><i class="fa-solid fa-comment"></i> Note</h3>
```
Pour disposer du corpus nécessaire à la lemmatisation, il faut, la première fois,
télécharger celui-ci grâce aux commandes suivantes:
télécharger celui-ci grâce aux commandes suivantes :

~~~python
import nltk
Expand Down
2 changes: 1 addition & 1 deletion content/NLP/03_lda.qmd
Expand Up @@ -194,7 +194,7 @@ partie d’une catégorie de modèles appelés _"topic models"_, qui cherchent
thématiques cachées dans des vastes archives de documents.

Ceci permet d’obtenir des méthodes
efficaces pour le traitement et l’organisation des documents de ces archives: organisation automatique
efficaces pour le traitement et l’organisation des documents de ces archives : organisation automatique
des documents par sujet, recherche, compréhension et analyse du texte, ou même résumer des
textes.

Expand Down
2 changes: 1 addition & 1 deletion content/NLP/04_word2vec.qmd
Expand Up @@ -653,7 +653,7 @@ La performance remonte substantiellement.
Cela étant, on ne parvient pas à faire mieux que les approches basiques,
on arrive à peine aux performances de la vectorisation par comptage.

En effet, pour rappel, les performances sont les suivantes:
En effet, pour rappel, les performances sont les suivantes :

```{python}
perfs = pd.DataFrame(
Expand Down
2 changes: 1 addition & 1 deletion content/NLP/05_exo_supp.qmd
Expand Up @@ -113,7 +113,7 @@ df_openfood.iloc[:2, :5]


3. Créer une fonction de nettoyage des noms de produits effectuant les
étapes suivantes:
étapes suivantes :

* tokeniser le texte en question
* retirer la ponctuation et les _stopwords_
Expand Down
8 changes: 4 additions & 4 deletions content/getting-started/01_installation.qmd
Expand Up @@ -6,7 +6,7 @@ weight: 20
slug: "configuration"
type: book
description: |
L'environnement que propose `Python` pour la _data-science_
L'environnement que propose `Python` pour la _data science_
est très riche. Afin de bénéficier du meilleur environnement
pour tirer parti du langage, ce chapitre propose
quelques conseils pour installer un environnement fonctionnel.
Expand Down Expand Up @@ -234,7 +234,7 @@ Les performances de ces solutions peuvent être variables.
Les serveurs publics mis à disposition
ne sont pas forcément des foudres de guerre. Avec ceux-ci,
on vérifie plutôt la reproductibilité des scripts avec des jeux d'exemples.
Il est bien-sûr interdit de mettre des données confidentielles dessus: ces
Il est bien sûr interdit de mettre des données confidentielles dessus: ces
dernières doivent rester dans des infrastructures où elles sont autorisées.

Quand on est dans une entreprise ou administration,
Expand Down Expand Up @@ -310,7 +310,7 @@ du système sur laquelle elle est éxécutée.
`Docker` <i class="fab fa-docker"></i></a> est utilisé dans
le cadre de cours afin d'assurer la reproductibilité des exemples.
Plus de détails sont disponibles dans le cours de dernière année d'ENSAE
dédié à la mise en production de projets data-science
dédié à la mise en production de projets data science
([https://ensae-reproductibilite.github.io/website/](https://ensae-reproductibilite.github.io/website/)).

Il est possible d'utiliser les images `Docker` sur lesquelles reposent
Expand Down Expand Up @@ -350,7 +350,7 @@ langages *open-source*.
Ils sont l'équivalent des packages `R` ou `Stata`.
Le monde de développeurs `Python` est très prolifique :
des mises à jour sont très souvent disponibles,
les bibliothèques de _packages_ sont très nombreuses. Un _data-scientist_
les bibliothèques de _packages_ sont très nombreuses. Un _data scientist_
prendra l'habitude de jongler avec des dizaines de packages dont il connaîtra
quelques fonctions et où, surtout, il saura aller chercher de l'information.
Le rythme des mises à jour et des ajouts de fonctionalités
Expand Down
12 changes: 6 additions & 6 deletions content/getting-started/02_DS_environment.qmd
Expand Up @@ -7,7 +7,7 @@ slug: "ecosystemeDS"
type: book
description: |
`Python` propose un écosystème très riche pour la
_data-science_. Ce chapitre fait un tour
_data science_. Ce chapitre fait un tour
d'horizon de celui-ci en présentant les principaux
_packages_ qui seront présentés dans ce cours.
image: python_panda.jpg
Expand All @@ -30,12 +30,12 @@ data scientist. C'est ce dernier profil qui va ici nous
intéresser.

Le data scientist devant disposer de nombreuses cordes
à son arc. Cela se reflète sur l'écosystème de la _data-science_
à son arc. Cela se reflète sur l'écosystème de la _data science_
qui est assez éclaté. Cependant, ce foisonnement
n'est pas propre à `Python` puisque `R` propose encore plus de
packages que `Python` où un certain nombre de _framework_
normalisés limitent l'éclatement de l'écosystème. De plus,
le foisonnement de l'environnement du _data-scientist_
le foisonnement de l'environnement du _data scientist_
est une véritable opportunité puisqu'elle permet
aux packages de se spécialiser dans un
domaine, où ils sont plus efficaces, et aux concepteurs
Expand All @@ -46,7 +46,7 @@ rapides de la recherche ou de la technologie.



## Les packages python essentiels pour le cours et la vie des _data-scientists_
## Les packages Python essentiels pour le cours et la vie des _data scientists_

![](https://pydsc.files.wordpress.com/2017/11/pythonenvironment.png?w=663)

Expand Down Expand Up @@ -86,7 +86,7 @@ de ce cours lui est consacré.

### `pandas`

Avant tout, un bon _data-scientist_ doit être capable de
Avant tout, un bon _data scientist_ doit être capable de
s'approprier et manipuler des données rapidement. Pour cette raison,
`pandas` est incontournable.
Il gère la plupart des formats de données. Pour être efficace,
Expand Down Expand Up @@ -185,7 +185,7 @@ des langues non anglo-saxonnes, comme le Français.

Mais `Python` est également un outil privilégié pour communiquer:

* Une bonne intégration de python à `Markdown` (grâce notamment à ... `R Markdown`) qui facilite la construction de documents HTML ou PDF (via `Latex`)
* Une bonne intégration de Python à `Markdown` (grâce notamment à ... `R Markdown`) qui facilite la construction de documents HTML ou PDF (via `Latex`)
* [Sphynx](https://www.sphinx-doc.org/en/master/) et [JupyterBook](https://jupyterbook.org/intro.html) proposent des modèles de documentation
très complets
* [`bokeh`](https://bokeh.org/) ou [`streamlit`](https://www.streamlit.io/) comme alternative à [shiny (R)](https://shiny.rstudio.com/)
Expand Down
8 changes: 4 additions & 4 deletions content/getting-started/03_data_analysis.qmd
Expand Up @@ -157,7 +157,7 @@ qu'un graphique standard.


Les Notebooks `Jupyter` ont eu beaucoup de succès dans le monde de
la _data-science_ pour valoriser des travaux. Pourtant il ne s'agit
la _data science_ pour valoriser des travaux. Pourtant il ne s'agit
pas forcément toujours du meilleur format. En effet, beaucoup
de _notebooks_ tentent à empiler des pavés de code et du texte, ce
qui les rend difficilement lisibles.
Expand Down Expand Up @@ -342,7 +342,7 @@ Le numérique constitue une part croissante des
émissions de gaz à effet de serre.
Représentant aujourd'hui 4 % des émissions mondiales
de CO2, cette part devrait encore croître [@arcep2019].
Le monde de la _data-science_ est également
Le monde de la _data science_ est également
concerné.

L'utilisation de données de plus en
Expand Down Expand Up @@ -379,7 +379,7 @@ sont produits lors des prévisualisations mises en
oeuvre à chaque `pull request` sur le dépôt
{{< githubrepo >}}.

Les _data-scientists_ doivent être conscients
Les _data scientists_ doivent être conscients
des implications de leur usage intensif de
ressources et essayer de minimiser leur
impact. Par exemple, plutôt que ré-estimer
Expand All @@ -398,7 +398,7 @@ en fonction du mix énergétique du pays
en question. Mesurer étant le
prérequis pour prendre conscience puis comprendre,
ce type d'initiatives peut amener à responsabiliser
les _data-scientists_ et ainsi permettre un
les _data scientists_ et ainsi permettre un
meilleur partage des ressources.


Expand Down
4 changes: 2 additions & 2 deletions content/getting-started/04_python_practice.qmd
Expand Up @@ -46,7 +46,7 @@ tests/test_advanced.py

Quelques explications et parallèles avec les packages `R`^[1] :

* Le code python est stocké dans un module nommé `monmodule`. C'est le coeur du code dans le projet. Contrairement
* Le code Python est stocké dans un module nommé `monmodule`. C'est le coeur du code dans le projet. Contrairement
à `R`, il est possible d'avoir une arborescence avec plusieurs modules dans un seul package. Un bon exemple
de package dont le fonctionnement adopte une arborescence à plusieurs niveaux est `scikit`
* Le fichier `setup.py` sert à construire le package `monmodule` pour en faire un code utilisable. Il n'est pas
Expand Down Expand Up @@ -109,7 +109,7 @@ retournera une erreur.

Une fois que `modu.py` est trouvé, il sera exécuté dans un environnement isolé (relié de manière cohérente
aux dépendances renseignées) et le résultat rendu disponible à l'interpréteur `Python` pour un usage
dans la session via le *namespace* (espace où python associe les noms donnés aux objets).
dans la session via le *namespace* (espace où Python associe les noms donnés aux objets).

En premier lieu, ne **jamais** utiliser la syntaxe suivante :

Expand Down
2 changes: 1 addition & 1 deletion content/getting-started/05_rappels_types.qmd
Expand Up @@ -506,7 +506,7 @@ l[1:3] # donne les éléments de la 2ème position de la liste à la 4ème exclu
Les listes embarquent ainsi nativement un certain nombre de méthodes
qui sont pratiques. Cependant, pour avoir certaines informations
sur une liste, il faut parfois plutôt passer par
des fonctions natives comme les suivantes:
des fonctions natives comme les suivantes :

```{python}
longueur = len(l) # nombre d’éléments de l
Expand Down
2 changes: 1 addition & 1 deletion content/getting-started/07_rappels_classes.qmd
Expand Up @@ -65,7 +65,7 @@ syntaxe. On retrouvera régulière la syntaxe `objet.method` qui est au coeur
de `Python`. Par exemple `pd.DataFrame.mean` se traduit par
appliquer la méthode `mean` a un objet de type `pd.DataFrame`.

### Quand utilise-t-on cela dans le domaine de la _data-science_ ?
### Quand utilise-t-on cela dans le domaine de la _data science_ ?

Les réseaux de neurone programmés avec `Keras` ou `PyTorch` fonctionnent de
cette manière. On part d'une structure de base et modifie les attributs (par
Expand Down
20 changes: 10 additions & 10 deletions content/getting-started/index.qmd
Expand Up @@ -55,13 +55,13 @@ pas d'un éventail aussi large d'avantages.

Le succès de `Python`, de par sa nature de
langage couteau-suisse, est indissociable
de l'émergence du profil du _data-scientist_, individu
de l'émergence du profil du _data scientist_, individu
capable de s'intégrer à différents niveaux dans la valorisation
de données.
@davenport2012data, dans la _Harvard Business Review_,
ont ainsi pu parler du _"boulot le plus sexy du 21e siècle"_
et ont pu, dix ans plus tard, faire un panorama complet de l'évolution
des compétences attendues d'un _data-scientist_ dans
des compétences attendues d'un _data scientist_ dans
la même revue [@davenport2022data].


Expand All @@ -76,15 +76,15 @@ Ce cours introduit différents outils qui permettent de mettre en relation
des données et des théories grâce à `Python`. Néanmoins, ce cours
va au-delà d'une simple introduction au langage et propose
des éléments plus approfondis, notamment sur les dernières
innovations permises par la _data-science_ dans les méthodes de travail.
innovations permises par la _data science_ dans les méthodes de travail.

## Pourquoi faire du `Python` pour l'analyse de données ?

Le succès de [scikit-learn](https://scikit-learn.org/stable/) et
de [Tensorflow](https://www.tensorflow.org/) dans la communauté
de la *Data-Science* ont beaucoup contribué à l'adoption de `Python`. Cependant,
résumer `Python` à ces quelques librairies serait réducteur tant il s'agit
d'un véritable couteau-suisse pour les *data-scientists*,
d'un véritable couteau-suisse pour les *data scientists*,
les *social scientists* ou les économistes.

L'intérêt de `Python` pour un *data scientist* ou *data economist*
Expand Down Expand Up @@ -119,7 +119,7 @@ Ce site *web*, à l'arborescence relativement complexe, est ainsi
construit grâce à cet outil qui permet à la fois de tester les blocs
de code présentés mais aussi de produire de manière automatisée les
tableaux et graphiques présentés. S'il fallait trouver un point faible
à `Python` par rapport à `R` dans le domaine de la _data-science_
à `Python` par rapport à `R` dans le domaine de la _data science_
c'est sur la production de graphiques. `matplotlib` et `seaborn`, qui sont
présentés dans la partie visualisation, sont d'excellents outils. Néanmoins,
`ggplot2`, l'équivalent en `R` est plus facile de prise en main et
Expand Down Expand Up @@ -168,10 +168,10 @@ Autrement dit,
il présuppose qu'on désire faire un usage intense
de données dans un cadre statistique rigoureux.

La _data-science_ est un ensemble de techniques
La _data science_ est un ensemble de techniques
visant à donner du sens à des sources de données
diverses. Selon les organisations,
les _data-scientists_ peuvent ainsi être à
les _data scientists_ peuvent ainsi être à
l'interface de projets nécessitant un
large spectre de compétences
(analyse
Expand All @@ -184,10 +184,10 @@ _data engineer_...) voire adopter
un peu tous ces rôles.

Les innovations
récentes de la _data-science_ ne se réduisent
récentes de la _data science_ ne se réduisent
néanmoins
pas qu'à des découvertes méthodologiques.
La _data-science_ propose un ensemble de
La _data science_ propose un ensemble de
techniques et de méthodes de travail
pour réduire les coûts de passage
d'un protype à une chaine
Expand Down Expand Up @@ -228,7 +228,7 @@ outil indispensable pour favoriser le partage de codes informatiques,
à savoir `Git`.

L'ensemble du contenu du site *web* est reproductible dans des environnements
informatiques divers. Il est bien-sûr possible de copier-coller les morceaux
informatiques divers. Il est bien sûr possible de copier-coller les morceaux
de code présents dans ce site. Cette méthode montrant rapidement ses limites,
le site présente un certain nombre de boutons disponibles pour
ouvrir la page sous un format `Jupyter Notebook` sur divers
Expand Down
4 changes: 2 additions & 2 deletions content/git/exogit.qmd
Expand Up @@ -65,7 +65,7 @@ qui doit servir quel que soit le langage de prédilection.
L'idée de ce chapitre est d'amener, progressivement, à la mise en oeuvre
de pratiques collaboratives devenues standards dans le domaine de l'_open-source_
mais également de plus en plus communes dans les administrations et entreprises
de la _data-science_.
de la _data science_.

Ce chapitre propose d'utiliser l'extension `Git` de `JupyterLab`.
Un tutoriel présentant cette extension est disponible
Expand Down Expand Up @@ -258,7 +258,7 @@ est d'utiliser un gestionnaire de mot de passe comme
`workflow` si vous désirez que votre jeton soit utilisable pour des projets
où l'intégration continue est nécessaire)

Pour résumer les étapes devraient être les suivantes:
Pour résumer les étapes devraient être les suivantes :

*Settings > Developers Settings > Personal Access Token > Generate a new token > "My bash script" > Expiration "30 days" > cocher juste "repo" > Generate token > Le copier*

Expand Down
4 changes: 2 additions & 2 deletions content/git/introgit.qmd
Expand Up @@ -14,7 +14,7 @@ description: |
`Git` est un système de contrôle de version qui facilite la
sauvegarde, la gestion des évolutions et le partage
d'un projet informatique. Il s'agit d'un élément devenu
indispensable dans le domaine de la _data-science_.
indispensable dans le domaine de la _data science_.
Ce chapitre présente quelques concepts qui seront
mis en pratique dans le suivant.
image: https://ensae-reproductibilite.github.io/website/cards/git/snakedolls.jpg
Expand Down Expand Up @@ -349,7 +349,7 @@ share/python-wheels/
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# Usually these files are written by a Python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
Expand Down
8 changes: 4 additions & 4 deletions content/manipulation/01_numpy.qmd
Expand Up @@ -12,7 +12,7 @@ categories:
slug: "numpy"
type: book
description: |
`Numpy` constitue la brique de base de l'écosystème de la _data-science_ en
`Numpy` constitue la brique de base de l'écosystème de la _data science_ en
`Python`. Toutes les librairies de manipulation de données, de modélisation
et de visualisation reposent, de manière plus ou moins directe, sur `Numpy`.
Il est donc indispensable de revoir quelques notions sur ce package avant
Expand Down Expand Up @@ -150,8 +150,8 @@ np.array([["a","z","e"],["r","t"],["y"]], dtype="object")
Il existe aussi des méthodes pratiques pour créer des array:

* séquences logiques : `np.arange` (suite) ou `np.linspace` (interpolation linéaire entre deux bornes)
* séquences ordonnées: _array_ rempli de zéros, de 1 ou d'un nombre désiré : `np.zeros`, `np.ones` ou `np.full`
* séquences aléatoires: fonctions de génération de nombres aléatoires: `np.rand.uniform`, `np.rand.normal`, etc.
* séquences ordonnées : _array_ rempli de zéros, de 1 ou d'un nombre désiré : `np.zeros`, `np.ones` ou `np.full`
* séquences aléatoires : fonctions de génération de nombres aléatoires : `np.rand.uniform`, `np.rand.normal`, etc.
* tableau sous forme de matrice identité: `np.eye`

Ceci donne ainsi, pour les séquences logiques:
Expand Down Expand Up @@ -848,7 +848,7 @@ Le site 1 est assez central car il est référencé 2 fois. Le site
v
```

D'autres idées:
D'autres idées :

* Simulations de variables aléatoires ;
* TCL ;

0 comments on commit a771183

Please sign in to comment.