diff --git a/README.md b/README.md index 05cef0881..869d20819 100644 --- a/README.md +++ b/README.md @@ -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/)
diff --git a/content/NLP/01_intro.qmd b/content/NLP/01_intro.qmd index e990904fb..b988d15cc 100644 --- a/content/NLP/01_intro.qmd +++ b/content/NLP/01_intro.qmd @@ -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. diff --git a/content/NLP/02_exoclean.qmd b/content/NLP/02_exoclean.qmd index f5b227b4b..6b2bd86a4 100644 --- a/content/NLP/02_exoclean.qmd +++ b/content/NLP/02_exoclean.qmd @@ -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} @@ -748,7 +748,7 @@ for word in ["women","daughters", "leaves"]:

Note

``` 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 diff --git a/content/NLP/03_lda.qmd b/content/NLP/03_lda.qmd index 2a4b80a27..ef0c42ac4 100644 --- a/content/NLP/03_lda.qmd +++ b/content/NLP/03_lda.qmd @@ -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. diff --git a/content/NLP/04_word2vec.qmd b/content/NLP/04_word2vec.qmd index 998d6213a..113668a6b 100644 --- a/content/NLP/04_word2vec.qmd +++ b/content/NLP/04_word2vec.qmd @@ -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( diff --git a/content/NLP/05_exo_supp.qmd b/content/NLP/05_exo_supp.qmd index a0804a55f..4f772ba62 100644 --- a/content/NLP/05_exo_supp.qmd +++ b/content/NLP/05_exo_supp.qmd @@ -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_ diff --git a/content/getting-started/01_installation.qmd b/content/getting-started/01_installation.qmd index 303a4d4d6..06f80726d 100644 --- a/content/getting-started/01_installation.qmd +++ b/content/getting-started/01_installation.qmd @@ -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. @@ -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, @@ -310,7 +310,7 @@ du système sur laquelle elle est éxécutée. `Docker` 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 @@ -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 diff --git a/content/getting-started/02_DS_environment.qmd b/content/getting-started/02_DS_environment.qmd index 7a4991822..39c53d6bf 100644 --- a/content/getting-started/02_DS_environment.qmd +++ b/content/getting-started/02_DS_environment.qmd @@ -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 @@ -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 @@ -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) @@ -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, @@ -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/) diff --git a/content/getting-started/03_data_analysis.qmd b/content/getting-started/03_data_analysis.qmd index 0fc43038c..31a177aa3 100644 --- a/content/getting-started/03_data_analysis.qmd +++ b/content/getting-started/03_data_analysis.qmd @@ -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. @@ -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 @@ -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 @@ -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. diff --git a/content/getting-started/04_python_practice.qmd b/content/getting-started/04_python_practice.qmd index ded41fbbc..c3033588f 100644 --- a/content/getting-started/04_python_practice.qmd +++ b/content/getting-started/04_python_practice.qmd @@ -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 @@ -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 : diff --git a/content/getting-started/05_rappels_types.qmd b/content/getting-started/05_rappels_types.qmd index c6cb1a58c..0ba339f8b 100644 --- a/content/getting-started/05_rappels_types.qmd +++ b/content/getting-started/05_rappels_types.qmd @@ -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 diff --git a/content/getting-started/07_rappels_classes.qmd b/content/getting-started/07_rappels_classes.qmd index 783f29bee..057db8a4d 100644 --- a/content/getting-started/07_rappels_classes.qmd +++ b/content/getting-started/07_rappels_classes.qmd @@ -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 diff --git a/content/getting-started/index.qmd b/content/getting-started/index.qmd index 053657985..27ebb46e6 100644 --- a/content/getting-started/index.qmd +++ b/content/getting-started/index.qmd @@ -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]. @@ -76,7 +76,7 @@ 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 ? @@ -84,7 +84,7 @@ 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* @@ -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 @@ -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 @@ -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 @@ -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 diff --git a/content/git/exogit.qmd b/content/git/exogit.qmd index ae92623aa..8229584a8 100644 --- a/content/git/exogit.qmd +++ b/content/git/exogit.qmd @@ -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 @@ -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* diff --git a/content/git/introgit.qmd b/content/git/introgit.qmd index 842cdc735..55653261a 100644 --- a/content/git/introgit.qmd +++ b/content/git/introgit.qmd @@ -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 @@ -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 diff --git a/content/manipulation/01_numpy.qmd b/content/manipulation/01_numpy.qmd index 3ca3f333a..56ef38a7a 100644 --- a/content/manipulation/01_numpy.qmd +++ b/content/manipulation/01_numpy.qmd @@ -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 @@ -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: @@ -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 ; \ No newline at end of file diff --git a/content/manipulation/02a_pandas_tutorial.qmd b/content/manipulation/02a_pandas_tutorial.qmd index 2120fb5af..098f32490 100644 --- a/content/manipulation/02a_pandas_tutorial.qmd +++ b/content/manipulation/02a_pandas_tutorial.qmd @@ -15,7 +15,7 @@ categories: aliases: ../pandas.html type: book description: | - `Pandas` est l'élément central de l'écosystème `Python` pour la _data-science_. + `Pandas` est l'élément central de l'écosystème `Python` pour la _data science_. Le succès récent de `Python` dans l'analyse de données tient beaucoup à `Pandas` qui a permis d'importer la logique `SQL` dans le langage `Python`. `Pandas` embarque énormément de fonctionalités qui permettent d'avoir des chaînes de traitement efficaces pour @@ -57,11 +57,11 @@ ample ce _package_. Ce tutoriel vise à introduire aux concepts de base de ce package par l'exemple et à introduire à certaines des tâches les plus fréquentes de (re)structuration -des données du _data-scientist_. Il ne s'agit pas d'un ensemble -exhaustif de commandes: `Pandas` est un package tentaculaire +des données du _data scientist_. Il ne s'agit pas d'un ensemble +exhaustif de commandes : `Pandas` est un package tentaculaire qui permet de réaliser la même opération de nombreuses manières. Nous nous concentrerons ainsi sur les éléments les plus pertinents -dans le cadre d'une introduction à la _data-science_ et laisserons +dans le cadre d'une introduction à la _data science_ et laisserons les utilisateurs intéressés approfondir leurs connaissances dans les ressources foisonnantes qu'il existe sur le sujet. @@ -113,7 +113,7 @@ L'objet central dans la logique `Pandas` est le `DataFrame`. Il s'agit d'une structure particulière de données à deux dimensions, structurées en alignant des lignes et colonnes. Contrairement à une matrice, les colonnes -peuvent être de type différent. +peuvent être de types différents. Un `DataFrame` est composé des éléments suivants: @@ -139,7 +139,7 @@ empruntée à -

Exercice 5: Restructurer les données: wide to long

+

Exercice 5: Restructurer les données : wide to long

``` 1. Créer une copie des données de l'`ADEME` en faisant `df_wide = emissions_wide.copy()` diff --git a/content/manipulation/03_geopandas_tutorial.qmd b/content/manipulation/03_geopandas_tutorial.qmd index a598b3f71..84840128e 100644 --- a/content/manipulation/03_geopandas_tutorial.qmd +++ b/content/manipulation/03_geopandas_tutorial.qmd @@ -84,10 +84,12 @@ import matplotlib.pyplot as plt ``` + ## Données spatiales ### Quelle différence avec des données traditionnelles ? + **Le terme "données spatiales" désigne les données qui portent sur les caractéristiques géographiques des objets (localisation, contours, liens)**. Les caractéristiques géographiques des objets sont décrites à l'aide d'un **système de coordonnées** qui permettent une représentation dans un espace euclidien ($(x,y)$). diff --git a/content/manipulation/04a_webscraping_TP.qmd b/content/manipulation/04a_webscraping_TP.qmd index ef8cfac89..e5f76de3d 100644 --- a/content/manipulation/04a_webscraping_TP.qmd +++ b/content/manipulation/04a_webscraping_TP.qmd @@ -975,7 +975,7 @@ import bs4 import collections import pandas as pd -# pour le site que nous utilisons, le user agent de python 3 n'est pas bien passé : +# pour le site que nous utilisons, le user agent de Python 3 n'est pas bien passé : # on le change donc pour celui de Mozilla req = urllib.request.Request('http://pokemondb.net/pokedex/national', @@ -1184,7 +1184,7 @@ vous référer à l'encadré dédié ``` D'abord, il convient d'installer les dépendances. -Sur `Colab`, vous pouvez utiliser les commandes suivantes: +Sur `Colab`, vous pouvez utiliser les commandes suivantes : ```{python} #| eval: false @@ -1195,7 +1195,7 @@ Sur `Colab`, vous pouvez utiliser les commandes suivantes: ``` Si vous êtes sur le `SSP Cloud`, vous pouvez -exécuter les commandes suivantes: +exécuter les commandes suivantes : ```{python} #| output: false @@ -1464,7 +1464,7 @@ ayant une classe _ad hoc_. Nommer cet objet `compo` cet objet `ministres` 4. Inspecter la structure des champs au sein de `ministres`. Répérer les id `biography`. Comme la structure est générique, on va écrire une fonction `from_bio_to_age` sur laquelle on va itérer -pour chaque élément de la liste `ministres`. Cette fonction effectuera les opérations suivantes: +pour chaque élément de la liste `ministres`. Cette fonction effectuera les opérations suivantes : + Remplacer les champs de dates de naissance non numériques (par exemple _"1er"_), en valeur numérique (par exemple 1). + Utiliser la regex `[0-3]?\d \S* \d{4}` avec le _package_ `re` pour extraire les dates de naissance. Nommer l'objet `str_date`. @@ -1506,7 +1506,7 @@ ministres = compo.find_all("div", {"class":"ministre"}) ``` A l'issue de la question 4, on devrait -retrouver les informations suivantes: +retrouver les informations suivantes : ```{python} print(f"Nous retrouvons ainsi {len(ministres)} ministres.") diff --git a/content/manipulation/04b_regex_TP.qmd b/content/manipulation/04b_regex_TP.qmd index 0397ae4af..79c9003a9 100644 --- a/content/manipulation/04b_regex_TP.qmd +++ b/content/manipulation/04b_regex_TP.qmd @@ -198,7 +198,7 @@ Par exemple, `colou?r` permettra de matcher à la fois l'écriture américaine e re.findall("colou?r", "Did you write color or colour?") ``` -Ces quantifiers peuvent bien-sûr être associés à +Ces quantifiers peuvent bien sûr être associés à d'autres types de caractères, notamment les classes de caractères. Cela peut être extrèmement pratique. Par exemple, `\d+` permettra de capturer un ou plusieurs chiffres, `\s?` diff --git a/content/manipulation/04c_API_TP.qmd b/content/manipulation/04c_API_TP.qmd index b0172570f..aaeacc175 100644 --- a/content/manipulation/04c_API_TP.qmd +++ b/content/manipulation/04c_API_TP.qmd @@ -155,7 +155,7 @@ L'exemple donné dans la documentation technique est > GET https://koumoul.com/data-fair/api/v1/datasets/dpe-france/values/{field} -ce qui en python se traduira par l'utilisation de la méthode `get` du +ce qui en Python se traduira par l'utilisation de la méthode `get` du package `request` sur un url dont la structure est la suivante : @@ -290,7 +290,7 @@ m = interactive_map_dpe(dpe) m ``` -On remarque un problème dans les données: un logement qui n'a +On remarque un problème dans les données : un logement qui n'a rien à voir avec les autres. Il faudrait donc idéalement nettoyer un peu le jeu de données pour filtrer en fonction de limites géographiques. diff --git a/content/manipulation/07_dask.qmd b/content/manipulation/07_dask.qmd index 4fa945dac..19cdc496d 100644 --- a/content/manipulation/07_dask.qmd +++ b/content/manipulation/07_dask.qmd @@ -361,7 +361,7 @@ Dans ce cas, et comme de manière générale avec `pandas`, il peut être recomm ## Utiliser `Dask` avec le format parquet Le format `parquet` tend à devenir le format -de référence dans le monde de la _data-science_. +de référence dans le monde de la _data science_. Une présentation extensive de celui-ci est disponible dans le [chapitre dédié](#reads3). diff --git a/content/modelisation/1_modelevaluation.qmd b/content/modelisation/1_modelevaluation.qmd index e7c5ae2c1..fa065c1e2 100644 --- a/content/modelisation/1_modelevaluation.qmd +++ b/content/modelisation/1_modelevaluation.qmd @@ -215,8 +215,8 @@ A partir des 4 coins de cette matrice, il existe plusieurs mesure de performance | Critère | Mesure | Calcul | |-------------|--------------|------------------| | *Accuracy* | Taux de classification correcte | Diagonale du tableau: $\frac{TP+TN}{TP+FP+FN+FP}$ | -| *Precision* | Taux de vrais positifs |Ligne des prédictions positives: $\frac{TP}{TP+FP}$ | -| *Recall* (rappel) | Capacité à identifier les labels positifs | Colonne des prédictions positives: $\frac{TP}{TP+FN}$ | +| *Precision* | Taux de vrais positifs |Ligne des prédictions positives : $\frac{TP}{TP+FP}$ | +| *Recall* (rappel) | Capacité à identifier les labels positifs | Colonne des prédictions positives : $\frac{TP}{TP+FN}$ | | *F1 Score* | Mesure synthétique (moyenne harmonique) de la précision et du rappel | $2 \frac{precision \times recall}{precision + recall}$ | En présence de classes désequilibrées, la diff --git a/content/modelisation/2_SVM.qmd b/content/modelisation/2_SVM.qmd index 64085571a..fed80b555 100644 --- a/content/modelisation/2_SVM.qmd +++ b/content/modelisation/2_SVM.qmd @@ -83,7 +83,7 @@ import matplotlib.pyplot as plt L'une des méthodes de *Machine Learning* les plus utilisées en classification est les SVM. Il s'agit de trouver, dans un système de projection adéquat (noyau ou *kernel*), les paramètres de l'hyperplan (en fait d'un hyperplan à marges maximales) -séparant les classes de données: +séparant les classes de données : ![](https://scikit-learn.org/stable/_images/sphx_glr_plot_iris_svc_001.png) @@ -234,7 +234,7 @@ sc_precision = sklearn.metrics.precision_score(y_pred, y_test) A l'issue de la question 3, le classifieur avec `C = 1` -devrait avoir les performances suivantes: +devrait avoir les performances suivantes : ```{python} #| echo: false @@ -260,7 +260,7 @@ disp = sklearn.metrics.ConfusionMatrixDisplay( disp.plot() #Réponse : Notre classifieur manque totalement les labels 0, qui sont minoritaires. -#Une raison possible ? L'échelle des variables: le revenu a une +#Une raison possible ? L'échelle des variables : le revenu a une #distribution qui peut écraser celle des autres variables, #dans un modèle linéaire. Il faut donc, a minima, #standardiser les variables. diff --git a/content/modelisation/5_clustering.qmd b/content/modelisation/5_clustering.qmd index a58c4244d..d02fa575c 100644 --- a/content/modelisation/5_clustering.qmd +++ b/content/modelisation/5_clustering.qmd @@ -164,7 +164,7 @@ import seaborn as sns #pour scatterplots

Exercice 1 : Principe des k-means

``` -1. Importer les données et se restreindre aux variables `'Unemployment_rate_2019', 'Median_Household_Income_2019', 'Percent of adults with less than a high school diploma, 2015-19', "Percent of adults with a bachelor's degree or higher, 2015-19"` et bien-sûr `'per_gop'`. Appelez cette base restreinte `df2` et enlevez les valeurs manquantes. +1. Importer les données et se restreindre aux variables `'Unemployment_rate_2019', 'Median_Household_Income_2019', 'Percent of adults with less than a high school diploma, 2015-19', "Percent of adults with a bachelor's degree or higher, 2015-19"` et bien sûr `'per_gop'`. Appelez cette base restreinte `df2` et enlevez les valeurs manquantes. 2. Faire un *k-means* avec $k=4$. 3. Créer une variable `label` dans `votes` stockant le résultat de la typologie 4. Afficher cette typologie sur une carte. diff --git a/content/modelisation/6_pipeline.qmd b/content/modelisation/6_pipeline.qmd index 2ef7eab18..5ca013f61 100644 --- a/content/modelisation/6_pipeline.qmd +++ b/content/modelisation/6_pipeline.qmd @@ -338,7 +338,7 @@ from sklearn.ensemble import RandomForestRegressor regr = RandomForestRegressor(max_depth=2, random_state=123) ``` -Notre _pipeline_ va intégrer les étapes suivantes: +Notre _pipeline_ va intégrer les étapes suivantes : 1. __Preprocessing__ : + Les variables numériques vont être standardisées avec un `StandardScaler`. @@ -488,7 +488,7 @@ consulter la L'analyse de l'importance de variables permet de mieux comprendre le fonctionnement interne des *random forests*. -On obtient un modèle dont les performances sont les suivantes: +On obtient un modèle dont les performances sont les suivantes : ```{python} from sklearn.metrics import mean_squared_error @@ -802,7 +802,7 @@ Ce chapitre est amené à être enrichi des éléments suivants -## Annexes: pipelines alternatifs +## Annexes : pipelines alternatifs ### Préalable : quelques méthodes pour gagner en flexibilité dans le preprocessing diff --git a/content/modelisation/index.qmd b/content/modelisation/index.qmd index 3ccd215d3..1e78b0fda 100644 --- a/content/modelisation/index.qmd +++ b/content/modelisation/index.qmd @@ -88,7 +88,7 @@ que le vrai processus générateur des données. Représenter la réalité sous la forme d'un modèle est un principe à la base de la statistique comme discipline scientifique et ayant des -applications dans de nombreux champs disciplinaires: économie, +applications dans de nombreux champs disciplinaires : économie, sociologie, géographique, biologie, physique, etc. Selon les disciplines, le nom donné peut varier mais on retrouve régulièrement la même approche scientifique: le modélisateur @@ -97,7 +97,7 @@ ayant des contreparties empiriques afin d'expliquer tel ou tel processus. Dans l'enseignement de l'ENSAE ce type d'approche empirique se retrouve -principalement dans deux types d'approches: le *machine learning* et +principalement dans deux types d'approches : le *machine learning* et l'économétrie. La différence est certes sémantique - la régression linéaire peut être considérée comme une technique de _machine learning_ ou d'économétrie - mais elle est @@ -132,7 +132,7 @@ de $x$% d'une variable permette d'anticiper un changement de $\beta x$ de la var d'intérêt ; peu importe la raison. @MullainathanJEP ont ainsi, pour simplifier, proposé la différence fondamentale qui suit: l'économétrie se préoccupe de $\widehat{\beta}$ là où le _machine learning_ -se focalise sur $\widehat{y}$. Les deux sont bien-sûr reliés dans un cadre +se focalise sur $\widehat{y}$. Les deux sont bien sûr reliés dans un cadre linéaire mais cette différence d'approche a des implications importantes sur la structure des modèles étudiés, notamment leur parcimonie[^3]. @@ -173,7 +173,7 @@ ou _covariates_ (la matrice $X$) et le _label_ est la variable expliquée ($y$). De nombreux algorithmes existent et se distinguent sur la manière d'introduire une structure plus ou moins formelle dans la relation entre les variables observées. Nous n'allons voir que quelques -uns de ces algorithmes: _support vector machine_ (SVM), régression logistique, arbres de décision, forêts +uns de ces algorithmes : _support vector machine_ (SVM), régression logistique, arbres de décision, forêts aléatoires, etc. Simples à mettre en oeuvre grâce à la librairie `Scikit-Learn`, ils permettront déjà de comprendre la démarche originale du _machine learning_ que vous pourrez approfondir ultérieurement. diff --git a/content/modern-ds/continuous_integration.qmd b/content/modern-ds/continuous_integration.qmd index 6943ae5de..9a64ebeef 100644 --- a/content/modern-ds/continuous_integration.qmd +++ b/content/modern-ds/continuous_integration.qmd @@ -12,7 +12,7 @@ description: Un chapitre plus avancé sur l'intégration continue __Cette page sera actualisée prochainement, une version plus à jour et plus complète peut être trouvée sur [https://ensae-reproductibilite.github.io/website/](https://ensae-reproductibilite.github.io/website/)__ L'un des apports principaux des innovations -récentes de la _data-science_ est la +récentes de la _data science_ est la manière dont des projets, malgré leur complexité, peuvent facilement être converti en projets pérennes @@ -23,7 +23,7 @@ méthode de travail qui consiste à adopter un certain nombre de gestes pour automatiser la production de livrables ou de tests dès la -conception du produit, les _data-scientists_ +conception du produit, les _data scientists_ ont adopté une méthode de travail très efficace pour favoriser la réutilisation de leur travail par d'autres équipes que celles à l'origine de @@ -53,7 +53,7 @@ dans un cours de dernière année de l'ENSAE l'adoption de certaines bonnes pratiques de développement de code et d'une démarche exploitant les dernières innovations de -la _data-science_ peut substantiellement +la _data science_ peut substantiellement augmenter les chances d'un succès d'un projet. Le nouveau paradigme, qui consiste à intégrer en amont du projet @@ -65,7 +65,7 @@ en temps et en ressources, n'aboutisse qu'au moment où le projet est déjà caduc (car les données ou les besoins ont évolués...). -# L'intégration continue: une opportunité pour les _data-scientists_ +# L'intégration continue: une opportunité pour les _data scientists_ On retrouve régulièrement l'acronyme CI/CD pour illustrer cette @@ -100,15 +100,15 @@ valorisation de celle-ci. Cette approche consiste une excellente opportunité -pour les _data-scientists_ d'être en mesure +pour les _data scientists_ d'être en mesure de valoriser leurs projets auprès de publics aux exigences différentes. Pour des développeurs, le -_data-scientist_ pourra fournir une image `Docker` +_data scientist_ pourra fournir une image `Docker` (environnement portable où l'ensemble des dépendances et des configurations systèmes pour faire tourner un code sont contrôlés) permettant à d'autres d'exécuter facilement le code d'un projet. Pour faciliter -la réutilisation d'un modèle par d'autres _data-scientists_, +la réutilisation d'un modèle par d'autres _data scientists_, il devient de plus en plus fréquent d'exposer un modèle sous forme d'API: les personnes désirant réutiliser le modèle peuvent directement l'appliquer @@ -290,7 +290,7 @@ et les environnements conda, voir [cette partie](https://ensae-reproductibilite.github.io/website/portability/#les-environnements-virtuels-) de cours plus avancé que nous donnons avec Romain Avouac sur la mise en production -de projets _data-science_. +de projets _data science_. Si on fait le choix de l'option `environment.yml`, le fichier prendra ainsi la forme @@ -370,7 +370,7 @@ plus simples parce qu'elles dépendent des développeurs de chaque package, a émergé. Il s'agit de la `conda forge`. Lorsqu'on désire utiliser des fonctionalités récentes -de l'écosystème de la _data-science_, +de l'écosystème de la _data science_, il est conseillé de l'utiliser. {{% /box %}} @@ -396,7 +396,7 @@ des connaissances plus poussées dans la principe de la conteneurisation qui peuvent être coûteuses à acquérir. Selon l'ambition du projet, notamment les réutilisation qu'il désire, -un _data-scientist_ pourra privilégier +un _data scientist_ pourra privilégier telle ou telle option. Les deux solutions sont présentées dans l'exemple fil-rouge du cours que nous donnons avec Romain Avouac @@ -665,7 +665,7 @@ ou des résultats d'un modèle sous forme d'API mais n'auront pas l'infrastructure interne pour faire tourner le code d'origine ou une image `Docker`. C'est pour répondre à ces limites qu'il peut devenir intéressant, pour une équipe -de _data-science_ de développer une architecture +de _data science_ de développer une architecture `kubernetes` interne, si l'organisation en a les moyens, ou de payer un fournisseur de service, comme AWS, qui permet cela. @@ -683,7 +683,7 @@ un site web proposant de la réactivité, peut être mise à disposition et reporter les calculs, lorsqu'ils sont nécessaires, sur un serveur. L'utilisation de `Kubernetes` dans -un projet de _data-science_ permet ainsi +un projet de _data science_ permet ainsi d'anticiper à la fois l'interface d'une application valorisant un projet mais aussi le fonctionnement du _back-office_, par exemple en testant la capacité @@ -695,14 +695,14 @@ que nous donnons avec Romain Avouac et dans ce Dans les grandes organisations, où les rôles sont plus spécialisés que dans les petites structures, -ce ne sont pas nécessairement les _data-scientists_ +ce ne sont pas nécessairement les _data scientists_ qui devront maîtriser `Kubernetes` mais plutôt les _data-architect_ ou les _data-engineer_. Néanmoins, -les _data-scientists_ devront être capable de +les _data scientists_ devront être capable de dialoguer avec eux et mettre en oeuvre une méthode de travail adaptée (celle-ci reposera en principe sur l'approche CI/CD). Dans les petites structures, les -_data-scientist_ peuvent être en mesure +_data scientist_ peuvent être en mesure de mettre en oeuvre le déploiement en continu. En revanche, il est plus rare, dans ces structures, où les moyens humains de maintenance sont limités, diff --git a/content/modern-ds/dallE.qmd b/content/modern-ds/dallE.qmd index eba6c7f9f..5e83d8da9 100644 --- a/content/modern-ds/dallE.qmd +++ b/content/modern-ds/dallE.qmd @@ -94,7 +94,7 @@ d'éditer les paramètres d'exécution du Notebook La publication en avril 2022 par l'organisation [Open AI](https://openai.com/) de son modèle de génération de contenu créatif [`Dall-E-2`](https://openai.com/dall-e-2/) (un jeu de mot mélangeant Dali et Wall-E) a créé un bruit inédit dans -le monde de la _data-science_. +le monde de la _data science_. A propos de `Dall-E`, le bloggeur _tech_ Casey Newton a pu parler d'une [révolution créative dans le monde de l'IA](https://www.platformer.news/p/how-dall-e-could-power-a-creative). _[The Economist](https://www.economist.com/news/2022/06/11/how-a-computer-designed-this-weeks-cover)_ a par consacré @@ -369,7 +369,7 @@ La première étape est de se créer un compte sur `HuggingFace` et se créer un _token_[^4]. Ce _token_ sera donné à l'API de `HuggingFace` pour s'authentifier. -[^4]: Comme les autres plateformes du monde de la _data-science_, +[^4]: Comme les autres plateformes du monde de la _data science_, `HuggingFace` a adopté l'utilisation standardisée des jetons (_token_) comme méthode d'authentification. Le jeton est comme un mot de passe sauf qu'il n'est pas inventé par l'utilisateur diff --git a/content/modern-ds/elastic_intro.qmd b/content/modern-ds/elastic_intro.qmd index 7dab78d69..6bfe3c221 100644 --- a/content/modern-ds/elastic_intro.qmd +++ b/content/modern-ds/elastic_intro.qmd @@ -188,7 +188,7 @@ qui n'utiliserait que du `Python`. ## Les bases offrant des informations nutritionnelles -Pour un nombre restreint de produits, on pourrait bien-sûr chercher à +Pour un nombre restreint de produits, on pourrait bien sûr chercher à la main les caractéristiques des produits en utilisant les fonctionalités d'un moteur de recherche: @@ -556,7 +556,7 @@ stop_words += [l.upper() for l in stopwords.words('french')] replace_regex = {r'[^A-Z]': ' ', r'\b[A-Z0-9]{1,2}?\b':' '} # ``` -Cela permet d'obtenir les bases nettoyées suivantes: +Cela permet d'obtenir les bases nettoyées suivantes : ```{python} ciqual = clean_libelle(ciqual, yvar = 'alim_nom_fr', replace_regex = replace_regex, stopWords = stop_words) diff --git a/content/modern-ds/index.qmd b/content/modern-ds/index.qmd index 4ba1563c2..26c20698b 100644 --- a/content/modern-ds/index.qmd +++ b/content/modern-ds/index.qmd @@ -23,7 +23,7 @@ image: ferrari.png Les parties précédentes étaient très tournées sur l'acquisition de compétences minimales dans chaque domaine de l'analyse de données. Cette partie propose des éléments plus avancés mais plus représentatifs -du travail quotidien du _data-scientist_. Cette partie +du travail quotidien du _data scientist_. Cette partie présente la manière dont `Python` peut être utilisé dans une architecture moderne de type _cloud_. Elle illustre la manière dont `Python` peut servir de couteau-suisse faisant l'interface entre différents diff --git a/content/modern-ds/s3.qmd b/content/modern-ds/s3.qmd index a2eb4f0e8..e9c116787 100644 --- a/content/modern-ds/s3.qmd +++ b/content/modern-ds/s3.qmd @@ -1,5 +1,5 @@ --- -title: "Les nouveaux modes d'accès aux données: le format parquet et les données sur le cloud" +title: "Les nouveaux modes d'accès aux données : le format parquet et les données sur le cloud" date: 2022-08-28T15:00:00Z draft: false weight: 20 @@ -246,7 +246,7 @@ de base de données là où, dans le second cas, on va se contenter d'une librairie, donc un système beaucoup plus léger, qui sait comment transformer la donnée brute en `DataFrame`. Pour ces raisons, entre autres, les bases de données sont donc moins à la -mode dans l'écosystème récent de la _data-science_ que les fichiers. +mode dans l'écosystème récent de la _data science_ que les fichiers. # Le format `parquet` @@ -285,7 +285,7 @@ on désire accéder à un sous-ensemble de lignes dont les indices sont connus, le `CSV` est intéressant. Cependant, si on désire accéder à un sous-ensemble de colonnes dans un fichier (ce qui est un cas d'usage plus fréquent -pour les _data-scientists_), alors le `CSV` n'est pas le format le plus +pour les _data scientists_), alors le `CSV` n'est pas le format le plus approprié ; - mettre à jour la donnée est coûteux car cela implique de réécrire l'ensemble du fichier. Par exemple, si après une première @@ -588,7 +588,7 @@ afin de ne pas essayer de lire les lignes inutiles. Si les fichiers `parquet` sont une solution avantageuse pour -les _data-scientists_, ils ne résolvent +les _data scientists_, ils ne résolvent pas tous les inconvénients de l'approche fichier. En particulier, la question de la @@ -702,7 +702,7 @@ présenté ci-dessous. ### Les librairies principales L'interaction entre ce système distant de fichiers et une session locale de Python -est possible grâce à des API. Les deux principales librairies sont les suivantes: +est possible grâce à des API. Les deux principales librairies sont les suivantes : * [boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html), une librairie créée et maintenue par Amazon ; * [s3fs](https://s3fs.readthedocs.io/en/latest/), une librairie qui permet d'interagir avec les fichiers stockés à l'instar d'un filesystem classique. @@ -950,7 +950,7 @@ lorsque l'initialisation du service `Jupyter` du SSP Cloud est récente (moins de 12 heures), il est possible d'utiliser automatiquement les jetons stockés automatiquement à la création du dépôt. -Si on désire accéder aux données du SSP Cloud depuis une session python du +Si on désire accéder aux données du SSP Cloud depuis une session Python du datalab (service VSCode, Jupyter...), il faut remplacer l'url par `http://minio.lab.sspcloud.fr` ```{=html} diff --git a/content/visualisation/matplotlib.qmd b/content/visualisation/matplotlib.qmd index 0489e23eb..112f546dd 100644 --- a/content/visualisation/matplotlib.qmd +++ b/content/visualisation/matplotlib.qmd @@ -8,7 +8,7 @@ categories: - Exercice description: | Une partie essentielle du travail du - _data-scientist_ est d'être en mesure + _data scientist_ est d'être en mesure de synthétiser une information dans des représentations graphiques percutantes. Ce chapitre permet de découvrir @@ -70,7 +70,7 @@ import seaborn as sns Être capable de construire des visualisations de données intéressantes est une compétence nécessaire à tout -_data-scientist_ ou chercheur. Pour améliorer +_data scientist_ ou chercheur. Pour améliorer la qualité de ces visualisations, il est recommandé de suivre certains conseils donnés par des spécialistes de la _dataviz_ sur la sémiologie graphique. @@ -423,7 +423,7 @@ refaire le graphique *Les 10 compteurs ayant comptabilisé le plus de vélos*. Les diagrammes en batons (_barplot_) sont extrêmement communs mais qu'ils transmettent. Sur le plan sémiologique, -les _lollipop charts_ sont préférables: ils +les _lollipop charts_ sont préférables : ils transmettent la même information mais avec moins de bruit (la largeur des barres du barplot noie un peu l'information). @@ -470,7 +470,7 @@ de manière mensuelle ; Pour commencer, reproduisons la troisième figure qui est, encore une fois, un _barplot_. La première question implique une première rencontre avec une donnée temporelle à travers une opération assez classique en séries -temporelles: changer le format d'une date pour pouvoir faire une agrégation +temporelles : changer le format d'une date pour pouvoir faire une agrégation à un pas de temps plus large.