parent
d483986187
commit
42a6c4fc3e
@ -0,0 +1,78 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "2583a9894af7123b2fcae3376b14c035",
|
||||
"translation_date": "2025-08-24T12:35:16+00:00",
|
||||
"source_file": "1-Introduction/01-defining-data-science/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
## Types de données
|
||||
|
||||
Comme nous l'avons déjà mentionné, les données sont partout. Il suffit de les capturer de la bonne manière ! Il est utile de distinguer entre les données **structurées** et **non structurées**. Les premières sont généralement représentées sous une forme bien organisée, souvent sous forme de tableau ou de plusieurs tableaux, tandis que les secondes ne sont qu'une collection de fichiers. Parfois, on peut également parler de données **semi-structurées**, qui possèdent une certaine structure pouvant varier considérablement.
|
||||
|
||||
| Structurées | Semi-structurées | Non structurées |
|
||||
| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | --------------------------------------- |
|
||||
| Liste de personnes avec leurs numéros de téléphone | Pages Wikipédia avec des liens | Texte de l'Encyclopédie Britannica |
|
||||
| Température dans toutes les pièces d'un bâtiment chaque minute pendant 20 ans | Collection d'articles scientifiques au format JSON avec auteurs, date de publication et résumé | Partage de fichiers avec des documents d'entreprise |
|
||||
| Données sur l'âge et le sexe de toutes les personnes entrant dans le bâtiment | Pages Internet | Flux vidéo brut d'une caméra de surveillance |
|
||||
|
||||
## Où trouver des données
|
||||
|
||||
Il existe de nombreuses sources possibles de données, et il serait impossible de toutes les lister ! Cependant, mentionnons quelques endroits typiques où vous pouvez obtenir des données :
|
||||
|
||||
* **Structurées**
|
||||
- **Internet des objets** (IoT), y compris les données provenant de différents capteurs, tels que les capteurs de température ou de pression, fournit de nombreuses données utiles. Par exemple, si un bâtiment de bureaux est équipé de capteurs IoT, nous pouvons contrôler automatiquement le chauffage et l'éclairage afin de minimiser les coûts.
|
||||
- **Enquêtes** que nous demandons aux utilisateurs de remplir après un achat ou après avoir visité un site web.
|
||||
- **Analyse du comportement** peut, par exemple, nous aider à comprendre jusqu'où un utilisateur explore un site et quelle est la raison typique de son départ.
|
||||
* **Non structurées**
|
||||
- **Textes** peuvent être une source riche d'informations, comme un **score de sentiment global**, ou l'extraction de mots-clés et de significations sémantiques.
|
||||
- **Images** ou **vidéos**. Une vidéo d'une caméra de surveillance peut être utilisée pour estimer le trafic sur la route et informer les gens des éventuels embouteillages.
|
||||
- Les **journaux** des serveurs web peuvent être utilisés pour comprendre quelles pages de notre site sont les plus souvent visitées et pendant combien de temps.
|
||||
* **Semi-structurées**
|
||||
- Les graphes des **réseaux sociaux** peuvent être d'excellentes sources de données sur les personnalités des utilisateurs et leur potentiel à diffuser des informations.
|
||||
- Lorsque nous avons une série de photographies d'une fête, nous pouvons essayer d'extraire des données sur la **dynamique de groupe** en construisant un graphe des personnes prenant des photos ensemble.
|
||||
|
||||
En connaissant les différentes sources possibles de données, vous pouvez réfléchir à divers scénarios où les techniques de science des données peuvent être appliquées pour mieux comprendre la situation et améliorer les processus commerciaux.
|
||||
|
||||
## Ce que vous pouvez faire avec les données
|
||||
|
||||
En science des données, nous nous concentrons sur les étapes suivantes du parcours des données :
|
||||
|
||||
Bien sûr, selon les données réelles, certaines étapes peuvent être absentes (par exemple, lorsque nous avons déjà les données dans une base de données ou lorsque nous n'avons pas besoin d'entraîner un modèle), ou certaines étapes peuvent être répétées plusieurs fois (comme le traitement des données).
|
||||
|
||||
## Numérisation et transformation numérique
|
||||
|
||||
Au cours de la dernière décennie, de nombreuses entreprises ont commencé à comprendre l'importance des données dans la prise de décisions commerciales. Pour appliquer les principes de la science des données à la gestion d'une entreprise, il faut d'abord collecter des données, c'est-à-dire traduire les processus commerciaux en forme numérique. Cela s'appelle la **numérisation**. L'application des techniques de science des données à ces données pour orienter les décisions peut entraîner des augmentations significatives de la productivité (ou même un pivot commercial), appelée **transformation numérique**.
|
||||
|
||||
Prenons un exemple. Supposons que nous avons un cours de science des données (comme celui-ci) que nous proposons en ligne aux étudiants, et que nous souhaitons utiliser la science des données pour l'améliorer. Comment pouvons-nous le faire ?
|
||||
|
||||
Nous pouvons commencer par nous demander "Que peut-on numériser ?" La manière la plus simple serait de mesurer le temps qu'il faut à chaque étudiant pour terminer chaque module, et d'évaluer les connaissances acquises en proposant un test à choix multiples à la fin de chaque module. En calculant la moyenne du temps nécessaire pour terminer chaque module parmi tous les étudiants, nous pouvons identifier les modules qui posent le plus de difficultés et travailler à les simplifier.
|
||||
> Vous pourriez soutenir que cette approche n'est pas idéale, car les modules peuvent avoir des longueurs différentes. Il serait probablement plus juste de diviser le temps par la longueur du module (en nombre de caractères) et de comparer ces valeurs à la place.
|
||||
Lorsque nous commençons à analyser les résultats des tests à choix multiples, nous pouvons essayer de déterminer quels concepts posent des difficultés de compréhension aux étudiants, et utiliser ces informations pour améliorer le contenu. Pour ce faire, il est nécessaire de concevoir des tests de manière à ce que chaque question corresponde à un concept ou une portion de connaissances spécifique.
|
||||
|
||||
Si nous souhaitons aller encore plus loin, nous pouvons tracer le temps nécessaire pour chaque module en fonction de la catégorie d'âge des étudiants. Nous pourrions découvrir que, pour certaines catégories d'âge, il faut un temps excessivement long pour terminer le module, ou que les étudiants abandonnent avant de le terminer. Cela peut nous aider à fournir des recommandations d'âge pour le module et à minimiser l'insatisfaction des utilisateurs due à des attentes erronées.
|
||||
|
||||
## 🚀 Défi
|
||||
|
||||
Dans ce défi, nous allons essayer de trouver des concepts pertinents dans le domaine de la science des données en examinant des textes. Nous prendrons un article Wikipédia sur la science des données, téléchargerons et traiterons le texte, puis construirons un nuage de mots comme celui-ci :
|
||||
|
||||

|
||||
|
||||
Visitez [`notebook.ipynb`](../../../../../../../../../1-Introduction/01-defining-data-science/notebook.ipynb ':ignore') pour parcourir le code. Vous pouvez également exécuter le code et voir comment il effectue toutes les transformations de données en temps réel.
|
||||
|
||||
> Si vous ne savez pas comment exécuter du code dans un Jupyter Notebook, consultez [cet article](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
|
||||
|
||||
## [Quiz post-conférence](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/1)
|
||||
|
||||
## Exercices
|
||||
|
||||
* **Tâche 1** : Modifiez le code ci-dessus pour découvrir des concepts liés aux domaines du **Big Data** et de l'**apprentissage automatique**.
|
||||
* **Tâche 2** : [Réfléchissez à des scénarios de science des données](assignment.md)
|
||||
|
||||
## Crédits
|
||||
|
||||
Cette leçon a été rédigée avec ♥️ par [Dmitry Soshnikov](http://soshnikov.com)
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,44 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "4e0f1773b9bee1be3b28f9fe2c71b3de",
|
||||
"translation_date": "2025-08-24T12:37:35+00:00",
|
||||
"source_file": "1-Introduction/01-defining-data-science/assignment.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Devoir : Scénarios en Science des Données
|
||||
|
||||
Dans ce premier devoir, nous vous demandons de réfléchir à un processus ou un problème réel dans différents domaines, et comment vous pourriez l'améliorer en utilisant le processus de la Science des Données. Pensez aux points suivants :
|
||||
|
||||
1. Quelles données pouvez-vous collecter ?
|
||||
1. Comment les collecteriez-vous ?
|
||||
1. Comment stockeriez-vous les données ? Quelle serait la taille probable des données ?
|
||||
1. Quels aperçus pourriez-vous tirer de ces données ? Quelles décisions pourrions-nous prendre sur la base de ces données ?
|
||||
|
||||
Essayez de réfléchir à 3 problèmes/processus différents et décrivez chacun des points ci-dessus pour chaque domaine.
|
||||
|
||||
Voici quelques domaines et problèmes pour vous aider à démarrer votre réflexion :
|
||||
|
||||
1. Comment pouvez-vous utiliser les données pour améliorer le processus éducatif des enfants à l'école ?
|
||||
1. Comment pouvez-vous utiliser les données pour contrôler la vaccination pendant une pandémie ?
|
||||
1. Comment pouvez-vous utiliser les données pour vous assurer d'être productif au travail ?
|
||||
|
||||
## Instructions
|
||||
|
||||
Remplissez le tableau suivant (remplacez les domaines suggérés par vos propres idées si nécessaire) :
|
||||
|
||||
| Domaine | Problème | Quelles données collecter | Comment stocker les données | Quels aperçus/décisions pouvons-nous prendre |
|
||||
|---------|----------|---------------------------|-----------------------------|---------------------------------------------|
|
||||
| Éducation | | | | |
|
||||
| Vaccination | | | | |
|
||||
| Productivité | | | | |
|
||||
|
||||
## Grille d'évaluation
|
||||
|
||||
Exemplaire | Adéquat | À améliorer
|
||||
--- | --- | -- |
|
||||
A été capable d'identifier des sources de données raisonnables, des moyens de stockage des données et des décisions/apprentissages possibles pour tous les domaines | Certains aspects de la solution ne sont pas détaillés, le stockage des données n'est pas discuté, au moins 2 domaines sont décrits | Seules certaines parties de la solution sont décrites, un seul domaine est considéré.
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de faire appel à une traduction professionnelle humaine. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,46 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "a8f79b9c0484c35b4f26e8aec7fc4d56",
|
||||
"translation_date": "2025-08-24T12:38:37+00:00",
|
||||
"source_file": "1-Introduction/01-defining-data-science/solution/assignment.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Assignment : Scénarios en Science des Données
|
||||
|
||||
Dans ce premier devoir, nous vous demandons de réfléchir à un processus ou un problème réel dans différents domaines, et comment vous pourriez l'améliorer en utilisant le processus de la science des données. Pensez aux points suivants :
|
||||
|
||||
1. Quelles données pouvez-vous collecter ?
|
||||
1. Comment les collecteriez-vous ?
|
||||
1. Comment stockeriez-vous les données ? Quelle serait la taille probable des données ?
|
||||
1. Quels insights pourriez-vous obtenir à partir de ces données ? Quelles décisions pourrions-nous prendre sur la base de ces données ?
|
||||
|
||||
Essayez de réfléchir à 3 problèmes ou processus différents et décrivez chacun des points ci-dessus pour chaque domaine.
|
||||
|
||||
Voici quelques domaines et problèmes qui peuvent vous aider à démarrer votre réflexion :
|
||||
|
||||
1. Comment pouvez-vous utiliser les données pour améliorer le processus éducatif des enfants à l'école ?
|
||||
1. Comment pouvez-vous utiliser les données pour contrôler la vaccination pendant une pandémie ?
|
||||
1. Comment pouvez-vous utiliser les données pour vous assurer d'être productif au travail ?
|
||||
|
||||
## Instructions
|
||||
|
||||
Remplissez le tableau suivant (remplacez les domaines suggérés par vos propres idées si nécessaire) :
|
||||
|
||||
| Domaine | Problème | Quelles données collecter | Comment stocker les données | Quels insights/décisions pouvons-nous prendre |
|
||||
|---------|----------|---------------------------|-----------------------------|-----------------------------------------------|
|
||||
| Éducation | À l'université, nous avons généralement une faible participation aux cours, et nous avons l'hypothèse que les étudiants qui assistent aux cours réussissent mieux aux examens. Nous voulons stimuler la participation et tester cette hypothèse. | Nous pouvons suivre la participation via des photos prises par la caméra de sécurité en classe, ou en suivant les adresses bluetooth/wifi des téléphones mobiles des étudiants en classe. Les données des examens sont déjà disponibles dans la base de données de l'université. | Si nous suivons les images des caméras de sécurité, nous devons stocker quelques (5-10) photographies pendant le cours (données non structurées), puis utiliser l'IA pour identifier les visages des étudiants (convertir les données en forme structurée). | Nous pouvons calculer les données de participation moyenne pour chaque étudiant et voir s'il existe une corrélation avec les notes des examens. Nous parlerons davantage de corrélation dans la section [probabilité et statistiques](../../04-stats-and-probability/README.md). Pour stimuler la participation des étudiants, nous pouvons publier le classement hebdomadaire de participation sur le portail de l'école et organiser des tirages au sort parmi ceux ayant la meilleure participation. |
|
||||
| Vaccination | | | | |
|
||||
| Productivité | | | | |
|
||||
|
||||
> *Nous fournissons une seule réponse comme exemple, afin que vous puissiez avoir une idée de ce qui est attendu dans ce devoir.*
|
||||
|
||||
## Grille d'évaluation
|
||||
|
||||
Exemplaire | Adéquat | À améliorer
|
||||
--- | --- | -- |
|
||||
La personne a pu identifier des sources de données raisonnables, des moyens de stockage des données et des décisions/insights possibles pour tous les domaines | Certains aspects de la solution ne sont pas détaillés, le stockage des données n'est pas discuté, au moins 2 domaines sont décrits | Seules certaines parties de la solution de données sont décrites, un seul domaine est considéré.
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,263 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "8796f41f566a0a8ebb72863a83d558ed",
|
||||
"translation_date": "2025-08-24T12:25:19+00:00",
|
||||
"source_file": "1-Introduction/02-ethics/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Introduction à l'éthique des données
|
||||
|
||||
| ](../../sketchnotes/02-Ethics.png)|
|
||||
|:---:|
|
||||
| Éthique des sciences des données - _Sketchnote par [@nitya](https://twitter.com/nitya)_ |
|
||||
|
||||
---
|
||||
|
||||
Nous sommes tous des citoyens des données vivant dans un monde axé sur les données.
|
||||
|
||||
Les tendances du marché indiquent que d'ici 2022, 1 grande organisation sur 3 achètera et vendra ses données via des [places de marché et des échanges](https://www.gartner.com/smarterwithgartner/gartner-top-10-trends-in-data-and-analytics-for-2020/) en ligne. En tant que **développeurs d'applications**, il sera plus facile et moins coûteux d'intégrer des informations basées sur les données et des automatisations pilotées par des algorithmes dans les expériences utilisateur quotidiennes. Mais à mesure que l'IA devient omniprésente, nous devrons également comprendre les dommages potentiels causés par la [militarisation](https://www.youtube.com/watch?v=TQHs8SA1qpk) de ces algorithmes à grande échelle.
|
||||
|
||||
Les tendances montrent également que nous créerons et consommerons plus de [180 zettaoctets](https://www.statista.com/statistics/871513/worldwide-data-created/) de données d'ici 2025. En tant que **scientifiques des données**, cela nous donne un accès sans précédent à des données personnelles. Cela signifie que nous pouvons construire des profils comportementaux des utilisateurs et influencer la prise de décision de manière à créer une [illusion de libre arbitre](https://www.datasciencecentral.com/profiles/blogs/the-illusion-of-choice), tout en orientant potentiellement les utilisateurs vers des résultats que nous préférons. Cela soulève également des questions plus larges sur la confidentialité des données et la protection des utilisateurs.
|
||||
|
||||
L'éthique des données est désormais un _garde-fou nécessaire_ pour la science et l'ingénierie des données, nous aidant à minimiser les dommages potentiels et les conséquences involontaires de nos actions basées sur les données. Le [cycle de battage médiatique de Gartner pour l'IA](https://www.gartner.com/smarterwithgartner/2-megatrends-dominate-the-gartner-hype-cycle-for-artificial-intelligence-2020/) identifie des tendances pertinentes en matière d'éthique numérique, d'IA responsable et de gouvernance de l'IA comme des moteurs clés des mégatendances plus larges autour de la _démocratisation_ et de l'_industrialisation_ de l'IA.
|
||||
|
||||

|
||||
|
||||
Dans cette leçon, nous explorerons le domaine fascinant de l'éthique des données - des concepts et défis fondamentaux aux études de cas et aux concepts appliqués de l'IA comme la gouvernance - qui aident à établir une culture éthique dans les équipes et organisations travaillant avec les données et l'IA.
|
||||
|
||||
## [Quiz pré-lecture](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/2) 🎯
|
||||
|
||||
## Définitions de base
|
||||
|
||||
Commençons par comprendre la terminologie de base.
|
||||
|
||||
Le mot "éthique" vient du [mot grec "ethikos"](https://en.wikipedia.org/wiki/Ethics) (et de sa racine "ethos") signifiant _caractère ou nature morale_.
|
||||
|
||||
**L'éthique** concerne les valeurs partagées et les principes moraux qui régissent notre comportement en société. L'éthique ne repose pas sur des lois, mais sur des normes largement acceptées de ce qui est "bien ou mal". Cependant, les considérations éthiques peuvent influencer les initiatives de gouvernance d'entreprise et les réglementations gouvernementales qui créent davantage d'incitations à la conformité.
|
||||
|
||||
**L'éthique des données** est une [nouvelle branche de l'éthique](https://royalsocietypublishing.org/doi/full/10.1098/rsta.2016.0360#sec-1) qui "étudie et évalue les problèmes moraux liés aux _données, algorithmes et pratiques correspondantes_". Ici, **"données"** se concentre sur les actions liées à la génération, l'enregistrement, la curation, le traitement, la diffusion, le partage et l'utilisation, **"algorithmes"** se concentre sur l'IA, les agents, l'apprentissage automatique et les robots, et **"pratiques"** se concentre sur des sujets comme l'innovation responsable, la programmation, le piratage et les codes d'éthique.
|
||||
|
||||
**L'éthique appliquée** est l'[application pratique des considérations morales](https://en.wikipedia.org/wiki/Applied_ethics). C'est le processus d'examen actif des questions éthiques dans le contexte des _actions, produits et processus du monde réel_, et de prise de mesures correctives pour s'assurer qu'ils restent alignés avec nos valeurs éthiques définies.
|
||||
|
||||
**La culture éthique** consiste à [_opérationnaliser_ l'éthique appliquée](https://hbr.org/2019/05/how-to-design-an-ethical-organization) pour s'assurer que nos principes et pratiques éthiques sont adoptés de manière cohérente et évolutive dans toute l'organisation. Les cultures éthiques réussies définissent des principes éthiques à l'échelle de l'organisation, offrent des incitations significatives à la conformité et renforcent les normes éthiques en encourageant et en amplifiant les comportements souhaités à tous les niveaux de l'organisation.
|
||||
|
||||
## Concepts d'éthique
|
||||
|
||||
Dans cette section, nous discuterons des concepts tels que les **valeurs partagées** (principes) et les **défis éthiques** (problèmes) pour l'éthique des données - et explorerons des **études de cas** qui vous aident à comprendre ces concepts dans des contextes réels.
|
||||
|
||||
### 1. Principes éthiques
|
||||
|
||||
Toute stratégie d'éthique des données commence par la définition de _principes éthiques_ - les "valeurs partagées" qui décrivent les comportements acceptables et guident les actions conformes dans nos projets de données et d'IA. Vous pouvez les définir au niveau individuel ou de l'équipe. Cependant, la plupart des grandes organisations les décrivent dans une déclaration de mission ou un cadre d'IA éthique défini au niveau de l'entreprise et appliqué de manière cohérente à toutes les équipes.
|
||||
|
||||
**Exemple :** La déclaration de mission [IA responsable](https://www.microsoft.com/en-us/ai/responsible-ai) de Microsoft se lit comme suit : _"Nous nous engageons à faire progresser l'IA guidée par des principes éthiques qui placent les personnes au premier plan"_ - identifiant 6 principes éthiques dans le cadre ci-dessous :
|
||||
|
||||

|
||||
|
||||
Explorons brièvement ces principes. _Transparence_ et _responsabilité_ sont des valeurs fondamentales sur lesquelles les autres principes se construisent - commençons donc par là :
|
||||
|
||||
* [**Responsabilité**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) rend les praticiens _responsables_ de leurs opérations de données et d'IA, et de leur conformité à ces principes éthiques.
|
||||
* [**Transparence**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) garantit que les actions liées aux données et à l'IA sont _compréhensibles_ (interprétables) pour les utilisateurs, en expliquant le quoi et le pourquoi des décisions.
|
||||
* [**Équité**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1%3aprimaryr6) - se concentre sur le fait de s'assurer que l'IA traite _toutes les personnes_ équitablement, en abordant les biais sociotechniques systémiques ou implicites dans les données et les systèmes.
|
||||
* [**Fiabilité et sécurité**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) - garantit que l'IA se comporte de manière _cohérente_ avec les valeurs définies, en minimisant les dommages potentiels ou les conséquences involontaires.
|
||||
* [**Confidentialité et sécurité**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) - concerne la compréhension de la traçabilité des données et la fourniture de _protection de la confidentialité des données_ aux utilisateurs.
|
||||
* [**Inclusivité**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) - consiste à concevoir des solutions d'IA avec intention, en les adaptant pour répondre à un _large éventail de besoins et de capacités humains_.
|
||||
|
||||
> 🚨 Réfléchissez à ce que pourrait être votre déclaration de mission en matière d'éthique des données. Explorez les cadres d'IA éthique d'autres organisations - voici des exemples de [IBM](https://www.ibm.com/cloud/learn/ai-ethics), [Google](https://ai.google/principles), et [Facebook](https://ai.facebook.com/blog/facebooks-five-pillars-of-responsible-ai/). Quelles valeurs partagées ont-ils en commun ? Comment ces principes se rapportent-ils au produit ou à l'industrie de l'IA dans lesquels ils opèrent ?
|
||||
|
||||
### 2. Défis éthiques
|
||||
|
||||
Une fois que nous avons défini des principes éthiques, l'étape suivante consiste à évaluer nos actions en matière de données et d'IA pour voir si elles s'alignent sur ces valeurs partagées. Réfléchissez à vos actions dans deux catégories : _collecte de données_ et _conception d'algorithmes_.
|
||||
|
||||
Avec la collecte de données, les actions impliqueront probablement des **données personnelles** ou des informations personnellement identifiables (PII) pour des individus identifiables. Cela inclut [divers éléments de données non personnelles](https://ec.europa.eu/info/law/law-topic/data-protection/reform/what-personal-data_en) qui, _collectivement_, identifient un individu. Les défis éthiques peuvent concerner la _confidentialité des données_, la _propriété des données_ et des sujets connexes comme le _consentement éclairé_ et les _droits de propriété intellectuelle_ des utilisateurs.
|
||||
|
||||
Avec la conception d'algorithmes, les actions impliqueront la collecte et la curation de **jeux de données**, puis leur utilisation pour entraîner et déployer des **modèles de données** qui prédisent des résultats ou automatisent des décisions dans des contextes réels. Les défis éthiques peuvent découler de _biais dans les jeux de données_, de problèmes de _qualité des données_, d'_injustice_ et de _mauvaise représentation_ dans les algorithmes - y compris certains problèmes systémiques.
|
||||
|
||||
Dans les deux cas, les défis éthiques mettent en évidence les domaines où nos actions peuvent entrer en conflit avec nos valeurs partagées. Pour détecter, atténuer, minimiser ou éliminer ces préoccupations, nous devons poser des questions morales "oui/non" liées à nos actions, puis prendre des mesures correctives si nécessaire. Examinons quelques défis éthiques et les questions morales qu'ils soulèvent :
|
||||
|
||||
#### 2.1 Propriété des données
|
||||
|
||||
La collecte de données implique souvent des données personnelles pouvant identifier les sujets des données. La [propriété des données](https://permission.io/blog/data-ownership) concerne le _contrôle_ et les [_droits des utilisateurs_](https://permission.io/blog/data-ownership) liés à la création, au traitement et à la diffusion des données.
|
||||
|
||||
Les questions morales à poser sont :
|
||||
* Qui possède les données ? (utilisateur ou organisation)
|
||||
* Quels droits les sujets des données ont-ils ? (ex : accès, effacement, portabilité)
|
||||
* Quels droits les organisations ont-elles ? (ex : rectifier des avis malveillants d'utilisateurs)
|
||||
|
||||
#### 2.2 Consentement éclairé
|
||||
|
||||
Le [consentement éclairé](https://legaldictionary.net/informed-consent/) définit l'acte pour les utilisateurs d'accepter une action (comme la collecte de données) avec une _compréhension complète_ des faits pertinents, y compris le but, les risques potentiels et les alternatives.
|
||||
|
||||
Questions à explorer ici :
|
||||
* L'utilisateur (sujet des données) a-t-il donné son autorisation pour la capture et l'utilisation des données ?
|
||||
* L'utilisateur a-t-il compris le but pour lequel ces données ont été capturées ?
|
||||
* L'utilisateur a-t-il compris les risques potentiels liés à sa participation ?
|
||||
|
||||
#### 2.3 Propriété intellectuelle
|
||||
|
||||
La [propriété intellectuelle](https://en.wikipedia.org/wiki/Intellectual_property) fait référence aux créations immatérielles résultant de l'initiative humaine, qui peuvent _avoir une valeur économique_ pour les individus ou les entreprises.
|
||||
|
||||
Questions à explorer ici :
|
||||
* Les données collectées avaient-elles une valeur économique pour un utilisateur ou une entreprise ?
|
||||
* L'**utilisateur** a-t-il une propriété intellectuelle ici ?
|
||||
* L'**organisation** a-t-elle une propriété intellectuelle ici ?
|
||||
* Si ces droits existent, comment les protégeons-nous ?
|
||||
|
||||
#### 2.4 Confidentialité des données
|
||||
|
||||
La [confidentialité des données](https://www.northeastern.edu/graduate/blog/what-is-data-privacy/) ou la confidentialité des informations fait référence à la préservation de la vie privée des utilisateurs et à la protection de leur identité en ce qui concerne les informations personnellement identifiables.
|
||||
|
||||
Questions à explorer ici :
|
||||
* Les données (personnelles) des utilisateurs sont-elles sécurisées contre les piratages et les fuites ?
|
||||
* Les données des utilisateurs sont-elles accessibles uniquement aux utilisateurs et contextes autorisés ?
|
||||
* L'anonymat des utilisateurs est-il préservé lorsque les données sont partagées ou diffusées ?
|
||||
* Un utilisateur peut-il être désidentifié à partir de jeux de données anonymisés ?
|
||||
|
||||
#### 2.5 Droit à l'oubli
|
||||
|
||||
Le [droit à l'oubli](https://en.wikipedia.org/wiki/Right_to_be_forgotten) ou [droit à l'effacement](https://www.gdpreu.org/right-to-be-forgotten/) offre une protection supplémentaire des données personnelles aux utilisateurs. En particulier, il donne aux utilisateurs le droit de demander la suppression ou le retrait de données personnelles des recherches Internet et d'autres emplacements, _dans des circonstances spécifiques_ - leur permettant un nouveau départ en ligne sans que leurs actions passées ne soient retenues contre eux.
|
||||
|
||||
Questions à explorer ici :
|
||||
* Le système permet-il aux sujets des données de demander l'effacement ?
|
||||
* Le retrait du consentement de l'utilisateur devrait-il déclencher un effacement automatique ?
|
||||
* Les données ont-elles été collectées sans consentement ou par des moyens illégaux ?
|
||||
* Sommes-nous conformes aux réglementations gouvernementales en matière de confidentialité des données ?
|
||||
|
||||
#### 2.6 Biais dans les jeux de données
|
||||
|
||||
Le biais dans les jeux de données ou [biais de collecte](http://researcharticles.com/index.php/bias-in-data-collection-in-research/) concerne la sélection d'un sous-ensemble de données _non représentatif_ pour le développement d'algorithmes, créant une potentielle injustice dans les résultats pour divers groupes. Les types de biais incluent le biais de sélection ou d'échantillonnage, le biais de volontariat et le biais d'instrument.
|
||||
|
||||
Questions à explorer ici :
|
||||
* Avons-nous recruté un ensemble représentatif de sujets de données ?
|
||||
* Avons-nous testé notre jeu de données collecté ou organisé pour divers biais ?
|
||||
* Pouvons-nous atténuer ou supprimer les biais découverts ?
|
||||
|
||||
#### 2.7 Qualité des données
|
||||
|
||||
La [qualité des données](https://lakefs.io/data-quality-testing/) examine la validité du jeu de données organisé utilisé pour développer nos algorithmes, en vérifiant si les caractéristiques et les enregistrements répondent aux exigences pour le niveau de précision et de cohérence nécessaire à notre objectif d'IA.
|
||||
|
||||
Questions à explorer ici :
|
||||
* Avons-nous capturé des _caractéristiques_ valides pour notre cas d'utilisation ?
|
||||
* Les données ont-elles été capturées de manière _cohérente_ à partir de diverses sources de données ?
|
||||
* Le jeu de données est-il _complet_ pour diverses conditions ou scénarios ?
|
||||
* Les informations capturées sont-elles _précises_ et reflètent-elles la réalité ?
|
||||
|
||||
#### 2.8 Équité des algorithmes
|
||||
[Algorithm Fairness](https://towardsdatascience.com/what-is-algorithm-fairness-3182e161cf9f) vérifie si la conception de l'algorithme discrimine systématiquement certains sous-groupes de sujets de données, entraînant des [préjudices potentiels](https://docs.microsoft.com/en-us/azure/machine-learning/concept-fairness-ml) dans l'_allocation_ (où des ressources sont refusées ou retenues pour ce groupe) et la _qualité du service_ (où l'IA est moins précise pour certains sous-groupes par rapport à d'autres).
|
||||
|
||||
Questions à explorer ici :
|
||||
* Avons-nous évalué la précision du modèle pour des sous-groupes et des conditions diversifiés ?
|
||||
* Avons-nous examiné le système pour identifier des préjudices potentiels (par exemple, des stéréotypes) ?
|
||||
* Pouvons-nous réviser les données ou réentraîner les modèles pour atténuer les préjudices identifiés ?
|
||||
|
||||
Explorez des ressources comme les [checklists sur l'équité de l'IA](https://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RE4t6dA) pour en savoir plus.
|
||||
|
||||
#### 2.9 Fausse représentation
|
||||
|
||||
La [fausse représentation des données](https://www.sciencedirect.com/topics/computer-science/misrepresentation) consiste à se demander si nous communiquons des informations issues de données honnêtement rapportées de manière trompeuse pour soutenir un récit souhaité.
|
||||
|
||||
Questions à explorer ici :
|
||||
* Rapportons-nous des données incomplètes ou inexactes ?
|
||||
* Visualisons-nous les données de manière à induire des conclusions trompeuses ?
|
||||
* Utilisons-nous des techniques statistiques sélectives pour manipuler les résultats ?
|
||||
* Existe-t-il des explications alternatives qui pourraient offrir une conclusion différente ?
|
||||
|
||||
#### 2.10 Libre choix
|
||||
L'[illusion du libre choix](https://www.datasciencecentral.com/profiles/blogs/the-illusion-of-choice) se produit lorsque les "architectures de choix" des systèmes utilisent des algorithmes de prise de décision pour inciter les gens à adopter un résultat préféré tout en leur donnant l'impression d'avoir des options et du contrôle. Ces [dark patterns](https://www.darkpatterns.org/) peuvent causer des préjudices sociaux et économiques aux utilisateurs. Étant donné que les décisions des utilisateurs influencent les profils de comportement, ces actions peuvent potentiellement orienter les choix futurs et amplifier ou prolonger l'impact de ces préjudices.
|
||||
|
||||
Questions à explorer ici :
|
||||
* L'utilisateur a-t-il compris les implications de son choix ?
|
||||
* L'utilisateur était-il conscient des choix (alternatifs) et des avantages et inconvénients de chacun ?
|
||||
* L'utilisateur peut-il revenir sur un choix automatisé ou influencé ultérieurement ?
|
||||
|
||||
### 3. Études de cas
|
||||
|
||||
Pour mettre ces défis éthiques dans des contextes réels, il est utile d'examiner des études de cas qui mettent en lumière les préjudices et conséquences potentiels pour les individus et la société lorsque ces violations éthiques sont ignorées.
|
||||
|
||||
Voici quelques exemples :
|
||||
|
||||
| Défi éthique | Étude de cas |
|
||||
|--- |--- |
|
||||
| **Consentement éclairé** | 1972 - [Étude sur la syphilis de Tuskegee](https://en.wikipedia.org/wiki/Tuskegee_Syphilis_Study) - Les hommes afro-américains qui ont participé à l'étude ont été promis des soins médicaux gratuits _mais trompés_ par des chercheurs qui n'ont pas informé les sujets de leur diagnostic ou de la disponibilité d'un traitement. De nombreux sujets sont morts et leurs partenaires ou enfants ont été affectés ; l'étude a duré 40 ans. |
|
||||
| **Confidentialité des données** | 2007 - Le [concours de données Netflix](https://www.wired.com/2007/12/why-anonymous-data-sometimes-isnt/) a fourni aux chercheurs _10M de classements de films anonymisés de 50K clients_ pour améliorer les algorithmes de recommandation. Cependant, les chercheurs ont pu corréler les données anonymisées avec des données personnellement identifiables dans des _ensembles de données externes_ (par exemple, des commentaires IMDb), "désanonymisant" ainsi certains abonnés Netflix.|
|
||||
| **Biais de collecte** | 2013 - La ville de Boston a [développé Street Bump](https://www.boston.gov/transportation/street-bump), une application permettant aux citoyens de signaler les nids-de-poule, offrant à la ville de meilleures données sur les routes pour identifier et résoudre les problèmes. Cependant, [les personnes des groupes à faible revenu avaient moins accès aux voitures et aux téléphones](https://hbr.org/2013/04/the-hidden-biases-in-big-data), rendant leurs problèmes de voirie invisibles dans cette application. Les développeurs ont travaillé avec des universitaires pour résoudre les problèmes d'_accès équitable et de fracture numérique_ pour plus d'équité. |
|
||||
| **Équité algorithmique** | 2018 - L'étude MIT [Gender Shades](http://gendershades.org/overview.html) a évalué la précision des produits d'IA de classification de genre, révélant des écarts de précision pour les femmes et les personnes de couleur. Une [carte Apple de 2019](https://www.wired.com/story/the-apple-card-didnt-see-genderand-thats-the-problem/) semblait offrir moins de crédit aux femmes qu'aux hommes. Les deux cas ont illustré des problèmes de biais algorithmique entraînant des préjudices socio-économiques.|
|
||||
| **Fausse représentation des données** | 2020 - Le [Département de la santé publique de Géorgie a publié des graphiques COVID-19](https://www.vox.com/covid-19-coronavirus-us-response-trump/2020/5/18/21262265/georgia-covid-19-cases-declining-reopening) qui semblaient induire les citoyens en erreur sur les tendances des cas confirmés avec un ordre non chronologique sur l'axe des x. Cela illustre la fausse représentation par des astuces de visualisation. |
|
||||
| **Illusion du libre choix** | 2020 - L'application éducative [ABCmouse a payé 10M$ pour régler une plainte de la FTC](https://www.washingtonpost.com/business/2020/09/04/abcmouse-10-million-ftc-settlement/) où les parents étaient piégés dans des abonnements qu'ils ne pouvaient pas annuler. Cela illustre les dark patterns dans les architectures de choix, où les utilisateurs étaient incités à faire des choix potentiellement préjudiciables. |
|
||||
| **Confidentialité des données et droits des utilisateurs** | 2021 - La [violation de données Facebook](https://www.npr.org/2021/04/09/986005820/after-data-breach-exposes-530-million-facebook-says-it-will-not-notify-users) a exposé les données de 530M d'utilisateurs, entraînant un règlement de 5B$ avec la FTC. Cependant, Facebook a refusé de notifier les utilisateurs de la violation, violant les droits des utilisateurs en matière de transparence et d'accès aux données. |
|
||||
|
||||
Vous voulez explorer plus d'études de cas ? Consultez ces ressources :
|
||||
* [Ethics Unwrapped](https://ethicsunwrapped.utexas.edu/case-studies) - dilemmes éthiques dans divers secteurs.
|
||||
* [Cours sur l'éthique des sciences des données](https://www.coursera.org/learn/data-science-ethics#syllabus) - études de cas emblématiques explorées.
|
||||
* [Où les choses ont mal tourné](https://deon.drivendata.org/examples/) - checklist Deon avec des exemples.
|
||||
|
||||
> 🚨 Pensez aux études de cas que vous avez vues - avez-vous vécu ou été affecté par un défi éthique similaire dans votre vie ? Pouvez-vous penser à au moins une autre étude de cas qui illustre l'un des défis éthiques discutés dans cette section ?
|
||||
|
||||
## Éthique appliquée
|
||||
|
||||
Nous avons parlé des concepts éthiques, des défis et des études de cas dans des contextes réels. Mais comment commencer à _appliquer_ des principes et pratiques éthiques dans nos projets ? Et comment _opérationnaliser_ ces pratiques pour une meilleure gouvernance ? Explorons quelques solutions concrètes :
|
||||
|
||||
### 1. Codes professionnels
|
||||
|
||||
Les codes professionnels offrent une option pour que les organisations "incitent" leurs membres à soutenir leurs principes éthiques et leur mission. Les codes sont des _lignes directrices morales_ pour le comportement professionnel, aidant les employés ou membres à prendre des décisions alignées sur les principes de leur organisation. Ils ne sont efficaces que si les membres les respectent volontairement ; cependant, de nombreuses organisations offrent des récompenses et des sanctions supplémentaires pour motiver la conformité.
|
||||
|
||||
Exemples :
|
||||
* [Oxford Munich](http://www.code-of-ethics.org/code-of-conduct/) Code d'éthique
|
||||
* [Data Science Association](http://datascienceassn.org/code-of-conduct.html) Code de conduite (créé en 2013)
|
||||
* [ACM Code of Ethics and Professional Conduct](https://www.acm.org/code-of-ethics) (depuis 1993)
|
||||
|
||||
> 🚨 Faites-vous partie d'une organisation professionnelle en ingénierie ou en science des données ? Explorez leur site pour voir s'ils définissent un code d'éthique professionnel. Que dit-il sur leurs principes éthiques ? Comment incitent-ils leurs membres à suivre le code ?
|
||||
|
||||
### 2. Checklists éthiques
|
||||
|
||||
Alors que les codes professionnels définissent le comportement _éthique requis_ des praticiens, ils [ont des limites connues](https://resources.oreilly.com/examples/0636920203964/blob/master/of_oaths_and_checklists.md) en matière d'application, en particulier dans les projets à grande échelle. À la place, de nombreux experts en science des données [préconisent des checklists](https://resources.oreilly.com/examples/0636920203964/blob/master/of_oaths_and_checklists.md), qui peuvent **connecter les principes aux pratiques** de manière plus déterministe et actionnable.
|
||||
|
||||
Les checklists transforment les questions en tâches "oui/non" qui peuvent être opérationnalisées, permettant de les suivre dans le cadre des workflows standard de lancement de produit.
|
||||
|
||||
Exemples :
|
||||
* [Deon](https://deon.drivendata.org/) - une checklist éthique générale créée à partir de [recommandations de l'industrie](https://deon.drivendata.org/#checklist-citations) avec un outil en ligne de commande pour une intégration facile.
|
||||
* [Checklist d'audit de confidentialité](https://cyber.harvard.edu/ecommerce/privacyaudit.html) - fournit des conseils généraux sur les pratiques de gestion de l'information du point de vue juridique et social.
|
||||
* [Checklist sur l'équité de l'IA](https://www.microsoft.com/en-us/research/project/ai-fairness-checklist/) - créée par des praticiens de l'IA pour soutenir l'adoption et l'intégration des vérifications d'équité dans les cycles de développement de l'IA.
|
||||
* [22 questions pour l'éthique dans les données et l'IA](https://medium.com/the-organization/22-questions-for-ethics-in-data-and-ai-efb68fd19429) - cadre plus ouvert, structuré pour une exploration initiale des problèmes éthiques dans la conception, la mise en œuvre et les contextes organisationnels.
|
||||
|
||||
### 3. Réglementations éthiques
|
||||
|
||||
L'éthique consiste à définir des valeurs partagées et à faire ce qui est juste _volontairement_. **La conformité** consiste à _respecter la loi_ là où elle est définie. **La gouvernance** couvre globalement toutes les façons dont les organisations fonctionnent pour appliquer des principes éthiques et se conformer aux lois établies.
|
||||
|
||||
Aujourd'hui, la gouvernance prend deux formes au sein des organisations. Premièrement, il s'agit de définir des principes d'**IA éthique** et d'établir des pratiques pour opérationnaliser leur adoption dans tous les projets liés à l'IA de l'organisation. Deuxièmement, il s'agit de se conformer à toutes les **réglementations sur la protection des données** imposées par le gouvernement dans les régions où elle opère.
|
||||
|
||||
Exemples de réglementations sur la protection des données et la confidentialité :
|
||||
* `1974`, [US Privacy Act](https://www.justice.gov/opcl/privacy-act-1974) - régule la collecte, l'utilisation et la divulgation des informations personnelles par le _gouvernement fédéral_.
|
||||
* `1996`, [US Health Insurance Portability & Accountability Act (HIPAA)](https://www.cdc.gov/phlp/publications/topic/hipaa.html) - protège les données personnelles de santé.
|
||||
* `1998`, [US Children's Online Privacy Protection Act (COPPA)](https://www.ftc.gov/enforcement/rules/rulemaking-regulatory-reform-proceedings/childrens-online-privacy-protection-rule) - protège la confidentialité des données des enfants de moins de 13 ans.
|
||||
* `2018`, [Règlement général sur la protection des données (RGPD)](https://gdpr-info.eu/) - fournit des droits aux utilisateurs, protège les données et la confidentialité.
|
||||
* `2018`, [California Consumer Privacy Act (CCPA)](https://www.oag.ca.gov/privacy/ccpa) donne aux consommateurs plus de _droits_ sur leurs données personnelles.
|
||||
* `2021`, La [Loi sur la protection des informations personnelles de la Chine](https://www.reuters.com/world/china/china-passes-new-personal-data-privacy-law-take-effect-nov-1-2021-08-20/) vient d'être adoptée, créant l'une des réglementations les plus strictes sur la confidentialité des données en ligne dans le monde.
|
||||
|
||||
> 🚨 L'Union européenne a défini le RGPD (Règlement général sur la protection des données), qui reste l'une des réglementations les plus influentes sur la confidentialité des données aujourd'hui. Saviez-vous qu'il définit également [8 droits des utilisateurs](https://www.freeprivacypolicy.com/blog/8-user-rights-gdpr) pour protéger la confidentialité numérique et les données personnelles des citoyens ? Découvrez quels sont ces droits et pourquoi ils sont importants.
|
||||
|
||||
### 4. Culture éthique
|
||||
|
||||
Notez qu'il existe un écart intangible entre _la conformité_ (faire juste assez pour respecter "la lettre de la loi") et le traitement des [problèmes systémiques](https://www.coursera.org/learn/data-science-ethics/home/week/4) (comme l'ossification, l'asymétrie de l'information et l'injustice dans la distribution) qui peuvent accélérer la militarisation de l'IA.
|
||||
|
||||
Ce dernier nécessite [des approches collaboratives pour définir des cultures éthiques](https://towardsdatascience.com/why-ai-ethics-requires-a-culture-driven-approach-26f451afa29f) qui construisent des connexions émotionnelles et des valeurs partagées cohérentes _entre les organisations_ de l'industrie. Cela appelle à des [cultures éthiques formalisées](https://www.codeforamerica.org/news/formalizing-an-ethical-data-culture/) dans les organisations - permettant à _n'importe qui_ de [tirer le cordon Andon](https://en.wikipedia.org/wiki/Andon_(manufacturing)) (pour soulever des préoccupations éthiques tôt dans le processus) et faisant des _évaluations éthiques_ (par exemple, dans le recrutement) un critère central pour la formation des équipes dans les projets d'IA.
|
||||
|
||||
---
|
||||
## [Quiz post-conférence](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/3) 🎯
|
||||
## Révision et auto-apprentissage
|
||||
|
||||
Les cours et les livres aident à comprendre les concepts et défis éthiques fondamentaux, tandis que les études de cas et les outils aident à appliquer les pratiques éthiques dans des contextes réels. Voici quelques ressources pour commencer.
|
||||
|
||||
* [Machine Learning For Beginners](https://github.com/microsoft/ML-For-Beginners/blob/main/1-Introduction/3-fairness/README.md) - leçon sur l'équité, de Microsoft.
|
||||
* [Principes de l'IA responsable](https://docs.microsoft.com/en-us/learn/modules/responsible-ai-principles/) - parcours d'apprentissage gratuit de Microsoft Learn.
|
||||
* [Éthique et science des données](https://resources.oreilly.com/examples/0636920203964) - EBook O'Reilly (M. Loukides, H. Mason et al.)
|
||||
* [Éthique de la science des données](https://www.coursera.org/learn/data-science-ethics#syllabus) - cours en ligne de l'Université du Michigan.
|
||||
* [Ethics Unwrapped](https://ethicsunwrapped.utexas.edu/case-studies) - études de cas de l'Université du Texas.
|
||||
|
||||
# Devoir
|
||||
|
||||
[Écrire une étude de cas sur l'éthique des données](assignment.md)
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,33 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "b588c0fc73014f52520c666efc3e0cc3",
|
||||
"translation_date": "2025-08-24T12:31:55+00:00",
|
||||
"source_file": "1-Introduction/02-ethics/assignment.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
## Rédiger une étude de cas sur l'éthique des données
|
||||
|
||||
## Instructions
|
||||
|
||||
Vous avez appris à propos de divers [Défis d'éthique des données](README.md#2-ethics-challenges) et vu des exemples d'[Études de cas](README.md#3-case-studies) illustrant des défis éthiques liés aux données dans des contextes réels.
|
||||
|
||||
Dans cet exercice, vous allez rédiger votre propre étude de cas reflétant un défi éthique lié aux données, basé sur votre propre expérience ou sur un contexte réel pertinent que vous connaissez. Suivez simplement ces étapes :
|
||||
|
||||
1. `Choisissez un défi éthique lié aux données`. Consultez [les exemples de la leçon](README.md#2-ethics-challenges) ou explorez des exemples en ligne comme [la checklist Deon](https://deon.drivendata.org/examples/) pour trouver de l'inspiration.
|
||||
|
||||
2. `Décrivez un exemple réel`. Réfléchissez à une situation dont vous avez entendu parler (actualités, étude de recherche, etc.) ou que vous avez vécue (communauté locale), où ce défi spécifique s'est produit. Pensez aux questions éthiques liées aux données dans ce contexte - et discutez des dommages potentiels ou des conséquences imprévues qui découlent de ce problème. Points bonus : réfléchissez à des solutions potentielles ou à des processus qui pourraient être appliqués ici pour aider à éliminer ou atténuer l'impact négatif de ce défi.
|
||||
|
||||
3. `Fournissez une liste de ressources associées`. Partagez une ou plusieurs ressources (liens vers un article, un billet de blog personnel ou une image, un article de recherche en ligne, etc.) pour prouver qu'il s'agit d'un événement réel. Points bonus : partagez des ressources qui mettent également en évidence les dommages et conséquences potentiels de l'incident, ou qui soulignent les mesures positives prises pour éviter qu'il ne se reproduise.
|
||||
|
||||
|
||||
|
||||
## Grille d'évaluation
|
||||
|
||||
Exemplaire | Adéquat | À améliorer
|
||||
--- | --- | -- |
|
||||
Un ou plusieurs défis éthiques liés aux données sont identifiés. <br/> <br/> L'étude de cas décrit clairement un incident réel reflétant ce défi, et met en évidence les conséquences ou dommages indésirables qu'il a causés. <br/><br/> Il y a au moins une ressource liée pour prouver que cela s'est produit. | Un défi éthique lié aux données est identifié. <br/><br/> Au moins un dommage ou une conséquence pertinent(e) est brièvement discuté(e). <br/><br/> Cependant, la discussion est limitée ou manque de preuve d'une occurrence réelle. | Un défi lié aux données est identifié. <br/><br/> Cependant, la description ou les ressources ne reflètent pas adéquatement le défi ou ne prouvent pas qu'il s'agit d'une occurrence réelle. |
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,83 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "356d12cffc3125db133a2d27b827a745",
|
||||
"translation_date": "2025-08-24T12:40:12+00:00",
|
||||
"source_file": "1-Introduction/03-defining-data/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Définir les Données
|
||||
|
||||
| ](../../sketchnotes/03-DefiningData.png)|
|
||||
|:---:|
|
||||
|Définir les Données - _Sketchnote par [@nitya](https://twitter.com/nitya)_ |
|
||||
|
||||
Les données sont des faits, des informations, des observations et des mesures utilisées pour faire des découvertes et soutenir des décisions éclairées. Un point de données est une unité unique de données dans un ensemble de données, qui est une collection de points de données. Les ensembles de données peuvent se présenter sous différents formats et structures, généralement en fonction de leur source ou de leur origine. Par exemple, les revenus mensuels d'une entreprise pourraient être dans une feuille de calcul, tandis que les données de fréquence cardiaque horaire d'une montre connectée pourraient être au format [JSON](https://stackoverflow.com/a/383699). Il est courant que les data scientists travaillent avec différents types de données au sein d'un ensemble de données.
|
||||
|
||||
Cette leçon se concentre sur l'identification et la classification des données en fonction de leurs caractéristiques et de leurs sources.
|
||||
|
||||
## [Quiz Pré-Cours](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/4)
|
||||
|
||||
## Comment les Données sont Décrites
|
||||
|
||||
### Données Brutes
|
||||
Les données brutes sont des données provenant de leur source dans leur état initial et qui n'ont pas été analysées ou organisées. Pour comprendre ce qui se passe dans un ensemble de données, elles doivent être organisées dans un format compréhensible par les humains ainsi que par la technologie utilisée pour les analyser davantage. La structure d'un ensemble de données décrit comment il est organisé et peut être classée comme structuré, non structuré ou semi-structuré. Ces types de structure varient en fonction de la source, mais entrent généralement dans ces trois catégories.
|
||||
|
||||
### Données Quantitatives
|
||||
Les données quantitatives sont des observations numériques dans un ensemble de données et peuvent généralement être analysées, mesurées et utilisées mathématiquement. Quelques exemples de données quantitatives : la population d'un pays, la taille d'une personne ou les revenus trimestriels d'une entreprise. Avec une analyse supplémentaire, les données quantitatives pourraient être utilisées pour découvrir des tendances saisonnières de l'indice de qualité de l'air (AQI) ou estimer la probabilité de trafic aux heures de pointe lors d'une journée de travail typique.
|
||||
|
||||
### Données Qualitatives
|
||||
Les données qualitatives, également appelées données catégoriques, sont des données qui ne peuvent pas être mesurées objectivement comme les observations des données quantitatives. Ce sont généralement divers formats de données subjectives qui capturent la qualité de quelque chose, comme un produit ou un processus. Parfois, les données qualitatives sont numériques mais ne sont pas utilisées mathématiquement, comme les numéros de téléphone ou les horodatages. Quelques exemples de données qualitatives : les commentaires vidéo, la marque et le modèle d'une voiture ou la couleur préférée de vos amis proches. Les données qualitatives pourraient être utilisées pour comprendre quels produits les consommateurs préfèrent ou pour identifier des mots-clés populaires dans des CV.
|
||||
|
||||
### Données Structurées
|
||||
Les données structurées sont organisées en lignes et colonnes, où chaque ligne possède le même ensemble de colonnes. Les colonnes représentent une valeur d'un type particulier et sont identifiées par un nom décrivant ce que représente la valeur, tandis que les lignes contiennent les valeurs réelles. Les colonnes ont souvent un ensemble spécifique de règles ou de restrictions sur les valeurs, pour garantir que les valeurs représentent correctement la colonne. Par exemple, imaginez une feuille de calcul de clients où chaque ligne doit avoir un numéro de téléphone et où les numéros de téléphone ne contiennent jamais de caractères alphabétiques. Des règles peuvent être appliquées à la colonne des numéros de téléphone pour s'assurer qu'elle n'est jamais vide et ne contient que des chiffres.
|
||||
|
||||
Un avantage des données structurées est qu'elles peuvent être organisées de manière à être reliées à d'autres données structurées. Cependant, comme les données sont conçues pour être organisées d'une manière spécifique, apporter des modifications à leur structure globale peut demander beaucoup d'efforts. Par exemple, ajouter une colonne d'e-mails à la feuille de calcul des clients qui ne peut pas être vide signifie qu'il faudra trouver comment ajouter ces valeurs aux lignes existantes de clients dans l'ensemble de données.
|
||||
|
||||
Exemples de données structurées : feuilles de calcul, bases de données relationnelles, numéros de téléphone, relevés bancaires.
|
||||
|
||||
### Données Non Structurées
|
||||
Les données non structurées ne peuvent généralement pas être catégorisées en lignes ou colonnes et ne suivent pas un format ou un ensemble de règles. Comme les données non structurées ont moins de restrictions sur leur structure, il est plus facile d'ajouter de nouvelles informations par rapport à un ensemble de données structuré. Si un capteur capturant des données sur la pression barométrique toutes les 2 minutes reçoit une mise à jour lui permettant désormais de mesurer et d'enregistrer la température, cela ne nécessite pas de modifier les données existantes si elles sont non structurées. Cependant, cela peut rendre l'analyse ou l'exploration de ce type de données plus longue. Par exemple, un scientifique qui souhaite trouver la température moyenne du mois précédent à partir des données du capteur découvre que le capteur a enregistré un "e" dans certaines de ses données pour indiquer qu'il était en panne, au lieu d'un nombre typique, ce qui signifie que les données sont incomplètes.
|
||||
|
||||
Exemples de données non structurées : fichiers texte, messages texte, fichiers vidéo.
|
||||
|
||||
### Données Semi-Structurées
|
||||
Les données semi-structurées ont des caractéristiques qui en font une combinaison de données structurées et non structurées. Elles ne suivent généralement pas un format de lignes et colonnes, mais sont organisées d'une manière considérée comme structurée et peuvent suivre un format fixe ou un ensemble de règles. La structure varie selon les sources, allant d'une hiérarchie bien définie à quelque chose de plus flexible permettant une intégration facile de nouvelles informations. Les métadonnées sont des indicateurs qui aident à décider comment les données sont organisées et stockées et portent divers noms en fonction du type de données. Quelques noms courants pour les métadonnées : balises, éléments, entités et attributs. Par exemple, un message e-mail typique aura un sujet, un corps et un ensemble de destinataires et peut être organisé par expéditeur ou date d'envoi.
|
||||
|
||||
Exemples de données semi-structurées : HTML, fichiers CSV, JavaScript Object Notation (JSON).
|
||||
|
||||
## Sources de Données
|
||||
|
||||
Une source de données est l'emplacement initial où les données ont été générées ou où elles "résident" et varie en fonction de la manière et du moment où elles ont été collectées. Les données générées par leurs utilisateurs sont appelées données primaires, tandis que les données secondaires proviennent d'une source ayant collecté des données pour un usage général. Par exemple, un groupe de scientifiques collectant des observations dans une forêt tropicale serait considéré comme primaire, et s'ils décident de les partager avec d'autres scientifiques, cela serait considéré comme secondaire pour ceux qui les utilisent.
|
||||
|
||||
Les bases de données sont une source courante et reposent sur un système de gestion de bases de données pour héberger et maintenir les données, où les utilisateurs utilisent des commandes appelées requêtes pour explorer les données. Les fichiers comme sources de données peuvent être des fichiers audio, image et vidéo ainsi que des feuilles de calcul comme Excel. Les sources Internet sont un emplacement courant pour héberger des données, où des bases de données ainsi que des fichiers peuvent être trouvés. Les interfaces de programmation d'applications, également appelées API, permettent aux programmeurs de créer des moyens de partager des données avec des utilisateurs externes via Internet, tandis que le processus de web scraping extrait des données d'une page web. Les [leçons sur le Travail avec les Données](../../../../../../../../../2-Working-With-Data) se concentrent sur la manière d'utiliser diverses sources de données.
|
||||
|
||||
## Conclusion
|
||||
|
||||
Dans cette leçon, nous avons appris :
|
||||
|
||||
- Ce que sont les données
|
||||
- Comment les données sont décrites
|
||||
- Comment les données sont classées et catégorisées
|
||||
- Où les données peuvent être trouvées
|
||||
|
||||
## 🚀 Défi
|
||||
|
||||
Kaggle est une excellente source d'ensembles de données ouverts. Utilisez l'[outil de recherche d'ensembles de données](https://www.kaggle.com/datasets) pour trouver des ensembles de données intéressants et classifiez 3 à 5 ensembles de données selon ces critères :
|
||||
|
||||
- Les données sont-elles quantitatives ou qualitatives ?
|
||||
- Les données sont-elles structurées, non structurées ou semi-structurées ?
|
||||
|
||||
## [Quiz Post-Cours](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/5)
|
||||
|
||||
## Révision & Auto-Étude
|
||||
|
||||
- Cette unité de Microsoft Learn, intitulée [Classifiez vos Données](https://docs.microsoft.com/en-us/learn/modules/choose-storage-approach-in-azure/2-classify-data), propose une explication détaillée des données structurées, semi-structurées et non structurées.
|
||||
|
||||
## Devoir
|
||||
|
||||
[Classifiez des Ensembles de Données](assignment.md)
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,77 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "2e5cacb967c1e9dfd07809bfc441a0b4",
|
||||
"translation_date": "2025-08-24T12:42:03+00:00",
|
||||
"source_file": "1-Introduction/03-defining-data/assignment.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Classification des ensembles de données
|
||||
|
||||
## Instructions
|
||||
|
||||
Suivez les consignes de cet exercice pour identifier et classer les données selon l'un de chacun des types suivants :
|
||||
|
||||
**Types de structure** : Structuré, Semi-structuré ou Non structuré
|
||||
|
||||
**Types de valeur** : Qualitatif ou Quantitatif
|
||||
|
||||
**Types de source** : Primaire ou Secondaire
|
||||
|
||||
1. Une entreprise a été rachetée et a maintenant une société mère. Les data scientists ont reçu un tableur contenant les numéros de téléphone des clients de la part de la société mère.
|
||||
|
||||
Type de structure :
|
||||
|
||||
Type de valeur :
|
||||
|
||||
Type de source :
|
||||
|
||||
---
|
||||
|
||||
2. Une montre connectée collecte les données de fréquence cardiaque de son utilisateur, et les données brutes sont au format JSON.
|
||||
|
||||
Type de structure :
|
||||
|
||||
Type de valeur :
|
||||
|
||||
Type de source :
|
||||
|
||||
---
|
||||
|
||||
3. Une enquête sur le moral des employés, réalisée sur le lieu de travail, est stockée dans un fichier CSV.
|
||||
|
||||
Type de structure :
|
||||
|
||||
Type de valeur :
|
||||
|
||||
Type de source :
|
||||
|
||||
---
|
||||
|
||||
4. Des astrophysiciens accèdent à une base de données de galaxies collectées par une sonde spatiale. Les données contiennent le nombre de planètes dans chaque galaxie.
|
||||
|
||||
Type de structure :
|
||||
|
||||
Type de valeur :
|
||||
|
||||
Type de source :
|
||||
|
||||
---
|
||||
|
||||
5. Une application de gestion financière personnelle utilise des API pour se connecter aux comptes financiers d'un utilisateur afin de calculer son patrimoine net. L'utilisateur peut voir toutes ses transactions sous forme de lignes et colonnes, dans un format similaire à un tableur.
|
||||
|
||||
Type de structure :
|
||||
|
||||
Type de valeur :
|
||||
|
||||
Type de source :
|
||||
|
||||
## Grille d'évaluation
|
||||
|
||||
Exemplaire | Adéquat | À améliorer
|
||||
--- | --- | -- |
|
||||
Identifie correctement tous les types de structure, de valeur et de source | Identifie correctement 3 types de structure, de valeur et de source | Identifie correctement 2 types ou moins de structure, de valeur et de source |
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,38 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "01d1b493e8b51a6ebb42524f6b1bcfff",
|
||||
"translation_date": "2025-08-24T12:49:43+00:00",
|
||||
"source_file": "1-Introduction/04-stats-and-probability/assignment.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Petite étude sur le diabète
|
||||
|
||||
Dans cet exercice, nous allons travailler avec un petit ensemble de données de patients diabétiques provenant de [ici](https://www4.stat.ncsu.edu/~boos/var.select/diabetes.html).
|
||||
|
||||
| | ÂGE | SEXE | IMC | TA | S1 | S2 | S3 | S4 | S5 | S6 | Y |
|
||||
|---|-----|------|-----|----|----|----|----|----|----|----|----|
|
||||
| 0 | 59 | 2 | 32.1 | 101. | 157 | 93.2 | 38.0 | 4. | 4.8598 | 87 | 151 |
|
||||
| 1 | 48 | 1 | 21.6 | 87.0 | 183 | 103.2 | 70. | 3. | 3.8918 | 69 | 75 |
|
||||
| 2 | 72 | 2 | 30.5 | 93.0 | 156 | 93.6 | 41.0 | 4.0 | 4. | 85 | 141 |
|
||||
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
|
||||
|
||||
## Instructions
|
||||
|
||||
* Ouvrez le [notebook de l'exercice](../../../../1-Introduction/04-stats-and-probability/assignment.ipynb) dans un environnement jupyter notebook
|
||||
* Complétez toutes les tâches listées dans le notebook, à savoir :
|
||||
* [ ] Calculer les valeurs moyennes et la variance pour toutes les variables
|
||||
* [ ] Tracer des boxplots pour l'IMC, la TA et Y en fonction du sexe
|
||||
* [ ] Quelle est la distribution des variables Âge, Sexe, IMC et Y ?
|
||||
* [ ] Tester la corrélation entre les différentes variables et la progression de la maladie (Y)
|
||||
* [ ] Tester l'hypothèse selon laquelle le degré de progression du diabète est différent entre les hommes et les femmes
|
||||
|
||||
## Grille d'évaluation
|
||||
|
||||
Exemplaire | Adéquat | À améliorer
|
||||
--- | --- | --- |
|
||||
Toutes les tâches requises sont complètes, illustrées graphiquement et expliquées | La plupart des tâches sont complètes, mais les explications ou les conclusions tirées des graphiques et/ou des valeurs obtenues manquent | Seules les tâches de base, comme le calcul des moyennes/variances et les graphiques simples, sont complètes, aucune conclusion n'est tirée des données
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,29 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "696a8474a01054281704cbfb09148949",
|
||||
"translation_date": "2025-08-24T12:20:48+00:00",
|
||||
"source_file": "1-Introduction/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Introduction à la Science des Données
|
||||
|
||||

|
||||
> Photo par <a href="https://unsplash.com/@dawson2406?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Stephen Dawson</a> sur <a href="https://unsplash.com/s/photos/data?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
|
||||
|
||||
Dans ces leçons, vous découvrirez comment la Science des Données est définie et apprendrez les considérations éthiques qu'un scientifique des données doit prendre en compte. Vous apprendrez également comment les données sont définies et explorerez un peu les statistiques et la probabilité, les domaines académiques fondamentaux de la Science des Données.
|
||||
|
||||
### Sujets
|
||||
|
||||
1. [Définir la Science des Données](01-defining-data-science/README.md)
|
||||
2. [Éthique en Science des Données](02-ethics/README.md)
|
||||
3. [Définir les Données](03-defining-data/README.md)
|
||||
4. [Introduction aux Statistiques et à la Probabilité](04-stats-and-probability/README.md)
|
||||
|
||||
### Crédits
|
||||
|
||||
Ces leçons ont été écrites avec ❤️ par [Nitya Narasimhan](https://twitter.com/nitya) et [Dmitry Soshnikov](https://twitter.com/shwars).
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,193 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "870a0086adbc313a8eea5489bdcb2522",
|
||||
"translation_date": "2025-08-24T12:00:50+00:00",
|
||||
"source_file": "2-Working-With-Data/05-relational-databases/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Travailler avec les données : Bases de données relationnelles
|
||||
|
||||
| ](../../sketchnotes/05-RelationalData.png)|
|
||||
|:---:|
|
||||
| Travailler avec les données : Bases de données relationnelles - _Sketchnote par [@nitya](https://twitter.com/nitya)_ |
|
||||
|
||||
Il est probable que vous ayez déjà utilisé un tableur pour stocker des informations. Vous aviez un ensemble de lignes et de colonnes, où les lignes contenaient les informations (ou données), et les colonnes décrivaient ces informations (parfois appelées métadonnées). Une base de données relationnelle repose sur ce principe fondamental de colonnes et de lignes dans des tables, vous permettant de répartir les informations sur plusieurs tables. Cela vous permet de travailler avec des données plus complexes, d'éviter les duplications et d'avoir une flexibilité dans la manière d'explorer les données. Explorons les concepts d'une base de données relationnelle.
|
||||
|
||||
## [Quiz avant le cours](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/8)
|
||||
|
||||
## Tout commence par des tables
|
||||
|
||||
Une base de données relationnelle a pour élément central les tables. Tout comme dans un tableur, une table est une collection de colonnes et de lignes. Les lignes contiennent les données ou informations avec lesquelles nous souhaitons travailler, comme le nom d'une ville ou la quantité de précipitations. Les colonnes décrivent les données qu'elles stockent.
|
||||
|
||||
Commençons notre exploration en créant une table pour stocker des informations sur les villes. Nous pourrions commencer par leur nom et leur pays. Vous pourriez stocker cela dans une table comme suit :
|
||||
|
||||
| Ville | Pays |
|
||||
| --------- | ------------- |
|
||||
| Tokyo | Japon |
|
||||
| Atlanta | États-Unis |
|
||||
| Auckland | Nouvelle-Zélande |
|
||||
|
||||
Remarquez que les noms des colonnes **ville**, **pays** et **population** décrivent les données stockées, et chaque ligne contient des informations sur une ville.
|
||||
|
||||
## Les limites d'une approche avec une seule table
|
||||
|
||||
Il est probable que la table ci-dessus vous semble relativement familière. Ajoutons maintenant des données supplémentaires à notre base de données en pleine croissance - les précipitations annuelles (en millimètres). Nous nous concentrerons sur les années 2018, 2019 et 2020. Si nous devions les ajouter pour Tokyo, cela pourrait ressembler à ceci :
|
||||
|
||||
| Ville | Pays | Année | Quantité |
|
||||
| ------ | ------- | ----- | -------- |
|
||||
| Tokyo | Japon | 2020 | 1690 |
|
||||
| Tokyo | Japon | 2019 | 1874 |
|
||||
| Tokyo | Japon | 2018 | 1445 |
|
||||
|
||||
Que remarquez-vous à propos de notre table ? Vous pourriez remarquer que nous dupliquons le nom et le pays de la ville encore et encore. Cela pourrait occuper beaucoup d'espace de stockage, et il est largement inutile d'avoir plusieurs copies. Après tout, Tokyo n'a qu'un seul nom qui nous intéresse.
|
||||
|
||||
OK, essayons autre chose. Ajoutons de nouvelles colonnes pour chaque année :
|
||||
|
||||
| Ville | Pays | 2018 | 2019 | 2020 |
|
||||
| --------- | ------------- | ---- | ---- | ---- |
|
||||
| Tokyo | Japon | 1445 | 1874 | 1690 |
|
||||
| Atlanta | États-Unis | 1779 | 1111 | 1683 |
|
||||
| Auckland | Nouvelle-Zélande | 1386 | 942 | 1176 |
|
||||
|
||||
Bien que cela évite la duplication des lignes, cela ajoute quelques autres défis. Nous devrions modifier la structure de notre table chaque fois qu'une nouvelle année est ajoutée. De plus, à mesure que nos données augmentent, avoir nos années comme colonnes rendra plus difficile la récupération et le calcul des valeurs.
|
||||
|
||||
C'est pourquoi nous avons besoin de plusieurs tables et de relations. En divisant nos données, nous pouvons éviter les duplications et avoir plus de flexibilité dans la manière dont nous travaillons avec nos données.
|
||||
|
||||
## Les concepts de relations
|
||||
|
||||
Revenons à nos données et déterminons comment nous voulons les diviser. Nous savons que nous voulons stocker le nom et le pays de nos villes, donc cela fonctionnera probablement mieux dans une seule table.
|
||||
|
||||
| Ville | Pays |
|
||||
| --------- | ------------- |
|
||||
| Tokyo | Japon |
|
||||
| Atlanta | États-Unis |
|
||||
| Auckland | Nouvelle-Zélande |
|
||||
|
||||
Mais avant de créer la table suivante, nous devons déterminer comment référencer chaque ville. Nous avons besoin d'une forme d'identifiant, ID ou (en termes techniques de base de données) une clé primaire. Une clé primaire est une valeur utilisée pour identifier une ligne spécifique dans une table. Bien que cela puisse être basé sur une valeur elle-même (nous pourrions utiliser le nom de la ville, par exemple), cela devrait presque toujours être un numéro ou un autre identifiant. Nous ne voulons pas que l'ID change, car cela casserait la relation. Vous constaterez que dans la plupart des cas, la clé primaire ou l'ID sera un numéro généré automatiquement.
|
||||
|
||||
> ✅ La clé primaire est fréquemment abrégée en PK
|
||||
|
||||
### villes
|
||||
|
||||
| ville_id | Ville | Pays |
|
||||
| -------- | --------- | ------------- |
|
||||
| 1 | Tokyo | Japon |
|
||||
| 2 | Atlanta | États-Unis |
|
||||
| 3 | Auckland | Nouvelle-Zélande |
|
||||
|
||||
> ✅ Vous remarquerez que nous utilisons les termes "id" et "clé primaire" de manière interchangeable pendant cette leçon. Les concepts ici s'appliquent aux DataFrames, que vous explorerez plus tard. Les DataFrames n'utilisent pas la terminologie de "clé primaire", cependant vous remarquerez qu'ils se comportent de manière similaire.
|
||||
|
||||
Avec notre table des villes créée, stockons les précipitations. Plutôt que de dupliquer les informations complètes sur la ville, nous pouvons utiliser l'ID. Nous devrions également nous assurer que la table nouvellement créée a une colonne *id*, car toutes les tables devraient avoir un ID ou une clé primaire.
|
||||
|
||||
### précipitations
|
||||
|
||||
| precipitation_id | ville_id | Année | Quantité |
|
||||
| ---------------- | -------- | ----- | -------- |
|
||||
| 1 | 1 | 2018 | 1445 |
|
||||
| 2 | 1 | 2019 | 1874 |
|
||||
| 3 | 1 | 2020 | 1690 |
|
||||
| 4 | 2 | 2018 | 1779 |
|
||||
| 5 | 2 | 2019 | 1111 |
|
||||
| 6 | 2 | 2020 | 1683 |
|
||||
| 7 | 3 | 2018 | 1386 |
|
||||
| 8 | 3 | 2019 | 942 |
|
||||
| 9 | 3 | 2020 | 1176 |
|
||||
|
||||
Remarquez la colonne **ville_id** dans la table nouvellement créée **précipitations**. Cette colonne contient des valeurs qui font référence aux IDs dans la table **villes**. En termes techniques de données relationnelles, cela s'appelle une **clé étrangère** ; c'est une clé primaire d'une autre table. Vous pouvez simplement la considérer comme une référence ou un pointeur. **ville_id** 1 fait référence à Tokyo.
|
||||
|
||||
> [!NOTE] La clé étrangère est fréquemment abrégée en FK
|
||||
|
||||
## Récupérer les données
|
||||
|
||||
Avec nos données séparées en deux tables, vous vous demandez peut-être comment les récupérer. Si nous utilisons une base de données relationnelle comme MySQL, SQL Server ou Oracle, nous pouvons utiliser un langage appelé Structured Query Language ou SQL. SQL (parfois prononcé "sequel") est un langage standard utilisé pour récupérer et modifier des données dans une base de données relationnelle.
|
||||
|
||||
Pour récupérer des données, vous utilisez la commande `SELECT`. En son cœur, vous **sélectionnez** les colonnes que vous souhaitez voir **depuis** la table dans laquelle elles sont contenues. Si vous vouliez afficher uniquement les noms des villes, vous pourriez utiliser ce qui suit :
|
||||
|
||||
```sql
|
||||
SELECT city
|
||||
FROM cities;
|
||||
|
||||
-- Output:
|
||||
-- Tokyo
|
||||
-- Atlanta
|
||||
-- Auckland
|
||||
```
|
||||
|
||||
`SELECT` est l'endroit où vous listez les colonnes, et `FROM` est l'endroit où vous listez les tables.
|
||||
|
||||
> [NOTE] La syntaxe SQL est insensible à la casse, ce qui signifie que `select` et `SELECT` signifient la même chose. Cependant, selon le type de base de données que vous utilisez, les colonnes et les tables pourraient être sensibles à la casse. En conséquence, il est recommandé de toujours traiter tout en programmation comme si c'était sensible à la casse. Lors de l'écriture de requêtes SQL, la convention courante est de mettre les mots-clés en majuscules.
|
||||
|
||||
La requête ci-dessus affichera toutes les villes. Imaginons que nous voulions afficher uniquement les villes en Nouvelle-Zélande. Nous avons besoin d'une forme de filtre. Le mot-clé SQL pour cela est `WHERE`, ou "où quelque chose est vrai".
|
||||
|
||||
```sql
|
||||
SELECT city
|
||||
FROM cities
|
||||
WHERE country = 'New Zealand';
|
||||
|
||||
-- Output:
|
||||
-- Auckland
|
||||
```
|
||||
|
||||
## Joindre les données
|
||||
|
||||
Jusqu'à présent, nous avons récupéré des données d'une seule table. Maintenant, nous voulons rassembler les données des tables **villes** et **précipitations**. Cela se fait en les *joignant* ensemble. Vous allez effectivement créer une liaison entre les deux tables et faire correspondre les valeurs d'une colonne de chaque table.
|
||||
|
||||
Dans notre exemple, nous allons faire correspondre la colonne **ville_id** dans **précipitations** avec la colonne **ville_id** dans **villes**. Cela associera la valeur des précipitations à sa ville respective. Le type de jointure que nous effectuerons est ce qu'on appelle une jointure *interne*, ce qui signifie que si des lignes ne correspondent pas à quelque chose dans l'autre table, elles ne seront pas affichées. Dans notre cas, chaque ville a des précipitations, donc tout sera affiché.
|
||||
|
||||
Récupérons les précipitations de 2019 pour toutes nos villes.
|
||||
|
||||
Nous allons le faire en étapes. La première étape consiste à joindre les données ensemble en indiquant les colonnes pour la liaison - **ville_id** comme souligné précédemment.
|
||||
|
||||
```sql
|
||||
SELECT cities.city
|
||||
rainfall.amount
|
||||
FROM cities
|
||||
INNER JOIN rainfall ON cities.city_id = rainfall.city_id
|
||||
```
|
||||
|
||||
Nous avons mis en évidence les deux colonnes que nous voulons, et le fait que nous voulons joindre les tables ensemble par **ville_id**. Maintenant, nous pouvons ajouter l'instruction `WHERE` pour filtrer uniquement l'année 2019.
|
||||
|
||||
```sql
|
||||
SELECT cities.city
|
||||
rainfall.amount
|
||||
FROM cities
|
||||
INNER JOIN rainfall ON cities.city_id = rainfall.city_id
|
||||
WHERE rainfall.year = 2019
|
||||
|
||||
-- Output
|
||||
|
||||
-- city | amount
|
||||
-- -------- | ------
|
||||
-- Tokyo | 1874
|
||||
-- Atlanta | 1111
|
||||
-- Auckland | 942
|
||||
```
|
||||
|
||||
## Résumé
|
||||
|
||||
Les bases de données relationnelles sont centrées sur la division des informations entre plusieurs tables qui sont ensuite réunies pour l'affichage et l'analyse. Cela offre une grande flexibilité pour effectuer des calculs et manipuler les données. Vous avez vu les concepts fondamentaux d'une base de données relationnelle, et comment effectuer une jointure entre deux tables.
|
||||
|
||||
## 🚀 Défi
|
||||
|
||||
Il existe de nombreuses bases de données relationnelles disponibles sur Internet. Vous pouvez explorer les données en utilisant les compétences que vous avez apprises ci-dessus.
|
||||
|
||||
## Quiz après le cours
|
||||
|
||||
## [Quiz après le cours](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/9)
|
||||
|
||||
## Révision et auto-apprentissage
|
||||
|
||||
Il existe plusieurs ressources disponibles sur [Microsoft Learn](https://docs.microsoft.com/learn?WT.mc_id=academic-77958-bethanycheum) pour continuer votre exploration des concepts SQL et des bases de données relationnelles.
|
||||
|
||||
- [Décrire les concepts des données relationnelles](https://docs.microsoft.com//learn/modules/describe-concepts-of-relational-data?WT.mc_id=academic-77958-bethanycheum)
|
||||
- [Commencer à interroger avec Transact-SQL](https://docs.microsoft.com//learn/paths/get-started-querying-with-transact-sql?WT.mc_id=academic-77958-bethanycheum) (Transact-SQL est une version de SQL)
|
||||
- [Contenu SQL sur Microsoft Learn](https://docs.microsoft.com/learn/browse/?products=azure-sql-database%2Csql-server&expanded=azure&WT.mc_id=academic-77958-bethanycheum)
|
||||
|
||||
## Devoir
|
||||
|
||||
[Titre du devoir](assignment.md)
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,71 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "2f2d7693f28e4b2675f275e489dc5aac",
|
||||
"translation_date": "2025-08-24T12:02:55+00:00",
|
||||
"source_file": "2-Working-With-Data/05-relational-databases/assignment.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Affichage des données des aéroports
|
||||
|
||||
Vous disposez d'une [base de données](https://raw.githubusercontent.com/Microsoft/Data-Science-For-Beginners/main/2-Working-With-Data/05-relational-databases/airports.db) construite avec [SQLite](https://sqlite.org/index.html) qui contient des informations sur les aéroports. Le schéma est affiché ci-dessous. Vous utiliserez l'[extension SQLite](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite&WT.mc_id=academic-77958-bethanycheum) dans [Visual Studio Code](https://code.visualstudio.com?WT.mc_id=academic-77958-bethanycheum) pour afficher des informations sur les aéroports de différentes villes.
|
||||
|
||||
## Instructions
|
||||
|
||||
Pour commencer cet exercice, vous devrez effectuer quelques étapes. Vous devrez installer certains outils et télécharger la base de données d'exemple.
|
||||
|
||||
### Configurez votre système
|
||||
|
||||
Vous pouvez utiliser Visual Studio Code et l'extension SQLite pour interagir avec la base de données.
|
||||
|
||||
1. Rendez-vous sur [code.visualstudio.com](https://code.visualstudio.com?WT.mc_id=academic-77958-bethanycheum) et suivez les instructions pour installer Visual Studio Code
|
||||
1. Installez l'[extension SQLite](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite&WT.mc_id=academic-77958-bethanycheum) comme indiqué sur la page du Marketplace
|
||||
|
||||
### Téléchargez et ouvrez la base de données
|
||||
|
||||
Ensuite, vous téléchargerez et ouvrirez la base de données.
|
||||
|
||||
1. Téléchargez le [fichier de base de données depuis GitHub](https://raw.githubusercontent.com/Microsoft/Data-Science-For-Beginners/main/2-Working-With-Data/05-relational-databases/airports.db) et enregistrez-le dans un répertoire
|
||||
1. Ouvrez Visual Studio Code
|
||||
1. Ouvrez la base de données dans l'extension SQLite en sélectionnant **Ctrl-Maj-P** (ou **Cmd-Maj-P** sur un Mac) et en tapant `SQLite: Open database`
|
||||
1. Sélectionnez **Choose database from file** et ouvrez le fichier **airports.db** que vous avez téléchargé précédemment
|
||||
1. Après avoir ouvert la base de données (aucune mise à jour ne s'affichera à l'écran), créez une nouvelle fenêtre de requête en sélectionnant **Ctrl-Maj-P** (ou **Cmd-Maj-P** sur un Mac) et en tapant `SQLite: New query`
|
||||
|
||||
Une fois ouverte, la nouvelle fenêtre de requête peut être utilisée pour exécuter des instructions SQL sur la base de données. Vous pouvez utiliser la commande **Ctrl-Maj-Q** (ou **Cmd-Maj-Q** sur un Mac) pour exécuter des requêtes sur la base de données.
|
||||
|
||||
> [!NOTE] Pour plus d'informations sur l'extension SQLite, vous pouvez consulter la [documentation](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite&WT.mc_id=academic-77958-bethanycheum)
|
||||
|
||||
## Schéma de la base de données
|
||||
|
||||
Le schéma d'une base de données correspond à la conception et à la structure de ses tables. La base de données **airports** contient deux tables : `cities`, qui répertorie les villes du Royaume-Uni et d'Irlande, et `airports`, qui contient la liste de tous les aéroports. Comme certaines villes peuvent avoir plusieurs aéroports, deux tables ont été créées pour stocker ces informations. Dans cet exercice, vous utiliserez des jointures pour afficher des informations sur différentes villes.
|
||||
|
||||
| Villes |
|
||||
| ----------------- |
|
||||
| id (PK, entier) |
|
||||
| city (texte) |
|
||||
| country (texte) |
|
||||
|
||||
| Aéroports |
|
||||
| -------------------------------- |
|
||||
| id (PK, entier) |
|
||||
| name (texte) |
|
||||
| code (texte) |
|
||||
| city_id (FK vers id dans **Cities**) |
|
||||
|
||||
## Exercice
|
||||
|
||||
Créez des requêtes pour retourner les informations suivantes :
|
||||
|
||||
1. tous les noms de villes dans la table `Cities`
|
||||
1. toutes les villes en Irlande dans la table `Cities`
|
||||
1. tous les noms d'aéroports avec leur ville et leur pays
|
||||
1. tous les aéroports à Londres, Royaume-Uni
|
||||
|
||||
## Grille d'évaluation
|
||||
|
||||
| Exemplaire | Adéquat | À améliorer |
|
||||
| ---------- | -------- | ----------------- |
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,31 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "f824bfdb8b12d33293913f76f5c787c5",
|
||||
"translation_date": "2025-08-24T12:19:11+00:00",
|
||||
"source_file": "2-Working-With-Data/06-non-relational/assignment.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Bénéfices de Soda
|
||||
|
||||
## Instructions
|
||||
|
||||
La [feuille de calcul Coca Cola Co](../../../../2-Working-With-Data/06-non-relational/CocaColaCo.xlsx) manque de certains calculs. Votre tâche est de :
|
||||
|
||||
1. Calculer les bénéfices bruts des exercices '15, '16, '17 et '18
|
||||
- Bénéfice brut = Revenus d'exploitation nets - Coût des marchandises vendues
|
||||
1. Calculer la moyenne de tous les bénéfices bruts. Essayez de le faire avec une fonction.
|
||||
- Moyenne = Somme des bénéfices bruts divisée par le nombre d'exercices fiscaux (10)
|
||||
- Documentation sur la [fonction MOYENNE](https://support.microsoft.com/en-us/office/average-function-047bac88-d466-426c-a32b-8f33eb960cf6)
|
||||
1. Ce fichier est un fichier Excel, mais il devrait être modifiable sur n'importe quelle plateforme de tableur.
|
||||
|
||||
[Crédit de la source des données à Yiyi Wang](https://www.kaggle.com/yiyiwang0826/cocacola-excel)
|
||||
|
||||
## Grille d'évaluation
|
||||
|
||||
Exemplaire | Adéquat | À améliorer
|
||||
--- | --- | --- |
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction humaine professionnelle. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,287 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "116c5d361fbe812e59a73f37ce721d36",
|
||||
"translation_date": "2025-08-24T12:11:28+00:00",
|
||||
"source_file": "2-Working-With-Data/07-python/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Travailler avec les données : Python et la bibliothèque Pandas
|
||||
|
||||
|  ](../../sketchnotes/07-WorkWithPython.png) |
|
||||
| :-------------------------------------------------------------------------------------------------------: |
|
||||
| Travailler avec Python - _Sketchnote par [@nitya](https://twitter.com/nitya)_ |
|
||||
|
||||
[](https://youtu.be/dZjWOGbsN4Y)
|
||||
|
||||
Bien que les bases de données offrent des moyens très efficaces de stocker des données et de les interroger à l'aide de langages de requête, la manière la plus flexible de traiter les données est d'écrire votre propre programme pour les manipuler. Dans de nombreux cas, effectuer une requête de base de données serait une méthode plus efficace. Cependant, dans certains cas où un traitement de données plus complexe est nécessaire, cela ne peut pas être facilement réalisé avec SQL.
|
||||
Le traitement des données peut être programmé dans n'importe quel langage de programmation, mais certains langages sont plus adaptés au travail avec les données. Les data scientists préfèrent généralement l'un des langages suivants :
|
||||
|
||||
* **[Python](https://www.python.org/)**, un langage de programmation généraliste, souvent considéré comme l'une des meilleures options pour les débutants en raison de sa simplicité. Python dispose de nombreuses bibliothèques supplémentaires qui peuvent vous aider à résoudre de nombreux problèmes pratiques, comme extraire vos données d'une archive ZIP ou convertir une image en niveaux de gris. En plus de la science des données, Python est également souvent utilisé pour le développement web.
|
||||
* **[R](https://www.r-project.org/)** est un outil traditionnel développé pour le traitement statistique des données. Il contient également un vaste dépôt de bibliothèques (CRAN), ce qui en fait un bon choix pour le traitement des données. Cependant, R n'est pas un langage de programmation généraliste et est rarement utilisé en dehors du domaine de la science des données.
|
||||
* **[Julia](https://julialang.org/)** est un autre langage développé spécifiquement pour la science des données. Il est conçu pour offrir de meilleures performances que Python, ce qui en fait un excellent outil pour les expérimentations scientifiques.
|
||||
|
||||
Dans cette leçon, nous nous concentrerons sur l'utilisation de Python pour un traitement simple des données. Nous supposerons une familiarité de base avec le langage. Si vous souhaitez une introduction plus approfondie à Python, vous pouvez consulter l'une des ressources suivantes :
|
||||
|
||||
* [Apprenez Python de manière ludique avec Turtle Graphics et Fractals](https://github.com/shwars/pycourse) - Un cours d'introduction rapide à la programmation Python sur GitHub
|
||||
* [Faites vos premiers pas avec Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) - Parcours d'apprentissage sur [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
|
||||
|
||||
Les données peuvent se présenter sous de nombreuses formes. Dans cette leçon, nous examinerons trois formes de données : **données tabulaires**, **texte** et **images**.
|
||||
|
||||
Nous nous concentrerons sur quelques exemples de traitement de données, plutôt que de vous donner un aperçu complet de toutes les bibliothèques associées. Cela vous permettra de comprendre les principales possibilités et de savoir où trouver des solutions à vos problèmes lorsque vous en aurez besoin.
|
||||
|
||||
> **Conseil le plus utile**. Lorsque vous devez effectuer une opération sur des données que vous ne savez pas comment réaliser, essayez de chercher sur Internet. [Stackoverflow](https://stackoverflow.com/) contient souvent de nombreux exemples de code utiles en Python pour de nombreuses tâches courantes.
|
||||
|
||||
## [Quiz avant la leçon](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/12)
|
||||
|
||||
## Données tabulaires et Dataframes
|
||||
|
||||
Vous avez déjà rencontré des données tabulaires lorsque nous avons parlé des bases de données relationnelles. Lorsque vous avez beaucoup de données contenues dans plusieurs tables liées, il est logique d'utiliser SQL pour travailler avec elles. Cependant, il existe de nombreux cas où nous avons une table de données et où nous devons obtenir une **compréhension** ou des **insights** sur ces données, comme la distribution, la corrélation entre les valeurs, etc. En science des données, il y a de nombreux cas où nous devons effectuer des transformations des données originales, suivies de visualisations. Ces deux étapes peuvent être facilement réalisées avec Python.
|
||||
|
||||
Il existe deux bibliothèques très utiles en Python qui peuvent vous aider à travailler avec des données tabulaires :
|
||||
* **[Pandas](https://pandas.pydata.org/)** vous permet de manipuler ce qu'on appelle des **Dataframes**, qui sont analogues aux tables relationnelles. Vous pouvez avoir des colonnes nommées et effectuer différentes opérations sur les lignes, les colonnes et les dataframes en général.
|
||||
* **[Numpy](https://numpy.org/)** est une bibliothèque pour travailler avec des **tensors**, c'est-à-dire des **tableaux** multidimensionnels. Les tableaux contiennent des valeurs du même type sous-jacent et sont plus simples que les dataframes, mais ils offrent davantage d'opérations mathématiques et créent moins de surcharge.
|
||||
|
||||
Il existe également quelques autres bibliothèques que vous devriez connaître :
|
||||
* **[Matplotlib](https://matplotlib.org/)** est une bibliothèque utilisée pour la visualisation des données et la création de graphiques
|
||||
* **[SciPy](https://www.scipy.org/)** est une bibliothèque contenant des fonctions scientifiques supplémentaires. Nous avons déjà rencontré cette bibliothèque en parlant de probabilité et de statistiques
|
||||
|
||||
Voici un morceau de code que vous utiliseriez typiquement pour importer ces bibliothèques au début de votre programme Python :
|
||||
```python
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
import matplotlib.pyplot as plt
|
||||
from scipy import ... # you need to specify exact sub-packages that you need
|
||||
```
|
||||
|
||||
Pandas repose sur quelques concepts de base.
|
||||
|
||||
### Series
|
||||
|
||||
**Series** est une séquence de valeurs, similaire à une liste ou un tableau numpy. La principale différence est que les séries ont également un **index**, et lorsque nous opérons sur des séries (par exemple, les additionner), l'index est pris en compte. L'index peut être aussi simple qu'un numéro de ligne entier (c'est l'index utilisé par défaut lors de la création d'une série à partir d'une liste ou d'un tableau), ou il peut avoir une structure complexe, comme un intervalle de dates.
|
||||
|
||||
> **Note** : Il y a du code introductif sur Pandas dans le notebook associé [`notebook.ipynb`](../../../../2-Working-With-Data/07-python/notebook.ipynb). Nous ne présentons ici que quelques exemples, et vous êtes bien sûr invité à consulter le notebook complet.
|
||||
|
||||
Prenons un exemple : nous voulons analyser les ventes de notre stand de glaces. Générons une série de chiffres de ventes (nombre d'articles vendus chaque jour) pour une certaine période :
|
||||
```python
|
||||
start_date = "Jan 1, 2020"
|
||||
end_date = "Mar 31, 2020"
|
||||
idx = pd.date_range(start_date,end_date)
|
||||
print(f"Length of index is {len(idx)}")
|
||||
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
|
||||
items_sold.plot()
|
||||
```
|
||||

|
||||
|
||||
Supposons maintenant que chaque semaine nous organisons une fête pour nos amis et que nous prenons 10 packs de glace supplémentaires pour la fête. Nous pouvons créer une autre série, indexée par semaine, pour le démontrer :
|
||||
```python
|
||||
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
|
||||
```
|
||||
Lorsque nous additionnons deux séries, nous obtenons le nombre total :
|
||||
```python
|
||||
total_items = items_sold.add(additional_items,fill_value=0)
|
||||
total_items.plot()
|
||||
```
|
||||

|
||||
|
||||
> **Note** que nous n'utilisons pas la syntaxe simple `total_items+additional_items`. Si nous l'avions fait, nous aurions obtenu de nombreux `NaN` (*Not a Number*) dans la série résultante. Cela est dû au fait qu'il manque des valeurs pour certains points d'index dans la série `additional_items`, et additionner `NaN` à quoi que ce soit donne `NaN`. Ainsi, nous devons spécifier le paramètre `fill_value` lors de l'addition.
|
||||
|
||||
Avec les séries temporelles, nous pouvons également **reéchantillonner** la série avec différents intervalles de temps. Par exemple, supposons que nous voulons calculer le volume moyen des ventes mensuelles. Nous pouvons utiliser le code suivant :
|
||||
```python
|
||||
monthly = total_items.resample("1M").mean()
|
||||
ax = monthly.plot(kind='bar')
|
||||
```
|
||||

|
||||
|
||||
### DataFrame
|
||||
|
||||
Un DataFrame est essentiellement une collection de séries avec le même index. Nous pouvons combiner plusieurs séries ensemble dans un DataFrame :
|
||||
```python
|
||||
a = pd.Series(range(1,10))
|
||||
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
|
||||
df = pd.DataFrame([a,b])
|
||||
```
|
||||
Cela créera une table horizontale comme celle-ci :
|
||||
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|
||||
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
|
||||
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|
||||
| 1 | I | like | to | use | Python | and | Pandas | very | much |
|
||||
|
||||
Nous pouvons également utiliser des séries comme colonnes et spécifier les noms de colonnes à l'aide d'un dictionnaire :
|
||||
```python
|
||||
df = pd.DataFrame({ 'A' : a, 'B' : b })
|
||||
```
|
||||
Cela nous donnera une table comme celle-ci :
|
||||
|
||||
| | A | B |
|
||||
| --- | --- | ------ |
|
||||
| 0 | 1 | I |
|
||||
| 1 | 2 | like |
|
||||
| 2 | 3 | to |
|
||||
| 3 | 4 | use |
|
||||
| 4 | 5 | Python |
|
||||
| 5 | 6 | and |
|
||||
| 6 | 7 | Pandas |
|
||||
| 7 | 8 | very |
|
||||
| 8 | 9 | much |
|
||||
|
||||
**Note** que nous pouvons également obtenir cette disposition de table en transposant la table précédente, par exemple en écrivant :
|
||||
```python
|
||||
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
|
||||
```
|
||||
Ici `.T` signifie l'opération de transposition du DataFrame, c'est-à-dire changer les lignes et les colonnes, et l'opération `rename` nous permet de renommer les colonnes pour correspondre à l'exemple précédent.
|
||||
|
||||
Voici quelques-unes des opérations les plus importantes que nous pouvons effectuer sur les DataFrames :
|
||||
|
||||
**Sélection de colonnes**. Nous pouvons sélectionner des colonnes individuelles en écrivant `df['A']` - cette opération retourne une série. Nous pouvons également sélectionner un sous-ensemble de colonnes dans un autre DataFrame en écrivant `df[['B','A']]` - cela retourne un autre DataFrame.
|
||||
|
||||
**Filtrage** de certaines lignes selon des critères. Par exemple, pour ne conserver que les lignes où la colonne `A` est supérieure à 5, nous pouvons écrire `df[df['A']>5]`.
|
||||
|
||||
> **Note** : La manière dont le filtrage fonctionne est la suivante. L'expression `df['A']<5` retourne une série booléenne, qui indique si l'expression est `True` ou `False` pour chaque élément de la série originale `df['A']`. Lorsque la série booléenne est utilisée comme index, elle retourne un sous-ensemble de lignes dans le DataFrame. Ainsi, il n'est pas possible d'utiliser une expression booléenne Python arbitraire, par exemple, écrire `df[df['A']>5 and df['A']<7]` serait incorrect. À la place, vous devez utiliser l'opération spéciale `&` sur les séries booléennes, en écrivant `df[(df['A']>5) & (df['A']<7)]` (*les parenthèses sont importantes ici*).
|
||||
|
||||
**Créer de nouvelles colonnes calculables**. Nous pouvons facilement créer de nouvelles colonnes calculables pour notre DataFrame en utilisant une expression intuitive comme celle-ci :
|
||||
```python
|
||||
df['DivA'] = df['A']-df['A'].mean()
|
||||
```
|
||||
Cet exemple calcule la divergence de A par rapport à sa valeur moyenne. Ce qui se passe réellement ici, c'est que nous calculons une série, puis nous assignons cette série au côté gauche, créant une autre colonne. Ainsi, nous ne pouvons pas utiliser d'opérations incompatibles avec les séries, par exemple, le code ci-dessous est incorrect :
|
||||
```python
|
||||
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
|
||||
df['LenB'] = len(df['B']) # <- Wrong result
|
||||
```
|
||||
Cet exemple, bien que syntaxiquement correct, donne un résultat incorrect, car il assigne la longueur de la série `B` à toutes les valeurs de la colonne, et non la longueur des éléments individuels comme nous l'avions prévu.
|
||||
|
||||
Si nous devons calculer des expressions complexes comme celle-ci, nous pouvons utiliser la fonction `apply`. Le dernier exemple peut être écrit comme suit :
|
||||
```python
|
||||
df['LenB'] = df['B'].apply(lambda x : len(x))
|
||||
# or
|
||||
df['LenB'] = df['B'].apply(len)
|
||||
```
|
||||
|
||||
Après les opérations ci-dessus, nous obtiendrons le DataFrame suivant :
|
||||
|
||||
| | A | B | DivA | LenB |
|
||||
| --- | --- | ------ | ---- | ---- |
|
||||
| 0 | 1 | I | -4.0 | 1 |
|
||||
| 1 | 2 | like | -3.0 | 4 |
|
||||
| 2 | 3 | to | -2.0 | 2 |
|
||||
| 3 | 4 | use | -1.0 | 3 |
|
||||
| 4 | 5 | Python | 0.0 | 6 |
|
||||
| 5 | 6 | and | 1.0 | 3 |
|
||||
| 6 | 7 | Pandas | 2.0 | 6 |
|
||||
| 7 | 8 | very | 3.0 | 4 |
|
||||
| 8 | 9 | much | 4.0 | 4 |
|
||||
|
||||
**Sélectionner des lignes en fonction de leur numéro** peut être fait en utilisant la construction `iloc`. Par exemple, pour sélectionner les 5 premières lignes du DataFrame :
|
||||
```python
|
||||
df.iloc[:5]
|
||||
```
|
||||
|
||||
**Regroupement** est souvent utilisé pour obtenir un résultat similaire aux *tableaux croisés dynamiques* dans Excel. Supposons que nous voulons calculer la valeur moyenne de la colonne `A` pour chaque nombre donné de `LenB`. Nous pouvons alors regrouper notre DataFrame par `LenB` et appeler `mean` :
|
||||
```python
|
||||
df.groupby(by='LenB').mean()
|
||||
```
|
||||
Si nous devons calculer la moyenne et le nombre d'éléments dans le groupe, nous pouvons utiliser une fonction `aggregate` plus complexe :
|
||||
```python
|
||||
df.groupby(by='LenB') \
|
||||
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
|
||||
.rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'})
|
||||
```
|
||||
Cela nous donne la table suivante :
|
||||
|
||||
| LenB | Count | Mean |
|
||||
| ---- | ----- | -------- |
|
||||
| 1 | 1 | 1.000000 |
|
||||
| 2 | 1 | 3.000000 |
|
||||
| 3 | 2 | 5.000000 |
|
||||
| 4 | 3 | 6.333333 |
|
||||
| 6 | 2 | 6.000000 |
|
||||
|
||||
### Obtenir des données
|
||||
Nous avons vu à quel point il est facile de construire des Series et des DataFrames à partir d'objets Python. Cependant, les données se présentent généralement sous forme de fichier texte ou de tableau Excel. Heureusement, Pandas nous offre un moyen simple de charger des données depuis le disque. Par exemple, lire un fichier CSV est aussi simple que cela :
|
||||
```python
|
||||
df = pd.read_csv('file.csv')
|
||||
```
|
||||
Nous verrons plus d'exemples de chargement de données, y compris leur récupération depuis des sites web externes, dans la section "Challenge".
|
||||
|
||||
### Impression et Visualisation
|
||||
|
||||
Un Data Scientist doit souvent explorer les données, il est donc important de pouvoir les visualiser. Lorsque le DataFrame est volumineux, il est souvent utile de vérifier que tout fonctionne correctement en affichant les premières lignes. Cela peut être fait en appelant `df.head()`. Si vous exécutez cela depuis Jupyter Notebook, le DataFrame sera affiché sous une forme tabulaire agréable.
|
||||
|
||||
Nous avons également vu l'utilisation de la fonction `plot` pour visualiser certaines colonnes. Bien que `plot` soit très utile pour de nombreuses tâches et prenne en charge différents types de graphiques via le paramètre `kind=`, vous pouvez toujours utiliser la bibliothèque `matplotlib` brute pour tracer quelque chose de plus complexe. Nous couvrirons la visualisation des données en détail dans des leçons de cours séparées.
|
||||
|
||||
Cette vue d'ensemble couvre les concepts les plus importants de Pandas, mais la bibliothèque est très riche, et il n'y a pas de limite à ce que vous pouvez faire avec elle ! Appliquons maintenant ces connaissances pour résoudre un problème spécifique.
|
||||
|
||||
## 🚀 Challenge 1 : Analyser la propagation du COVID
|
||||
|
||||
Le premier problème sur lequel nous allons nous concentrer est la modélisation de la propagation de l'épidémie de COVID-19. Pour ce faire, nous utiliserons les données sur le nombre de personnes infectées dans différents pays, fournies par le [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) de [l'Université Johns Hopkins](https://jhu.edu/). Le jeu de données est disponible dans [ce dépôt GitHub](https://github.com/CSSEGISandData/COVID-19).
|
||||
|
||||
Puisque nous voulons démontrer comment traiter les données, nous vous invitons à ouvrir [`notebook-covidspread.ipynb`](../../../../2-Working-With-Data/07-python/notebook-covidspread.ipynb) et à le lire de haut en bas. Vous pouvez également exécuter les cellules et relever certains défis que nous avons laissés pour vous à la fin.
|
||||
|
||||

|
||||
|
||||
> Si vous ne savez pas comment exécuter du code dans Jupyter Notebook, consultez [cet article](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
|
||||
|
||||
## Travailler avec des données non structurées
|
||||
|
||||
Bien que les données soient très souvent sous forme tabulaire, dans certains cas, nous devons traiter des données moins structurées, comme du texte ou des images. Dans ce cas, pour appliquer les techniques de traitement des données que nous avons vues précédemment, nous devons **extraire** des données structurées. Voici quelques exemples :
|
||||
|
||||
* Extraire des mots-clés d'un texte et voir à quelle fréquence ces mots-clés apparaissent
|
||||
* Utiliser des réseaux neuronaux pour extraire des informations sur les objets dans une image
|
||||
* Obtenir des informations sur les émotions des personnes à partir d'un flux vidéo
|
||||
|
||||
## 🚀 Challenge 2 : Analyser les articles sur le COVID
|
||||
|
||||
Dans ce défi, nous continuerons avec le sujet de la pandémie de COVID et nous concentrerons sur le traitement des articles scientifiques sur le sujet. Il existe [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) avec plus de 7000 articles (au moment de la rédaction) sur le COVID, disponibles avec des métadonnées et des résumés (et pour environ la moitié d'entre eux, le texte complet est également fourni).
|
||||
|
||||
Un exemple complet d'analyse de ce jeu de données en utilisant le service cognitif [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) est décrit [dans cet article de blog](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Nous discuterons d'une version simplifiée de cette analyse.
|
||||
|
||||
> **NOTE** : Nous ne fournissons pas une copie du jeu de données dans ce dépôt. Vous devrez peut-être d'abord télécharger le fichier [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) depuis [ce jeu de données sur Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Une inscription sur Kaggle peut être requise. Vous pouvez également télécharger le jeu de données sans inscription [ici](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), mais cela inclura tous les textes complets en plus du fichier de métadonnées.
|
||||
|
||||
Ouvrez [`notebook-papers.ipynb`](../../../../2-Working-With-Data/07-python/notebook-papers.ipynb) et lisez-le de haut en bas. Vous pouvez également exécuter les cellules et relever certains défis que nous avons laissés pour vous à la fin.
|
||||
|
||||

|
||||
|
||||
## Traitement des données d'image
|
||||
|
||||
Récemment, des modèles d'IA très puissants ont été développés pour comprendre les images. De nombreuses tâches peuvent être résolues en utilisant des réseaux neuronaux pré-entraînés ou des services cloud. Voici quelques exemples :
|
||||
|
||||
* **Classification d'images**, qui peut vous aider à catégoriser une image dans l'une des classes prédéfinies. Vous pouvez facilement entraîner vos propres classificateurs d'images en utilisant des services comme [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
|
||||
* **Détection d'objets** pour détecter différents objets dans une image. Des services comme [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) peuvent détecter un certain nombre d'objets courants, et vous pouvez entraîner un modèle [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) pour détecter des objets spécifiques d'intérêt.
|
||||
* **Détection de visages**, y compris l'âge, le genre et les émotions. Cela peut être fait via [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
|
||||
|
||||
Tous ces services cloud peuvent être appelés en utilisant [Python SDKs](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum), et peuvent donc être facilement intégrés dans votre flux de travail d'exploration de données.
|
||||
|
||||
Voici quelques exemples d'exploration de données à partir de sources d'images :
|
||||
* Dans l'article de blog [Comment apprendre la science des données sans coder](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/), nous explorons des photos Instagram, en essayant de comprendre ce qui pousse les gens à donner plus de "likes" à une photo. Nous extrayons d'abord autant d'informations que possible des images en utilisant [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), puis nous utilisons [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) pour construire un modèle interprétable.
|
||||
* Dans [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies), nous utilisons [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) pour extraire les émotions des personnes sur des photographies d'événements, afin de tenter de comprendre ce qui rend les gens heureux.
|
||||
|
||||
## Conclusion
|
||||
|
||||
Que vous disposiez déjà de données structurées ou non structurées, avec Python, vous pouvez effectuer toutes les étapes liées au traitement et à la compréhension des données. C'est probablement le moyen le plus flexible de traiter les données, et c'est la raison pour laquelle la majorité des data scientists utilisent Python comme principal outil. Apprendre Python en profondeur est probablement une bonne idée si vous êtes sérieux dans votre parcours en science des données !
|
||||
|
||||
## [Quiz post-lecture](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/13)
|
||||
|
||||
## Révision et Auto-étude
|
||||
|
||||
**Livres**
|
||||
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
|
||||
|
||||
**Ressources en ligne**
|
||||
* Tutoriel officiel [10 minutes pour Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html)
|
||||
* [Documentation sur la visualisation avec Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
|
||||
|
||||
**Apprendre Python**
|
||||
* [Apprenez Python de manière ludique avec Turtle Graphics et Fractals](https://github.com/shwars/pycourse)
|
||||
* [Faites vos premiers pas avec Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) sur [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
|
||||
|
||||
## Devoir
|
||||
|
||||
[Effectuez une étude de données plus détaillée pour les défis ci-dessus](assignment.md)
|
||||
|
||||
## Crédits
|
||||
|
||||
Cette leçon a été rédigée avec ♥️ par [Dmitry Soshnikov](http://soshnikov.com)
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,35 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "dc8f035ce92e4eaa078ab19caa68267a",
|
||||
"translation_date": "2025-08-24T12:15:00+00:00",
|
||||
"source_file": "2-Working-With-Data/07-python/assignment.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Devoir sur le traitement des données en Python
|
||||
|
||||
Dans ce devoir, nous vous demandons d'approfondir le code que nous avons commencé à développer dans nos défis. Le devoir se compose de deux parties :
|
||||
|
||||
## Modélisation de la propagation du COVID-19
|
||||
|
||||
- [ ] Tracez des graphiques *R* pour 5-6 pays différents sur un seul graphique pour comparaison, ou en utilisant plusieurs graphiques côte à côte.
|
||||
- [ ] Analysez comment le nombre de décès et de guérisons est corrélé au nombre de cas infectés.
|
||||
- [ ] Déterminez combien de temps dure typiquement une maladie en corrélant visuellement le taux d'infection et le taux de décès, et en recherchant des anomalies. Vous devrez peut-être examiner différents pays pour le découvrir.
|
||||
- [ ] Calculez le taux de mortalité et comment il évolue au fil du temps. *Vous pourriez vouloir prendre en compte la durée de la maladie en jours pour décaler une série temporelle avant de faire les calculs.*
|
||||
|
||||
## Analyse des articles sur le COVID-19
|
||||
|
||||
- [ ] Construisez une matrice de co-occurrence des différents médicaments, et identifiez quels médicaments sont souvent mentionnés ensemble (c'est-à-dire dans un même résumé). Vous pouvez modifier le code pour construire une matrice de co-occurrence pour les médicaments et les diagnostics.
|
||||
- [ ] Visualisez cette matrice à l'aide d'une carte thermique.
|
||||
- [ ] En guise de défi supplémentaire, visualisez la co-occurrence des médicaments en utilisant un [diagramme en cordes](https://en.wikipedia.org/wiki/Chord_diagram). [Cette bibliothèque](https://pypi.org/project/chord/) pourrait vous aider à dessiner un diagramme en cordes.
|
||||
- [ ] En guise d'autre défi supplémentaire, extrayez les dosages des différents médicaments (comme **400mg** dans *prendre 400mg de chloroquine quotidiennement*) en utilisant des expressions régulières, et construisez un dataframe qui montre les différents dosages pour différents médicaments. **Note** : prenez en compte les valeurs numériques qui se trouvent à proximité textuelle du nom du médicament.
|
||||
|
||||
## Barème
|
||||
|
||||
Exemplaire | Adéquat | À améliorer
|
||||
--- | --- | -- |
|
||||
Toutes les tâches sont complètes, illustrées graphiquement et expliquées, incluant au moins un des deux défis supplémentaires | Plus de 5 tâches sont complètes, aucun défi supplémentaire n'est tenté, ou les résultats ne sont pas clairs | Moins de 5 (mais plus de 3) tâches sont complètes, les visualisations n'aident pas à démontrer le point
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,340 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "3ade580a06b5f04d57cc83a768a8fb77",
|
||||
"translation_date": "2025-08-24T12:05:44+00:00",
|
||||
"source_file": "2-Working-With-Data/08-data-preparation/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Travailler avec les données : Préparation des données
|
||||
|
||||
| ](../../sketchnotes/08-DataPreparation.png)|
|
||||
|:---:|
|
||||
|Préparation des données - _Sketchnote par [@nitya](https://twitter.com/nitya)_ |
|
||||
|
||||
## [Quiz avant le cours](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/14)
|
||||
|
||||
Selon sa source, les données brutes peuvent contenir des incohérences qui posent des défis pour l'analyse et la modélisation. En d'autres termes, ces données peuvent être qualifiées de "sales" et nécessiter un nettoyage. Cette leçon se concentre sur les techniques de nettoyage et de transformation des données pour gérer les problèmes de données manquantes, inexactes ou incomplètes. Les sujets abordés dans cette leçon utiliseront Python et la bibliothèque Pandas et seront [illustrés dans le notebook](../../../../2-Working-With-Data/08-data-preparation/notebook.ipynb) de ce répertoire.
|
||||
|
||||
## L'importance de nettoyer les données
|
||||
|
||||
- **Facilité d'utilisation et de réutilisation** : Lorsque les données sont correctement organisées et normalisées, il est plus facile de les rechercher, les utiliser et les partager avec d'autres.
|
||||
|
||||
- **Cohérence** : La science des données nécessite souvent de travailler avec plusieurs ensembles de données, où des ensembles provenant de différentes sources doivent être fusionnés. Assurer une standardisation commune pour chaque ensemble de données garantit leur utilité une fois combinés.
|
||||
|
||||
- **Précision des modèles** : Des données nettoyées améliorent la précision des modèles qui en dépendent.
|
||||
|
||||
## Objectifs et stratégies courants de nettoyage
|
||||
|
||||
- **Explorer un ensemble de données** : L'exploration des données, qui sera abordée dans une [leçon ultérieure](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/4-Data-Science-Lifecycle/15-analyzing), peut vous aider à identifier les données nécessitant un nettoyage. Observer visuellement les valeurs d'un ensemble de données peut donner une idée des problèmes à résoudre. L'exploration peut inclure des requêtes simples, des visualisations et des échantillonnages.
|
||||
|
||||
- **Formatage** : Selon la source, les données peuvent présenter des incohérences dans leur présentation. Cela peut poser des problèmes pour la recherche et la représentation des valeurs, où elles sont visibles dans l'ensemble de données mais mal représentées dans les visualisations ou les résultats de requêtes. Les problèmes courants de formatage incluent les espaces blancs, les dates et les types de données. La résolution de ces problèmes dépend souvent des utilisateurs des données. Par exemple, les normes sur la présentation des dates et des nombres peuvent varier selon les pays.
|
||||
|
||||
- **Doublons** : Les données ayant plusieurs occurrences peuvent produire des résultats inexacts et doivent généralement être supprimées. Cela peut se produire fréquemment lors de la fusion de plusieurs ensembles de données. Cependant, dans certains cas, les doublons peuvent contenir des informations supplémentaires et nécessiter d'être conservés.
|
||||
|
||||
- **Données manquantes** : Les données manquantes peuvent entraîner des résultats biaisés ou faibles. Ces problèmes peuvent parfois être résolus en rechargeant les données, en remplissant les valeurs manquantes par calcul ou code (comme Python), ou simplement en supprimant les valeurs et les données associées. Les raisons des données manquantes et les actions pour les résoudre dépendent souvent de leur origine.
|
||||
|
||||
## Explorer les informations d'un DataFrame
|
||||
> **Objectif d'apprentissage** : À la fin de cette sous-section, vous devriez être à l'aise pour trouver des informations générales sur les données stockées dans les DataFrames de pandas.
|
||||
|
||||
Une fois vos données chargées dans pandas, elles seront probablement dans un DataFrame (voir la [leçon précédente](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/2-Working-With-Data/07-python#dataframe) pour un aperçu détaillé). Cependant, si votre DataFrame contient 60 000 lignes et 400 colonnes, comment commencer à comprendre ce que vous avez ? Heureusement, [pandas](https://pandas.pydata.org/) offre des outils pratiques pour examiner rapidement les informations générales sur un DataFrame, ainsi que les premières et dernières lignes.
|
||||
|
||||
Pour explorer cette fonctionnalité, nous importerons la bibliothèque Python scikit-learn et utiliserons un ensemble de données emblématique : l'ensemble de données **Iris**.
|
||||
|
||||
```python
|
||||
import pandas as pd
|
||||
from sklearn.datasets import load_iris
|
||||
|
||||
iris = load_iris()
|
||||
iris_df = pd.DataFrame(data=iris['data'], columns=iris['feature_names'])
|
||||
```
|
||||
| |longueur du sépale (cm)|largeur du sépale (cm)|longueur du pétale (cm)|largeur du pétale (cm)|
|
||||
|----------------------------------------|------------------------|----------------------|-----------------------|----------------------|
|
||||
|0 |5.1 |3.5 |1.4 |0.2 |
|
||||
|1 |4.9 |3.0 |1.4 |0.2 |
|
||||
|2 |4.7 |3.2 |1.3 |0.2 |
|
||||
|3 |4.6 |3.1 |1.5 |0.2 |
|
||||
|4 |5.0 |3.6 |1.4 |0.2 |
|
||||
|
||||
- **DataFrame.info** : Pour commencer, la méthode `info()` est utilisée pour afficher un résumé du contenu présent dans un `DataFrame`. Jetons un coup d'œil à cet ensemble de données pour voir ce que nous avons :
|
||||
```python
|
||||
iris_df.info()
|
||||
```
|
||||
```
|
||||
RangeIndex: 150 entries, 0 to 149
|
||||
Data columns (total 4 columns):
|
||||
# Column Non-Null Count Dtype
|
||||
--- ------ -------------- -----
|
||||
0 sepal length (cm) 150 non-null float64
|
||||
1 sepal width (cm) 150 non-null float64
|
||||
2 petal length (cm) 150 non-null float64
|
||||
3 petal width (cm) 150 non-null float64
|
||||
dtypes: float64(4)
|
||||
memory usage: 4.8 KB
|
||||
```
|
||||
D'après cela, nous savons que l'ensemble de données *Iris* contient 150 entrées réparties sur quatre colonnes sans valeurs nulles. Toutes les données sont stockées sous forme de nombres à virgule flottante 64 bits.
|
||||
|
||||
- **DataFrame.head()** : Ensuite, pour vérifier le contenu réel du `DataFrame`, nous utilisons la méthode `head()`. Voyons à quoi ressemblent les premières lignes de notre `iris_df` :
|
||||
```python
|
||||
iris_df.head()
|
||||
```
|
||||
```
|
||||
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)
|
||||
0 5.1 3.5 1.4 0.2
|
||||
1 4.9 3.0 1.4 0.2
|
||||
2 4.7 3.2 1.3 0.2
|
||||
3 4.6 3.1 1.5 0.2
|
||||
4 5.0 3.6 1.4 0.2
|
||||
```
|
||||
- **DataFrame.tail()** : À l'inverse, pour vérifier les dernières lignes du `DataFrame`, nous utilisons la méthode `tail()` :
|
||||
```python
|
||||
iris_df.tail()
|
||||
```
|
||||
```
|
||||
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)
|
||||
145 6.7 3.0 5.2 2.3
|
||||
146 6.3 2.5 5.0 1.9
|
||||
147 6.5 3.0 5.2 2.0
|
||||
148 6.2 3.4 5.4 2.3
|
||||
149 5.9 3.0 5.1 1.8
|
||||
```
|
||||
> **À retenir** : En examinant simplement les métadonnées ou les premières et dernières valeurs d'un DataFrame, vous pouvez rapidement avoir une idée de la taille, de la forme et du contenu des données avec lesquelles vous travaillez.
|
||||
|
||||
## Gérer les données manquantes
|
||||
> **Objectif d'apprentissage** : À la fin de cette sous-section, vous devriez savoir comment remplacer ou supprimer les valeurs nulles des DataFrames.
|
||||
|
||||
La plupart du temps, les ensembles de données que vous souhaitez utiliser (ou devez utiliser) contiennent des valeurs manquantes. La manière dont ces données manquantes sont gérées implique des compromis subtils qui peuvent affecter votre analyse finale et les résultats réels.
|
||||
|
||||
Pandas gère les valeurs manquantes de deux manières. La première, que vous avez déjà vue dans les sections précédentes, est `NaN`, ou Not a Number. Il s'agit d'une valeur spéciale faisant partie de la spécification IEEE pour les nombres à virgule flottante, utilisée uniquement pour indiquer des valeurs manquantes de type flottant.
|
||||
|
||||
Pour les valeurs manquantes autres que les flottants, pandas utilise l'objet Python `None`. Bien que cela puisse sembler déroutant d'avoir deux types de valeurs indiquant la même chose, il existe des raisons programmatiques solides pour ce choix de conception. En pratique, cela permet à pandas de proposer un compromis efficace dans la majorité des cas. Cependant, `None` et `NaN` ont des restrictions qu'il faut garder à l'esprit concernant leur utilisation.
|
||||
|
||||
Découvrez-en plus sur `NaN` et `None` dans le [notebook](https://github.com/microsoft/Data-Science-For-Beginners/blob/main/4-Data-Science-Lifecycle/15-analyzing/notebook.ipynb) !
|
||||
|
||||
- **Détecter les valeurs nulles** : Dans `pandas`, les méthodes `isnull()` et `notnull()` sont vos principales méthodes pour détecter les données nulles. Les deux renvoient des masques booléens sur vos données. Nous utiliserons `numpy` pour les valeurs `NaN` :
|
||||
```python
|
||||
import numpy as np
|
||||
|
||||
example1 = pd.Series([0, np.nan, '', None])
|
||||
example1.isnull()
|
||||
```
|
||||
```
|
||||
0 False
|
||||
1 True
|
||||
2 False
|
||||
3 True
|
||||
dtype: bool
|
||||
```
|
||||
Regardez attentivement la sortie. Y a-t-il quelque chose qui vous surprend ? Bien que `0` soit un nul arithmétique, il reste un entier valide et pandas le traite comme tel. `''` est un peu plus subtil. Bien que nous l'ayons utilisé dans la Section 1 pour représenter une chaîne vide, il reste un objet chaîne et non une représentation de null pour pandas.
|
||||
|
||||
Maintenant, utilisons ces méthodes de manière plus pratique. Vous pouvez utiliser des masques booléens directement comme index de `Series` ou `DataFrame`, ce qui est utile pour travailler avec des valeurs manquantes (ou présentes) isolées.
|
||||
|
||||
> **À retenir** : Les méthodes `isnull()` et `notnull()` produisent des résultats similaires dans les `DataFrame`s : elles affichent les résultats et l'index de ces résultats, ce qui vous sera très utile pour manipuler vos données.
|
||||
|
||||
- **Supprimer les valeurs nulles** : En plus d'identifier les valeurs manquantes, pandas offre un moyen pratique de supprimer les valeurs nulles des `Series` et `DataFrame`s. (Surtout pour les grands ensembles de données, il est souvent préférable de simplement supprimer les valeurs manquantes [NA] de votre analyse plutôt que de les gérer autrement.) Pour voir cela en action, revenons à `example1` :
|
||||
```python
|
||||
example1 = example1.dropna()
|
||||
example1
|
||||
```
|
||||
```
|
||||
0 0
|
||||
2
|
||||
dtype: object
|
||||
```
|
||||
Notez que cela devrait ressembler à votre sortie de `example3[example3.notnull()]`. La différence ici est que, plutôt que de simplement indexer les valeurs masquées, `dropna` a supprimé ces valeurs manquantes de la `Series` `example1`.
|
||||
|
||||
Les `DataFrame`s ayant deux dimensions, elles offrent plus d'options pour supprimer des données.
|
||||
|
||||
```python
|
||||
example2 = pd.DataFrame([[1, np.nan, 7],
|
||||
[2, 5, 8],
|
||||
[np.nan, 6, 9]])
|
||||
example2
|
||||
```
|
||||
| | 0 | 1 | 2 |
|
||||
|------|---|---|---|
|
||||
|0 |1.0|NaN|7 |
|
||||
|1 |2.0|5.0|8 |
|
||||
|2 |NaN|6.0|9 |
|
||||
|
||||
(Avez-vous remarqué que pandas a converti deux des colonnes en flottants pour accueillir les `NaN` ?)
|
||||
|
||||
Vous ne pouvez pas supprimer une seule valeur d'un `DataFrame`, vous devez donc supprimer des lignes ou des colonnes entières. Selon ce que vous faites, vous pourriez vouloir l'un ou l'autre, et pandas vous offre des options pour les deux. En science des données, les colonnes représentent généralement des variables et les lignes des observations, vous êtes donc plus susceptible de supprimer des lignes de données ; le paramètre par défaut de `dropna()` est de supprimer toutes les lignes contenant des valeurs nulles :
|
||||
|
||||
```python
|
||||
example2.dropna()
|
||||
```
|
||||
```
|
||||
0 1 2
|
||||
1 2.0 5.0 8
|
||||
```
|
||||
Si nécessaire, vous pouvez supprimer les valeurs nulles des colonnes. Utilisez `axis=1` pour le faire :
|
||||
```python
|
||||
example2.dropna(axis='columns')
|
||||
```
|
||||
```
|
||||
2
|
||||
0 7
|
||||
1 8
|
||||
2 9
|
||||
```
|
||||
Notez que cela peut supprimer beaucoup de données que vous pourriez vouloir conserver, en particulier dans les petits ensembles de données. Que faire si vous souhaitez uniquement supprimer les lignes ou colonnes contenant plusieurs ou toutes les valeurs nulles ? Vous pouvez spécifier ces paramètres dans `dropna` avec les paramètres `how` et `thresh`.
|
||||
|
||||
Par défaut, `how='any'` (si vous souhaitez vérifier par vous-même ou voir les autres paramètres de la méthode, exécutez `example4.dropna?` dans une cellule de code). Vous pourriez alternativement spécifier `how='all'` pour ne supprimer que les lignes ou colonnes contenant toutes des valeurs nulles. Étendons notre exemple de `DataFrame` pour voir cela en action.
|
||||
|
||||
```python
|
||||
example2[3] = np.nan
|
||||
example2
|
||||
```
|
||||
| |0 |1 |2 |3 |
|
||||
|------|---|---|---|---|
|
||||
|0 |1.0|NaN|7 |NaN|
|
||||
|1 |2.0|5.0|8 |NaN|
|
||||
|2 |NaN|6.0|9 |NaN|
|
||||
|
||||
Le paramètre `thresh` vous donne un contrôle plus précis : vous définissez le nombre de valeurs *non nulles* qu'une ligne ou colonne doit avoir pour être conservée :
|
||||
```python
|
||||
example2.dropna(axis='rows', thresh=3)
|
||||
```
|
||||
```
|
||||
0 1 2 3
|
||||
1 2.0 5.0 8 NaN
|
||||
```
|
||||
Ici, la première et la dernière ligne ont été supprimées, car elles contiennent seulement deux valeurs non nulles.
|
||||
|
||||
- **Remplir les valeurs nulles** : Selon votre ensemble de données, il peut parfois être plus logique de remplir les valeurs nulles avec des valeurs valides plutôt que de les supprimer. Vous pourriez utiliser `isnull` pour le faire directement, mais cela peut être laborieux, surtout si vous avez beaucoup de valeurs à remplir. Comme cette tâche est courante en science des données, pandas propose `fillna`, qui renvoie une copie de la `Series` ou du `DataFrame` avec les valeurs manquantes remplacées par celles de votre choix. Créons un autre exemple de `Series` pour voir comment cela fonctionne en pratique.
|
||||
```python
|
||||
example3 = pd.Series([1, np.nan, 2, None, 3], index=list('abcde'))
|
||||
example3
|
||||
```
|
||||
```
|
||||
a 1.0
|
||||
b NaN
|
||||
c 2.0
|
||||
d NaN
|
||||
e 3.0
|
||||
dtype: float64
|
||||
```
|
||||
Vous pouvez remplir toutes les entrées nulles avec une seule valeur, comme `0` :
|
||||
```python
|
||||
example3.fillna(0)
|
||||
```
|
||||
```
|
||||
a 1.0
|
||||
b 0.0
|
||||
c 2.0
|
||||
d 0.0
|
||||
e 3.0
|
||||
dtype: float64
|
||||
```
|
||||
Vous pouvez **remplir vers l'avant** les valeurs nulles, c'est-à-dire utiliser la dernière valeur valide pour remplir une valeur nulle :
|
||||
```python
|
||||
example3.fillna(method='ffill')
|
||||
```
|
||||
```
|
||||
a 1.0
|
||||
b 1.0
|
||||
c 2.0
|
||||
d 2.0
|
||||
e 3.0
|
||||
dtype: float64
|
||||
```
|
||||
Vous pouvez également **remplir vers l'arrière** pour propager la prochaine valeur valide en arrière afin de remplir une valeur nulle :
|
||||
```python
|
||||
example3.fillna(method='bfill')
|
||||
```
|
||||
```
|
||||
a 1.0
|
||||
b 2.0
|
||||
c 2.0
|
||||
d 3.0
|
||||
e 3.0
|
||||
dtype: float64
|
||||
```
|
||||
Comme vous pouvez le deviner, cela fonctionne de la même manière avec les `DataFrame`s, mais vous pouvez également spécifier un `axis` le long duquel remplir les valeurs nulles. En reprenant l'exemple `example2` utilisé précédemment :
|
||||
```python
|
||||
example2.fillna(method='ffill', axis=1)
|
||||
```
|
||||
```
|
||||
0 1 2 3
|
||||
0 1.0 1.0 7.0 7.0
|
||||
1 2.0 5.0 8.0 8.0
|
||||
2 NaN 6.0 9.0 9.0
|
||||
```
|
||||
Notez que lorsqu'une valeur précédente n'est pas disponible pour le remplissage vers l'avant, la valeur nulle reste.
|
||||
> **À retenir :** Il existe plusieurs façons de gérer les valeurs manquantes dans vos ensembles de données. La stratégie spécifique que vous utilisez (les supprimer, les remplacer, ou même la manière dont vous les remplacez) doit être dictée par les particularités de ces données. Vous développerez une meilleure compréhension de la gestion des valeurs manquantes à mesure que vous manipulerez et interagirez avec des ensembles de données.
|
||||
|
||||
## Suppression des données dupliquées
|
||||
|
||||
> **Objectif d'apprentissage :** À la fin de cette sous-section, vous devriez être à l'aise pour identifier et supprimer les valeurs dupliquées dans les DataFrames.
|
||||
|
||||
En plus des données manquantes, vous rencontrerez souvent des données dupliquées dans des ensembles de données réels. Heureusement, `pandas` offre un moyen simple de détecter et de supprimer les entrées dupliquées.
|
||||
|
||||
- **Identifier les doublons : `duplicated`** : Vous pouvez facilement repérer les valeurs dupliquées en utilisant la méthode `duplicated` de pandas, qui renvoie un masque booléen indiquant si une entrée dans un `DataFrame` est un doublon d'une entrée précédente. Créons un autre exemple de `DataFrame` pour voir cela en action.
|
||||
```python
|
||||
example4 = pd.DataFrame({'letters': ['A','B'] * 2 + ['B'],
|
||||
'numbers': [1, 2, 1, 3, 3]})
|
||||
example4
|
||||
```
|
||||
| |lettres|nombres|
|
||||
|------|-------|-------|
|
||||
|0 |A |1 |
|
||||
|1 |B |2 |
|
||||
|2 |A |1 |
|
||||
|3 |B |3 |
|
||||
|4 |B |3 |
|
||||
|
||||
```python
|
||||
example4.duplicated()
|
||||
```
|
||||
```
|
||||
0 False
|
||||
1 False
|
||||
2 True
|
||||
3 False
|
||||
4 True
|
||||
dtype: bool
|
||||
```
|
||||
- **Supprimer les doublons : `drop_duplicates`** : retourne simplement une copie des données pour lesquelles toutes les valeurs `duplicated` sont `False` :
|
||||
```python
|
||||
example4.drop_duplicates()
|
||||
```
|
||||
```
|
||||
letters numbers
|
||||
0 A 1
|
||||
1 B 2
|
||||
3 B 3
|
||||
```
|
||||
Les méthodes `duplicated` et `drop_duplicates` considèrent par défaut toutes les colonnes, mais vous pouvez spécifier qu'elles examinent uniquement un sous-ensemble de colonnes dans votre `DataFrame` :
|
||||
```python
|
||||
example4.drop_duplicates(['letters'])
|
||||
```
|
||||
```
|
||||
letters numbers
|
||||
0 A 1
|
||||
1 B 2
|
||||
```
|
||||
|
||||
> **À retenir :** Supprimer les données dupliquées est une étape essentielle dans presque tous les projets de science des données. Les données dupliquées peuvent modifier les résultats de vos analyses et vous donner des résultats inexacts !
|
||||
|
||||
## 🚀 Défi
|
||||
|
||||
Tous les matériaux abordés sont disponibles sous forme de [Jupyter Notebook](https://github.com/microsoft/Data-Science-For-Beginners/blob/main/2-Working-With-Data/08-data-preparation/notebook.ipynb). De plus, des exercices sont présents après chaque section, essayez-les !
|
||||
|
||||
## [Quiz après le cours](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/15)
|
||||
|
||||
## Révision et auto-apprentissage
|
||||
|
||||
Il existe de nombreuses façons de découvrir et d'aborder la préparation de vos données pour l'analyse et la modélisation, et le nettoyage des données est une étape importante qui nécessite une expérience pratique. Essayez ces défis sur Kaggle pour explorer des techniques que cette leçon n'a pas couvertes.
|
||||
|
||||
- [Défi de nettoyage des données : Analyse des dates](https://www.kaggle.com/rtatman/data-cleaning-challenge-parsing-dates/)
|
||||
|
||||
- [Défi de nettoyage des données : Mise à l'échelle et normalisation des données](https://www.kaggle.com/rtatman/data-cleaning-challenge-scale-and-normalize-data)
|
||||
|
||||
## Devoir
|
||||
|
||||
[Évaluation des données d'un formulaire](assignment.md)
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,26 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "f9d5a7275e046223fa6474477674b810",
|
||||
"translation_date": "2025-08-24T12:08:22+00:00",
|
||||
"source_file": "2-Working-With-Data/08-data-preparation/assignment.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Évaluation des données d'un formulaire
|
||||
|
||||
Un client a testé un [petit formulaire](../../../../2-Working-With-Data/08-data-preparation/index.html) pour recueillir des données de base sur sa clientèle. Il vous a apporté ses résultats pour valider les données collectées. Vous pouvez ouvrir la page `index.html` dans le navigateur pour examiner le formulaire.
|
||||
|
||||
On vous a fourni un [jeu de données de fichiers csv](../../../../data/form.csv) contenant les entrées du formulaire ainsi que quelques visualisations de base. Le client a signalé que certaines visualisations semblent incorrectes, mais il ne sait pas comment les corriger. Vous pouvez explorer cela dans le [notebook de l'exercice](../../../../2-Working-With-Data/08-data-preparation/assignment.ipynb).
|
||||
|
||||
## Instructions
|
||||
|
||||
Utilisez les techniques de cette leçon pour formuler des recommandations sur le formulaire afin qu'il capture des informations précises et cohérentes.
|
||||
|
||||
## Grille d'évaluation
|
||||
|
||||
Exemplaire | Adéquat | À améliorer
|
||||
--- | --- | ---
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,29 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "abc3309ab41bc5a7846f70ee1a055838",
|
||||
"translation_date": "2025-08-24T11:59:04+00:00",
|
||||
"source_file": "2-Working-With-Data/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Travailler avec les données
|
||||
|
||||

|
||||
> Photo par <a href="https://unsplash.com/@swimstaralex?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Alexander Sinn</a> sur <a href="https://unsplash.com/s/photos/data?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
|
||||
|
||||
Dans ces leçons, vous apprendrez certaines des façons dont les données peuvent être gérées, manipulées et utilisées dans les applications. Vous découvrirez les bases des bases de données relationnelles et non relationnelles, ainsi que la manière dont les données peuvent y être stockées. Vous apprendrez les fondamentaux de la gestion des données avec Python et explorerez plusieurs méthodes pour utiliser Python afin de gérer et d'exploiter les données.
|
||||
|
||||
### Sujets
|
||||
|
||||
1. [Bases de données relationnelles](05-relational-databases/README.md)
|
||||
2. [Bases de données non relationnelles](06-non-relational/README.md)
|
||||
3. [Travailler avec Python](07-python/README.md)
|
||||
4. [Préparer les données](08-data-preparation/README.md)
|
||||
|
||||
### Crédits
|
||||
|
||||
Ces leçons ont été écrites avec ❤️ par [Christopher Harrison](https://twitter.com/geektrainer), [Dmitry Soshnikov](https://twitter.com/shwars) et [Jasmine Greenaway](https://twitter.com/paladique)
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction humaine professionnelle. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,215 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "43c402d9d90ae6da55d004519ada5033",
|
||||
"translation_date": "2025-08-24T14:05:28+00:00",
|
||||
"source_file": "3-Data-Visualization/09-visualization-quantities/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Visualiser des quantités
|
||||
|
||||
| ](../../sketchnotes/09-Visualizing-Quantities.png)|
|
||||
|:---:|
|
||||
| Visualiser des quantités - _Sketchnote par [@nitya](https://twitter.com/nitya)_ |
|
||||
|
||||
Dans cette leçon, vous allez explorer comment utiliser l'une des nombreuses bibliothèques Python disponibles pour apprendre à créer des visualisations intéressantes autour du concept de quantité. En utilisant un ensemble de données nettoyé sur les oiseaux du Minnesota, vous pouvez découvrir de nombreux faits intéressants sur la faune locale.
|
||||
## [Quiz avant la leçon](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/16)
|
||||
|
||||
## Observer l'envergure des ailes avec Matplotlib
|
||||
|
||||
Une bibliothèque excellente pour créer des graphiques simples ou sophistiqués de divers types est [Matplotlib](https://matplotlib.org/stable/index.html). En termes généraux, le processus de création de graphiques avec ces bibliothèques inclut l'identification des parties de votre dataframe que vous souhaitez cibler, la réalisation des transformations nécessaires sur ces données, l'attribution des valeurs des axes x et y, le choix du type de graphique à afficher, puis l'affichage du graphique. Matplotlib offre une grande variété de visualisations, mais pour cette leçon, concentrons-nous sur celles les plus adaptées à la visualisation de quantités : les graphiques en ligne, les nuages de points et les diagrammes en barres.
|
||||
|
||||
> ✅ Utilisez le graphique le mieux adapté à la structure de vos données et à l'histoire que vous souhaitez raconter.
|
||||
> - Pour analyser les tendances au fil du temps : ligne
|
||||
> - Pour comparer des valeurs : barre, colonne, camembert, nuage de points
|
||||
> - Pour montrer comment les parties se rapportent à un tout : camembert
|
||||
> - Pour montrer la distribution des données : nuage de points, barre
|
||||
> - Pour montrer les tendances : ligne, colonne
|
||||
> - Pour montrer les relations entre les valeurs : ligne, nuage de points, bulle
|
||||
|
||||
Si vous avez un ensemble de données et que vous devez découvrir combien d'un certain élément est inclus, l'une des premières tâches sera d'inspecter ses valeurs.
|
||||
|
||||
✅ Il existe d'excellents 'cheat sheets' pour Matplotlib [ici](https://matplotlib.org/cheatsheets/cheatsheets.pdf).
|
||||
|
||||
## Construire un graphique en ligne sur les valeurs d'envergure des ailes des oiseaux
|
||||
|
||||
Ouvrez le fichier `notebook.ipynb` à la racine de ce dossier de leçon et ajoutez une cellule.
|
||||
|
||||
> Note : les données sont stockées à la racine de ce dépôt dans le dossier `/data`.
|
||||
|
||||
```python
|
||||
import pandas as pd
|
||||
import matplotlib.pyplot as plt
|
||||
birds = pd.read_csv('../../data/birds.csv')
|
||||
birds.head()
|
||||
```
|
||||
Ces données sont un mélange de texte et de chiffres :
|
||||
|
||||
| | Nom | NomScientifique | Catégorie | Ordre | Famille | Genre | StatutConservation | LongueurMin | LongueurMax | MasseMin | MasseMax | EnvergureMin | EnvergureMax |
|
||||
| ---: | :--------------------------- | :--------------------- | :-------------------- | :----------- | :------- | :---------- | :----------------- | --------: | --------: | ----------: | ----------: | ----------: | ----------: |
|
||||
| 0 | Dendrocygne à ventre noir | Dendrocygna autumnalis | Canards/Oies/Oiseaux aquatiques | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 |
|
||||
| 1 | Dendrocygne fauve | Dendrocygna bicolor | Canards/Oies/Oiseaux aquatiques | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 |
|
||||
| 2 | Oie des neiges | Anser caerulescens | Canards/Oies/Oiseaux aquatiques | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 |
|
||||
| 3 | Oie de Ross | Anser rossii | Canards/Oies/Oiseaux aquatiques | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 |
|
||||
| 4 | Oie rieuse | Anser albifrons | Canards/Oies/Oiseaux aquatiques | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 |
|
||||
|
||||
Commençons par tracer certaines des données numériques en utilisant un graphique en ligne basique. Supposons que vous souhaitiez une vue de l'envergure maximale pour ces oiseaux intéressants.
|
||||
|
||||
```python
|
||||
wingspan = birds['MaxWingspan']
|
||||
wingspan.plot()
|
||||
```
|
||||

|
||||
|
||||
Que remarquez-vous immédiatement ? Il semble y avoir au moins un cas aberrant - quelle envergure impressionnante ! Une envergure de 2300 centimètres équivaut à 23 mètres - y aurait-il des ptérodactyles qui rôdent dans le Minnesota ? Enquêtons.
|
||||
|
||||
Bien que vous puissiez effectuer un tri rapide dans Excel pour trouver ces cas aberrants, qui sont probablement des erreurs de frappe, continuez le processus de visualisation en travaillant directement depuis le graphique.
|
||||
|
||||
Ajoutez des étiquettes à l'axe des x pour montrer de quels types d'oiseaux il s'agit :
|
||||
|
||||
```
|
||||
plt.title('Max Wingspan in Centimeters')
|
||||
plt.ylabel('Wingspan (CM)')
|
||||
plt.xlabel('Birds')
|
||||
plt.xticks(rotation=45)
|
||||
x = birds['Name']
|
||||
y = birds['MaxWingspan']
|
||||
|
||||
plt.plot(x, y)
|
||||
|
||||
plt.show()
|
||||
```
|
||||

|
||||
|
||||
Même avec la rotation des étiquettes réglée à 45 degrés, il y en a trop pour être lisibles. Essayons une stratégie différente : étiqueter uniquement les cas aberrants et placer les étiquettes dans le graphique. Vous pouvez utiliser un nuage de points pour faire plus de place aux étiquettes :
|
||||
|
||||
```python
|
||||
plt.title('Max Wingspan in Centimeters')
|
||||
plt.ylabel('Wingspan (CM)')
|
||||
plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False)
|
||||
|
||||
for i in range(len(birds)):
|
||||
x = birds['Name'][i]
|
||||
y = birds['MaxWingspan'][i]
|
||||
plt.plot(x, y, 'bo')
|
||||
if birds['MaxWingspan'][i] > 500:
|
||||
plt.text(x, y * (1 - 0.05), birds['Name'][i], fontsize=12)
|
||||
|
||||
plt.show()
|
||||
```
|
||||
Que se passe-t-il ici ? Vous avez utilisé `tick_params` pour masquer les étiquettes du bas, puis créé une boucle sur votre ensemble de données d'oiseaux. En traçant le graphique avec de petits points bleus ronds en utilisant `bo`, vous avez vérifié si un oiseau avait une envergure maximale supérieure à 500 et affiché son étiquette à côté du point si c'était le cas. Vous avez légèrement décalé les étiquettes sur l'axe y (`y * (1 - 0.05)`) et utilisé le nom de l'oiseau comme étiquette.
|
||||
|
||||
Qu'avez-vous découvert ?
|
||||
|
||||

|
||||
## Filtrer vos données
|
||||
|
||||
Le pygargue à tête blanche et le faucon des prairies, bien qu'ils soient probablement de très grands oiseaux, semblent être mal étiquetés, avec un `0` supplémentaire ajouté à leur envergure maximale. Il est peu probable que vous rencontriez un pygargue à tête blanche avec une envergure de 25 mètres, mais si c'est le cas, faites-le nous savoir ! Créons un nouveau dataframe sans ces deux cas aberrants :
|
||||
|
||||
```python
|
||||
plt.title('Max Wingspan in Centimeters')
|
||||
plt.ylabel('Wingspan (CM)')
|
||||
plt.xlabel('Birds')
|
||||
plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False)
|
||||
for i in range(len(birds)):
|
||||
x = birds['Name'][i]
|
||||
y = birds['MaxWingspan'][i]
|
||||
if birds['Name'][i] not in ['Bald eagle', 'Prairie falcon']:
|
||||
plt.plot(x, y, 'bo')
|
||||
plt.show()
|
||||
```
|
||||
|
||||
En filtrant les cas aberrants, vos données sont maintenant plus cohérentes et compréhensibles.
|
||||
|
||||

|
||||
|
||||
Maintenant que nous avons un ensemble de données plus propre, du moins en termes d'envergure, découvrons-en davantage sur ces oiseaux.
|
||||
|
||||
Bien que les graphiques en ligne et les nuages de points puissent afficher des informations sur les valeurs des données et leur distribution, nous voulons réfléchir aux valeurs inhérentes à cet ensemble de données. Vous pourriez créer des visualisations pour répondre aux questions suivantes sur les quantités :
|
||||
|
||||
> Combien de catégories d'oiseaux existe-t-il, et quels sont leurs nombres ?
|
||||
> Combien d'oiseaux sont éteints, en danger, rares ou communs ?
|
||||
> Combien y a-t-il des différents genres et ordres selon la terminologie de Linné ?
|
||||
## Explorer les diagrammes en barres
|
||||
|
||||
Les diagrammes en barres sont pratiques lorsque vous devez montrer des regroupements de données. Explorons les catégories d'oiseaux présentes dans cet ensemble de données pour voir laquelle est la plus courante en nombre.
|
||||
|
||||
Dans le fichier notebook, créez un diagramme en barres basique.
|
||||
|
||||
✅ Notez que vous pouvez soit filtrer les deux oiseaux aberrants identifiés dans la section précédente, soit corriger l'erreur dans leur envergure, soit les laisser tels quels pour ces exercices qui ne dépendent pas des valeurs d'envergure.
|
||||
|
||||
Si vous souhaitez créer un diagramme en barres, vous pouvez sélectionner les données sur lesquelles vous voulez vous concentrer. Les diagrammes en barres peuvent être créés à partir de données brutes :
|
||||
|
||||
```python
|
||||
birds.plot(x='Category',
|
||||
kind='bar',
|
||||
stacked=True,
|
||||
title='Birds of Minnesota')
|
||||
|
||||
```
|
||||

|
||||
|
||||
Ce diagramme en barres, cependant, est illisible car il y a trop de données non regroupées. Vous devez sélectionner uniquement les données que vous souhaitez représenter, alors regardons la longueur des oiseaux en fonction de leur catégorie.
|
||||
|
||||
Filtrez vos données pour inclure uniquement la catégorie des oiseaux.
|
||||
|
||||
✅ Remarquez que vous utilisez Pandas pour gérer les données, puis laissez Matplotlib faire le graphique.
|
||||
|
||||
Étant donné qu'il y a de nombreuses catégories, vous pouvez afficher ce graphique verticalement et ajuster sa hauteur pour tenir compte de toutes les données :
|
||||
|
||||
```python
|
||||
category_count = birds.value_counts(birds['Category'].values, sort=True)
|
||||
plt.rcParams['figure.figsize'] = [6, 12]
|
||||
category_count.plot.barh()
|
||||
```
|
||||

|
||||
|
||||
Ce diagramme en barres montre une bonne vue du nombre d'oiseaux dans chaque catégorie. En un clin d'œil, vous voyez que le plus grand nombre d'oiseaux dans cette région appartient à la catégorie des Canards/Oies/Oiseaux aquatiques. Le Minnesota est le 'pays des 10 000 lacs', donc ce n'est pas surprenant !
|
||||
|
||||
✅ Essayez d'autres comptages sur cet ensemble de données. Y a-t-il quelque chose qui vous surprend ?
|
||||
|
||||
## Comparer les données
|
||||
|
||||
Vous pouvez essayer différentes comparaisons de données regroupées en créant de nouveaux axes. Essayez une comparaison de la LongueurMax d'un oiseau, basée sur sa catégorie :
|
||||
|
||||
```python
|
||||
maxlength = birds['MaxLength']
|
||||
plt.barh(y=birds['Category'], width=maxlength)
|
||||
plt.rcParams['figure.figsize'] = [6, 12]
|
||||
plt.show()
|
||||
```
|
||||

|
||||
|
||||
Rien de surprenant ici : les colibris ont la LongueurMax la plus faible par rapport aux pélicans ou aux oies. C'est bien lorsque les données ont du sens logiquement !
|
||||
|
||||
Vous pouvez créer des visualisations plus intéressantes de diagrammes en barres en superposant des données. Superposons la LongueurMin et la LongueurMax pour une catégorie d'oiseaux donnée :
|
||||
|
||||
```python
|
||||
minLength = birds['MinLength']
|
||||
maxLength = birds['MaxLength']
|
||||
category = birds['Category']
|
||||
|
||||
plt.barh(category, maxLength)
|
||||
plt.barh(category, minLength)
|
||||
|
||||
plt.show()
|
||||
```
|
||||
Dans ce graphique, vous pouvez voir la plage par catégorie d'oiseaux de la LongueurMin et de la LongueurMax. Vous pouvez affirmer en toute sécurité que, selon ces données, plus l'oiseau est grand, plus sa plage de longueur est large. Fascinant !
|
||||
|
||||

|
||||
|
||||
## 🚀 Défi
|
||||
|
||||
Cet ensemble de données sur les oiseaux offre une mine d'informations sur différents types d'oiseaux dans un écosystème particulier. Cherchez sur Internet et voyez si vous pouvez trouver d'autres ensembles de données sur les oiseaux. Entraînez-vous à créer des graphiques et des diagrammes autour de ces oiseaux pour découvrir des faits que vous ne connaissiez pas.
|
||||
## [Quiz après la leçon](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/17)
|
||||
|
||||
## Révision et étude personnelle
|
||||
|
||||
Cette première leçon vous a donné des informations sur la façon d'utiliser Matplotlib pour visualiser des quantités. Faites des recherches sur d'autres façons de travailler avec des ensembles de données pour la visualisation. [Plotly](https://github.com/plotly/plotly.py) est une bibliothèque que nous ne couvrirons pas dans ces leçons, alors jetez un œil à ce qu'elle peut offrir.
|
||||
## Devoir
|
||||
|
||||
[Graphiques en lignes, nuages de points et barres](assignment.md)
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction humaine professionnelle. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,23 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "ad163c4fda72c8278280b61cad317ff4",
|
||||
"translation_date": "2025-08-24T14:07:24+00:00",
|
||||
"source_file": "3-Data-Visualization/09-visualization-quantities/assignment.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Lignes, Nuages de points et Barres
|
||||
|
||||
## Instructions
|
||||
|
||||
Dans cette leçon, vous avez travaillé avec des graphiques en ligne, des nuages de points et des graphiques en barres pour mettre en évidence des faits intéressants sur ce jeu de données. Dans cet exercice, explorez davantage le jeu de données pour découvrir un fait concernant un type d'oiseau donné. Par exemple, créez un notebook visualisant toutes les données intéressantes que vous pouvez trouver sur les oies des neiges. Utilisez les trois types de graphiques mentionnés ci-dessus pour raconter une histoire dans votre notebook.
|
||||
|
||||
## Critères d'évaluation
|
||||
|
||||
Exemplaire | Adéquat | À améliorer
|
||||
--- | --- | -- |
|
||||
Un notebook est présenté avec de bonnes annotations, une narration solide et des graphiques attrayants | Le notebook manque l'un de ces éléments | Le notebook manque deux de ces éléments
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,215 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "87faccac113d772551486a67a607153e",
|
||||
"translation_date": "2025-08-24T13:37:59+00:00",
|
||||
"source_file": "3-Data-Visualization/10-visualization-distributions/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Visualiser les distributions
|
||||
|
||||
| ](../../sketchnotes/10-Visualizing-Distributions.png)|
|
||||
|:---:|
|
||||
| Visualiser les distributions - _Sketchnote par [@nitya](https://twitter.com/nitya)_ |
|
||||
|
||||
Dans la leçon précédente, vous avez appris des faits intéressants sur un ensemble de données concernant les oiseaux du Minnesota. Vous avez identifié des données erronées en visualisant les valeurs aberrantes et examiné les différences entre les catégories d'oiseaux en fonction de leur longueur maximale.
|
||||
|
||||
## [Quiz avant la leçon](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/18)
|
||||
## Explorer l'ensemble de données sur les oiseaux
|
||||
|
||||
Une autre façon d'explorer les données est d'examiner leur distribution, c'est-à-dire comment les données sont organisées le long d'un axe. Par exemple, vous pourriez vouloir en savoir plus sur la distribution générale, pour cet ensemble de données, de l'envergure maximale ou de la masse corporelle maximale des oiseaux du Minnesota.
|
||||
|
||||
Découvrons quelques faits sur les distributions des données dans cet ensemble de données. Dans le fichier _notebook.ipynb_ à la racine de ce dossier de leçon, importez Pandas, Matplotlib et vos données :
|
||||
|
||||
```python
|
||||
import pandas as pd
|
||||
import matplotlib.pyplot as plt
|
||||
birds = pd.read_csv('../../data/birds.csv')
|
||||
birds.head()
|
||||
```
|
||||
|
||||
| | Nom | NomScientifique | Catégorie | Ordre | Famille | Genre | StatutConservation | MinLongueur | MaxLongueur | MinMasseCorporelle | MaxMasseCorporelle | MinEnvergure | MaxEnvergure |
|
||||
| ---: | :--------------------------- | :--------------------- | :-------------------- | :----------- | :------- | :---------- | :----------------- | --------: | --------: | ----------: | ----------: | ----------: | ----------: |
|
||||
| 0 | Dendrocygne à ventre noir | Dendrocygna autumnalis | Canards/Oies/Oiseaux aquatiques | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 |
|
||||
| 1 | Dendrocygne fauve | Dendrocygna bicolor | Canards/Oies/Oiseaux aquatiques | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 |
|
||||
| 2 | Oie des neiges | Anser caerulescens | Canards/Oies/Oiseaux aquatiques | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 |
|
||||
| 3 | Oie de Ross | Anser rossii | Canards/Oies/Oiseaux aquatiques | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 |
|
||||
| 4 | Oie rieuse | Anser albifrons | Canards/Oies/Oiseaux aquatiques | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 |
|
||||
|
||||
En général, vous pouvez rapidement examiner la façon dont les données sont distribuées en utilisant un diagramme de dispersion, comme nous l'avons fait dans la leçon précédente :
|
||||
|
||||
```python
|
||||
birds.plot(kind='scatter',x='MaxLength',y='Order',figsize=(12,8))
|
||||
|
||||
plt.title('Max Length per Order')
|
||||
plt.ylabel('Order')
|
||||
plt.xlabel('Max Length')
|
||||
|
||||
plt.show()
|
||||
```
|
||||

|
||||
|
||||
Cela donne un aperçu de la distribution générale de la longueur corporelle par ordre d'oiseaux, mais ce n'est pas la méthode optimale pour afficher les véritables distributions. Cette tâche est généralement réalisée en créant un histogramme.
|
||||
|
||||
## Travailler avec des histogrammes
|
||||
|
||||
Matplotlib offre d'excellents moyens de visualiser la distribution des données à l'aide d'histogrammes. Ce type de graphique ressemble à un diagramme en barres où la distribution peut être observée à travers la montée et la descente des barres. Pour construire un histogramme, vous avez besoin de données numériques. Pour créer un histogramme, vous pouvez tracer un graphique en définissant le type comme 'hist' pour Histogramme. Ce graphique montre la distribution de la masse corporelle maximale pour l'ensemble de données dans sa plage de données numériques. En divisant le tableau de données en petits intervalles, il peut afficher la distribution des valeurs des données :
|
||||
|
||||
```python
|
||||
birds['MaxBodyMass'].plot(kind = 'hist', bins = 10, figsize = (12,12))
|
||||
plt.show()
|
||||
```
|
||||

|
||||
|
||||
Comme vous pouvez le voir, la plupart des 400+ oiseaux de cet ensemble de données se situent dans la plage de moins de 2000 pour leur masse corporelle maximale. Obtenez plus d'informations sur les données en modifiant le paramètre `bins` à un nombre plus élevé, comme 30 :
|
||||
|
||||
```python
|
||||
birds['MaxBodyMass'].plot(kind = 'hist', bins = 30, figsize = (12,12))
|
||||
plt.show()
|
||||
```
|
||||

|
||||
|
||||
Ce graphique montre la distribution de manière un peu plus détaillée. Un graphique moins biaisé vers la gauche pourrait être créé en veillant à ne sélectionner que les données dans une plage donnée :
|
||||
|
||||
Filtrez vos données pour obtenir uniquement les oiseaux dont la masse corporelle est inférieure à 60, et affichez 40 `bins` :
|
||||
|
||||
```python
|
||||
filteredBirds = birds[(birds['MaxBodyMass'] > 1) & (birds['MaxBodyMass'] < 60)]
|
||||
filteredBirds['MaxBodyMass'].plot(kind = 'hist',bins = 40,figsize = (12,12))
|
||||
plt.show()
|
||||
```
|
||||

|
||||
|
||||
✅ Essayez d'autres filtres et points de données. Pour voir la distribution complète des données, supprimez le filtre `['MaxBodyMass']` pour afficher les distributions étiquetées.
|
||||
|
||||
L'histogramme offre également des améliorations intéressantes en termes de couleur et d'étiquetage :
|
||||
|
||||
Créez un histogramme 2D pour comparer la relation entre deux distributions. Comparons `MaxBodyMass` et `MaxLength`. Matplotlib propose une méthode intégrée pour montrer la convergence en utilisant des couleurs plus vives :
|
||||
|
||||
```python
|
||||
x = filteredBirds['MaxBodyMass']
|
||||
y = filteredBirds['MaxLength']
|
||||
|
||||
fig, ax = plt.subplots(tight_layout=True)
|
||||
hist = ax.hist2d(x, y)
|
||||
```
|
||||
Il semble y avoir une corrélation attendue entre ces deux éléments le long d'un axe attendu, avec un point de convergence particulièrement fort :
|
||||
|
||||

|
||||
|
||||
Les histogrammes fonctionnent bien par défaut pour les données numériques. Que faire si vous devez examiner les distributions selon des données textuelles ?
|
||||
## Explorer l'ensemble de données pour les distributions à l'aide de données textuelles
|
||||
|
||||
Cet ensemble de données contient également de bonnes informations sur la catégorie des oiseaux, leur genre, espèce et famille, ainsi que leur statut de conservation. Explorons ces informations de conservation. Quelle est la distribution des oiseaux selon leur statut de conservation ?
|
||||
|
||||
> ✅ Dans l'ensemble de données, plusieurs acronymes sont utilisés pour décrire le statut de conservation. Ces acronymes proviennent des [Catégories de la Liste Rouge de l'UICN](https://www.iucnredlist.org/), une organisation qui catalogue le statut des espèces.
|
||||
>
|
||||
> - CR : En danger critique
|
||||
> - EN : En danger
|
||||
> - EX : Éteint
|
||||
> - LC : Préoccupation mineure
|
||||
> - NT : Quasi menacé
|
||||
> - VU : Vulnérable
|
||||
|
||||
Ces valeurs sont basées sur du texte, vous devrez donc effectuer une transformation pour créer un histogramme. En utilisant le dataframe filteredBirds, affichez son statut de conservation avec son envergure minimale. Que voyez-vous ?
|
||||
|
||||
```python
|
||||
x1 = filteredBirds.loc[filteredBirds.ConservationStatus=='EX', 'MinWingspan']
|
||||
x2 = filteredBirds.loc[filteredBirds.ConservationStatus=='CR', 'MinWingspan']
|
||||
x3 = filteredBirds.loc[filteredBirds.ConservationStatus=='EN', 'MinWingspan']
|
||||
x4 = filteredBirds.loc[filteredBirds.ConservationStatus=='NT', 'MinWingspan']
|
||||
x5 = filteredBirds.loc[filteredBirds.ConservationStatus=='VU', 'MinWingspan']
|
||||
x6 = filteredBirds.loc[filteredBirds.ConservationStatus=='LC', 'MinWingspan']
|
||||
|
||||
kwargs = dict(alpha=0.5, bins=20)
|
||||
|
||||
plt.hist(x1, **kwargs, color='red', label='Extinct')
|
||||
plt.hist(x2, **kwargs, color='orange', label='Critically Endangered')
|
||||
plt.hist(x3, **kwargs, color='yellow', label='Endangered')
|
||||
plt.hist(x4, **kwargs, color='green', label='Near Threatened')
|
||||
plt.hist(x5, **kwargs, color='blue', label='Vulnerable')
|
||||
plt.hist(x6, **kwargs, color='gray', label='Least Concern')
|
||||
|
||||
plt.gca().set(title='Conservation Status', ylabel='Min Wingspan')
|
||||
plt.legend();
|
||||
```
|
||||
|
||||

|
||||
|
||||
Il ne semble pas y avoir de bonne corrélation entre l'envergure minimale et le statut de conservation. Testez d'autres éléments de l'ensemble de données en utilisant cette méthode. Vous pouvez également essayer différents filtres. Trouvez-vous une corrélation ?
|
||||
|
||||
## Graphiques de densité
|
||||
|
||||
Vous avez peut-être remarqué que les histogrammes que nous avons examinés jusqu'à présent sont "en escalier" et ne s'écoulent pas de manière fluide en arc. Pour afficher un graphique de densité plus fluide, vous pouvez essayer un graphique de densité.
|
||||
|
||||
Pour travailler avec des graphiques de densité, familiarisez-vous avec une nouvelle bibliothèque de tracé, [Seaborn](https://seaborn.pydata.org/generated/seaborn.kdeplot.html).
|
||||
|
||||
En chargeant Seaborn, essayez un graphique de densité basique :
|
||||
|
||||
```python
|
||||
import seaborn as sns
|
||||
import matplotlib.pyplot as plt
|
||||
sns.kdeplot(filteredBirds['MinWingspan'])
|
||||
plt.show()
|
||||
```
|
||||

|
||||
|
||||
Vous pouvez voir comment le graphique reflète le précédent pour les données d'envergure minimale ; il est juste un peu plus fluide. Selon la documentation de Seaborn, "Par rapport à un histogramme, le KDE peut produire un graphique moins encombré et plus interprétable, surtout lorsqu'on trace plusieurs distributions. Mais il a le potentiel d'introduire des distorsions si la distribution sous-jacente est bornée ou non fluide. Comme un histogramme, la qualité de la représentation dépend également de la sélection de bons paramètres de lissage." [source](https://seaborn.pydata.org/generated/seaborn.kdeplot.html) En d'autres termes, les valeurs aberrantes, comme toujours, feront mal fonctionner vos graphiques.
|
||||
|
||||
Si vous vouliez revisiter cette ligne irrégulière de MaxBodyMass dans le deuxième graphique que vous avez construit, vous pourriez la lisser très bien en la recréant avec cette méthode :
|
||||
|
||||
```python
|
||||
sns.kdeplot(filteredBirds['MaxBodyMass'])
|
||||
plt.show()
|
||||
```
|
||||

|
||||
|
||||
Si vous vouliez une ligne lisse, mais pas trop lisse, modifiez le paramètre `bw_adjust` :
|
||||
|
||||
```python
|
||||
sns.kdeplot(filteredBirds['MaxBodyMass'], bw_adjust=.2)
|
||||
plt.show()
|
||||
```
|
||||

|
||||
|
||||
✅ Lisez les paramètres disponibles pour ce type de graphique et expérimentez !
|
||||
|
||||
Ce type de graphique offre des visualisations magnifiquement explicatives. Avec quelques lignes de code, par exemple, vous pouvez montrer la densité de masse corporelle maximale par ordre d'oiseaux :
|
||||
|
||||
```python
|
||||
sns.kdeplot(
|
||||
data=filteredBirds, x="MaxBodyMass", hue="Order",
|
||||
fill=True, common_norm=False, palette="crest",
|
||||
alpha=.5, linewidth=0,
|
||||
)
|
||||
```
|
||||
|
||||

|
||||
|
||||
Vous pouvez également cartographier la densité de plusieurs variables dans un seul graphique. Testez la longueur maximale et la longueur minimale d'un oiseau par rapport à son statut de conservation :
|
||||
|
||||
```python
|
||||
sns.kdeplot(data=filteredBirds, x="MinLength", y="MaxLength", hue="ConservationStatus")
|
||||
```
|
||||
|
||||

|
||||
|
||||
Peut-être vaut-il la peine de rechercher si le regroupement des oiseaux "Vulnérables" selon leurs longueurs est significatif ou non.
|
||||
|
||||
## 🚀 Défi
|
||||
|
||||
Les histogrammes sont un type de graphique plus sophistiqué que les diagrammes de dispersion, les diagrammes en barres ou les diagrammes linéaires de base. Faites une recherche sur Internet pour trouver de bons exemples d'utilisation des histogrammes. Comment sont-ils utilisés, que démontrent-ils, et dans quels domaines ou champs d'étude ont-ils tendance à être utilisés ?
|
||||
|
||||
## [Quiz après la leçon](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/19)
|
||||
|
||||
## Révision et auto-apprentissage
|
||||
|
||||
Dans cette leçon, vous avez utilisé Matplotlib et commencé à travailler avec Seaborn pour afficher des graphiques plus sophistiqués. Faites des recherches sur `kdeplot` dans Seaborn, une "courbe de densité de probabilité continue dans une ou plusieurs dimensions". Lisez la [documentation](https://seaborn.pydata.org/generated/seaborn.kdeplot.html) pour comprendre son fonctionnement.
|
||||
|
||||
## Devoir
|
||||
|
||||
[Appliquez vos compétences](assignment.md)
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,23 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "40eeb9b9f94009c537c7811f9f27f037",
|
||||
"translation_date": "2025-08-24T13:39:51+00:00",
|
||||
"source_file": "3-Data-Visualization/10-visualization-distributions/assignment.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Appliquez vos compétences
|
||||
|
||||
## Instructions
|
||||
|
||||
Jusqu'à présent, vous avez travaillé avec le jeu de données sur les oiseaux du Minnesota pour découvrir des informations sur les quantités d'oiseaux et la densité de population. Mettez en pratique vos compétences en appliquant ces techniques à un autre jeu de données, peut-être issu de [Kaggle](https://www.kaggle.com/). Créez un notebook pour raconter une histoire à partir de ce jeu de données, et assurez-vous d'utiliser des histogrammes pour en discuter.
|
||||
|
||||
## Grille d'évaluation
|
||||
|
||||
Exemplaire | Adéquat | À améliorer
|
||||
--- | --- | --- |
|
||||
Un notebook est présenté avec des annotations sur ce jeu de données, y compris sa source, et utilise au moins 5 histogrammes pour découvrir des faits sur les données. | Un notebook est présenté avec des annotations incomplètes ou des bugs. | Un notebook est présenté sans annotations et contient des bugs.
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,201 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "af6a12015c6e250e500b570a9fa42593",
|
||||
"translation_date": "2025-08-24T14:09:02+00:00",
|
||||
"source_file": "3-Data-Visualization/11-visualization-proportions/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Visualiser les proportions
|
||||
|
||||
| ](../../sketchnotes/11-Visualizing-Proportions.png)|
|
||||
|:---:|
|
||||
|Visualiser les proportions - _Sketchnote par [@nitya](https://twitter.com/nitya)_ |
|
||||
|
||||
Dans cette leçon, vous utiliserez un ensemble de données axé sur la nature pour visualiser les proportions, comme le nombre de types différents de champignons présents dans un ensemble de données sur les champignons. Explorons ces fascinants champignons à l'aide d'un ensemble de données provenant d'Audubon, qui répertorie des informations sur 23 espèces de champignons à lamelles des familles Agaricus et Lepiota. Vous expérimenterez des visualisations savoureuses telles que :
|
||||
|
||||
- Des diagrammes circulaires 🥧
|
||||
- Des diagrammes en anneau 🍩
|
||||
- Des diagrammes en gaufre 🧇
|
||||
|
||||
> 💡 Un projet très intéressant appelé [Charticulator](https://charticulator.com) de Microsoft Research propose une interface gratuite de glisser-déposer pour les visualisations de données. Dans l'un de leurs tutoriels, ils utilisent également cet ensemble de données sur les champignons ! Vous pouvez donc explorer les données et apprendre à utiliser la bibliothèque en même temps : [Tutoriel Charticulator](https://charticulator.com/tutorials/tutorial4.html).
|
||||
|
||||
## [Quiz avant la leçon](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/20)
|
||||
|
||||
## Faites connaissance avec vos champignons 🍄
|
||||
|
||||
Les champignons sont très intéressants. Importons un ensemble de données pour les étudier :
|
||||
|
||||
```python
|
||||
import pandas as pd
|
||||
import matplotlib.pyplot as plt
|
||||
mushrooms = pd.read_csv('../../data/mushrooms.csv')
|
||||
mushrooms.head()
|
||||
```
|
||||
Un tableau est affiché avec des données intéressantes pour l'analyse :
|
||||
|
||||
| classe | forme du chapeau | surface du chapeau | couleur du chapeau | meurtri | odeur | attache des lamelles | espacement des lamelles | taille des lamelles | couleur des lamelles | forme du pied | racine du pied | surface du pied au-dessus de l'anneau | surface du pied en-dessous de l'anneau | couleur du pied au-dessus de l'anneau | couleur du pied en-dessous de l'anneau | type de voile | couleur du voile | nombre d'anneaux | type d'anneau | couleur des spores | population | habitat |
|
||||
| --------- | ---------------- | ------------------ | ------------------ | ------- | ------- | -------------------- | ----------------------- | ------------------- | -------------------- | ------------- | -------------- | ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------- | ---------------- | ---------------- | ------------- | ----------------- | ---------- | ------- |
|
||||
| Toxique | Convexe | Lisse | Marron | Meurtri | Piquant | Libre | Serré | Étroit | Noir | Élargi | Égal | Lisse | Lisse | Blanc | Blanc | Partiel | Blanc | Un | Pendant | Noir | Dispersé | Urbain |
|
||||
| Comestible| Convexe | Lisse | Jaune | Meurtri | Amande | Libre | Serré | Large | Noir | Élargi | Massue | Lisse | Lisse | Blanc | Blanc | Partiel | Blanc | Un | Pendant | Marron | Nombreux | Herbes |
|
||||
| Comestible| Cloché | Lisse | Blanc | Meurtri | Anis | Libre | Serré | Large | Marron | Élargi | Massue | Lisse | Lisse | Blanc | Blanc | Partiel | Blanc | Un | Pendant | Marron | Nombreux | Prairies|
|
||||
| Toxique | Convexe | Écailleux | Blanc | Meurtri | Piquant | Libre | Serré | Étroit | Marron | Élargi | Égal | Lisse | Lisse | Blanc | Blanc | Partiel | Blanc | Un | Pendant | Noir | Dispersé | Urbain |
|
||||
|
||||
Vous remarquez immédiatement que toutes les données sont textuelles. Vous devrez convertir ces données pour pouvoir les utiliser dans un graphique. La plupart des données, en fait, sont représentées comme un objet :
|
||||
|
||||
```python
|
||||
print(mushrooms.select_dtypes(["object"]).columns)
|
||||
```
|
||||
|
||||
Le résultat est :
|
||||
|
||||
```output
|
||||
Index(['class', 'cap-shape', 'cap-surface', 'cap-color', 'bruises', 'odor',
|
||||
'gill-attachment', 'gill-spacing', 'gill-size', 'gill-color',
|
||||
'stalk-shape', 'stalk-root', 'stalk-surface-above-ring',
|
||||
'stalk-surface-below-ring', 'stalk-color-above-ring',
|
||||
'stalk-color-below-ring', 'veil-type', 'veil-color', 'ring-number',
|
||||
'ring-type', 'spore-print-color', 'population', 'habitat'],
|
||||
dtype='object')
|
||||
```
|
||||
Prenez ces données et convertissez la colonne 'classe' en catégorie :
|
||||
|
||||
```python
|
||||
cols = mushrooms.select_dtypes(["object"]).columns
|
||||
mushrooms[cols] = mushrooms[cols].astype('category')
|
||||
```
|
||||
|
||||
```python
|
||||
edibleclass=mushrooms.groupby(['class']).count()
|
||||
edibleclass
|
||||
```
|
||||
|
||||
Maintenant, si vous imprimez les données des champignons, vous pouvez voir qu'elles ont été regroupées en catégories selon la classe toxique/comestible :
|
||||
|
||||
| | forme du chapeau | surface du chapeau | couleur du chapeau | meurtri | odeur | attache des lamelles | espacement des lamelles | taille des lamelles | couleur des lamelles | forme du pied | ... | surface du pied en-dessous de l'anneau | couleur du pied au-dessus de l'anneau | couleur du pied en-dessous de l'anneau | type de voile | couleur du voile | nombre d'anneaux | type d'anneau | couleur des spores | population | habitat |
|
||||
| --------- | ---------------- | ------------------ | ------------------ | ------- | ---- | -------------------- | ----------------------- | ------------------- | -------------------- | ------------- | --- | ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------- | ---------------- | ---------------- | ------------- | ----------------- | ---------- | ------- |
|
||||
| classe | | | | | | | | | | | | | | | | | | | | | |
|
||||
| Comestible| 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | ... | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 |
|
||||
| Toxique | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | ... | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 |
|
||||
|
||||
Si vous suivez l'ordre présenté dans ce tableau pour créer vos étiquettes de catégorie de classe, vous pouvez construire un diagramme circulaire :
|
||||
|
||||
## Diagramme circulaire !
|
||||
|
||||
```python
|
||||
labels=['Edible','Poisonous']
|
||||
plt.pie(edibleclass['population'],labels=labels,autopct='%.1f %%')
|
||||
plt.title('Edible?')
|
||||
plt.show()
|
||||
```
|
||||
Et voilà, un diagramme circulaire montrant les proportions de ces données selon ces deux classes de champignons. Il est très important de respecter l'ordre des étiquettes, surtout ici, alors assurez-vous de vérifier l'ordre avec lequel le tableau des étiquettes est construit !
|
||||
|
||||

|
||||
|
||||
## Diagrammes en anneau !
|
||||
|
||||
Un diagramme en anneau est un diagramme circulaire avec un trou au centre, ce qui le rend visuellement plus intéressant. Regardons nos données avec cette méthode.
|
||||
|
||||
Examinez les différents habitats où poussent les champignons :
|
||||
|
||||
```python
|
||||
habitat=mushrooms.groupby(['habitat']).count()
|
||||
habitat
|
||||
```
|
||||
Ici, vous regroupez vos données par habitat. Il y en a 7 répertoriés, alors utilisez-les comme étiquettes pour votre diagramme en anneau :
|
||||
|
||||
```python
|
||||
labels=['Grasses','Leaves','Meadows','Paths','Urban','Waste','Wood']
|
||||
|
||||
plt.pie(habitat['class'], labels=labels,
|
||||
autopct='%1.1f%%', pctdistance=0.85)
|
||||
|
||||
center_circle = plt.Circle((0, 0), 0.40, fc='white')
|
||||
fig = plt.gcf()
|
||||
|
||||
fig.gca().add_artist(center_circle)
|
||||
|
||||
plt.title('Mushroom Habitats')
|
||||
|
||||
plt.show()
|
||||
```
|
||||
|
||||

|
||||
|
||||
Ce code dessine un graphique et un cercle central, puis ajoute ce cercle central au graphique. Modifiez la largeur du cercle central en changeant `0.40` par une autre valeur.
|
||||
|
||||
Les diagrammes en anneau peuvent être ajustés de plusieurs façons pour modifier les étiquettes. Les étiquettes, en particulier, peuvent être mises en évidence pour améliorer la lisibilité. Apprenez-en plus dans la [documentation](https://matplotlib.org/stable/gallery/pie_and_polar_charts/pie_and_donut_labels.html?highlight=donut).
|
||||
|
||||
Maintenant que vous savez comment regrouper vos données et les afficher sous forme de diagramme circulaire ou en anneau, vous pouvez explorer d'autres types de graphiques. Essayez un diagramme en gaufre, qui est simplement une autre façon d'explorer les quantités.
|
||||
|
||||
## Diagrammes en gaufre !
|
||||
|
||||
Un diagramme de type 'gaufre' est une manière différente de visualiser les quantités sous forme de tableau 2D de carrés. Essayez de visualiser les différentes quantités de couleurs de chapeau de champignon dans cet ensemble de données. Pour ce faire, vous devez installer une bibliothèque d'assistance appelée [PyWaffle](https://pypi.org/project/pywaffle/) et utiliser Matplotlib :
|
||||
|
||||
```python
|
||||
pip install pywaffle
|
||||
```
|
||||
|
||||
Sélectionnez un segment de vos données à regrouper :
|
||||
|
||||
```python
|
||||
capcolor=mushrooms.groupby(['cap-color']).count()
|
||||
capcolor
|
||||
```
|
||||
|
||||
Créez un diagramme en gaufre en créant des étiquettes, puis en regroupant vos données :
|
||||
|
||||
```python
|
||||
import pandas as pd
|
||||
import matplotlib.pyplot as plt
|
||||
from pywaffle import Waffle
|
||||
|
||||
data ={'color': ['brown', 'buff', 'cinnamon', 'green', 'pink', 'purple', 'red', 'white', 'yellow'],
|
||||
'amount': capcolor['class']
|
||||
}
|
||||
|
||||
df = pd.DataFrame(data)
|
||||
|
||||
fig = plt.figure(
|
||||
FigureClass = Waffle,
|
||||
rows = 100,
|
||||
values = df.amount,
|
||||
labels = list(df.color),
|
||||
figsize = (30,30),
|
||||
colors=["brown", "tan", "maroon", "green", "pink", "purple", "red", "whitesmoke", "yellow"],
|
||||
)
|
||||
```
|
||||
|
||||
Avec un diagramme en gaufre, vous pouvez clairement voir les proportions des couleurs de chapeau dans cet ensemble de données sur les champignons. Fait intéressant, il y a de nombreux champignons à chapeau vert !
|
||||
|
||||

|
||||
|
||||
✅ PyWaffle prend en charge les icônes dans les graphiques qui utilisent n'importe quelle icône disponible dans [Font Awesome](https://fontawesome.com/). Faites des expériences pour créer un diagramme en gaufre encore plus intéressant en utilisant des icônes au lieu de carrés.
|
||||
|
||||
Dans cette leçon, vous avez appris trois façons de visualiser les proportions. Tout d'abord, vous devez regrouper vos données en catégories, puis décider de la meilleure façon de les afficher - circulaire, en anneau ou en gaufre. Toutes sont délicieuses et offrent à l'utilisateur un aperçu instantané d'un ensemble de données.
|
||||
|
||||
## 🚀 Défi
|
||||
|
||||
Essayez de recréer ces graphiques savoureux dans [Charticulator](https://charticulator.com).
|
||||
## [Quiz après la leçon](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/21)
|
||||
|
||||
## Révision et étude personnelle
|
||||
|
||||
Parfois, il n'est pas évident de savoir quand utiliser un diagramme circulaire, en anneau ou en gaufre. Voici quelques articles à lire sur ce sujet :
|
||||
|
||||
https://www.beautiful.ai/blog/battle-of-the-charts-pie-chart-vs-donut-chart
|
||||
|
||||
https://medium.com/@hypsypops/pie-chart-vs-donut-chart-showdown-in-the-ring-5d24fd86a9ce
|
||||
|
||||
https://www.mit.edu/~mbarker/formula1/f1help/11-ch-c6.htm
|
||||
|
||||
https://medium.datadriveninvestor.com/data-visualization-done-the-right-way-with-tableau-waffle-chart-fdf2a19be402
|
||||
|
||||
Faites des recherches pour trouver plus d'informations sur cette décision délicate.
|
||||
## Devoir
|
||||
|
||||
[Essayez-le dans Excel](assignment.md)
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,23 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "1e00fe6a244c2f8f9a794c862661dd4f",
|
||||
"translation_date": "2025-08-24T14:10:41+00:00",
|
||||
"source_file": "3-Data-Visualization/11-visualization-proportions/assignment.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Essayez-le dans Excel
|
||||
|
||||
## Instructions
|
||||
|
||||
Saviez-vous que vous pouvez créer des graphiques en anneau, en secteur et en gaufre dans Excel ? En utilisant un ensemble de données de votre choix, créez ces trois graphiques directement dans une feuille de calcul Excel.
|
||||
|
||||
## Grille d'évaluation
|
||||
|
||||
| Exemplaire | Adéquat | À améliorer |
|
||||
| ------------------------------------------------------- | ------------------------------------------------ | ----------------------------------------------------- |
|
||||
| Une feuille Excel est présentée avec les trois graphiques | Une feuille Excel est présentée avec deux graphiques | Une feuille Excel est présentée avec un seul graphique |
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,184 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "cad419b574d5c35eaa417e9abfdcb0c8",
|
||||
"translation_date": "2025-08-24T13:41:56+00:00",
|
||||
"source_file": "3-Data-Visualization/12-visualization-relationships/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Visualiser les relations : Tout sur le miel 🍯
|
||||
|
||||
| ](../../sketchnotes/12-Visualizing-Relationships.png)|
|
||||
|:---:|
|
||||
|Visualiser les relations - _Sketchnote par [@nitya](https://twitter.com/nitya)_ |
|
||||
|
||||
En poursuivant notre recherche axée sur la nature, découvrons des visualisations intéressantes pour montrer les relations entre différents types de miel, selon un ensemble de données provenant du [Département de l'Agriculture des États-Unis](https://www.nass.usda.gov/About_NASS/index.php).
|
||||
|
||||
Cet ensemble de données, qui contient environ 600 éléments, présente la production de miel dans de nombreux États américains. Par exemple, vous pouvez examiner le nombre de colonies, le rendement par colonie, la production totale, les stocks, le prix par livre et la valeur du miel produit dans un État donné de 1998 à 2012, avec une ligne par année pour chaque État.
|
||||
|
||||
Il sera intéressant de visualiser la relation entre la production annuelle d'un État donné et, par exemple, le prix du miel dans cet État. Alternativement, vous pourriez visualiser la relation entre les rendements de miel par colonie dans différents États. Cette période couvre l'apparition dévastatrice du 'CCD' ou 'Colony Collapse Disorder' (Syndrome d'effondrement des colonies) observée pour la première fois en 2006 (http://npic.orst.edu/envir/ccd.html), ce qui en fait un ensemble de données poignant à étudier. 🐝
|
||||
|
||||
## [Quiz avant le cours](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/22)
|
||||
|
||||
Dans cette leçon, vous pouvez utiliser Seaborn, que vous avez déjà utilisé, comme une excellente bibliothèque pour visualiser les relations entre les variables. Particulièrement intéressant est l'utilisation de la fonction `relplot` de Seaborn, qui permet de créer des graphiques de dispersion et des graphiques linéaires pour visualiser rapidement les '[relations statistiques](https://seaborn.pydata.org/tutorial/relational.html?highlight=relationships)', ce qui permet au data scientist de mieux comprendre comment les variables sont liées entre elles.
|
||||
|
||||
## Graphiques de dispersion
|
||||
|
||||
Utilisez un graphique de dispersion pour montrer comment le prix du miel a évolué, année après année, par État. Seaborn, grâce à `relplot`, regroupe commodément les données des États et affiche des points de données pour les données catégoriques et numériques.
|
||||
|
||||
Commençons par importer les données et Seaborn :
|
||||
|
||||
```python
|
||||
import pandas as pd
|
||||
import matplotlib.pyplot as plt
|
||||
import seaborn as sns
|
||||
honey = pd.read_csv('../../data/honey.csv')
|
||||
honey.head()
|
||||
```
|
||||
Vous remarquez que les données sur le miel contiennent plusieurs colonnes intéressantes, notamment l'année et le prix par livre. Explorons ces données, regroupées par État américain :
|
||||
|
||||
| state | numcol | yieldpercol | totalprod | stocks | priceperlb | prodvalue | year |
|
||||
| ----- | ------ | ----------- | --------- | -------- | ---------- | --------- | ---- |
|
||||
| AL | 16000 | 71 | 1136000 | 159000 | 0.72 | 818000 | 1998 |
|
||||
| AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 |
|
||||
| AR | 53000 | 65 | 3445000 | 1688000 | 0.59 | 2033000 | 1998 |
|
||||
| CA | 450000 | 83 | 37350000 | 12326000 | 0.62 | 23157000 | 1998 |
|
||||
| CO | 27000 | 72 | 1944000 | 1594000 | 0.7 | 1361000 | 1998 |
|
||||
|
||||
Créez un graphique de dispersion de base pour montrer la relation entre le prix par livre de miel et son État d'origine. Faites en sorte que l'axe `y` soit suffisamment grand pour afficher tous les États :
|
||||
|
||||
```python
|
||||
sns.relplot(x="priceperlb", y="state", data=honey, height=15, aspect=.5);
|
||||
```
|
||||

|
||||
|
||||
Maintenant, affichez les mêmes données avec un schéma de couleurs miel pour montrer comment le prix évolue au fil des années. Vous pouvez le faire en ajoutant un paramètre 'hue' pour montrer le changement, année après année :
|
||||
|
||||
> ✅ En savoir plus sur les [palettes de couleurs que vous pouvez utiliser dans Seaborn](https://seaborn.pydata.org/tutorial/color_palettes.html) - essayez un magnifique schéma de couleurs arc-en-ciel !
|
||||
|
||||
```python
|
||||
sns.relplot(x="priceperlb", y="state", hue="year", palette="YlOrBr", data=honey, height=15, aspect=.5);
|
||||
```
|
||||

|
||||
|
||||
Avec ce changement de schéma de couleurs, vous pouvez voir qu'il y a évidemment une forte progression au fil des années en termes de prix du miel par livre. En effet, si vous examinez un échantillon de données pour vérifier (choisissez un État donné, comme l'Arizona), vous pouvez voir un schéma d'augmentation des prix année après année, avec quelques exceptions :
|
||||
|
||||
| state | numcol | yieldpercol | totalprod | stocks | priceperlb | prodvalue | year |
|
||||
| ----- | ------ | ----------- | --------- | ------- | ---------- | --------- | ---- |
|
||||
| AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 |
|
||||
| AZ | 52000 | 62 | 3224000 | 1548000 | 0.62 | 1999000 | 1999 |
|
||||
| AZ | 40000 | 59 | 2360000 | 1322000 | 0.73 | 1723000 | 2000 |
|
||||
| AZ | 43000 | 59 | 2537000 | 1142000 | 0.72 | 1827000 | 2001 |
|
||||
| AZ | 38000 | 63 | 2394000 | 1197000 | 1.08 | 2586000 | 2002 |
|
||||
| AZ | 35000 | 72 | 2520000 | 983000 | 1.34 | 3377000 | 2003 |
|
||||
| AZ | 32000 | 55 | 1760000 | 774000 | 1.11 | 1954000 | 2004 |
|
||||
| AZ | 36000 | 50 | 1800000 | 720000 | 1.04 | 1872000 | 2005 |
|
||||
| AZ | 30000 | 65 | 1950000 | 839000 | 0.91 | 1775000 | 2006 |
|
||||
| AZ | 30000 | 64 | 1920000 | 902000 | 1.26 | 2419000 | 2007 |
|
||||
| AZ | 25000 | 64 | 1600000 | 336000 | 1.26 | 2016000 | 2008 |
|
||||
| AZ | 20000 | 52 | 1040000 | 562000 | 1.45 | 1508000 | 2009 |
|
||||
| AZ | 24000 | 77 | 1848000 | 665000 | 1.52 | 2809000 | 2010 |
|
||||
| AZ | 23000 | 53 | 1219000 | 427000 | 1.55 | 1889000 | 2011 |
|
||||
| AZ | 22000 | 46 | 1012000 | 253000 | 1.79 | 1811000 | 2012 |
|
||||
|
||||
Une autre façon de visualiser cette progression est d'utiliser la taille, plutôt que la couleur. Pour les utilisateurs daltoniens, cela pourrait être une meilleure option. Modifiez votre visualisation pour montrer une augmentation du prix par une augmentation de la circonférence des points :
|
||||
|
||||
```python
|
||||
sns.relplot(x="priceperlb", y="state", size="year", data=honey, height=15, aspect=.5);
|
||||
```
|
||||
Vous pouvez voir la taille des points augmenter progressivement.
|
||||
|
||||

|
||||
|
||||
Est-ce un simple cas d'offre et de demande ? En raison de facteurs tels que le changement climatique et l'effondrement des colonies, y a-t-il moins de miel disponible à l'achat année après année, ce qui entraîne une augmentation des prix ?
|
||||
|
||||
Pour découvrir une corrélation entre certaines des variables de cet ensemble de données, explorons quelques graphiques linéaires.
|
||||
|
||||
## Graphiques linéaires
|
||||
|
||||
Question : Y a-t-il une augmentation claire du prix du miel par livre année après année ? Vous pouvez le découvrir facilement en créant un graphique linéaire unique :
|
||||
|
||||
```python
|
||||
sns.relplot(x="year", y="priceperlb", kind="line", data=honey);
|
||||
```
|
||||
Réponse : Oui, avec quelques exceptions autour de l'année 2003 :
|
||||
|
||||

|
||||
|
||||
✅ Comme Seaborn regroupe les données autour d'une seule ligne, il affiche "les multiples mesures à chaque valeur x en traçant la moyenne et l'intervalle de confiance à 95 % autour de la moyenne". [Source](https://seaborn.pydata.org/tutorial/relational.html). Ce comportement, qui prend du temps, peut être désactivé en ajoutant `ci=None`.
|
||||
|
||||
Question : Eh bien, en 2003, pouvons-nous également observer un pic dans l'approvisionnement en miel ? Que se passe-t-il si vous examinez la production totale année après année ?
|
||||
|
||||
```python
|
||||
sns.relplot(x="year", y="totalprod", kind="line", data=honey);
|
||||
```
|
||||
|
||||

|
||||
|
||||
Réponse : Pas vraiment. Si vous regardez la production totale, elle semble en fait avoir augmenté cette année-là, même si, de manière générale, la quantité de miel produite est en déclin pendant ces années.
|
||||
|
||||
Question : Dans ce cas, qu'est-ce qui aurait pu provoquer ce pic du prix du miel autour de 2003 ?
|
||||
|
||||
Pour le découvrir, vous pouvez explorer une grille de facettes.
|
||||
|
||||
## Grilles de facettes
|
||||
|
||||
Les grilles de facettes prennent une facette de votre ensemble de données (dans notre cas, vous pouvez choisir 'année' pour éviter d'avoir trop de facettes produites). Seaborn peut ensuite créer un graphique pour chacune de ces facettes de vos coordonnées `x` et `y` choisies pour une comparaison visuelle plus facile. L'année 2003 se démarque-t-elle dans ce type de comparaison ?
|
||||
|
||||
Créez une grille de facettes en continuant à utiliser `relplot` comme recommandé par la [documentation de Seaborn](https://seaborn.pydata.org/generated/seaborn.FacetGrid.html?highlight=facetgrid#seaborn.FacetGrid).
|
||||
|
||||
```python
|
||||
sns.relplot(
|
||||
data=honey,
|
||||
x="yieldpercol", y="numcol",
|
||||
col="year",
|
||||
col_wrap=3,
|
||||
kind="line"
|
||||
```
|
||||
Dans cette visualisation, vous pouvez comparer le rendement par colonie et le nombre de colonies année après année, côte à côte, avec un wrap défini à 3 pour les colonnes :
|
||||
|
||||

|
||||
|
||||
Pour cet ensemble de données, rien de particulièrement remarquable ne ressort concernant le nombre de colonies et leur rendement, année après année et État par État. Existe-t-il une autre façon de rechercher une corrélation entre ces deux variables ?
|
||||
|
||||
## Graphiques à double ligne
|
||||
|
||||
Essayez un graphique à lignes multiples en superposant deux graphiques linéaires l'un sur l'autre, en utilisant la fonction 'despine' de Seaborn pour supprimer les bordures supérieure et droite, et en utilisant `ax.twinx` [dérivé de Matplotlib](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.twinx.html). Twinx permet à un graphique de partager l'axe x et d'afficher deux axes y. Affichez donc le rendement par colonie et le nombre de colonies, superposés :
|
||||
|
||||
```python
|
||||
fig, ax = plt.subplots(figsize=(12,6))
|
||||
lineplot = sns.lineplot(x=honey['year'], y=honey['numcol'], data=honey,
|
||||
label = 'Number of bee colonies', legend=False)
|
||||
sns.despine()
|
||||
plt.ylabel('# colonies')
|
||||
plt.title('Honey Production Year over Year');
|
||||
|
||||
ax2 = ax.twinx()
|
||||
lineplot2 = sns.lineplot(x=honey['year'], y=honey['yieldpercol'], ax=ax2, color="r",
|
||||
label ='Yield per colony', legend=False)
|
||||
sns.despine(right=False)
|
||||
plt.ylabel('colony yield')
|
||||
ax.figure.legend();
|
||||
```
|
||||

|
||||
|
||||
Bien que rien ne saute aux yeux autour de l'année 2003, cela nous permet de terminer cette leçon sur une note un peu plus positive : bien qu'il y ait globalement une diminution du nombre de colonies, ce nombre se stabilise, même si leur rendement par colonie diminue.
|
||||
|
||||
Allez, les abeilles, allez !
|
||||
|
||||
🐝❤️
|
||||
## 🚀 Défi
|
||||
|
||||
Dans cette leçon, vous avez appris un peu plus sur d'autres utilisations des graphiques de dispersion et des grilles linéaires, y compris les grilles de facettes. Lancez-vous le défi de créer une grille de facettes en utilisant un ensemble de données différent, peut-être un que vous avez utilisé avant ces leçons. Notez combien de temps elles prennent à créer et comment vous devez être prudent quant au nombre de grilles que vous devez dessiner en utilisant ces techniques.
|
||||
## [Quiz après le cours](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/23)
|
||||
|
||||
## Révision et auto-apprentissage
|
||||
|
||||
Les graphiques linéaires peuvent être simples ou assez complexes. Faites un peu de lecture dans la [documentation de Seaborn](https://seaborn.pydata.org/generated/seaborn.lineplot.html) sur les différentes façons dont vous pouvez les construire. Essayez d'améliorer les graphiques linéaires que vous avez créés dans cette leçon avec d'autres méthodes listées dans la documentation.
|
||||
## Devoir
|
||||
|
||||
[Plongez dans la ruche](assignment.md)
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,23 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "680419753c086eef51be86607c623945",
|
||||
"translation_date": "2025-08-24T13:43:51+00:00",
|
||||
"source_file": "3-Data-Visualization/12-visualization-relationships/assignment.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Plongée dans la ruche
|
||||
|
||||
## Instructions
|
||||
|
||||
Dans cette leçon, vous avez commencé à examiner un ensemble de données sur les abeilles et leur production de miel sur une période marquée par des pertes dans la population des colonies d'abeilles. Explorez plus en profondeur cet ensemble de données et construisez un notebook qui raconte l'histoire de la santé de la population d'abeilles, état par état et année par année. Découvrez-vous quelque chose d'intéressant dans cet ensemble de données ?
|
||||
|
||||
## Grille d'évaluation
|
||||
|
||||
| Exemplaire | Adéquat | À améliorer |
|
||||
| -------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- | ---------------------------------------- |
|
||||
| Un notebook est présenté avec une histoire annotée par au moins trois graphiques différents montrant des aspects de l'ensemble de données, état par état et année par année | Le notebook manque l'un de ces éléments | Le notebook manque deux de ces éléments |
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,180 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "4ec4747a9f4f7d194248ea29903ae165",
|
||||
"translation_date": "2025-08-24T13:33:11+00:00",
|
||||
"source_file": "3-Data-Visualization/13-meaningful-visualizations/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Créer des Visualisations Significatives
|
||||
|
||||
| ](../../sketchnotes/13-MeaningfulViz.png)|
|
||||
|:---:|
|
||||
| Visualisations Significatives - _Sketchnote par [@nitya](https://twitter.com/nitya)_ |
|
||||
|
||||
> "Si vous torturez les données suffisamment longtemps, elles avoueront n'importe quoi" -- [Ronald Coase](https://en.wikiquote.org/wiki/Ronald_Coase)
|
||||
|
||||
Une des compétences fondamentales d'un data scientist est la capacité à créer une visualisation de données significative qui aide à répondre aux questions que vous pourriez avoir. Avant de visualiser vos données, vous devez vous assurer qu'elles ont été nettoyées et préparées, comme vous l'avez fait dans les leçons précédentes. Ensuite, vous pouvez commencer à décider de la meilleure manière de présenter les données.
|
||||
|
||||
Dans cette leçon, vous allez revoir :
|
||||
|
||||
1. Comment choisir le bon type de graphique
|
||||
2. Comment éviter les graphiques trompeurs
|
||||
3. Comment travailler avec les couleurs
|
||||
4. Comment styliser vos graphiques pour une meilleure lisibilité
|
||||
5. Comment créer des solutions de graphiques animés ou en 3D
|
||||
6. Comment concevoir une visualisation créative
|
||||
|
||||
## [Quiz Pré-Lecture](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/24)
|
||||
|
||||
## Choisir le bon type de graphique
|
||||
|
||||
Dans les leçons précédentes, vous avez expérimenté la création de différents types de visualisations de données en utilisant Matplotlib et Seaborn. En général, vous pouvez sélectionner le [bon type de graphique](https://chartio.com/learn/charts/how-to-select-a-data-vizualization/) en fonction de la question que vous posez, en utilisant ce tableau :
|
||||
|
||||
| Vous devez : | Vous devriez utiliser : |
|
||||
| -------------------------- | ------------------------------- |
|
||||
| Montrer des tendances dans le temps | Ligne |
|
||||
| Comparer des catégories | Barre, Camembert |
|
||||
| Comparer des totaux | Camembert, Barre empilée |
|
||||
| Montrer des relations | Nuage de points, Ligne, Facette, Double ligne |
|
||||
| Montrer des distributions | Nuage de points, Histogramme, Boîte |
|
||||
| Montrer des proportions | Camembert, Donut, Gaufre |
|
||||
|
||||
> ✅ Selon la composition de vos données, vous pourriez avoir besoin de les convertir de texte en numérique pour qu'un graphique donné puisse les prendre en charge.
|
||||
|
||||
## Éviter les graphiques trompeurs
|
||||
|
||||
Même si un data scientist choisit soigneusement le bon graphique pour les bonnes données, il existe de nombreuses façons de présenter les données de manière à prouver un point, souvent au détriment de la vérité. Il existe de nombreux exemples de graphiques et d'infographies trompeurs !
|
||||
|
||||
[](https://www.youtube.com/watch?v=oX74Nge8Wkw "Comment les graphiques mentent")
|
||||
|
||||
> 🎥 Cliquez sur l'image ci-dessus pour une conférence sur les graphiques trompeurs
|
||||
|
||||
Ce graphique inverse l'axe X pour montrer l'opposé de la vérité, basé sur les dates :
|
||||
|
||||

|
||||
|
||||
[Ce graphique](https://media.firstcoastnews.com/assets/WTLV/images/170ae16f-4643-438f-b689-50d66ca6a8d8/170ae16f-4643-438f-b689-50d66ca6a8d8_1140x641.jpg) est encore plus trompeur, car l'œil est attiré vers la droite pour conclure qu'au fil du temps, les cas de COVID ont diminué dans les différents comtés. En réalité, si vous regardez attentivement les dates, vous constaterez qu'elles ont été réarrangées pour donner cette fausse tendance à la baisse.
|
||||
|
||||

|
||||
|
||||
Cet exemple célèbre utilise la couleur ET un axe Y inversé pour tromper : au lieu de conclure que les décès par arme à feu ont augmenté après l'adoption d'une législation favorable aux armes, l'œil est trompé pour penser que c'est l'inverse :
|
||||
|
||||

|
||||
|
||||
Ce graphique étrange montre comment les proportions peuvent être manipulées, avec un effet hilarant :
|
||||
|
||||

|
||||
|
||||
Comparer l'incomparable est une autre astuce douteuse. Il existe un [site web merveilleux](https://tylervigen.com/spurious-correlations) consacré aux 'corrélations fallacieuses', affichant des 'faits' corrélant des choses comme le taux de divorce dans le Maine et la consommation de margarine. Un groupe Reddit collecte également les [mauvaises utilisations](https://www.reddit.com/r/dataisugly/top/?t=all) des données.
|
||||
|
||||
Il est important de comprendre à quel point l'œil peut être facilement trompé par des graphiques trompeurs. Même si l'intention du data scientist est bonne, le choix d'un mauvais type de graphique, comme un camembert montrant trop de catégories, peut induire en erreur.
|
||||
|
||||
## Couleur
|
||||
|
||||
Vous avez vu dans le graphique sur la 'violence armée en Floride' comment la couleur peut ajouter une couche supplémentaire de signification aux graphiques, en particulier ceux qui ne sont pas conçus avec des bibliothèques comme Matplotlib et Seaborn, qui proposent diverses palettes de couleurs validées. Si vous créez un graphique manuellement, prenez le temps d'étudier un peu la [théorie des couleurs](https://colormatters.com/color-and-design/basic-color-theory).
|
||||
|
||||
> ✅ Soyez conscient, lors de la conception de graphiques, que l'accessibilité est un aspect important de la visualisation. Certains de vos utilisateurs pourraient être daltoniens - votre graphique est-il lisible pour les utilisateurs ayant des déficiences visuelles ?
|
||||
|
||||
Faites attention lorsque vous choisissez des couleurs pour votre graphique, car elles peuvent transmettre une signification que vous ne souhaitez pas. Les 'dames en rose' dans le graphique sur la 'taille' ci-dessus véhiculent une signification 'féminine' qui ajoute à l'étrangeté du graphique lui-même.
|
||||
|
||||
Bien que [la signification des couleurs](https://colormatters.com/color-symbolism/the-meanings-of-colors) puisse varier selon les régions du monde et changer selon leur nuance, en général, les significations des couleurs incluent :
|
||||
|
||||
| Couleur | Signification |
|
||||
| ------- | ---------------------- |
|
||||
| rouge | pouvoir |
|
||||
| bleu | confiance, loyauté |
|
||||
| jaune | bonheur, prudence |
|
||||
| vert | écologie, chance, envie|
|
||||
| violet | bonheur |
|
||||
| orange | dynamisme |
|
||||
|
||||
Si vous devez créer un graphique avec des couleurs personnalisées, assurez-vous que vos graphiques sont à la fois accessibles et que les couleurs choisies correspondent à la signification que vous souhaitez transmettre.
|
||||
|
||||
## Styliser vos graphiques pour une meilleure lisibilité
|
||||
|
||||
Les graphiques ne sont pas significatifs s'ils ne sont pas lisibles ! Prenez un moment pour réfléchir à la mise à l'échelle de la largeur et de la hauteur de votre graphique pour qu'il s'adapte bien à vos données. Si une variable (comme les 50 États) doit être affichée, montrez-les verticalement sur l'axe Y si possible, afin d'éviter un graphique nécessitant un défilement horizontal.
|
||||
|
||||
Étiquetez vos axes, fournissez une légende si nécessaire, et proposez des infobulles pour une meilleure compréhension des données.
|
||||
|
||||
Si vos données sont textuelles et longues sur l'axe X, vous pouvez incliner le texte pour une meilleure lisibilité. [Matplotlib](https://matplotlib.org/stable/tutorials/toolkits/mplot3d.html) propose des graphiques en 3D, si vos données s'y prêtent. Des visualisations sophistiquées peuvent être produites en utilisant `mpl_toolkits.mplot3d`.
|
||||
|
||||

|
||||
|
||||
## Animation et affichage de graphiques en 3D
|
||||
|
||||
Certaines des meilleures visualisations de données aujourd'hui sont animées. Shirley Wu en a créé d'incroyables avec D3, comme '[film flowers](http://bl.ocks.org/sxywu/raw/d612c6c653fb8b4d7ff3d422be164a5d/)', où chaque fleur est une visualisation d'un film. Un autre exemple pour le Guardian est 'bussed out', une expérience interactive combinant des visualisations avec Greensock et D3, ainsi qu'un format d'article narratif pour montrer comment NYC gère son problème de sans-abris en envoyant des gens hors de la ville.
|
||||
|
||||

|
||||
|
||||
> "Bussed Out: How America Moves its Homeless" du [Guardian](https://www.theguardian.com/us-news/ng-interactive/2017/dec/20/bussed-out-america-moves-homeless-people-country-study). Visualisations par Nadieh Bremer & Shirley Wu
|
||||
|
||||
Bien que cette leçon ne soit pas suffisante pour enseigner en profondeur ces puissantes bibliothèques de visualisation, essayez D3 dans une application Vue.js en utilisant une bibliothèque pour afficher une visualisation du livre "Les Liaisons Dangereuses" comme un réseau social animé.
|
||||
|
||||
> "Les Liaisons Dangereuses" est un roman épistolaire, ou un roman présenté comme une série de lettres. Écrit en 1782 par Choderlos de Laclos, il raconte les manœuvres sociales vicieuses et moralement corrompues de deux protagonistes de l'aristocratie française du XVIIIe siècle, le Vicomte de Valmont et la Marquise de Merteuil. Tous deux rencontrent leur perte à la fin, mais pas sans avoir causé de nombreux dégâts sociaux. Le roman se déroule comme une série de lettres écrites à diverses personnes de leur cercle, complotant pour se venger ou simplement pour semer le trouble. Créez une visualisation de ces lettres pour découvrir les principaux acteurs du récit, visuellement.
|
||||
|
||||
Vous allez compléter une application web qui affichera une vue animée de ce réseau social. Elle utilise une bibliothèque conçue pour créer une [visualisation d'un réseau](https://github.com/emiliorizzo/vue-d3-network) avec Vue.js et D3. Lorsque l'application est en cours d'exécution, vous pouvez déplacer les nœuds sur l'écran pour réorganiser les données.
|
||||
|
||||

|
||||
|
||||
## Projet : Construire un graphique pour montrer un réseau avec D3.js
|
||||
|
||||
> Ce dossier de leçon inclut un dossier `solution` où vous pouvez trouver le projet complété, pour référence.
|
||||
|
||||
1. Suivez les instructions dans le fichier README.md à la racine du dossier starter. Assurez-vous d'avoir NPM et Node.js installés sur votre machine avant d'installer les dépendances du projet.
|
||||
|
||||
2. Ouvrez le dossier `starter/src`. Vous y trouverez un dossier `assets` contenant un fichier .json avec toutes les lettres du roman, numérotées, avec une annotation 'to' et 'from'.
|
||||
|
||||
3. Complétez le code dans `components/Nodes.vue` pour activer la visualisation. Recherchez la méthode appelée `createLinks()` et ajoutez la boucle imbriquée suivante.
|
||||
|
||||
Parcourez l'objet .json pour capturer les données 'to' et 'from' des lettres et construisez l'objet `links` afin que la bibliothèque de visualisation puisse l'utiliser :
|
||||
|
||||
```javascript
|
||||
//loop through letters
|
||||
let f = 0;
|
||||
let t = 0;
|
||||
for (var i = 0; i < letters.length; i++) {
|
||||
for (var j = 0; j < characters.length; j++) {
|
||||
|
||||
if (characters[j] == letters[i].from) {
|
||||
f = j;
|
||||
}
|
||||
if (characters[j] == letters[i].to) {
|
||||
t = j;
|
||||
}
|
||||
}
|
||||
this.links.push({ sid: f, tid: t });
|
||||
}
|
||||
```
|
||||
|
||||
Exécutez votre application depuis le terminal (npm run serve) et profitez de la visualisation !
|
||||
|
||||
## 🚀 Défi
|
||||
|
||||
Faites un tour sur Internet pour découvrir des visualisations trompeuses. Comment l'auteur trompe-t-il l'utilisateur, et est-ce intentionnel ? Essayez de corriger les visualisations pour montrer à quoi elles devraient ressembler.
|
||||
|
||||
## [Quiz Post-Lecture](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/25)
|
||||
|
||||
## Révision & Étude Personnelle
|
||||
|
||||
Voici quelques articles à lire sur les visualisations de données trompeuses :
|
||||
|
||||
https://gizmodo.com/how-to-lie-with-data-visualization-1563576606
|
||||
|
||||
http://ixd.prattsi.org/2017/12/visual-lies-usability-in-deceptive-data-visualizations/
|
||||
|
||||
Découvrez ces visualisations intéressantes pour des actifs et artefacts historiques :
|
||||
|
||||
https://handbook.pubpub.org/
|
||||
|
||||
Lisez cet article sur la manière dont l'animation peut améliorer vos visualisations :
|
||||
|
||||
https://medium.com/@EvanSinar/use-animation-to-supercharge-data-visualization-cd905a882ad4
|
||||
|
||||
## Devoir
|
||||
|
||||
[Créez votre propre visualisation personnalisée](assignment.md)
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,23 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "e56df4c0f49357e30ac8fc77aa439dd4",
|
||||
"translation_date": "2025-08-24T13:35:06+00:00",
|
||||
"source_file": "3-Data-Visualization/13-meaningful-visualizations/assignment.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Créez votre propre visualisation personnalisée
|
||||
|
||||
## Instructions
|
||||
|
||||
En utilisant l'exemple de code fourni dans ce projet pour créer un réseau social, concevez des données représentant vos propres interactions sociales. Vous pourriez cartographier votre utilisation des réseaux sociaux ou créer un diagramme de vos membres de famille. Développez une application web intéressante qui propose une visualisation unique d'un réseau social.
|
||||
|
||||
## Critères d'évaluation
|
||||
|
||||
Exemplaire | Adéquat | À améliorer
|
||||
--- | --- | -- |
|
||||
Un dépôt GitHub est présenté avec un code qui fonctionne correctement (essayez de le déployer en tant qu'application web statique) et contient un fichier README annoté expliquant le projet | Le dépôt ne fonctionne pas correctement ou n'est pas bien documenté | Le dépôt ne fonctionne pas correctement et n'est pas bien documenté
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction humaine professionnelle. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,38 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "5c51a54dd89075a7a362890117b7ed9e",
|
||||
"translation_date": "2025-08-24T13:36:16+00:00",
|
||||
"source_file": "3-Data-Visualization/13-meaningful-visualizations/solution/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Projet de visualisation des données Dangerous Liaisons
|
||||
|
||||
Pour commencer, vous devez vous assurer que NPM et Node sont installés et fonctionnent sur votre machine. Installez les dépendances (npm install) puis exécutez le projet en local (npm run serve) :
|
||||
|
||||
## Configuration du projet
|
||||
```
|
||||
npm install
|
||||
```
|
||||
|
||||
### Compile et recharge à chaud pour le développement
|
||||
```
|
||||
npm run serve
|
||||
```
|
||||
|
||||
### Compile et minifie pour la production
|
||||
```
|
||||
npm run build
|
||||
```
|
||||
|
||||
### Analyse et corrige les fichiers
|
||||
```
|
||||
npm run lint
|
||||
```
|
||||
|
||||
### Personnaliser la configuration
|
||||
Voir [Référence de configuration](https://cli.vuejs.org/config/).
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction humaine professionnelle. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,38 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "5c51a54dd89075a7a362890117b7ed9e",
|
||||
"translation_date": "2025-08-24T13:35:42+00:00",
|
||||
"source_file": "3-Data-Visualization/13-meaningful-visualizations/starter/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Projet de visualisation de données Dangerous Liaisons
|
||||
|
||||
Pour commencer, vous devez vous assurer que NPM et Node sont installés et fonctionnent sur votre machine. Installez les dépendances (npm install) puis exécutez le projet en local (npm run serve) :
|
||||
|
||||
## Configuration du projet
|
||||
```
|
||||
npm install
|
||||
```
|
||||
|
||||
### Compilation et rechargement à chaud pour le développement
|
||||
```
|
||||
npm run serve
|
||||
```
|
||||
|
||||
### Compilation et minification pour la production
|
||||
```
|
||||
npm run build
|
||||
```
|
||||
|
||||
### Analyse et correction des fichiers
|
||||
```
|
||||
npm run lint
|
||||
```
|
||||
|
||||
### Personnaliser la configuration
|
||||
Voir [Référence de configuration](https://cli.vuejs.org/config/).
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de faire appel à une traduction professionnelle humaine. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,230 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "22acf28f518a4769ea14fa42f4734b9f",
|
||||
"translation_date": "2025-08-24T13:53:41+00:00",
|
||||
"source_file": "3-Data-Visualization/R/09-visualization-quantities/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Visualiser des quantités
|
||||
| ](https://github.com/microsoft/Data-Science-For-Beginners/blob/main/sketchnotes/09-Visualizing-Quantities.png)|
|
||||
|:---:|
|
||||
| Visualiser des quantités - _Sketchnote par [@nitya](https://twitter.com/nitya)_ |
|
||||
|
||||
Dans cette leçon, vous allez explorer comment utiliser certaines des nombreuses bibliothèques de packages R disponibles pour apprendre à créer des visualisations intéressantes autour du concept de quantité. En utilisant un ensemble de données nettoyé sur les oiseaux du Minnesota, vous pouvez découvrir de nombreux faits intéressants sur la faune locale.
|
||||
## [Quiz avant la leçon](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/16)
|
||||
|
||||
## Observer l'envergure des ailes avec ggplot2
|
||||
Une bibliothèque excellente pour créer des graphiques et des diagrammes simples ou sophistiqués de divers types est [ggplot2](https://cran.r-project.org/web/packages/ggplot2/index.html). En termes généraux, le processus de création de graphiques à l'aide de ces bibliothèques inclut l'identification des parties de votre dataframe que vous souhaitez cibler, la réalisation des transformations nécessaires sur ces données, l'attribution des valeurs des axes x et y, le choix du type de graphique à afficher, puis l'affichage du graphique.
|
||||
|
||||
`ggplot2` est un système pour créer des graphiques de manière déclarative, basé sur la grammaire des graphiques. La [grammaire des graphiques](https://en.wikipedia.org/wiki/Ggplot2) est un schéma général pour la visualisation des données qui divise les graphiques en composants sémantiques tels que les échelles et les couches. En d'autres termes, la facilité de création de graphiques pour des données univariées ou multivariées avec peu de code fait de `ggplot2` le package le plus populaire utilisé pour les visualisations en R. L'utilisateur indique à `ggplot2` comment mapper les variables aux esthétiques, les primitives graphiques à utiliser, et `ggplot2` s'occupe du reste.
|
||||
|
||||
> ✅ Graphique = Données + Esthétiques + Géométrie
|
||||
> - Les données font référence à l'ensemble de données
|
||||
> - Les esthétiques indiquent les variables à étudier (variables x et y)
|
||||
> - La géométrie fait référence au type de graphique (graphique linéaire, diagramme en barres, etc.)
|
||||
|
||||
Choisissez la meilleure géométrie (type de graphique) en fonction de vos données et de l'histoire que vous souhaitez raconter à travers le graphique.
|
||||
|
||||
> - Pour analyser les tendances : ligne, colonne
|
||||
> - Pour comparer des valeurs : barre, colonne, camembert, nuage de points
|
||||
> - Pour montrer comment les parties se rapportent à un tout : camembert
|
||||
> - Pour montrer la distribution des données : nuage de points, barre
|
||||
> - Pour montrer les relations entre les valeurs : ligne, nuage de points, bulle
|
||||
|
||||
✅ Vous pouvez également consulter cette [cheatsheet descriptive](https://nyu-cdsc.github.io/learningr/assets/data-visualization-2.1.pdf) pour ggplot2.
|
||||
|
||||
## Construire un graphique linéaire sur les valeurs d'envergure des ailes des oiseaux
|
||||
|
||||
Ouvrez la console R et importez l'ensemble de données.
|
||||
> Note : L'ensemble de données est stocké à la racine de ce dépôt dans le dossier `/data`.
|
||||
|
||||
Importons l'ensemble de données et observons les premières lignes (les 5 premières lignes) des données.
|
||||
|
||||
```r
|
||||
birds <- read.csv("../../data/birds.csv",fileEncoding="UTF-8-BOM")
|
||||
head(birds)
|
||||
```
|
||||
Les premières lignes des données contiennent un mélange de texte et de chiffres :
|
||||
|
||||
| | Nom | NomScientifique | Catégorie | Ordre | Famille | Genre | StatutConservation | LongueurMin | LongueurMax | MasseMinCorps | MasseMaxCorps | EnvergureMin | EnvergureMax |
|
||||
| ---: | :--------------------------- | :--------------------- | :-------------------- | :----------- | :------- | :---------- | :----------------- | -----------:| -----------:| -------------:| -------------:| ------------:| ------------:|
|
||||
| 0 | Dendrocygne à ventre noir | Dendrocygna autumnalis | Canards/Oies/Oiseaux aquatiques | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 |
|
||||
| 1 | Dendrocygne fauve | Dendrocygna bicolor | Canards/Oies/Oiseaux aquatiques | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 |
|
||||
| 2 | Oie des neiges | Anser caerulescens | Canards/Oies/Oiseaux aquatiques | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 |
|
||||
| 3 | Oie de Ross | Anser rossii | Canards/Oies/Oiseaux aquatiques | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 |
|
||||
| 4 | Oie rieuse | Anser albifrons | Canards/Oies/Oiseaux aquatiques | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 |
|
||||
|
||||
Commençons par tracer certaines des données numériques à l'aide d'un graphique linéaire de base. Supposons que vous souhaitiez une vue de l'envergure maximale pour ces oiseaux intéressants.
|
||||
|
||||
```r
|
||||
install.packages("ggplot2")
|
||||
library("ggplot2")
|
||||
ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) +
|
||||
geom_line()
|
||||
```
|
||||
Ici, vous installez le package `ggplot2` puis l'importez dans l'espace de travail à l'aide de la commande `library("ggplot2")`. Pour tracer un graphique dans ggplot, la fonction `ggplot()` est utilisée et vous spécifiez l'ensemble de données, les variables x et y comme attributs. Dans ce cas, nous utilisons la fonction `geom_line()` car nous visons à tracer un graphique linéaire.
|
||||
|
||||

|
||||
|
||||
Que remarquez-vous immédiatement ? Il semble y avoir au moins un point aberrant - quelle envergure impressionnante ! Une envergure de plus de 2000 centimètres équivaut à plus de 20 mètres - y aurait-il des ptérodactyles qui rôdent dans le Minnesota ? Enquêtons.
|
||||
|
||||
Bien que vous puissiez effectuer un tri rapide dans Excel pour trouver ces points aberrants, qui sont probablement des erreurs de saisie, continuez le processus de visualisation en travaillant directement depuis le graphique.
|
||||
|
||||
Ajoutez des étiquettes à l'axe x pour montrer de quels types d'oiseaux il s'agit :
|
||||
|
||||
```r
|
||||
ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) +
|
||||
geom_line() +
|
||||
theme(axis.text.x = element_text(angle = 45, hjust=1))+
|
||||
xlab("Birds") +
|
||||
ylab("Wingspan (CM)") +
|
||||
ggtitle("Max Wingspan in Centimeters")
|
||||
```
|
||||
Nous spécifions l'angle dans le `theme` et spécifions les étiquettes des axes x et y dans `xlab()` et `ylab()` respectivement. Le `ggtitle()` donne un nom au graphique.
|
||||
|
||||

|
||||
|
||||
Même avec la rotation des étiquettes réglée à 45 degrés, il y en a trop pour être lisibles. Essayons une stratégie différente : étiqueter uniquement les points aberrants et placer les étiquettes directement dans le graphique. Vous pouvez utiliser un graphique en nuage de points pour faire plus de place aux étiquettes :
|
||||
|
||||
```r
|
||||
ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) +
|
||||
geom_point() +
|
||||
geom_text(aes(label=ifelse(MaxWingspan>500,as.character(Name),'')),hjust=0,vjust=0) +
|
||||
theme(axis.title.x=element_blank(), axis.text.x=element_blank(), axis.ticks.x=element_blank())
|
||||
ylab("Wingspan (CM)") +
|
||||
ggtitle("Max Wingspan in Centimeters") +
|
||||
```
|
||||
Que se passe-t-il ici ? Vous avez utilisé la fonction `geom_point()` pour tracer des points de dispersion. Avec cela, vous avez ajouté des étiquettes pour les oiseaux ayant une `MaxWingspan > 500` et également masqué les étiquettes sur l'axe x pour désencombrer le graphique.
|
||||
|
||||
Que découvrez-vous ?
|
||||
|
||||

|
||||
|
||||
## Filtrer vos données
|
||||
|
||||
Le pygargue à tête blanche et le faucon des prairies, bien qu'étant probablement de très grands oiseaux, semblent être mal étiquetés, avec un zéro supplémentaire ajouté à leur envergure maximale. Il est peu probable que vous rencontriez un pygargue à tête blanche avec une envergure de 25 mètres, mais si c'est le cas, faites-le nous savoir ! Créons un nouveau dataframe sans ces deux points aberrants :
|
||||
|
||||
```r
|
||||
birds_filtered <- subset(birds, MaxWingspan < 500)
|
||||
|
||||
ggplot(data=birds_filtered, aes(x=Name, y=MaxWingspan,group=1)) +
|
||||
geom_point() +
|
||||
ylab("Wingspan (CM)") +
|
||||
xlab("Birds") +
|
||||
ggtitle("Max Wingspan in Centimeters") +
|
||||
geom_text(aes(label=ifelse(MaxWingspan>500,as.character(Name),'')),hjust=0,vjust=0) +
|
||||
theme(axis.text.x=element_blank(), axis.ticks.x=element_blank())
|
||||
```
|
||||
Nous avons créé un nouveau dataframe `birds_filtered` puis tracé un graphique en nuage de points. En filtrant les points aberrants, vos données sont maintenant plus cohérentes et compréhensibles.
|
||||
|
||||

|
||||
|
||||
Maintenant que nous avons un ensemble de données plus propre, du moins en termes d'envergure, découvrons-en davantage sur ces oiseaux.
|
||||
|
||||
Bien que les graphiques linéaires et en nuage de points puissent afficher des informations sur les valeurs des données et leur distribution, nous voulons réfléchir aux valeurs inhérentes à cet ensemble de données. Vous pourriez créer des visualisations pour répondre aux questions suivantes sur les quantités :
|
||||
|
||||
> Combien de catégories d'oiseaux existe-t-il, et quels sont leurs nombres ?
|
||||
> Combien d'oiseaux sont éteints, en danger, rares ou communs ?
|
||||
> Combien y a-t-il de genres et d'ordres différents selon la terminologie de Linné ?
|
||||
|
||||
## Explorer les diagrammes en barres
|
||||
|
||||
Les diagrammes en barres sont pratiques lorsque vous devez montrer des regroupements de données. Explorons les catégories d'oiseaux présentes dans cet ensemble de données pour voir laquelle est la plus courante en nombre.
|
||||
Créons un diagramme en barres sur les données filtrées.
|
||||
|
||||
```r
|
||||
install.packages("dplyr")
|
||||
install.packages("tidyverse")
|
||||
|
||||
library(lubridate)
|
||||
library(scales)
|
||||
library(dplyr)
|
||||
library(ggplot2)
|
||||
library(tidyverse)
|
||||
|
||||
birds_filtered %>% group_by(Category) %>%
|
||||
summarise(n=n(),
|
||||
MinLength = mean(MinLength),
|
||||
MaxLength = mean(MaxLength),
|
||||
MinBodyMass = mean(MinBodyMass),
|
||||
MaxBodyMass = mean(MaxBodyMass),
|
||||
MinWingspan=mean(MinWingspan),
|
||||
MaxWingspan=mean(MaxWingspan)) %>%
|
||||
gather("key", "value", - c(Category, n)) %>%
|
||||
ggplot(aes(x = Category, y = value, group = key, fill = key)) +
|
||||
geom_bar(stat = "identity") +
|
||||
scale_fill_manual(values = c("#D62728", "#FF7F0E", "#8C564B","#2CA02C", "#1F77B4", "#9467BD")) +
|
||||
xlab("Category")+ggtitle("Birds of Minnesota")
|
||||
|
||||
```
|
||||
Dans l'extrait suivant, nous installons les packages [dplyr](https://www.rdocumentation.org/packages/dplyr/versions/0.7.8) et [lubridate](https://www.rdocumentation.org/packages/lubridate/versions/1.8.0) pour aider à manipuler et regrouper les données afin de tracer un diagramme en barres empilées. Tout d'abord, vous regroupez les données par la `Category` des oiseaux, puis vous résumez les colonnes `MinLength`, `MaxLength`, `MinBodyMass`, `MaxBodyMass`, `MinWingspan`, `MaxWingspan`. Ensuite, vous tracez le diagramme en barres à l'aide du package `ggplot2` et spécifiez les couleurs pour les différentes catégories et les étiquettes.
|
||||
|
||||

|
||||
|
||||
Ce diagramme en barres, cependant, est illisible car il y a trop de données non regroupées. Vous devez sélectionner uniquement les données que vous souhaitez tracer, alors regardons la longueur des oiseaux en fonction de leur catégorie.
|
||||
|
||||
Filtrez vos données pour inclure uniquement la catégorie des oiseaux.
|
||||
|
||||
Étant donné qu'il y a de nombreuses catégories, vous pouvez afficher ce graphique verticalement et ajuster sa hauteur pour tenir compte de toutes les données :
|
||||
|
||||
```r
|
||||
birds_count<-dplyr::count(birds_filtered, Category, sort = TRUE)
|
||||
birds_count$Category <- factor(birds_count$Category, levels = birds_count$Category)
|
||||
ggplot(birds_count,aes(Category,n))+geom_bar(stat="identity")+coord_flip()
|
||||
```
|
||||
Vous comptez d'abord les valeurs uniques dans la colonne `Category` puis les triez dans un nouveau dataframe `birds_count`. Ces données triées sont ensuite facturées au même niveau afin qu'elles soient tracées de manière triée. En utilisant `ggplot2`, vous tracez ensuite les données dans un diagramme en barres. Le `coord_flip()` trace des barres horizontales.
|
||||
|
||||

|
||||
|
||||
Ce diagramme en barres montre une bonne vue du nombre d'oiseaux dans chaque catégorie. En un clin d'œil, vous voyez que le plus grand nombre d'oiseaux dans cette région appartient à la catégorie Canards/Oies/Oiseaux aquatiques. Le Minnesota est le "pays des 10 000 lacs", donc ce n'est pas surprenant !
|
||||
|
||||
✅ Essayez d'autres comptages sur cet ensemble de données. Y a-t-il quelque chose qui vous surprend ?
|
||||
|
||||
## Comparer les données
|
||||
|
||||
Vous pouvez essayer différentes comparaisons de données regroupées en créant de nouveaux axes. Essayez une comparaison de la longueur maximale d'un oiseau, en fonction de sa catégorie :
|
||||
|
||||
```r
|
||||
birds_grouped <- birds_filtered %>%
|
||||
group_by(Category) %>%
|
||||
summarise(
|
||||
MaxLength = max(MaxLength, na.rm = T),
|
||||
MinLength = max(MinLength, na.rm = T)
|
||||
) %>%
|
||||
arrange(Category)
|
||||
|
||||
ggplot(birds_grouped,aes(Category,MaxLength))+geom_bar(stat="identity")+coord_flip()
|
||||
```
|
||||
Nous regroupons les données `birds_filtered` par `Category` puis traçons un graphique en barres.
|
||||
|
||||

|
||||
|
||||
Rien de surprenant ici : les colibris ont la longueur maximale la plus faible par rapport aux pélicans ou aux oies. C'est bien lorsque les données ont du sens logiquement !
|
||||
|
||||
Vous pouvez créer des visualisations plus intéressantes de diagrammes en barres en superposant des données. Superposons la longueur minimale et maximale pour une catégorie d'oiseaux donnée :
|
||||
|
||||
```r
|
||||
ggplot(data=birds_grouped, aes(x=Category)) +
|
||||
geom_bar(aes(y=MaxLength), stat="identity", position ="identity", fill='blue') +
|
||||
geom_bar(aes(y=MinLength), stat="identity", position="identity", fill='orange')+
|
||||
coord_flip()
|
||||
```
|
||||

|
||||
|
||||
## 🚀 Défi
|
||||
|
||||
Cet ensemble de données sur les oiseaux offre une mine d'informations sur différents types d'oiseaux au sein d'un écosystème particulier. Cherchez sur Internet et voyez si vous pouvez trouver d'autres ensembles de données orientés vers les oiseaux. Entraînez-vous à créer des graphiques et des diagrammes autour de ces oiseaux pour découvrir des faits que vous ne connaissiez pas.
|
||||
|
||||
## [Quiz après la leçon](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/17)
|
||||
|
||||
## Révision et auto-apprentissage
|
||||
|
||||
Cette première leçon vous a donné des informations sur la façon d'utiliser `ggplot2` pour visualiser des quantités. Faites des recherches sur d'autres façons de travailler avec des ensembles de données pour la visualisation. Recherchez et explorez des ensembles de données que vous pourriez visualiser en utilisant d'autres packages comme [Lattice](https://stat.ethz.ch/R-manual/R-devel/library/lattice/html/Lattice.html) et [Plotly](https://github.com/plotly/plotly.R#readme).
|
||||
|
||||
## Devoir
|
||||
[Graphiques linéaires, nuages de points et barres](assignment.md)
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,23 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "0ea21b6513df5ade7419c6b7d65f10b1",
|
||||
"translation_date": "2025-08-24T13:56:15+00:00",
|
||||
"source_file": "3-Data-Visualization/R/09-visualization-quantities/assignment.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Lignes, Nuages de Points et Barres
|
||||
|
||||
## Instructions
|
||||
|
||||
Dans cette leçon, vous avez travaillé avec des graphiques en ligne, des nuages de points et des graphiques en barres pour mettre en évidence des faits intéressants sur ce jeu de données. Dans cet exercice, explorez plus en profondeur le jeu de données pour découvrir un fait sur un type d'oiseau donné. Par exemple, créez un script visualisant toutes les données intéressantes que vous pouvez trouver sur les Oies des neiges. Utilisez les trois types de graphiques mentionnés ci-dessus pour raconter une histoire dans votre notebook.
|
||||
|
||||
## Grille d'évaluation
|
||||
|
||||
Exemplaire | Adéquat | À améliorer
|
||||
--- | --- | -- |
|
||||
Un script est présenté avec de bonnes annotations, une narration solide et des graphiques attrayants | Le script manque d'un de ces éléments | Le script manque de deux de ces éléments
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,183 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "ea67c0c40808fd723594de6896c37ccf",
|
||||
"translation_date": "2025-08-24T13:45:36+00:00",
|
||||
"source_file": "3-Data-Visualization/R/10-visualization-distributions/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Visualiser les distributions
|
||||
|
||||
| ](https://github.com/microsoft/Data-Science-For-Beginners/blob/main/sketchnotes/10-Visualizing-Distributions.png)|
|
||||
|:---:|
|
||||
| Visualiser les distributions - _Sketchnote par [@nitya](https://twitter.com/nitya)_ |
|
||||
|
||||
Dans la leçon précédente, vous avez appris des faits intéressants sur un jeu de données concernant les oiseaux du Minnesota. Vous avez identifié des données erronées en visualisant les valeurs aberrantes et examiné les différences entre les catégories d'oiseaux en fonction de leur longueur maximale.
|
||||
|
||||
## [Quiz avant la leçon](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/18)
|
||||
## Explorer le jeu de données des oiseaux
|
||||
|
||||
Une autre façon d'explorer les données est d'examiner leur distribution, c'est-à-dire comment elles sont organisées le long d'un axe. Par exemple, vous pourriez vouloir en savoir plus sur la distribution générale, dans ce jeu de données, de l'envergure maximale ou de la masse corporelle maximale des oiseaux du Minnesota.
|
||||
|
||||
Découvrons quelques faits sur les distributions des données dans ce jeu de données. Dans votre console R, importez `ggplot2` et la base de données. Supprimez les valeurs aberrantes de la base de données comme dans le sujet précédent.
|
||||
|
||||
```r
|
||||
library(ggplot2)
|
||||
|
||||
birds <- read.csv("../../data/birds.csv",fileEncoding="UTF-8-BOM")
|
||||
|
||||
birds_filtered <- subset(birds, MaxWingspan < 500)
|
||||
head(birds_filtered)
|
||||
```
|
||||
| | Nom | NomScientifique | Catégorie | Ordre | Famille | Genre | StatutConservation | LongueurMin | LongueurMax | MasseCorporelleMin | MasseCorporelleMax | EnvergureMin | EnvergureMax |
|
||||
| ---: | :--------------------------- | :--------------------- | :-------------------- | :----------- | :------- | :---------- | :----------------- | -----------:| -----------:| ------------------:| ------------------:| ------------:| ------------:|
|
||||
| 0 | Dendrocygne à ventre noir | Dendrocygna autumnalis | Canards/Oies/Oiseaux aquatiques | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 |
|
||||
| 1 | Dendrocygne fauve | Dendrocygna bicolor | Canards/Oies/Oiseaux aquatiques | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 |
|
||||
| 2 | Oie des neiges | Anser caerulescens | Canards/Oies/Oiseaux aquatiques | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 |
|
||||
| 3 | Oie de Ross | Anser rossii | Canards/Oies/Oiseaux aquatiques | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 |
|
||||
| 4 | Oie rieuse | Anser albifrons | Canards/Oies/Oiseaux aquatiques | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 |
|
||||
|
||||
En général, vous pouvez rapidement examiner la façon dont les données sont distribuées en utilisant un nuage de points, comme nous l'avons fait dans la leçon précédente :
|
||||
|
||||
```r
|
||||
ggplot(data=birds_filtered, aes(x=Order, y=MaxLength,group=1)) +
|
||||
geom_point() +
|
||||
ggtitle("Max Length per order") + coord_flip()
|
||||
```
|
||||

|
||||
|
||||
Cela donne un aperçu de la distribution générale de la longueur corporelle par ordre d'oiseaux, mais ce n'est pas la meilleure façon de représenter les distributions réelles. Cette tâche est généralement accomplie en créant un histogramme.
|
||||
|
||||
## Travailler avec des histogrammes
|
||||
|
||||
`ggplot2` offre d'excellents moyens de visualiser la distribution des données à l'aide d'histogrammes. Ce type de graphique ressemble à un diagramme en barres où la distribution peut être observée à travers la montée et la descente des barres. Pour construire un histogramme, vous avez besoin de données numériques. Pour créer un histogramme, vous pouvez tracer un graphique en définissant le type comme 'hist' pour Histogramme. Ce graphique montre la distribution de la MasseCorporelleMax pour l'ensemble de la plage de données numériques du jeu de données. En divisant l'ensemble des données en plus petits intervalles, il peut afficher la distribution des valeurs des données :
|
||||
|
||||
```r
|
||||
ggplot(data = birds_filtered, aes(x = MaxBodyMass)) +
|
||||
geom_histogram(bins=10)+ylab('Frequency')
|
||||
```
|
||||

|
||||
|
||||
Comme vous pouvez le voir, la plupart des 400+ oiseaux de ce jeu de données ont une MasseCorporelleMax inférieure à 2000. Obtenez plus d'informations sur les données en modifiant le paramètre `bins` à une valeur plus élevée, comme 30 :
|
||||
|
||||
```r
|
||||
ggplot(data = birds_filtered, aes(x = MaxBodyMass)) + geom_histogram(bins=30)+ylab('Frequency')
|
||||
```
|
||||
|
||||

|
||||
|
||||
Ce graphique montre la distribution de manière un peu plus détaillée. Un graphique moins biaisé vers la gauche pourrait être créé en s'assurant que vous ne sélectionnez que des données dans une plage donnée :
|
||||
|
||||
Filtrez vos données pour ne conserver que les oiseaux dont la masse corporelle est inférieure à 60, et affichez 30 `bins` :
|
||||
|
||||
```r
|
||||
birds_filtered_1 <- subset(birds_filtered, MaxBodyMass > 1 & MaxBodyMass < 60)
|
||||
ggplot(data = birds_filtered_1, aes(x = MaxBodyMass)) +
|
||||
geom_histogram(bins=30)+ylab('Frequency')
|
||||
```
|
||||
|
||||

|
||||
|
||||
✅ Essayez d'autres filtres et points de données. Pour voir la distribution complète des données, supprimez le filtre `['MaxBodyMass']` pour afficher les distributions étiquetées.
|
||||
|
||||
L'histogramme offre également des améliorations intéressantes en termes de couleur et d'étiquetage :
|
||||
|
||||
Créez un histogramme 2D pour comparer la relation entre deux distributions. Comparons `MaxBodyMass` et `MaxLength`. `ggplot2` propose une méthode intégrée pour montrer la convergence à l'aide de couleurs plus vives :
|
||||
|
||||
```r
|
||||
ggplot(data=birds_filtered_1, aes(x=MaxBodyMass, y=MaxLength) ) +
|
||||
geom_bin2d() +scale_fill_continuous(type = "viridis")
|
||||
```
|
||||
Il semble y avoir une corrélation attendue entre ces deux éléments le long d'un axe attendu, avec un point de convergence particulièrement fort :
|
||||
|
||||

|
||||
|
||||
Les histogrammes fonctionnent bien par défaut pour les données numériques. Que faire si vous devez examiner les distributions en fonction de données textuelles ?
|
||||
|
||||
## Explorer le jeu de données pour les distributions à l'aide de données textuelles
|
||||
|
||||
Ce jeu de données contient également de bonnes informations sur la catégorie des oiseaux, leur genre, leur espèce, leur famille ainsi que leur statut de conservation. Explorons ces informations de conservation. Quelle est la distribution des oiseaux selon leur statut de conservation ?
|
||||
|
||||
> ✅ Dans le jeu de données, plusieurs acronymes sont utilisés pour décrire le statut de conservation. Ces acronymes proviennent des [Catégories de la Liste Rouge de l'UICN](https://www.iucnredlist.org/), une organisation qui catalogue le statut des espèces.
|
||||
>
|
||||
> - CR : En danger critique d'extinction
|
||||
> - EN : En danger
|
||||
> - EX : Éteint
|
||||
> - LC : Préoccupation mineure
|
||||
> - NT : Quasi menacé
|
||||
> - VU : Vulnérable
|
||||
|
||||
Ces valeurs sont basées sur du texte, vous devrez donc effectuer une transformation pour créer un histogramme. En utilisant le dataframe filteredBirds, affichez son statut de conservation avec son EnvergureMin. Que remarquez-vous ?
|
||||
|
||||
```r
|
||||
birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'EX'] <- 'x1'
|
||||
birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'CR'] <- 'x2'
|
||||
birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'EN'] <- 'x3'
|
||||
birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'NT'] <- 'x4'
|
||||
birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'VU'] <- 'x5'
|
||||
birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'LC'] <- 'x6'
|
||||
|
||||
ggplot(data=birds_filtered_1, aes(x = MinWingspan, fill = ConservationStatus)) +
|
||||
geom_histogram(position = "identity", alpha = 0.4, bins = 20) +
|
||||
scale_fill_manual(name="Conservation Status",values=c("red","green","blue","pink"),labels=c("Endangered","Near Threathened","Vulnerable","Least Concern"))
|
||||
```
|
||||
|
||||

|
||||
|
||||
Il ne semble pas y avoir de bonne corrélation entre l'envergure minimale et le statut de conservation. Testez d'autres éléments du jeu de données en utilisant cette méthode. Vous pouvez également essayer différents filtres. Trouvez-vous une corrélation ?
|
||||
|
||||
## Graphiques de densité
|
||||
|
||||
Vous avez peut-être remarqué que les histogrammes que nous avons examinés jusqu'à présent sont "en escalier" et ne s'écoulent pas de manière fluide en arc. Pour afficher un graphique de densité plus fluide, vous pouvez essayer un graphique de densité.
|
||||
|
||||
Travaillons maintenant avec des graphiques de densité !
|
||||
|
||||
```r
|
||||
ggplot(data = birds_filtered_1, aes(x = MinWingspan)) +
|
||||
geom_density()
|
||||
```
|
||||

|
||||
|
||||
Vous pouvez voir comment le graphique reflète le précédent pour les données d'EnvergureMin ; il est juste un peu plus fluide. Si vous vouliez revisiter cette ligne irrégulière de MasseCorporelleMax dans le deuxième graphique que vous avez construit, vous pourriez la lisser très bien en la recréant avec cette méthode :
|
||||
|
||||
```r
|
||||
ggplot(data = birds_filtered_1, aes(x = MaxBodyMass)) +
|
||||
geom_density()
|
||||
```
|
||||

|
||||
|
||||
Si vous vouliez une ligne lisse, mais pas trop lisse, modifiez le paramètre `adjust` :
|
||||
|
||||
```r
|
||||
ggplot(data = birds_filtered_1, aes(x = MaxBodyMass)) +
|
||||
geom_density(adjust = 1/5)
|
||||
```
|
||||

|
||||
|
||||
✅ Lisez les paramètres disponibles pour ce type de graphique et expérimentez !
|
||||
|
||||
Ce type de graphique offre des visualisations magnifiquement explicatives. Avec quelques lignes de code, par exemple, vous pouvez montrer la densité de la masse corporelle maximale par ordre d'oiseaux :
|
||||
|
||||
```r
|
||||
ggplot(data=birds_filtered_1,aes(x = MaxBodyMass, fill = Order)) +
|
||||
geom_density(alpha=0.5)
|
||||
```
|
||||

|
||||
|
||||
## 🚀 Défi
|
||||
|
||||
Les histogrammes sont un type de graphique plus sophistiqué que les nuages de points, les diagrammes en barres ou les graphiques linéaires de base. Faites une recherche sur Internet pour trouver de bons exemples d'utilisation des histogrammes. Comment sont-ils utilisés, que démontrent-ils, et dans quels domaines ou champs d'étude ont-ils tendance à être utilisés ?
|
||||
|
||||
## [Quiz après la leçon](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/19)
|
||||
|
||||
## Révision et auto-apprentissage
|
||||
|
||||
Dans cette leçon, vous avez utilisé `ggplot2` et commencé à travailler sur des graphiques plus sophistiqués. Faites des recherches sur `geom_density_2d()` une "courbe de densité de probabilité continue dans une ou plusieurs dimensions". Lisez la [documentation](https://ggplot2.tidyverse.org/reference/geom_density_2d.html) pour comprendre comment cela fonctionne.
|
||||
|
||||
## Devoir
|
||||
|
||||
[Appliquez vos compétences](assignment.md)
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,23 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "a233d542512136c4dd29aad38ca0175f",
|
||||
"translation_date": "2025-08-24T13:47:22+00:00",
|
||||
"source_file": "3-Data-Visualization/R/10-visualization-distributions/assignment.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Appliquez vos compétences
|
||||
|
||||
## Instructions
|
||||
|
||||
Jusqu'à présent, vous avez travaillé avec le jeu de données sur les oiseaux du Minnesota pour découvrir des informations sur les quantités d'oiseaux et la densité de population. Mettez en pratique vos compétences en appliquant ces techniques à un autre jeu de données, peut-être issu de [Kaggle](https://www.kaggle.com/). Créez un script R pour raconter une histoire à partir de ce jeu de données, et assurez-vous d'utiliser des histogrammes pour en discuter.
|
||||
|
||||
## Grille d'évaluation
|
||||
|
||||
Exemplaire | Adéquat | À améliorer
|
||||
--- | --- | --- |
|
||||
Un script est présenté avec des annotations sur ce jeu de données, y compris sa source, et utilise au moins 5 histogrammes pour découvrir des faits sur les données. | Un script est présenté avec des annotations incomplètes ou des erreurs. | Un script est présenté sans annotations et contient des erreurs.
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,197 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "47028abaaafa2bcb1079702d20569066",
|
||||
"translation_date": "2025-08-24T14:01:08+00:00",
|
||||
"source_file": "3-Data-Visualization/R/11-visualization-proportions/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Visualiser les proportions
|
||||
|
||||
| ](../../../sketchnotes/11-Visualizing-Proportions.png)|
|
||||
|:---:|
|
||||
|Visualiser les proportions - _Sketchnote par [@nitya](https://twitter.com/nitya)_ |
|
||||
|
||||
Dans cette leçon, vous utiliserez un ensemble de données axé sur la nature pour visualiser des proportions, comme le nombre de types différents de champignons présents dans un ensemble de données sur les champignons. Explorons ces fascinants champignons à l'aide d'un ensemble de données provenant d'Audubon, qui répertorie des informations sur 23 espèces de champignons à lamelles des familles Agaricus et Lepiota. Vous expérimenterez des visualisations savoureuses telles que :
|
||||
|
||||
- Les diagrammes circulaires 🥧
|
||||
- Les diagrammes en anneau 🍩
|
||||
- Les graphiques en gaufre 🧇
|
||||
|
||||
> 💡 Un projet très intéressant appelé [Charticulator](https://charticulator.com) de Microsoft Research propose une interface gratuite de glisser-déposer pour les visualisations de données. Dans l'un de leurs tutoriels, ils utilisent également cet ensemble de données sur les champignons ! Vous pouvez donc explorer les données et apprendre à utiliser la bibliothèque en même temps : [Tutoriel Charticulator](https://charticulator.com/tutorials/tutorial4.html).
|
||||
|
||||
## [Quiz avant la leçon](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/20)
|
||||
|
||||
## Faites connaissance avec vos champignons 🍄
|
||||
|
||||
Les champignons sont très intéressants. Importons un ensemble de données pour les étudier :
|
||||
|
||||
```r
|
||||
mushrooms = read.csv('../../data/mushrooms.csv')
|
||||
head(mushrooms)
|
||||
```
|
||||
Un tableau est affiché avec des données intéressantes pour l'analyse :
|
||||
|
||||
| classe | forme-chapeau | surface-chapeau | couleur-chapeau | meurtri | odeur | attache-lamelle | espacement-lamelle | taille-lamelle | couleur-lamelle | forme-pied | racine-pied | surface-pied-au-dessus-anneau | surface-pied-en-dessous-anneau | couleur-pied-au-dessus-anneau | couleur-pied-en-dessous-anneau | type-voile | couleur-voile | nombre-anneaux | type-anneau | couleur-spores | population | habitat |
|
||||
| --------- | ------------- | ---------------- | --------------- | ------- | -------- | ---------------- | ------------------ | -------------- | --------------- | ---------- | ----------- | --------------------------- | ----------------------------- | ---------------------------- | ----------------------------- | ---------- | ------------- | -------------- | ---------- | ------------- | ---------- | ------- |
|
||||
| Toxique | Convexe | Lisse | Marron | Meurtri | Piquant | Libre | Serré | Étroit | Noir | Élargi | Égal | Lisse | Lisse | Blanc | Blanc | Partiel | Blanc | Un | Pendant | Noir | Dispersé | Urbain |
|
||||
| Comestible| Convexe | Lisse | Jaune | Meurtri | Amande | Libre | Serré | Large | Noir | Élargi | Massue | Lisse | Lisse | Blanc | Blanc | Partiel | Blanc | Un | Pendant | Marron | Nombreux | Herbes |
|
||||
| Comestible| Cloché | Lisse | Blanc | Meurtri | Anis | Libre | Serré | Large | Marron | Élargi | Massue | Lisse | Lisse | Blanc | Blanc | Partiel | Blanc | Un | Pendant | Marron | Nombreux | Prairies |
|
||||
| Toxique | Convexe | Écailleux | Blanc | Meurtri | Piquant | Libre | Serré | Étroit | Marron | Élargi | Égal | Lisse | Lisse | Blanc | Blanc | Partiel | Blanc | Un | Pendant | Noir | Dispersé | Urbain |
|
||||
| Comestible| Convexe | Lisse | Vert | Pas meurtri | Aucun | Libre | Serré | Large | Noir | Effilé | Égal | Lisse | Lisse | Blanc | Blanc | Partiel | Blanc | Un | Évanescent | Marron | Abondant | Herbes |
|
||||
| Comestible| Convexe | Écailleux | Jaune | Meurtri | Amande | Libre | Serré | Large | Marron | Élargi | Massue | Lisse | Lisse | Blanc | Blanc | Partiel | Blanc | Un | Pendant | Noir | Nombreux | Herbes |
|
||||
|
||||
Vous remarquez immédiatement que toutes les données sont textuelles. Vous devrez convertir ces données pour pouvoir les utiliser dans un graphique. La plupart des données, en fait, sont représentées comme un objet :
|
||||
|
||||
```r
|
||||
names(mushrooms)
|
||||
```
|
||||
|
||||
Le résultat est :
|
||||
|
||||
```output
|
||||
[1] "class" "cap.shape"
|
||||
[3] "cap.surface" "cap.color"
|
||||
[5] "bruises" "odor"
|
||||
[7] "gill.attachment" "gill.spacing"
|
||||
[9] "gill.size" "gill.color"
|
||||
[11] "stalk.shape" "stalk.root"
|
||||
[13] "stalk.surface.above.ring" "stalk.surface.below.ring"
|
||||
[15] "stalk.color.above.ring" "stalk.color.below.ring"
|
||||
[17] "veil.type" "veil.color"
|
||||
[19] "ring.number" "ring.type"
|
||||
[21] "spore.print.color" "population"
|
||||
[23] "habitat"
|
||||
```
|
||||
|
||||
Prenez ces données et convertissez la colonne 'classe' en catégorie :
|
||||
|
||||
```r
|
||||
library(dplyr)
|
||||
grouped=mushrooms %>%
|
||||
group_by(class) %>%
|
||||
summarise(count=n())
|
||||
```
|
||||
|
||||
Maintenant, si vous affichez les données des champignons, vous pouvez voir qu'elles ont été regroupées en catégories selon la classe toxique/comestible :
|
||||
```r
|
||||
View(grouped)
|
||||
```
|
||||
|
||||
| classe | nombre |
|
||||
| --------- | ------ |
|
||||
| Comestible| 4208 |
|
||||
| Toxique | 3916 |
|
||||
|
||||
Si vous suivez l'ordre présenté dans ce tableau pour créer vos étiquettes de catégorie de classe, vous pouvez construire un diagramme circulaire.
|
||||
|
||||
## C'est parti pour les diagrammes circulaires !
|
||||
|
||||
```r
|
||||
pie(grouped$count,grouped$class, main="Edible?")
|
||||
```
|
||||
Et voilà, un diagramme circulaire montrant les proportions de ces données selon ces deux classes de champignons. Il est très important de respecter l'ordre des étiquettes, surtout ici, alors assurez-vous de vérifier l'ordre dans lequel le tableau des étiquettes est construit !
|
||||
|
||||

|
||||
|
||||
## Les diagrammes en anneau !
|
||||
|
||||
Un diagramme circulaire un peu plus visuellement intéressant est un diagramme en anneau, qui est un diagramme circulaire avec un trou au milieu. Regardons nos données en utilisant cette méthode.
|
||||
|
||||
Examinez les différents habitats où poussent les champignons :
|
||||
|
||||
```r
|
||||
library(dplyr)
|
||||
habitat=mushrooms %>%
|
||||
group_by(habitat) %>%
|
||||
summarise(count=n())
|
||||
View(habitat)
|
||||
```
|
||||
Le résultat est :
|
||||
|
||||
| habitat | nombre |
|
||||
| --------- | ------ |
|
||||
| Herbes | 2148 |
|
||||
| Feuilles | 832 |
|
||||
| Prairies | 292 |
|
||||
| Sentiers | 1144 |
|
||||
| Urbain | 368 |
|
||||
| Déchets | 192 |
|
||||
| Bois | 3148 |
|
||||
|
||||
Ici, vous regroupez vos données par habitat. Il y en a 7 répertoriés, alors utilisez-les comme étiquettes pour votre diagramme en anneau :
|
||||
|
||||
```r
|
||||
library(ggplot2)
|
||||
library(webr)
|
||||
PieDonut(habitat, aes(habitat, count=count))
|
||||
```
|
||||
|
||||

|
||||
|
||||
Ce code utilise deux bibliothèques - ggplot2 et webr. En utilisant la fonction PieDonut de la bibliothèque webr, nous pouvons créer un diagramme en anneau facilement !
|
||||
|
||||
Les diagrammes en anneau dans R peuvent également être réalisés uniquement avec la bibliothèque ggplot2. Vous pouvez en apprendre davantage à ce sujet [ici](https://www.r-graph-gallery.com/128-ring-or-donut-plot.html) et essayer par vous-même.
|
||||
|
||||
Maintenant que vous savez comment regrouper vos données et les afficher sous forme de diagramme circulaire ou en anneau, vous pouvez explorer d'autres types de graphiques. Essayez un graphique en gaufre, qui est simplement une autre façon d'explorer les quantités.
|
||||
|
||||
## Les graphiques en gaufre !
|
||||
|
||||
Un graphique de type 'gaufre' est une manière différente de visualiser les quantités sous forme de tableau 2D de carrés. Essayez de visualiser les différentes quantités de couleurs de chapeau de champignon dans cet ensemble de données. Pour ce faire, vous devez installer une bibliothèque d'assistance appelée [waffle](https://cran.r-project.org/web/packages/waffle/waffle.pdf) et l'utiliser pour générer votre visualisation :
|
||||
|
||||
```r
|
||||
install.packages("waffle", repos = "https://cinc.rud.is")
|
||||
```
|
||||
|
||||
Sélectionnez un segment de vos données à regrouper :
|
||||
|
||||
```r
|
||||
library(dplyr)
|
||||
cap_color=mushrooms %>%
|
||||
group_by(cap.color) %>%
|
||||
summarise(count=n())
|
||||
View(cap_color)
|
||||
```
|
||||
|
||||
Créez un graphique en gaufre en créant des étiquettes, puis en regroupant vos données :
|
||||
|
||||
```r
|
||||
library(waffle)
|
||||
names(cap_color$count) = paste0(cap_color$cap.color)
|
||||
waffle((cap_color$count/10), rows = 7, title = "Waffle Chart")+scale_fill_manual(values=c("brown", "#F0DC82", "#D2691E", "green",
|
||||
"pink", "purple", "red", "grey",
|
||||
"yellow","white"))
|
||||
```
|
||||
|
||||
Avec un graphique en gaufre, vous pouvez clairement voir les proportions des couleurs de chapeau dans cet ensemble de données sur les champignons. Fait intéressant, il y a de nombreux champignons à chapeau vert !
|
||||
|
||||

|
||||
|
||||
Dans cette leçon, vous avez appris trois façons de visualiser les proportions. Tout d'abord, vous devez regrouper vos données en catégories, puis décider de la meilleure façon de les afficher - circulaire, en anneau ou en gaufre. Tous sont délicieux et offrent à l'utilisateur un aperçu instantané d'un ensemble de données.
|
||||
|
||||
## 🚀 Défi
|
||||
|
||||
Essayez de recréer ces graphiques savoureux dans [Charticulator](https://charticulator.com).
|
||||
## [Quiz après la leçon](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/21)
|
||||
|
||||
## Révision et auto-apprentissage
|
||||
|
||||
Parfois, il n'est pas évident de savoir quand utiliser un diagramme circulaire, en anneau ou en gaufre. Voici quelques articles à lire sur ce sujet :
|
||||
|
||||
https://www.beautiful.ai/blog/battle-of-the-charts-pie-chart-vs-donut-chart
|
||||
|
||||
https://medium.com/@hypsypops/pie-chart-vs-donut-chart-showdown-in-the-ring-5d24fd86a9ce
|
||||
|
||||
https://www.mit.edu/~mbarker/formula1/f1help/11-ch-c6.htm
|
||||
|
||||
https://medium.datadriveninvestor.com/data-visualization-done-the-right-way-with-tableau-waffle-chart-fdf2a19be402
|
||||
|
||||
Faites des recherches pour trouver plus d'informations sur cette décision délicate.
|
||||
|
||||
## Devoir
|
||||
|
||||
[Essayez-le dans Excel](assignment.md)
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,175 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "a33c5d4b4156a2b41788d8720b6f724c",
|
||||
"translation_date": "2025-08-24T13:49:11+00:00",
|
||||
"source_file": "3-Data-Visualization/R/12-visualization-relationships/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Visualiser les relations : Tout sur le miel 🍯
|
||||
|
||||
| ](../../../sketchnotes/12-Visualizing-Relationships.png)|
|
||||
|:---:|
|
||||
|Visualiser les relations - _Sketchnote par [@nitya](https://twitter.com/nitya)_ |
|
||||
|
||||
En poursuivant notre recherche axée sur la nature, découvrons des visualisations intéressantes pour montrer les relations entre différents types de miel, selon un ensemble de données provenant du [Département de l'Agriculture des États-Unis](https://www.nass.usda.gov/About_NASS/index.php).
|
||||
|
||||
Cet ensemble de données, composé d'environ 600 éléments, montre la production de miel dans de nombreux États américains. Par exemple, vous pouvez examiner le nombre de colonies, le rendement par colonie, la production totale, les stocks, le prix par livre et la valeur du miel produit dans un État donné de 1998 à 2012, avec une ligne par année pour chaque État.
|
||||
|
||||
Il serait intéressant de visualiser la relation entre la production annuelle d'un État donné et, par exemple, le prix du miel dans cet État. Alternativement, vous pourriez visualiser la relation entre le rendement par colonie dans différents États. Cette période couvre le dévastateur "CCD" ou "Colony Collapse Disorder" observé pour la première fois en 2006 (http://npic.orst.edu/envir/ccd.html), ce qui en fait un ensemble de données poignant à étudier. 🐝
|
||||
|
||||
## [Quiz avant le cours](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/22)
|
||||
|
||||
Dans cette leçon, vous pouvez utiliser ggplot2, que vous avez déjà utilisé, comme une excellente bibliothèque pour visualiser les relations entre les variables. Particulièrement intéressant est l'utilisation des fonctions `geom_point` et `qplot` de ggplot2, qui permettent de créer des diagrammes de dispersion et des graphiques linéaires pour visualiser rapidement les '[relations statistiques](https://ggplot2.tidyverse.org/)', permettant au data scientist de mieux comprendre comment les variables interagissent entre elles.
|
||||
|
||||
## Diagrammes de dispersion
|
||||
|
||||
Utilisez un diagramme de dispersion pour montrer comment le prix du miel a évolué, année après année, par État. ggplot2, avec `ggplot` et `geom_point`, regroupe commodément les données des États et affiche des points de données pour les données catégoriques et numériques.
|
||||
|
||||
Commençons par importer les données et Seaborn :
|
||||
|
||||
```r
|
||||
honey=read.csv('../../data/honey.csv')
|
||||
head(honey)
|
||||
```
|
||||
Vous remarquez que les données sur le miel contiennent plusieurs colonnes intéressantes, notamment l'année et le prix par livre. Explorons ces données, regroupées par État américain :
|
||||
|
||||
| état | numcol | rendementparcol | prodtotale | stocks | prixparlb | valeurprod | année |
|
||||
| ----- | ------ | --------------- | ---------- | -------- | --------- | ---------- | ----- |
|
||||
| AL | 16000 | 71 | 1136000 | 159000 | 0.72 | 818000 | 1998 |
|
||||
| AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 |
|
||||
| AR | 53000 | 65 | 3445000 | 1688000 | 0.59 | 2033000 | 1998 |
|
||||
| CA | 450000 | 83 | 37350000 | 12326000 | 0.62 | 23157000 | 1998 |
|
||||
| CO | 27000 | 72 | 1944000 | 1594000 | 0.7 | 1361000 | 1998 |
|
||||
| FL | 230000 | 98 | 22540000 | 4508000 | 0.64 | 14426000 | 1998 |
|
||||
|
||||
Créez un diagramme de dispersion de base pour montrer la relation entre le prix par livre de miel et son État d'origine aux États-Unis. Faites en sorte que l'axe `y` soit suffisamment grand pour afficher tous les États :
|
||||
|
||||
```r
|
||||
library(ggplot2)
|
||||
ggplot(honey, aes(x = priceperlb, y = state)) +
|
||||
geom_point(colour = "blue")
|
||||
```
|
||||

|
||||
|
||||
Maintenant, affichez les mêmes données avec un schéma de couleurs de miel pour montrer comment le prix évolue au fil des années. Vous pouvez le faire en ajoutant un paramètre 'scale_color_gradientn' pour montrer le changement, année après année :
|
||||
|
||||
> ✅ En savoir plus sur le [scale_color_gradientn](https://www.rdocumentation.org/packages/ggplot2/versions/0.9.1/topics/scale_colour_gradientn) - essayez un magnifique schéma de couleurs arc-en-ciel !
|
||||
|
||||
```r
|
||||
ggplot(honey, aes(x = priceperlb, y = state, color=year)) +
|
||||
geom_point()+scale_color_gradientn(colours = colorspace::heat_hcl(7))
|
||||
```
|
||||

|
||||
|
||||
Avec ce changement de schéma de couleurs, vous pouvez voir qu'il y a évidemment une forte progression au fil des années en termes de prix du miel par livre. En effet, si vous examinez un échantillon de données pour vérifier (choisissez un État donné, l'Arizona par exemple), vous pouvez voir un schéma d'augmentation des prix année après année, avec quelques exceptions :
|
||||
|
||||
| état | numcol | rendementparcol | prodtotale | stocks | prixparlb | valeurprod | année |
|
||||
| ----- | ------ | --------------- | ---------- | ------- | --------- | ---------- | ----- |
|
||||
| AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 |
|
||||
| AZ | 52000 | 62 | 3224000 | 1548000 | 0.62 | 1999000 | 1999 |
|
||||
| AZ | 40000 | 59 | 2360000 | 1322000 | 0.73 | 1723000 | 2000 |
|
||||
| AZ | 43000 | 59 | 2537000 | 1142000 | 0.72 | 1827000 | 2001 |
|
||||
| AZ | 38000 | 63 | 2394000 | 1197000 | 1.08 | 2586000 | 2002 |
|
||||
| AZ | 35000 | 72 | 2520000 | 983000 | 1.34 | 3377000 | 2003 |
|
||||
| AZ | 32000 | 55 | 1760000 | 774000 | 1.11 | 1954000 | 2004 |
|
||||
| AZ | 36000 | 50 | 1800000 | 720000 | 1.04 | 1872000 | 2005 |
|
||||
| AZ | 30000 | 65 | 1950000 | 839000 | 0.91 | 1775000 | 2006 |
|
||||
| AZ | 30000 | 64 | 1920000 | 902000 | 1.26 | 2419000 | 2007 |
|
||||
| AZ | 25000 | 64 | 1600000 | 336000 | 1.26 | 2016000 | 2008 |
|
||||
| AZ | 20000 | 52 | 1040000 | 562000 | 1.45 | 1508000 | 2009 |
|
||||
| AZ | 24000 | 77 | 1848000 | 665000 | 1.52 | 2809000 | 2010 |
|
||||
| AZ | 23000 | 53 | 1219000 | 427000 | 1.55 | 1889000 | 2011 |
|
||||
| AZ | 22000 | 46 | 1012000 | 253000 | 1.79 | 1811000 | 2012 |
|
||||
|
||||
Une autre façon de visualiser cette progression est d'utiliser la taille plutôt que la couleur. Pour les utilisateurs daltoniens, cela pourrait être une meilleure option. Modifiez votre visualisation pour montrer une augmentation du prix par une augmentation de la circonférence des points :
|
||||
|
||||
```r
|
||||
ggplot(honey, aes(x = priceperlb, y = state)) +
|
||||
geom_point(aes(size = year),colour = "blue") +
|
||||
scale_size_continuous(range = c(0.25, 3))
|
||||
```
|
||||
Vous pouvez voir la taille des points augmenter progressivement.
|
||||
|
||||

|
||||
|
||||
Est-ce simplement une question d'offre et de demande ? En raison de facteurs tels que le changement climatique et l'effondrement des colonies, y a-t-il moins de miel disponible à l'achat année après année, ce qui entraîne une augmentation des prix ?
|
||||
|
||||
Pour découvrir une corrélation entre certaines des variables de cet ensemble de données, explorons quelques graphiques linéaires.
|
||||
|
||||
## Graphiques linéaires
|
||||
|
||||
Question : Y a-t-il une augmentation claire du prix du miel par livre année après année ? Vous pouvez le découvrir facilement en créant un graphique linéaire unique :
|
||||
|
||||
```r
|
||||
qplot(honey$year,honey$priceperlb, geom='smooth', span =0.5, xlab = "year",ylab = "priceperlb")
|
||||
```
|
||||
Réponse : Oui, avec quelques exceptions autour de l'année 2003 :
|
||||
|
||||

|
||||
|
||||
Question : Eh bien, en 2003, pouvons-nous également voir un pic dans l'approvisionnement en miel ? Que se passe-t-il si vous examinez la production totale année après année ?
|
||||
|
||||
```python
|
||||
qplot(honey$year,honey$totalprod, geom='smooth', span =0.5, xlab = "year",ylab = "totalprod")
|
||||
```
|
||||
|
||||

|
||||
|
||||
Réponse : Pas vraiment. Si vous examinez la production totale, elle semble en fait avoir augmenté cette année-là, même si, de manière générale, la quantité de miel produite est en déclin au cours de ces années.
|
||||
|
||||
Question : Dans ce cas, qu'est-ce qui aurait pu provoquer ce pic du prix du miel autour de 2003 ?
|
||||
|
||||
Pour le découvrir, vous pouvez explorer une grille de facettes.
|
||||
|
||||
## Grilles de facettes
|
||||
|
||||
Les grilles de facettes prennent un aspect de votre ensemble de données (dans notre cas, vous pouvez choisir 'année' pour éviter de produire trop de facettes). Seaborn peut ensuite créer un graphique pour chacune de ces facettes de vos coordonnées x et y choisies pour une comparaison visuelle plus facile. L'année 2003 se démarque-t-elle dans ce type de comparaison ?
|
||||
|
||||
Créez une grille de facettes en utilisant `facet_wrap` comme recommandé par la [documentation de ggplot2](https://ggplot2.tidyverse.org/reference/facet_wrap.html).
|
||||
|
||||
```r
|
||||
ggplot(honey, aes(x=yieldpercol, y = numcol,group = 1)) +
|
||||
geom_line() + facet_wrap(vars(year))
|
||||
```
|
||||
Dans cette visualisation, vous pouvez comparer le rendement par colonie et le nombre de colonies année après année, côte à côte avec un wrap défini à 3 pour les colonnes :
|
||||
|
||||

|
||||
|
||||
Pour cet ensemble de données, rien ne semble particulièrement se démarquer en ce qui concerne le nombre de colonies et leur rendement, année après année et État par État. Existe-t-il une autre façon de rechercher une corrélation entre ces deux variables ?
|
||||
|
||||
## Graphiques à lignes multiples
|
||||
|
||||
Essayez un graphique à lignes multiples en superposant deux graphiques linéaires l'un sur l'autre, en utilisant les fonctions `par` et `plot` de R. Nous allons tracer l'année sur l'axe x et afficher deux axes y. Ainsi, affichez le rendement par colonie et le nombre de colonies, superposés :
|
||||
|
||||
```r
|
||||
par(mar = c(5, 4, 4, 4) + 0.3)
|
||||
plot(honey$year, honey$numcol, pch = 16, col = 2,type="l")
|
||||
par(new = TRUE)
|
||||
plot(honey$year, honey$yieldpercol, pch = 17, col = 3,
|
||||
axes = FALSE, xlab = "", ylab = "",type="l")
|
||||
axis(side = 4, at = pretty(range(y2)))
|
||||
mtext("colony yield", side = 4, line = 3)
|
||||
```
|
||||

|
||||
|
||||
Bien que rien ne saute aux yeux autour de l'année 2003, cela nous permet de terminer cette leçon sur une note un peu plus positive : bien qu'il y ait globalement un déclin du nombre de colonies, le nombre de colonies se stabilise même si leur rendement par colonie diminue.
|
||||
|
||||
Allez, les abeilles, allez !
|
||||
|
||||
🐝❤️
|
||||
## 🚀 Défi
|
||||
|
||||
Dans cette leçon, vous avez appris un peu plus sur d'autres utilisations des diagrammes de dispersion et des grilles linéaires, y compris les grilles de facettes. Lancez-vous le défi de créer une grille de facettes en utilisant un ensemble de données différent, peut-être celui que vous avez utilisé avant ces leçons. Notez combien de temps elles prennent à créer et comment vous devez être prudent quant au nombre de grilles que vous devez dessiner en utilisant ces techniques.
|
||||
## [Quiz après le cours](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/23)
|
||||
|
||||
## Révision et étude personnelle
|
||||
|
||||
Les graphiques linéaires peuvent être simples ou assez complexes. Faites quelques lectures dans la [documentation de ggplot2](https://ggplot2.tidyverse.org/reference/geom_path.html#:~:text=geom_line()%20connects%20them%20in,which%20cases%20are%20connected%20together) sur les différentes façons de les construire. Essayez d'améliorer les graphiques linéaires que vous avez construits dans cette leçon avec d'autres méthodes listées dans la documentation.
|
||||
## Devoir
|
||||
|
||||
[Plongez dans la ruche](assignment.md)
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,180 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "b4039f1c76548d144a0aee0bf28304ec",
|
||||
"translation_date": "2025-08-24T13:57:57+00:00",
|
||||
"source_file": "3-Data-Visualization/R/13-meaningful-vizualizations/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Créer des Visualisations Significatives
|
||||
|
||||
| ](../../../sketchnotes/13-MeaningfulViz.png)|
|
||||
|:---:|
|
||||
| Visualisations Significatives - _Sketchnote par [@nitya](https://twitter.com/nitya)_ |
|
||||
|
||||
> "Si vous torturez les données suffisamment longtemps, elles avoueront n'importe quoi" -- [Ronald Coase](https://en.wikiquote.org/wiki/Ronald_Coase)
|
||||
|
||||
Une des compétences fondamentales d'un data scientist est la capacité à créer une visualisation de données significative qui aide à répondre aux questions que vous pourriez avoir. Avant de visualiser vos données, vous devez vous assurer qu'elles ont été nettoyées et préparées, comme vous l'avez fait dans les leçons précédentes. Ensuite, vous pouvez commencer à décider de la meilleure façon de présenter les données.
|
||||
|
||||
Dans cette leçon, vous allez revoir :
|
||||
|
||||
1. Comment choisir le bon type de graphique
|
||||
2. Comment éviter les graphiques trompeurs
|
||||
3. Comment travailler avec les couleurs
|
||||
4. Comment styliser vos graphiques pour une meilleure lisibilité
|
||||
5. Comment créer des solutions de graphiques animés ou en 3D
|
||||
6. Comment concevoir une visualisation créative
|
||||
|
||||
## [Quiz Pré-Conférence](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/24)
|
||||
|
||||
## Choisir le bon type de graphique
|
||||
|
||||
Dans les leçons précédentes, vous avez expérimenté la création de toutes sortes de visualisations de données intéressantes en utilisant Matplotlib et Seaborn. En général, vous pouvez sélectionner le [bon type de graphique](https://chartio.com/learn/charts/how-to-select-a-data-vizualization/) pour répondre à votre question en utilisant ce tableau :
|
||||
|
||||
| Vous devez : | Vous devriez utiliser : |
|
||||
| -------------------------- | ------------------------------- |
|
||||
| Montrer des tendances dans le temps | Ligne |
|
||||
| Comparer des catégories | Barres, Camembert |
|
||||
| Comparer des totaux | Camembert, Barres empilées |
|
||||
| Montrer des relations | Nuage de points, Ligne, Facette, Double ligne |
|
||||
| Montrer des distributions | Nuage de points, Histogramme, Boîte |
|
||||
| Montrer des proportions | Camembert, Donut, Gaufre |
|
||||
|
||||
> ✅ Selon la composition de vos données, vous pourriez avoir besoin de les convertir de texte en numérique pour qu'un graphique donné puisse les prendre en charge.
|
||||
|
||||
## Éviter la tromperie
|
||||
|
||||
Même si un data scientist choisit soigneusement le bon graphique pour les bonnes données, il existe de nombreuses façons de présenter les données de manière à prouver un point, souvent au détriment des données elles-mêmes. Il existe de nombreux exemples de graphiques et d'infographies trompeurs !
|
||||
|
||||
[](https://www.youtube.com/watch?v=oX74Nge8Wkw "Comment les graphiques mentent")
|
||||
|
||||
> 🎥 Cliquez sur l'image ci-dessus pour une conférence sur les graphiques trompeurs
|
||||
|
||||
Ce graphique inverse l'axe X pour montrer l'opposé de la vérité, basé sur la date :
|
||||
|
||||

|
||||
|
||||
[Ce graphique](https://media.firstcoastnews.com/assets/WTLV/images/170ae16f-4643-438f-b689-50d66ca6a8d8/170ae16f-4643-438f-b689-50d66ca6a8d8_1140x641.jpg) est encore plus trompeur, car l'œil est attiré vers la droite pour conclure qu'au fil du temps, les cas de COVID ont diminué dans les différents comtés. En réalité, si vous regardez attentivement les dates, vous constatez qu'elles ont été réarrangées pour donner cette tendance descendante trompeuse.
|
||||
|
||||

|
||||
|
||||
Cet exemple notoire utilise la couleur ET un axe Y inversé pour tromper : au lieu de conclure que les décès par arme à feu ont augmenté après l'adoption d'une législation favorable aux armes, l'œil est en fait trompé pour penser que l'inverse est vrai :
|
||||
|
||||

|
||||
|
||||
Ce graphique étrange montre comment la proportion peut être manipulée, avec un effet hilarant :
|
||||
|
||||

|
||||
|
||||
Comparer l'incomparable est une autre astuce douteuse. Il existe un [site web merveilleux](https://tylervigen.com/spurious-correlations) consacré aux 'corrélations fallacieuses' affichant des 'faits' corrélant des choses comme le taux de divorce dans le Maine et la consommation de margarine. Un groupe Reddit collecte également les [mauvaises utilisations](https://www.reddit.com/r/dataisugly/top/?t=all) des données.
|
||||
|
||||
Il est important de comprendre à quel point l'œil peut être facilement trompé par des graphiques trompeurs. Même si l'intention du data scientist est bonne, le choix d'un mauvais type de graphique, comme un camembert montrant trop de catégories, peut être trompeur.
|
||||
|
||||
## Couleur
|
||||
|
||||
Vous avez vu dans le graphique sur la 'violence armée en Floride' ci-dessus comment la couleur peut ajouter une couche supplémentaire de signification aux graphiques, en particulier ceux qui ne sont pas conçus à l'aide de bibliothèques comme ggplot2 et RColorBrewer, qui proposent diverses bibliothèques et palettes de couleurs validées. Si vous créez un graphique manuellement, prenez le temps d'étudier un peu la [théorie des couleurs](https://colormatters.com/color-and-design/basic-color-theory).
|
||||
|
||||
> ✅ Soyez conscient, lors de la conception de graphiques, que l'accessibilité est un aspect important de la visualisation. Certains de vos utilisateurs pourraient être daltoniens - votre graphique est-il lisible pour les utilisateurs ayant des déficiences visuelles ?
|
||||
|
||||
Faites attention en choisissant les couleurs pour votre graphique, car elles peuvent transmettre un sens que vous ne souhaitez pas. Les 'dames en rose' dans le graphique sur la 'taille' ci-dessus transmettent une signification distinctement 'féminine' qui ajoute à l'étrangeté du graphique lui-même.
|
||||
|
||||
Bien que [la signification des couleurs](https://colormatters.com/color-symbolism/the-meanings-of-colors) puisse varier selon les régions du monde et changer en fonction de leur nuance, en général, les significations des couleurs incluent :
|
||||
|
||||
| Couleur | Signification |
|
||||
| ------- | ---------------------- |
|
||||
| rouge | pouvoir |
|
||||
| bleu | confiance, loyauté |
|
||||
| jaune | bonheur, prudence |
|
||||
| vert | écologie, chance, envie|
|
||||
| violet | bonheur |
|
||||
| orange | dynamisme |
|
||||
|
||||
Si vous devez créer un graphique avec des couleurs personnalisées, assurez-vous que vos graphiques sont à la fois accessibles et que la couleur choisie correspond au message que vous souhaitez transmettre.
|
||||
|
||||
## Styliser vos graphiques pour une meilleure lisibilité
|
||||
|
||||
Les graphiques ne sont pas significatifs s'ils ne sont pas lisibles ! Prenez un moment pour réfléchir à la mise à l'échelle de la largeur et de la hauteur de votre graphique en fonction de vos données. Si une variable (comme les 50 états) doit être affichée, montrez-les verticalement sur l'axe Y si possible, afin d'éviter un graphique défilant horizontalement.
|
||||
|
||||
Étiquetez vos axes, fournissez une légende si nécessaire, et proposez des infobulles pour une meilleure compréhension des données.
|
||||
|
||||
Si vos données sont textuelles et longues sur l'axe X, vous pouvez incliner le texte pour une meilleure lisibilité. [plot3D](https://cran.r-project.org/web/packages/plot3D/index.html) propose des tracés en 3D, si vos données le permettent. Des visualisations sophistiquées peuvent être produites avec cet outil.
|
||||
|
||||

|
||||
|
||||
## Animation et affichage de graphiques en 3D
|
||||
|
||||
Certaines des meilleures visualisations de données aujourd'hui sont animées. Shirley Wu en a créé d'incroyables avec D3, comme '[film flowers](http://bl.ocks.org/sxywu/raw/d612c6c653fb8b4d7ff3d422be164a5d/)', où chaque fleur est une visualisation d'un film. Un autre exemple pour le Guardian est 'bussed out', une expérience interactive combinant des visualisations avec Greensock et D3, ainsi qu'un format d'article narratif pour montrer comment NYC gère son problème de sans-abris en envoyant des gens hors de la ville.
|
||||
|
||||

|
||||
|
||||
> "Bussed Out: How America Moves its Homeless" du [Guardian](https://www.theguardian.com/us-news/ng-interactive/2017/dec/20/bussed-out-america-moves-homeless-people-country-study). Visualisations par Nadieh Bremer & Shirley Wu
|
||||
|
||||
Bien que cette leçon ne soit pas suffisante pour enseigner en profondeur ces bibliothèques de visualisation puissantes, essayez D3 dans une application Vue.js en utilisant une bibliothèque pour afficher une visualisation du livre "Les Liaisons Dangereuses" comme un réseau social animé.
|
||||
|
||||
> "Les Liaisons Dangereuses" est un roman épistolaire, ou un roman présenté sous forme de lettres. Écrit en 1782 par Choderlos de Laclos, il raconte les manœuvres sociales vicieuses et moralement corrompues de deux protagonistes de l'aristocratie française du XVIIIe siècle, le Vicomte de Valmont et la Marquise de Merteuil. Tous deux rencontrent leur perte à la fin, mais pas sans causer de nombreux dégâts sociaux. Le roman se déroule comme une série de lettres écrites à diverses personnes de leur cercle, complotant pour se venger ou simplement pour semer le trouble. Créez une visualisation de ces lettres pour découvrir les principaux acteurs de la narration, visuellement.
|
||||
|
||||
Vous allez compléter une application web qui affichera une vue animée de ce réseau social. Elle utilise une bibliothèque conçue pour créer une [visualisation d'un réseau](https://github.com/emiliorizzo/vue-d3-network) avec Vue.js et D3. Lorsque l'application est en cours d'exécution, vous pouvez déplacer les nœuds sur l'écran pour réorganiser les données.
|
||||
|
||||

|
||||
|
||||
## Projet : Construire un graphique pour montrer un réseau avec D3.js
|
||||
|
||||
> Ce dossier de leçon inclut un dossier `solution` où vous pouvez trouver le projet complété, pour référence.
|
||||
|
||||
1. Suivez les instructions dans le fichier README.md à la racine du dossier de démarrage. Assurez-vous que NPM et Node.js fonctionnent sur votre machine avant d'installer les dépendances de votre projet.
|
||||
|
||||
2. Ouvrez le dossier `starter/src`. Vous y trouverez un dossier `assets` contenant un fichier .json avec toutes les lettres du roman, numérotées, avec une annotation 'to' et 'from'.
|
||||
|
||||
3. Complétez le code dans `components/Nodes.vue` pour activer la visualisation. Recherchez la méthode appelée `createLinks()` et ajoutez la boucle imbriquée suivante.
|
||||
|
||||
Parcourez l'objet .json pour capturer les données 'to' et 'from' des lettres et construisez l'objet `links` afin que la bibliothèque de visualisation puisse l'utiliser :
|
||||
|
||||
```javascript
|
||||
//loop through letters
|
||||
let f = 0;
|
||||
let t = 0;
|
||||
for (var i = 0; i < letters.length; i++) {
|
||||
for (var j = 0; j < characters.length; j++) {
|
||||
|
||||
if (characters[j] == letters[i].from) {
|
||||
f = j;
|
||||
}
|
||||
if (characters[j] == letters[i].to) {
|
||||
t = j;
|
||||
}
|
||||
}
|
||||
this.links.push({ sid: f, tid: t });
|
||||
}
|
||||
```
|
||||
|
||||
Exécutez votre application depuis le terminal (npm run serve) et profitez de la visualisation !
|
||||
|
||||
## 🚀 Défi
|
||||
|
||||
Faites un tour sur Internet pour découvrir des visualisations trompeuses. Comment l'auteur trompe-t-il l'utilisateur, et est-ce intentionnel ? Essayez de corriger les visualisations pour montrer à quoi elles devraient ressembler.
|
||||
|
||||
## [Quiz Post-Conférence](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/25)
|
||||
|
||||
## Révision & Auto-Étude
|
||||
|
||||
Voici quelques articles à lire sur les visualisations de données trompeuses :
|
||||
|
||||
https://gizmodo.com/how-to-lie-with-data-visualization-1563576606
|
||||
|
||||
http://ixd.prattsi.org/2017/12/visual-lies-usability-in-deceptive-data-visualizations/
|
||||
|
||||
Découvrez ces visualisations intéressantes pour des actifs et artefacts historiques :
|
||||
|
||||
https://handbook.pubpub.org/
|
||||
|
||||
Lisez cet article sur la façon dont l'animation peut améliorer vos visualisations :
|
||||
|
||||
https://medium.com/@EvanSinar/use-animation-to-supercharge-data-visualization-cd905a882ad4
|
||||
|
||||
## Devoir
|
||||
|
||||
[Créez votre propre visualisation personnalisée](assignment.md)
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,40 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "1441550a0d789796b2821e04f7f4cc94",
|
||||
"translation_date": "2025-08-24T13:30:36+00:00",
|
||||
"source_file": "3-Data-Visualization/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Visualisations
|
||||
|
||||

|
||||
> Photo par <a href="https://unsplash.com/@jenna2980?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Jenna Lee</a> sur <a href="https://unsplash.com/s/photos/bees-in-a-meadow?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
|
||||
|
||||
Visualiser des données est l'une des tâches les plus importantes pour un data scientist. Les images valent mille mots, et une visualisation peut vous aider à identifier toutes sortes d'éléments intéressants dans vos données, tels que des pics, des valeurs aberrantes, des regroupements, des tendances, et bien plus encore, qui peuvent vous aider à comprendre l'histoire que vos données cherchent à raconter.
|
||||
|
||||
Dans ces cinq leçons, vous explorerez des données provenant de la nature et créerez des visualisations intéressantes et esthétiques en utilisant diverses techniques.
|
||||
|
||||
| Numéro du sujet | Sujet | Leçon liée | Auteur |
|
||||
| :--------------: | :---: | :--------: | :----: |
|
||||
| 1. | Visualiser des quantités | <ul> <li> [Python](09-visualization-quantities/README.md)</li> <li>[R](../../../3-Data-Visualization/R/09-visualization-quantities) </li> </ul>|<ul> <li> [Jen Looper](https://twitter.com/jenlooper)</li><li> [Vidushi Gupta](https://github.com/Vidushi-Gupta)</li> <li>[Jasleen Sondhi](https://github.com/jasleen101010)</li></ul> |
|
||||
| 2. | Visualiser des distributions | <ul> <li> [Python](10-visualization-distributions/README.md)</li> <li>[R](../../../3-Data-Visualization/R/10-visualization-distributions) </li> </ul>|<ul> <li> [Jen Looper](https://twitter.com/jenlooper)</li><li> [Vidushi Gupta](https://github.com/Vidushi-Gupta)</li> <li>[Jasleen Sondhi](https://github.com/jasleen101010)</li></ul> |
|
||||
| 3. | Visualiser des proportions | <ul> <li> [Python](11-visualization-proportions/README.md)</li> <li>[R](../../../3-Data-Visualization) </li> </ul>|<ul> <li> [Jen Looper](https://twitter.com/jenlooper)</li><li> [Vidushi Gupta](https://github.com/Vidushi-Gupta)</li> <li>[Jasleen Sondhi](https://github.com/jasleen101010)</li></ul> |
|
||||
| 4. | Visualiser des relations | <ul> <li> [Python](12-visualization-relationships/README.md)</li> <li>[R](../../../3-Data-Visualization) </li> </ul>|<ul> <li> [Jen Looper](https://twitter.com/jenlooper)</li><li> [Vidushi Gupta](https://github.com/Vidushi-Gupta)</li> <li>[Jasleen Sondhi](https://github.com/jasleen101010)</li></ul> |
|
||||
| 5. | Créer des visualisations significatives | <ul> <li> [Python](13-meaningful-visualizations/README.md)</li> <li>[R](../../../3-Data-Visualization) </li> </ul>|<ul> <li> [Jen Looper](https://twitter.com/jenlooper)</li><li> [Vidushi Gupta](https://github.com/Vidushi-Gupta)</li> <li>[Jasleen Sondhi](https://github.com/jasleen101010)</li></ul> |
|
||||
|
||||
### Crédits
|
||||
|
||||
Ces leçons sur les visualisations ont été écrites avec 🌸 par [Jen Looper](https://twitter.com/jenlooper), [Jasleen Sondhi](https://github.com/jasleen101010) et [Vidushi Gupta](https://github.com/Vidushi-Gupta).
|
||||
|
||||
🍯 Les données sur la production de miel aux États-Unis proviennent du projet de Jessica Li sur [Kaggle](https://www.kaggle.com/jessicali9530/honey-production). Les [données](https://usda.library.cornell.edu/concern/publications/rn301137d) sont issues du [Département de l'Agriculture des États-Unis](https://www.nass.usda.gov/About_NASS/index.php).
|
||||
|
||||
🍄 Les données sur les champignons proviennent également de [Kaggle](https://www.kaggle.com/hatterasdunton/mushroom-classification-updated-dataset), révisées par Hatteras Dunton. Ce jeu de données inclut des descriptions d'échantillons hypothétiques correspondant à 23 espèces de champignons à lamelles de la famille Agaricus et Lepiota. Les champignons sont tirés du guide "The Audubon Society Field Guide to North American Mushrooms" (1981). Ce jeu de données a été donné à UCI ML 27 en 1987.
|
||||
|
||||
🦆 Les données sur les oiseaux du Minnesota proviennent de [Kaggle](https://www.kaggle.com/hannahcollins/minnesota-birds), extraites de [Wikipedia](https://en.wikipedia.org/wiki/List_of_birds_of_Minnesota) par Hannah Collins.
|
||||
|
||||
Tous ces jeux de données sont sous licence [CC0: Creative Commons](https://creativecommons.org/publicdomain/zero/1.0/).
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction humaine professionnelle. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,121 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "c368f8f2506fe56bca0f7be05c4eb71d",
|
||||
"translation_date": "2025-08-24T13:17:56+00:00",
|
||||
"source_file": "4-Data-Science-Lifecycle/14-Introduction/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Introduction au cycle de vie de la science des données
|
||||
|
||||
| ](../../sketchnotes/14-DataScience-Lifecycle.png)|
|
||||
|:---:|
|
||||
| Introduction au cycle de vie de la science des données - _Sketchnote par [@nitya](https://twitter.com/nitya)_ |
|
||||
|
||||
## [Quiz avant le cours](https://red-water-0103e7a0f.azurestaticapps.net/quiz/26)
|
||||
|
||||
À ce stade, vous avez probablement compris que la science des données est un processus. Ce processus peut être divisé en 5 étapes :
|
||||
|
||||
- Capture
|
||||
- Traitement
|
||||
- Analyse
|
||||
- Communication
|
||||
- Maintenance
|
||||
|
||||
Cette leçon se concentre sur 3 parties du cycle de vie : la capture, le traitement et la maintenance.
|
||||
|
||||

|
||||
> Photo par [Berkeley School of Information](https://ischoolonline.berkeley.edu/data-science/what-is-data-science/)
|
||||
|
||||
## Capture
|
||||
|
||||
La première étape du cycle de vie est très importante, car les étapes suivantes en dépendent. Elle combine pratiquement deux étapes en une : l'acquisition des données et la définition des objectifs et des problèmes à résoudre.
|
||||
Définir les objectifs du projet nécessitera une compréhension approfondie du problème ou de la question. Tout d'abord, nous devons identifier et acquérir les parties prenantes ayant besoin d'une solution à leur problème. Il peut s'agir de parties prenantes d'une entreprise ou de sponsors du projet, qui peuvent aider à déterminer qui ou quoi bénéficiera de ce projet, ainsi que ce dont ils ont besoin et pourquoi. Un objectif bien défini doit être mesurable et quantifiable pour définir un résultat acceptable.
|
||||
|
||||
Questions qu'un data scientist pourrait poser :
|
||||
- Ce problème a-t-il déjà été abordé auparavant ? Qu'a-t-on découvert ?
|
||||
- L'objectif et le but sont-ils compris par toutes les parties impliquées ?
|
||||
- Y a-t-il des ambiguïtés et comment les réduire ?
|
||||
- Quelles sont les contraintes ?
|
||||
- À quoi pourrait ressembler le résultat final ?
|
||||
- Quelles ressources (temps, personnes, calcul) sont disponibles ?
|
||||
|
||||
Ensuite, il s'agit d'identifier, de collecter, puis d'explorer les données nécessaires pour atteindre ces objectifs définis. À cette étape d'acquisition, les data scientists doivent également évaluer la quantité et la qualité des données. Cela nécessite une exploration des données pour confirmer que ce qui a été acquis permettra d'atteindre le résultat souhaité.
|
||||
|
||||
Questions qu'un data scientist pourrait poser sur les données :
|
||||
- Quelles données sont déjà disponibles ?
|
||||
- Qui possède ces données ?
|
||||
- Quelles sont les préoccupations en matière de confidentialité ?
|
||||
- Ai-je suffisamment de données pour résoudre ce problème ?
|
||||
- Les données sont-elles de qualité acceptable pour ce problème ?
|
||||
- Si je découvre des informations supplémentaires grâce à ces données, devrions-nous envisager de modifier ou redéfinir les objectifs ?
|
||||
|
||||
## Traitement
|
||||
|
||||
L'étape de traitement du cycle de vie se concentre sur la découverte de motifs dans les données ainsi que sur la modélisation. Certaines techniques utilisées à cette étape nécessitent des méthodes statistiques pour révéler les motifs. Typiquement, cette tâche serait fastidieuse pour un humain avec un grand ensemble de données et repose sur les ordinateurs pour accélérer le processus. Cette étape est également le point où la science des données et l'apprentissage automatique se croisent. Comme vous l'avez appris dans la première leçon, l'apprentissage automatique consiste à construire des modèles pour comprendre les données. Les modèles représentent les relations entre les variables des données et aident à prédire les résultats.
|
||||
|
||||
Les techniques courantes utilisées à cette étape sont couvertes dans le programme ML for Beginners. Suivez les liens pour en savoir plus :
|
||||
|
||||
- [Classification](https://github.com/microsoft/ML-For-Beginners/tree/main/4-Classification) : Organiser les données en catégories pour une utilisation plus efficace.
|
||||
- [Clustering](https://github.com/microsoft/ML-For-Beginners/tree/main/5-Clustering) : Regrouper les données en groupes similaires.
|
||||
- [Régression](https://github.com/microsoft/ML-For-Beginners/tree/main/2-Regression) : Déterminer les relations entre les variables pour prédire ou prévoir des valeurs.
|
||||
|
||||
## Maintenance
|
||||
|
||||
Dans le diagramme du cycle de vie, vous avez peut-être remarqué que la maintenance se situe entre la capture et le traitement. La maintenance est un processus continu de gestion, de stockage et de sécurisation des données tout au long du projet et doit être prise en compte pendant toute la durée du projet.
|
||||
|
||||
### Stockage des données
|
||||
|
||||
Les choix concernant la manière et le lieu de stockage des données peuvent influencer le coût de leur stockage ainsi que les performances d'accès aux données. Ces décisions ne sont pas toujours prises uniquement par un data scientist, mais celui-ci peut être amené à faire des choix sur la manière de travailler avec les données en fonction de leur stockage.
|
||||
|
||||
Voici quelques aspects des systèmes modernes de stockage des données qui peuvent influencer ces choix :
|
||||
|
||||
**Sur site vs hors site vs cloud public ou privé**
|
||||
|
||||
Le stockage sur site fait référence à la gestion des données sur votre propre équipement, comme posséder un serveur avec des disques durs pour stocker les données, tandis que le stockage hors site repose sur des équipements que vous ne possédez pas, comme un centre de données. Le cloud public est un choix populaire pour le stockage des données, ne nécessitant aucune connaissance sur la manière ou le lieu exact où les données sont stockées. Le terme "public" fait référence à une infrastructure unifiée partagée par tous les utilisateurs du cloud. Certaines organisations ayant des politiques de sécurité strictes préfèrent un cloud privé qui leur offre des services cloud dédiés. Vous en apprendrez davantage sur les données dans le cloud dans les [leçons ultérieures](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/5-Data-Science-In-Cloud).
|
||||
|
||||
**Données froides vs données chaudes**
|
||||
|
||||
Lorsque vous entraînez vos modèles, vous pourriez avoir besoin de plus de données d'entraînement. Si votre modèle est satisfaisant, de nouvelles données arriveront pour qu'il remplisse son objectif. Dans tous les cas, le coût de stockage et d'accès aux données augmentera à mesure que vous en accumulez davantage. Séparer les données rarement utilisées, appelées données froides, des données fréquemment consultées, appelées données chaudes, peut être une option de stockage moins coûteuse grâce à des services matériels ou logiciels. Si les données froides doivent être consultées, leur récupération peut prendre un peu plus de temps par rapport aux données chaudes.
|
||||
|
||||
### Gestion des données
|
||||
|
||||
En travaillant avec les données, vous pourriez découvrir que certaines d'entre elles doivent être nettoyées à l'aide de techniques abordées dans la leçon sur la [préparation des données](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/2-Working-With-Data/08-data-preparation) pour construire des modèles précis. Lorsque de nouvelles données arrivent, elles nécessiteront les mêmes applications pour maintenir une qualité cohérente. Certains projets impliquent l'utilisation d'un outil automatisé pour le nettoyage, l'agrégation et la compression avant que les données ne soient déplacées vers leur emplacement final. Azure Data Factory est un exemple de ces outils.
|
||||
|
||||
### Sécurisation des données
|
||||
|
||||
L'un des principaux objectifs de la sécurisation des données est de s'assurer que ceux qui les manipulent contrôlent ce qui est collecté et dans quel contexte elles sont utilisées. Garder les données sécurisées implique de limiter l'accès uniquement à ceux qui en ont besoin, de respecter les lois et réglementations locales, ainsi que de maintenir des normes éthiques, comme abordé dans la [leçon sur l'éthique](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/02-ethics).
|
||||
|
||||
Voici quelques actions qu'une équipe peut entreprendre en matière de sécurité :
|
||||
- Confirmer que toutes les données sont chiffrées
|
||||
- Fournir aux clients des informations sur l'utilisation de leurs données
|
||||
- Retirer l'accès aux données pour les personnes ayant quitté le projet
|
||||
- Permettre uniquement à certains membres du projet de modifier les données
|
||||
|
||||
## 🚀 Défi
|
||||
|
||||
Il existe de nombreuses versions du cycle de vie de la science des données, où chaque étape peut avoir des noms différents et un nombre de phases varié, mais elles contiennent les mêmes processus mentionnés dans cette leçon.
|
||||
|
||||
Explorez le [cycle de vie du processus de science des données en équipe](https://docs.microsoft.com/en-us/azure/architecture/data-science-process/lifecycle) et le [processus standard intersectoriel pour l'exploration de données](https://www.datascience-pm.com/crisp-dm-2/). Nommez 3 similitudes et différences entre les deux.
|
||||
|
||||
|Processus de science des données en équipe (TDSP)|Processus standard intersectoriel pour l'exploration de données (CRISP-DM)|
|
||||
|--|--|
|
||||
| |  |
|
||||
| Image par [Microsoft](https://docs.microsoft.comazure/architecture/data-science-process/lifecycle) | Image par [Data Science Process Alliance](https://www.datascience-pm.com/crisp-dm-2/) |
|
||||
|
||||
## [Quiz après le cours](https://red-water-0103e7a0f.azurestaticapps.net/quiz/27)
|
||||
|
||||
## Révision et auto-apprentissage
|
||||
|
||||
Appliquer le cycle de vie de la science des données implique plusieurs rôles et tâches, où certains peuvent se concentrer sur des parties spécifiques de chaque étape. Le processus de science des données en équipe fournit quelques ressources expliquant les types de rôles et de tâches que quelqu'un peut avoir dans un projet.
|
||||
|
||||
* [Rôles et tâches dans le processus de science des données en équipe](https://docs.microsoft.com/en-us/azure/architecture/data-science-process/roles-tasks)
|
||||
* [Exécuter des tâches de science des données : exploration, modélisation et déploiement](https://docs.microsoft.com/en-us/azure/architecture/data-science-process/execute-data-science-tasks)
|
||||
|
||||
## Devoir
|
||||
|
||||
[Évaluation d'un ensemble de données](assignment.md)
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,35 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "564445c39ad29a491abcb9356fc4d47d",
|
||||
"translation_date": "2025-08-24T13:19:51+00:00",
|
||||
"source_file": "4-Data-Science-Lifecycle/14-Introduction/assignment.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Évaluation d'un ensemble de données
|
||||
|
||||
Un client a sollicité votre équipe pour l'aider à analyser les habitudes de dépenses saisonnières des clients de taxis à New York.
|
||||
|
||||
Ils veulent savoir : **Les passagers des taxis jaunes à New York donnent-ils plus de pourboires aux chauffeurs en hiver ou en été ?**
|
||||
|
||||
Votre équipe est dans la phase [Capture](Readme.md#Capturing) du cycle de vie de la science des données, et vous êtes chargé de gérer l'ensemble de données. On vous a fourni un notebook et des [données](../../../../data/taxi.csv) à explorer.
|
||||
|
||||
Dans ce répertoire, il y a un [notebook](../../../../4-Data-Science-Lifecycle/14-Introduction/notebook.ipynb) qui utilise Python pour charger les données des trajets des taxis jaunes provenant de la [NYC Taxi & Limousine Commission](https://docs.microsoft.com/en-us/azure/open-datasets/dataset-taxi-yellow?tabs=azureml-opendatasets).
|
||||
Vous pouvez également ouvrir le fichier de données des taxis dans un éditeur de texte ou un logiciel de tableur comme Excel.
|
||||
|
||||
## Instructions
|
||||
|
||||
- Évaluez si les données de cet ensemble peuvent répondre à la question.
|
||||
- Explorez le [catalogue NYC Open Data](https://data.cityofnewyork.us/browse?sortBy=most_accessed&utf8=%E2%9C%93). Identifiez un ensemble de données supplémentaire qui pourrait être utile pour répondre à la question du client.
|
||||
- Rédigez 3 questions que vous poseriez au client pour obtenir des clarifications et mieux comprendre le problème.
|
||||
|
||||
Consultez le [dictionnaire de l'ensemble de données](https://www1.nyc.gov/assets/tlc/downloads/pdf/data_dictionary_trip_records_yellow.pdf) et le [guide utilisateur](https://www1.nyc.gov/assets/tlc/downloads/pdf/trip_record_user_guide.pdf) pour plus d'informations sur les données.
|
||||
|
||||
## Rubrique
|
||||
|
||||
Exemplaire | Adéquat | À améliorer
|
||||
--- | --- | --- |
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,58 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "d92f57eb110dc7f765c05cbf0f837c77",
|
||||
"translation_date": "2025-08-24T13:21:43+00:00",
|
||||
"source_file": "4-Data-Science-Lifecycle/15-analyzing/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Le Cycle de Vie de la Science des Données : Analyse
|
||||
|
||||
| ](../../sketchnotes/15-Analyzing.png)|
|
||||
|:---:|
|
||||
| Cycle de Vie de la Science des Données : Analyse - _Sketchnote par [@nitya](https://twitter.com/nitya)_ |
|
||||
|
||||
## Quiz Préliminaire
|
||||
|
||||
## [Quiz Préliminaire](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/28)
|
||||
|
||||
L'analyse dans le cycle de vie des données confirme que les données peuvent répondre aux questions posées ou résoudre un problème particulier. Cette étape peut également se concentrer sur la vérification qu'un modèle répond correctement à ces questions et problèmes. Cette leçon est axée sur l'Analyse Exploratoire des Données (ou EDA), qui regroupe des techniques permettant de définir les caractéristiques et les relations au sein des données, et qui peuvent être utilisées pour préparer les données à la modélisation.
|
||||
|
||||
Nous utiliserons un jeu de données d'exemple provenant de [Kaggle](https://www.kaggle.com/balaka18/email-spam-classification-dataset-csv/version/1) pour montrer comment cela peut être appliqué avec Python et la bibliothèque Pandas. Ce jeu de données contient un décompte de certains mots courants trouvés dans des e-mails, les sources de ces e-mails étant anonymes. Utilisez le [notebook](../../../../4-Data-Science-Lifecycle/15-analyzing/notebook.ipynb) dans ce répertoire pour suivre.
|
||||
|
||||
## Analyse Exploratoire des Données
|
||||
|
||||
La phase de capture du cycle de vie est celle où les données sont acquises ainsi que les problèmes et questions à traiter, mais comment savoir si les données peuvent aider à atteindre le résultat final ?
|
||||
Rappelez-vous qu'un data scientist peut poser les questions suivantes lorsqu'il acquiert les données :
|
||||
- Ai-je suffisamment de données pour résoudre ce problème ?
|
||||
- Les données sont-elles de qualité acceptable pour ce problème ?
|
||||
- Si je découvre des informations supplémentaires grâce à ces données, devrions-nous envisager de modifier ou redéfinir les objectifs ?
|
||||
L'Analyse Exploratoire des Données est le processus qui permet de mieux connaître ces données et peut être utilisée pour répondre à ces questions, ainsi que pour identifier les défis liés à l'utilisation du jeu de données. Concentrons-nous sur certaines des techniques utilisées pour y parvenir.
|
||||
|
||||
## Profilage des Données, Statistiques Descriptives et Pandas
|
||||
Comment évaluer si nous avons suffisamment de données pour résoudre ce problème ? Le profilage des données peut résumer et recueillir des informations générales sur notre jeu de données grâce à des techniques de statistiques descriptives. Le profilage des données nous aide à comprendre ce qui est disponible, et les statistiques descriptives nous aident à comprendre combien de choses sont disponibles.
|
||||
|
||||
Dans quelques leçons précédentes, nous avons utilisé Pandas pour fournir des statistiques descriptives avec la [`fonction describe()`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.describe.html). Elle fournit le décompte, les valeurs maximales et minimales, la moyenne, l'écart type et les quantiles sur les données numériques. Utiliser des statistiques descriptives comme la fonction `describe()` peut vous aider à évaluer ce que vous avez et si vous avez besoin de plus.
|
||||
|
||||
## Échantillonnage et Interrogation
|
||||
Explorer tout un grand jeu de données peut être très chronophage et est généralement une tâche laissée à un ordinateur. Cependant, l'échantillonnage est un outil utile pour comprendre les données et permet d'avoir une meilleure idée de ce que contient le jeu de données et de ce qu'il représente. Avec un échantillon, vous pouvez appliquer des probabilités et des statistiques pour tirer des conclusions générales sur vos données. Bien qu'il n'existe pas de règle définie sur la quantité de données à échantillonner, il est important de noter que plus vous échantillonnez de données, plus la généralisation que vous pouvez faire sera précise.
|
||||
Pandas dispose de la [`fonction sample()` dans sa bibliothèque](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.sample.html) où vous pouvez passer un argument pour indiquer combien d'échantillons aléatoires vous souhaitez recevoir et utiliser.
|
||||
|
||||
L'interrogation générale des données peut vous aider à répondre à certaines questions et théories générales que vous pourriez avoir. Contrairement à l'échantillonnage, les requêtes vous permettent de contrôler et de vous concentrer sur des parties spécifiques des données sur lesquelles vous avez des questions.
|
||||
La [`fonction query()`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.query.html) dans la bibliothèque Pandas vous permet de sélectionner des colonnes et d'obtenir des réponses simples sur les données via les lignes récupérées.
|
||||
|
||||
## Exploration avec des Visualisations
|
||||
Vous n'avez pas besoin d'attendre que les données soient complètement nettoyées et analysées pour commencer à créer des visualisations. En fait, avoir une représentation visuelle pendant l'exploration peut aider à identifier des motifs, des relations et des problèmes dans les données. De plus, les visualisations offrent un moyen de communication avec ceux qui ne sont pas impliqués dans la gestion des données et peuvent être une opportunité de partager et clarifier des questions supplémentaires qui n'ont pas été abordées lors de la phase de capture. Consultez la [section sur les Visualisations](../../../../../../../../../3-Data-Visualization) pour en savoir plus sur certaines façons populaires d'explorer visuellement.
|
||||
|
||||
## Exploration pour Identifier les Incohérences
|
||||
Tous les sujets abordés dans cette leçon peuvent aider à identifier les valeurs manquantes ou incohérentes, mais Pandas fournit des fonctions pour vérifier certaines d'entre elles. [isna() ou isnull()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.isna.html) peuvent vérifier les valeurs manquantes. Un aspect important de l'exploration de ces valeurs dans vos données est d'explorer pourquoi elles se sont retrouvées ainsi en premier lieu. Cela peut vous aider à décider quelles [actions entreprendre pour les résoudre](../../../../../../../../../2-Working-With-Data/08-data-preparation/notebook.ipynb).
|
||||
|
||||
## [Quiz Préliminaire](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/27)
|
||||
|
||||
## Devoir
|
||||
|
||||
[Explorer pour des réponses](assignment.md)
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,34 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "fcc7547171f4530f159676dd73ed772e",
|
||||
"translation_date": "2025-08-24T13:23:11+00:00",
|
||||
"source_file": "4-Data-Science-Lifecycle/15-analyzing/assignment.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Exploration pour des réponses
|
||||
|
||||
Ceci est une continuation de [l'exercice](../14-Introduction/assignment.md) de la leçon précédente, où nous avons brièvement examiné l'ensemble de données. Maintenant, nous allons examiner les données de manière plus approfondie.
|
||||
|
||||
Encore une fois, la question que le client souhaite résoudre est la suivante : **Les passagers des taxis jaunes à New York donnent-ils plus de pourboires aux chauffeurs en hiver ou en été ?**
|
||||
|
||||
Votre équipe se trouve dans la phase [Analyse](README.md) du cycle de vie de la science des données, où vous êtes chargé de réaliser une analyse exploratoire des données sur l'ensemble fourni. Vous disposez d'un notebook et d'un ensemble de données contenant 200 transactions de taxis datant de janvier et juillet 2019.
|
||||
|
||||
## Instructions
|
||||
|
||||
Dans ce répertoire, vous trouverez un [notebook](../../../../4-Data-Science-Lifecycle/15-analyzing/assignment.ipynb) et des données provenant de la [Taxi & Limousine Commission](https://docs.microsoft.com/en-us/azure/open-datasets/dataset-taxi-yellow?tabs=azureml-opendatasets). Consultez le [dictionnaire de l'ensemble de données](https://www1.nyc.gov/assets/tlc/downloads/pdf/data_dictionary_trip_records_yellow.pdf) et le [guide utilisateur](https://www1.nyc.gov/assets/tlc/downloads/pdf/trip_record_user_guide.pdf) pour plus d'informations sur les données.
|
||||
|
||||
Utilisez certaines des techniques abordées dans cette leçon pour effectuer votre propre analyse exploratoire des données dans le notebook (ajoutez des cellules si nécessaire) et répondez aux questions suivantes :
|
||||
|
||||
- Quels autres facteurs dans les données pourraient influencer le montant des pourboires ?
|
||||
- Quelles colonnes seront probablement inutiles pour répondre à la question du client ?
|
||||
- D'après les informations fournies jusqu'à présent, les données semblent-elles indiquer un comportement saisonnier en matière de pourboires ?
|
||||
|
||||
## Grille d'évaluation
|
||||
|
||||
Exemplaire | Adéquat | À améliorer
|
||||
--- | --- | ---
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,24 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "8980d7efd101c82d6d6ffc3458214120",
|
||||
"translation_date": "2025-08-24T13:29:30+00:00",
|
||||
"source_file": "4-Data-Science-Lifecycle/16-communication/assignment.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Racontez une histoire
|
||||
|
||||
## Instructions
|
||||
|
||||
La science des données consiste à raconter des histoires. Choisissez un ensemble de données et rédigez un court article sur l'histoire que vous pourriez en tirer. Que souhaitez-vous que votre ensemble de données révèle ? Que ferez-vous si ses révélations s'avèrent problématiques ? Et si vos données ne dévoilent pas facilement leurs secrets ? Pensez aux scénarios que votre ensemble de données pourrait présenter et notez-les.
|
||||
|
||||
## Grille d'évaluation
|
||||
|
||||
Exemplaire | Adéquat | À améliorer
|
||||
--- | --- | -- |
|
||||
|
||||
Un essai d'une page est présenté au format .doc avec l'ensemble de données expliqué, documenté, crédité, et une histoire cohérente est présentée à son sujet avec des exemples détaillés tirés des données.| Un essai plus court est présenté dans un format moins détaillé | L'essai manque de l'un des détails mentionnés ci-dessus.
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,28 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "dd173fd30fc039a7a299898920680723",
|
||||
"translation_date": "2025-08-24T13:16:17+00:00",
|
||||
"source_file": "4-Data-Science-Lifecycle/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Le cycle de vie de la science des données
|
||||
|
||||

|
||||
> Photo par <a href="https://unsplash.com/@headwayio?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Headway</a> sur <a href="https://unsplash.com/s/photos/communication?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
|
||||
|
||||
Dans ces leçons, vous explorerez certains aspects du cycle de vie de la science des données, y compris l'analyse et la communication autour des données.
|
||||
|
||||
### Sujets
|
||||
|
||||
1. [Introduction](14-Introduction/README.md)
|
||||
2. [Analyse](15-analyzing/README.md)
|
||||
3. [Communication](16-communication/README.md)
|
||||
|
||||
### Crédits
|
||||
|
||||
Ces leçons ont été écrites avec ❤️ par [Jalen McGee](https://twitter.com/JalenMCG) et [Jasmine Greenaway](https://twitter.com/paladique)
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,114 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "408c55cab2880daa4e78616308bd5db7",
|
||||
"translation_date": "2025-08-24T13:06:45+00:00",
|
||||
"source_file": "5-Data-Science-In-Cloud/17-Introduction/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Introduction à la science des données dans le Cloud
|
||||
|
||||
| ](../../sketchnotes/17-DataScience-Cloud.png)|
|
||||
|:---:|
|
||||
| Science des données dans le Cloud : Introduction - _Sketchnote par [@nitya](https://twitter.com/nitya)_ |
|
||||
|
||||
Dans cette leçon, vous apprendrez les principes fondamentaux du Cloud, puis vous verrez pourquoi il peut être intéressant d'utiliser les services Cloud pour exécuter vos projets de science des données. Nous examinerons également quelques exemples de projets de science des données réalisés dans le Cloud.
|
||||
|
||||
## [Quiz avant la leçon](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/32)
|
||||
|
||||
## Qu'est-ce que le Cloud ?
|
||||
|
||||
Le Cloud, ou informatique en nuage, désigne la fourniture d'une large gamme de services informatiques à la demande, hébergés sur une infrastructure via Internet. Ces services incluent des solutions telles que le stockage, les bases de données, les réseaux, les logiciels, l'analyse et les services intelligents.
|
||||
|
||||
On distingue généralement les Clouds publics, privés et hybrides comme suit :
|
||||
|
||||
* Cloud public : un Cloud public est détenu et exploité par un fournisseur de services Cloud tiers qui met ses ressources informatiques à disposition du public via Internet.
|
||||
* Cloud privé : désigne les ressources informatiques en nuage utilisées exclusivement par une entreprise ou organisation unique, avec des services et une infrastructure maintenus sur un réseau privé.
|
||||
* Cloud hybride : le Cloud hybride est un système qui combine les Clouds publics et privés. Les utilisateurs optent pour un centre de données sur site tout en permettant aux données et applications de fonctionner sur un ou plusieurs Clouds publics.
|
||||
|
||||
La plupart des services d'informatique en nuage se répartissent en trois catégories : Infrastructure en tant que service (IaaS), Plateforme en tant que service (PaaS) et Logiciel en tant que service (SaaS).
|
||||
|
||||
* Infrastructure en tant que service (IaaS) : les utilisateurs louent une infrastructure informatique telle que des serveurs, des machines virtuelles (VM), du stockage, des réseaux, des systèmes d'exploitation.
|
||||
* Plateforme en tant que service (PaaS) : les utilisateurs louent un environnement pour développer, tester, livrer et gérer des applications logicielles. Les utilisateurs n'ont pas à se soucier de la configuration ou de la gestion de l'infrastructure sous-jacente des serveurs, du stockage, du réseau et des bases de données nécessaires au développement.
|
||||
* Logiciel en tant que service (SaaS) : les utilisateurs accèdent à des applications logicielles via Internet, à la demande et généralement sur une base d'abonnement. Les utilisateurs n'ont pas à se soucier de l'hébergement et de la gestion de l'application logicielle, de l'infrastructure sous-jacente ou de la maintenance, comme les mises à jour logicielles et les correctifs de sécurité.
|
||||
|
||||
Parmi les principaux fournisseurs de Cloud figurent Amazon Web Services, Google Cloud Platform et Microsoft Azure.
|
||||
|
||||
## Pourquoi choisir le Cloud pour la science des données ?
|
||||
|
||||
Les développeurs et les professionnels de l'informatique choisissent de travailler avec le Cloud pour de nombreuses raisons, notamment :
|
||||
|
||||
* Innovation : vous pouvez alimenter vos applications en intégrant directement des services innovants créés par les fournisseurs de Cloud dans vos applications.
|
||||
* Flexibilité : vous ne payez que pour les services dont vous avez besoin et pouvez choisir parmi une large gamme de services. Vous payez généralement à l'usage et adaptez vos services en fonction de vos besoins évolutifs.
|
||||
* Budget : vous n'avez pas besoin de faire des investissements initiaux pour acheter du matériel et des logiciels, configurer et gérer des centres de données sur site, et vous pouvez simplement payer pour ce que vous utilisez.
|
||||
* Scalabilité : vos ressources peuvent évoluer en fonction des besoins de votre projet, ce qui signifie que vos applications peuvent utiliser plus ou moins de puissance de calcul, de stockage et de bande passante, en s'adaptant à des facteurs externes à tout moment.
|
||||
* Productivité : vous pouvez vous concentrer sur votre activité plutôt que de passer du temps sur des tâches qui peuvent être gérées par quelqu'un d'autre, comme la gestion des centres de données.
|
||||
* Fiabilité : l'informatique en nuage offre plusieurs moyens de sauvegarder en continu vos données et vous pouvez mettre en place des plans de reprise après sinistre pour maintenir votre activité et vos services, même en période de crise.
|
||||
* Sécurité : vous pouvez bénéficier de politiques, de technologies et de contrôles qui renforcent la sécurité de votre projet.
|
||||
|
||||
Ce sont quelques-unes des raisons les plus courantes pour lesquelles les gens choisissent d'utiliser les services Cloud. Maintenant que nous comprenons mieux ce qu'est le Cloud et ses principaux avantages, examinons plus spécifiquement les métiers des data scientists et des développeurs travaillant avec les données, et comment le Cloud peut les aider à relever plusieurs défis auxquels ils pourraient être confrontés :
|
||||
|
||||
* Stocker de grandes quantités de données : au lieu d'acheter, de gérer et de protéger de grands serveurs, vous pouvez stocker vos données directement dans le Cloud, avec des solutions telles qu'Azure Cosmos DB, Azure SQL Database et Azure Data Lake Storage.
|
||||
* Intégration des données : l'intégration des données est une partie essentielle de la science des données, qui vous permet de passer de la collecte de données à la prise de décisions. Avec les services d'intégration de données proposés dans le Cloud, vous pouvez collecter, transformer et intégrer des données provenant de diverses sources dans un entrepôt de données unique, avec Data Factory.
|
||||
* Traitement des données : le traitement de vastes quantités de données nécessite beaucoup de puissance de calcul, et tout le monde n'a pas accès à des machines suffisamment puissantes pour cela, c'est pourquoi beaucoup choisissent de tirer parti de la puissance de calcul massive du Cloud pour exécuter et déployer leurs solutions.
|
||||
* Utilisation des services d'analyse de données : des services Cloud comme Azure Synapse Analytics, Azure Stream Analytics et Azure Databricks vous aident à transformer vos données en informations exploitables.
|
||||
* Utilisation des services d'intelligence artificielle et de machine learning : au lieu de partir de zéro, vous pouvez utiliser des algorithmes de machine learning proposés par le fournisseur de Cloud, avec des services tels qu'AzureML. Vous pouvez également utiliser des services cognitifs tels que la conversion de texte en parole, la reconnaissance visuelle et bien plus.
|
||||
|
||||
## Exemples de science des données dans le Cloud
|
||||
|
||||
Rendons cela plus concret en examinant quelques scénarios.
|
||||
|
||||
### Analyse en temps réel des sentiments sur les réseaux sociaux
|
||||
|
||||
Commençons par un scénario couramment étudié par les débutants en machine learning : l'analyse des sentiments sur les réseaux sociaux en temps réel.
|
||||
|
||||
Supposons que vous dirigez un site d'actualités et que vous souhaitez exploiter des données en direct pour comprendre quels contenus pourraient intéresser vos lecteurs. Pour en savoir plus, vous pouvez créer un programme qui effectue une analyse des sentiments en temps réel des données provenant de publications Twitter, sur des sujets pertinents pour vos lecteurs.
|
||||
|
||||
Les indicateurs clés que vous examinerez sont le volume de tweets sur des sujets spécifiques (hashtags) et les sentiments, établis à l'aide d'outils d'analyse qui réalisent une analyse des sentiments autour des sujets spécifiés.
|
||||
|
||||
Les étapes nécessaires pour créer ce projet sont les suivantes :
|
||||
|
||||
* Créer un hub d'événements pour la collecte des données en streaming, qui collectera les données de Twitter.
|
||||
* Configurer et démarrer une application cliente Twitter, qui appellera les API de streaming Twitter.
|
||||
* Créer un travail Stream Analytics.
|
||||
* Spécifier les entrées et les requêtes du travail.
|
||||
* Créer un point de sortie et spécifier les sorties du travail.
|
||||
* Démarrer le travail.
|
||||
|
||||
Pour voir le processus complet, consultez la [documentation](https://docs.microsoft.com/azure/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends?WT.mc_id=academic-77958-bethanycheum&ocid=AID30411099).
|
||||
|
||||
### Analyse des articles scientifiques
|
||||
|
||||
Prenons un autre exemple de projet créé par [Dmitry Soshnikov](http://soshnikov.com), l'un des auteurs de ce programme.
|
||||
|
||||
Dmitry a créé un outil qui analyse les articles sur le COVID. En examinant ce projet, vous verrez comment créer un outil qui extrait des connaissances à partir d'articles scientifiques, obtient des informations et aide les chercheurs à naviguer efficacement dans de grandes collections d'articles.
|
||||
|
||||
Voyons les différentes étapes utilisées pour cela :
|
||||
|
||||
* Extraction et prétraitement des informations avec [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109).
|
||||
* Utilisation de [Azure ML](https://azure.microsoft.com/services/machine-learning?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) pour paralléliser le traitement.
|
||||
* Stockage et interrogation des informations avec [Cosmos DB](https://azure.microsoft.com/services/cosmos-db?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109).
|
||||
* Création d'un tableau de bord interactif pour l'exploration et la visualisation des données avec Power BI.
|
||||
|
||||
Pour voir le processus complet, visitez le [blog de Dmitry](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/).
|
||||
|
||||
Comme vous pouvez le constater, nous pouvons tirer parti des services Cloud de nombreuses façons pour réaliser de la science des données.
|
||||
|
||||
## Note de bas de page
|
||||
|
||||
Sources :
|
||||
* https://azure.microsoft.com/overview/what-is-cloud-computing?ocid=AID3041109
|
||||
* https://docs.microsoft.com/azure/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends?ocid=AID3041109
|
||||
* https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/
|
||||
|
||||
## Quiz après la leçon
|
||||
|
||||
[Quiz après la leçon](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/33)
|
||||
|
||||
## Devoir
|
||||
|
||||
[Étude de marché](assignment.md)
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,23 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "96f3696153d9ed54b19a1bb65438c104",
|
||||
"translation_date": "2025-08-24T13:08:27+00:00",
|
||||
"source_file": "5-Data-Science-In-Cloud/17-Introduction/assignment.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Recherche de Marché
|
||||
|
||||
## Instructions
|
||||
|
||||
Dans cette leçon, vous avez appris qu'il existe plusieurs fournisseurs de cloud importants. Faites des recherches de marché pour découvrir ce que chacun peut offrir au Data Scientist. Les offres sont-elles comparables ? Rédigez un document pour décrire les offres de trois ou plus de ces fournisseurs de cloud.
|
||||
|
||||
## Grille d'évaluation
|
||||
|
||||
Exemplaire | Adéquat | À améliorer
|
||||
--- | --- | -- |
|
||||
Un document d'une page décrit les offres en science des données de trois fournisseurs de cloud et les différencie. | Un document plus court est présenté. | Un document est présenté sans compléter l'analyse.
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,23 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "8fdc4a5fd9bc27a8d2ebef995dfbf73f",
|
||||
"translation_date": "2025-08-24T13:05:03+00:00",
|
||||
"source_file": "5-Data-Science-In-Cloud/18-Low-Code/assignment.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Projet de Data Science Low code/No code sur Azure ML
|
||||
|
||||
## Instructions
|
||||
|
||||
Nous avons vu comment utiliser la plateforme Azure ML pour entraîner, déployer et consommer un modèle de manière Low code/No code. Maintenant, cherchez des données que vous pourriez utiliser pour entraîner un autre modèle, le déployer et le consommer. Vous pouvez rechercher des jeux de données sur [Kaggle](https://kaggle.com) et [Azure Open Datasets](https://azure.microsoft.com/services/open-datasets/catalog?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109).
|
||||
|
||||
## Grille d'évaluation
|
||||
|
||||
| Exemplaire | Adéquat | À améliorer |
|
||||
|------------|---------|-------------|
|
||||
|Lors du téléchargement des données, vous avez pris soin de modifier le type des caractéristiques si nécessaire. Vous avez également nettoyé les données si besoin. Vous avez effectué un entraînement sur un jeu de données via AutoML, et vous avez vérifié les explications du modèle. Vous avez déployé le meilleur modèle et vous avez réussi à le consommer. | Lors du téléchargement des données, vous avez pris soin de modifier le type des caractéristiques si nécessaire. Vous avez effectué un entraînement sur un jeu de données via AutoML, vous avez déployé le meilleur modèle et vous avez réussi à le consommer. | Vous avez déployé le meilleur modèle entraîné par AutoML et vous avez réussi à le consommer. |
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,313 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "73dead89dc2ddda4d6ec0232814a191e",
|
||||
"translation_date": "2025-08-24T13:11:12+00:00",
|
||||
"source_file": "5-Data-Science-In-Cloud/19-Azure/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Data Science dans le Cloud : La méthode "Azure ML SDK"
|
||||
|
||||
| ](../../sketchnotes/19-DataScience-Cloud.png)|
|
||||
|:---:|
|
||||
| Data Science dans le Cloud : Azure ML SDK - _Sketchnote par [@nitya](https://twitter.com/nitya)_ |
|
||||
|
||||
Table des matières :
|
||||
|
||||
- [Data Science dans le Cloud : La méthode "Azure ML SDK"](../../../../5-Data-Science-In-Cloud/19-Azure)
|
||||
- [Quiz avant le cours](../../../../5-Data-Science-In-Cloud/19-Azure)
|
||||
- [1. Introduction](../../../../5-Data-Science-In-Cloud/19-Azure)
|
||||
- [1.1 Qu'est-ce que l'Azure ML SDK ?](../../../../5-Data-Science-In-Cloud/19-Azure)
|
||||
- [1.2 Présentation du projet de prédiction d'insuffisance cardiaque et du jeu de données](../../../../5-Data-Science-In-Cloud/19-Azure)
|
||||
- [2. Entraîner un modèle avec l'Azure ML SDK](../../../../5-Data-Science-In-Cloud/19-Azure)
|
||||
- [2.1 Créer un espace de travail Azure ML](../../../../5-Data-Science-In-Cloud/19-Azure)
|
||||
- [2.2 Créer une instance de calcul](../../../../5-Data-Science-In-Cloud/19-Azure)
|
||||
- [2.3 Charger le jeu de données](../../../../5-Data-Science-In-Cloud/19-Azure)
|
||||
- [2.4 Créer des notebooks](../../../../5-Data-Science-In-Cloud/19-Azure)
|
||||
- [2.5 Entraîner un modèle](../../../../5-Data-Science-In-Cloud/19-Azure)
|
||||
- [2.5.1 Configurer l'espace de travail, l'expérience, le cluster de calcul et le jeu de données](../../../../5-Data-Science-In-Cloud/19-Azure)
|
||||
- [2.5.2 Configuration AutoML et entraînement](../../../../5-Data-Science-In-Cloud/19-Azure)
|
||||
- [3. Déploiement du modèle et consommation de l'endpoint avec l'Azure ML SDK](../../../../5-Data-Science-In-Cloud/19-Azure)
|
||||
- [3.1 Sauvegarder le meilleur modèle](../../../../5-Data-Science-In-Cloud/19-Azure)
|
||||
- [3.2 Déploiement du modèle](../../../../5-Data-Science-In-Cloud/19-Azure)
|
||||
- [3.3 Consommation de l'endpoint](../../../../5-Data-Science-In-Cloud/19-Azure)
|
||||
- [🚀 Défi](../../../../5-Data-Science-In-Cloud/19-Azure)
|
||||
- [Quiz après le cours](../../../../5-Data-Science-In-Cloud/19-Azure)
|
||||
- [Révision et auto-apprentissage](../../../../5-Data-Science-In-Cloud/19-Azure)
|
||||
- [Devoir](../../../../5-Data-Science-In-Cloud/19-Azure)
|
||||
|
||||
## [Quiz avant le cours](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/36)
|
||||
|
||||
## 1. Introduction
|
||||
|
||||
### 1.1 Qu'est-ce que l'Azure ML SDK ?
|
||||
|
||||
Les data scientists et les développeurs en IA utilisent l'Azure Machine Learning SDK pour construire et exécuter des workflows de machine learning avec le service Azure Machine Learning. Vous pouvez interagir avec le service dans n'importe quel environnement Python, y compris Jupyter Notebooks, Visual Studio Code ou votre IDE Python préféré.
|
||||
|
||||
Les principales fonctionnalités du SDK incluent :
|
||||
|
||||
- Explorer, préparer et gérer le cycle de vie de vos jeux de données utilisés dans les expériences de machine learning.
|
||||
- Gérer les ressources cloud pour surveiller, journaliser et organiser vos expériences de machine learning.
|
||||
- Entraîner des modèles localement ou en utilisant des ressources cloud, y compris l'entraînement de modèles accélérés par GPU.
|
||||
- Utiliser le machine learning automatisé, qui accepte des paramètres de configuration et des données d'entraînement. Il itère automatiquement à travers les algorithmes et les réglages d'hyperparamètres pour trouver le meilleur modèle pour effectuer des prédictions.
|
||||
- Déployer des services web pour convertir vos modèles entraînés en services RESTful pouvant être consommés dans n'importe quelle application.
|
||||
|
||||
[En savoir plus sur l'Azure Machine Learning SDK](https://docs.microsoft.com/python/api/overview/azure/ml?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109)
|
||||
|
||||
Dans la [leçon précédente](../18-Low-Code/README.md), nous avons vu comment entraîner, déployer et consommer un modèle de manière Low code/No code. Nous avons utilisé le jeu de données sur l'insuffisance cardiaque pour générer un modèle de prédiction d'insuffisance cardiaque. Dans cette leçon, nous allons faire exactement la même chose, mais en utilisant l'Azure Machine Learning SDK.
|
||||
|
||||

|
||||
|
||||
### 1.2 Présentation du projet de prédiction d'insuffisance cardiaque et du jeu de données
|
||||
|
||||
Consultez [ici](../18-Low-Code/README.md) la présentation du projet de prédiction d'insuffisance cardiaque et du jeu de données.
|
||||
|
||||
## 2. Entraîner un modèle avec l'Azure ML SDK
|
||||
### 2.1 Créer un espace de travail Azure ML
|
||||
|
||||
Pour simplifier, nous allons travailler sur un notebook Jupyter. Cela implique que vous avez déjà un espace de travail et une instance de calcul. Si vous avez déjà un espace de travail, vous pouvez passer directement à la section 2.3 Création de notebook.
|
||||
|
||||
Sinon, veuillez suivre les instructions de la section **2.1 Créer un espace de travail Azure ML** dans la [leçon précédente](../18-Low-Code/README.md) pour créer un espace de travail.
|
||||
|
||||
### 2.2 Créer une instance de calcul
|
||||
|
||||
Dans l'[espace de travail Azure ML](https://ml.azure.com/) que nous avons créé précédemment, allez dans le menu de calcul et vous verrez les différentes ressources de calcul disponibles.
|
||||
|
||||

|
||||
|
||||
Créons une instance de calcul pour provisionner un notebook Jupyter.
|
||||
1. Cliquez sur le bouton + Nouveau.
|
||||
2. Donnez un nom à votre instance de calcul.
|
||||
3. Choisissez vos options : CPU ou GPU, taille de la VM et nombre de cœurs.
|
||||
4. Cliquez sur le bouton Créer.
|
||||
|
||||
Félicitations, vous venez de créer une instance de calcul ! Nous utiliserons cette instance de calcul pour créer un notebook dans la section [Création de notebooks](../../../../5-Data-Science-In-Cloud/19-Azure).
|
||||
|
||||
### 2.3 Charger le jeu de données
|
||||
Consultez la [leçon précédente](../18-Low-Code/README.md) dans la section **2.3 Charger le jeu de données** si vous n'avez pas encore téléchargé le jeu de données.
|
||||
|
||||
### 2.4 Créer des notebooks
|
||||
|
||||
> **_NOTE :_** Pour l'étape suivante, vous pouvez soit créer un nouveau notebook à partir de zéro, soit télécharger le [notebook que nous avons créé](../../../../5-Data-Science-In-Cloud/19-Azure/notebook.ipynb) dans votre Azure ML Studio. Pour le télécharger, cliquez simplement sur le menu "Notebook" et téléchargez le notebook.
|
||||
|
||||
Les notebooks sont une partie très importante du processus de data science. Ils peuvent être utilisés pour effectuer une analyse exploratoire des données (EDA), appeler un cluster de calcul pour entraîner un modèle, ou appeler un cluster d'inférence pour déployer un endpoint.
|
||||
|
||||
Pour créer un notebook, nous avons besoin d'un nœud de calcul qui héberge l'instance de notebook Jupyter. Retournez à l'[espace de travail Azure ML](https://ml.azure.com/) et cliquez sur Instances de calcul. Dans la liste des instances de calcul, vous devriez voir [l'instance de calcul que nous avons créée précédemment](../../../../5-Data-Science-In-Cloud/19-Azure).
|
||||
|
||||
1. Dans la section Applications, cliquez sur l'option Jupyter.
|
||||
2. Cochez la case "Oui, je comprends" et cliquez sur le bouton Continuer.
|
||||

|
||||
3. Cela devrait ouvrir un nouvel onglet de navigateur avec votre instance de notebook Jupyter comme suit. Cliquez sur le bouton "Nouveau" pour créer un notebook.
|
||||
|
||||

|
||||
|
||||
Maintenant que nous avons un notebook, nous pouvons commencer à entraîner le modèle avec Azure ML SDK.
|
||||
|
||||
### 2.5 Entraîner un modèle
|
||||
|
||||
Tout d'abord, si vous avez un doute, consultez la [documentation Azure ML SDK](https://docs.microsoft.com/python/api/overview/azure/ml?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). Elle contient toutes les informations nécessaires pour comprendre les modules que nous allons voir dans cette leçon.
|
||||
|
||||
#### 2.5.1 Configurer l'espace de travail, l'expérience, le cluster de calcul et le jeu de données
|
||||
|
||||
Vous devez charger l'`espace de travail` à partir du fichier de configuration en utilisant le code suivant :
|
||||
|
||||
```python
|
||||
from azureml.core import Workspace
|
||||
ws = Workspace.from_config()
|
||||
```
|
||||
|
||||
Cela renvoie un objet de type `Workspace` qui représente l'espace de travail. Ensuite, vous devez créer une `expérience` en utilisant le code suivant :
|
||||
|
||||
```python
|
||||
from azureml.core import Experiment
|
||||
experiment_name = 'aml-experiment'
|
||||
experiment = Experiment(ws, experiment_name)
|
||||
```
|
||||
Pour obtenir ou créer une expérience à partir d'un espace de travail, vous demandez l'expérience en utilisant son nom. Le nom de l'expérience doit comporter entre 3 et 36 caractères, commencer par une lettre ou un chiffre, et ne contenir que des lettres, des chiffres, des underscores et des tirets. Si l'expérience n'est pas trouvée dans l'espace de travail, une nouvelle expérience est créée.
|
||||
|
||||
Ensuite, vous devez créer un cluster de calcul pour l'entraînement en utilisant le code suivant. Notez que cette étape peut prendre quelques minutes.
|
||||
|
||||
```python
|
||||
from azureml.core.compute import AmlCompute
|
||||
|
||||
aml_name = "heart-f-cluster"
|
||||
try:
|
||||
aml_compute = AmlCompute(ws, aml_name)
|
||||
print('Found existing AML compute context.')
|
||||
except:
|
||||
print('Creating new AML compute context.')
|
||||
aml_config = AmlCompute.provisioning_configuration(vm_size = "Standard_D2_v2", min_nodes=1, max_nodes=3)
|
||||
aml_compute = AmlCompute.create(ws, name = aml_name, provisioning_configuration = aml_config)
|
||||
aml_compute.wait_for_completion(show_output = True)
|
||||
|
||||
cts = ws.compute_targets
|
||||
compute_target = cts[aml_name]
|
||||
```
|
||||
|
||||
Vous pouvez obtenir le jeu de données à partir de l'espace de travail en utilisant le nom du jeu de données de la manière suivante :
|
||||
|
||||
```python
|
||||
dataset = ws.datasets['heart-failure-records']
|
||||
df = dataset.to_pandas_dataframe()
|
||||
df.describe()
|
||||
```
|
||||
|
||||
#### 2.5.2 Configuration AutoML et entraînement
|
||||
|
||||
Pour configurer AutoML, utilisez la classe [AutoMLConfig](https://docs.microsoft.com/python/api/azureml-train-automl-client/azureml.train.automl.automlconfig(class)?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109).
|
||||
|
||||
Comme décrit dans la documentation, il existe de nombreux paramètres avec lesquels vous pouvez jouer. Pour ce projet, nous utiliserons les paramètres suivants :
|
||||
|
||||
- `experiment_timeout_minutes` : Durée maximale (en minutes) pendant laquelle l'expérience est autorisée à s'exécuter avant d'être automatiquement arrêtée et que les résultats soient disponibles.
|
||||
- `max_concurrent_iterations` : Nombre maximal d'itérations d'entraînement simultanées autorisées pour l'expérience.
|
||||
- `primary_metric` : Métrique principale utilisée pour déterminer l'état de l'expérience.
|
||||
- `compute_target` : La cible de calcul Azure Machine Learning pour exécuter l'expérience AutoML.
|
||||
- `task` : Type de tâche à exécuter. Les valeurs peuvent être 'classification', 'regression' ou 'forecasting' selon le type de problème AutoML à résoudre.
|
||||
- `training_data` : Les données d'entraînement à utiliser dans l'expérience. Elles doivent contenir à la fois les caractéristiques d'entraînement et une colonne d'étiquettes (éventuellement une colonne de poids d'échantillon).
|
||||
- `label_column_name` : Nom de la colonne d'étiquettes.
|
||||
- `path` : Chemin complet vers le dossier du projet Azure Machine Learning.
|
||||
- `enable_early_stopping` : Indique si l'arrêt anticipé doit être activé si le score ne s'améliore pas à court terme.
|
||||
- `featurization` : Indicateur pour savoir si l'étape de featurization doit être effectuée automatiquement ou non, ou si une featurization personnalisée doit être utilisée.
|
||||
- `debug_log` : Fichier journal pour écrire les informations de débogage.
|
||||
|
||||
```python
|
||||
from azureml.train.automl import AutoMLConfig
|
||||
|
||||
project_folder = './aml-project'
|
||||
|
||||
automl_settings = {
|
||||
"experiment_timeout_minutes": 20,
|
||||
"max_concurrent_iterations": 3,
|
||||
"primary_metric" : 'AUC_weighted'
|
||||
}
|
||||
|
||||
automl_config = AutoMLConfig(compute_target=compute_target,
|
||||
task = "classification",
|
||||
training_data=dataset,
|
||||
label_column_name="DEATH_EVENT",
|
||||
path = project_folder,
|
||||
enable_early_stopping= True,
|
||||
featurization= 'auto',
|
||||
debug_log = "automl_errors.log",
|
||||
**automl_settings
|
||||
)
|
||||
```
|
||||
Maintenant que votre configuration est définie, vous pouvez entraîner le modèle en utilisant le code suivant. Cette étape peut prendre jusqu'à une heure selon la taille de votre cluster.
|
||||
|
||||
```python
|
||||
remote_run = experiment.submit(automl_config)
|
||||
```
|
||||
Vous pouvez exécuter le widget RunDetails pour afficher les différentes expériences.
|
||||
```python
|
||||
from azureml.widgets import RunDetails
|
||||
RunDetails(remote_run).show()
|
||||
```
|
||||
|
||||
## 3. Déploiement du modèle et consommation de l'endpoint avec l'Azure ML SDK
|
||||
|
||||
### 3.1 Sauvegarder le meilleur modèle
|
||||
|
||||
L'objet `remote_run` est de type [AutoMLRun](https://docs.microsoft.com/python/api/azureml-train-automl-client/azureml.train.automl.run.automlrun?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). Cet objet contient la méthode `get_output()` qui renvoie la meilleure exécution et le modèle ajusté correspondant.
|
||||
|
||||
```python
|
||||
best_run, fitted_model = remote_run.get_output()
|
||||
```
|
||||
Vous pouvez voir les paramètres utilisés pour le meilleur modèle en imprimant simplement le modèle ajusté et voir les propriétés du meilleur modèle en utilisant la méthode [get_properties()](https://docs.microsoft.com/python/api/azureml-core/azureml.core.run(class)?view=azure-ml-py#azureml_core_Run_get_properties?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109).
|
||||
|
||||
```python
|
||||
best_run.get_properties()
|
||||
```
|
||||
|
||||
Enregistrez maintenant le modèle avec la méthode [register_model](https://docs.microsoft.com/python/api/azureml-train-automl-client/azureml.train.automl.run.automlrun?view=azure-ml-py#register-model-model-name-none--description-none--tags-none--iteration-none--metric-none-?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109).
|
||||
```python
|
||||
model_name = best_run.properties['model_name']
|
||||
script_file_name = 'inference/score.py'
|
||||
best_run.download_file('outputs/scoring_file_v_1_0_0.py', 'inference/score.py')
|
||||
description = "aml heart failure project sdk"
|
||||
model = best_run.register_model(model_name = model_name,
|
||||
model_path = './outputs/',
|
||||
description = description,
|
||||
tags = None)
|
||||
```
|
||||
|
||||
### 3.2 Déploiement du modèle
|
||||
|
||||
Une fois le meilleur modèle sauvegardé, nous pouvons le déployer avec la classe [InferenceConfig](https://docs.microsoft.com/python/api/azureml-core/azureml.core.model.inferenceconfig?view=azure-ml-py?ocid=AID3041109). InferenceConfig représente les paramètres de configuration pour un environnement personnalisé utilisé pour le déploiement. La classe [AciWebservice](https://docs.microsoft.com/python/api/azureml-core/azureml.core.webservice.aciwebservice?view=azure-ml-py) représente un modèle de machine learning déployé en tant qu'endpoint de service web sur Azure Container Instances. Un service déployé est créé à partir d'un modèle, d'un script et de fichiers associés. Le service web résultant est un endpoint HTTP équilibré avec une API REST. Vous pouvez envoyer des données à cette API et recevoir la prédiction retournée par le modèle.
|
||||
|
||||
Le modèle est déployé en utilisant la méthode [deploy](https://docs.microsoft.com/python/api/azureml-core/azureml.core.model(class)?view=azure-ml-py#deploy-workspace--name--models--inference-config-none--deployment-config-none--deployment-target-none--overwrite-false--show-output-false-?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109).
|
||||
|
||||
```python
|
||||
from azureml.core.model import InferenceConfig, Model
|
||||
from azureml.core.webservice import AciWebservice
|
||||
|
||||
inference_config = InferenceConfig(entry_script=script_file_name, environment=best_run.get_environment())
|
||||
|
||||
aciconfig = AciWebservice.deploy_configuration(cpu_cores = 1,
|
||||
memory_gb = 1,
|
||||
tags = {'type': "automl-heart-failure-prediction"},
|
||||
description = 'Sample service for AutoML Heart Failure Prediction')
|
||||
|
||||
aci_service_name = 'automl-hf-sdk'
|
||||
aci_service = Model.deploy(ws, aci_service_name, [model], inference_config, aciconfig)
|
||||
aci_service.wait_for_deployment(True)
|
||||
print(aci_service.state)
|
||||
```
|
||||
Cette étape devrait prendre quelques minutes.
|
||||
|
||||
### 3.3 Consommation de l'endpoint
|
||||
|
||||
Vous consommez votre endpoint en créant un exemple d'entrée :
|
||||
|
||||
```python
|
||||
data = {
|
||||
"data":
|
||||
[
|
||||
{
|
||||
'age': "60",
|
||||
'anaemia': "false",
|
||||
'creatinine_phosphokinase': "500",
|
||||
'diabetes': "false",
|
||||
'ejection_fraction': "38",
|
||||
'high_blood_pressure': "false",
|
||||
'platelets': "260000",
|
||||
'serum_creatinine': "1.40",
|
||||
'serum_sodium': "137",
|
||||
'sex': "false",
|
||||
'smoking': "false",
|
||||
'time': "130",
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
test_sample = str.encode(json.dumps(data))
|
||||
```
|
||||
Ensuite, vous pouvez envoyer cette entrée à votre modèle pour obtenir une prédiction :
|
||||
```python
|
||||
response = aci_service.run(input_data=test_sample)
|
||||
response
|
||||
```
|
||||
Cela devrait produire `'{"result": [false]}'`. Cela signifie que les données du patient que nous avons envoyées à l'endpoint ont généré la prédiction `false`, ce qui indique que cette personne n'est probablement pas susceptible de faire une crise cardiaque.
|
||||
|
||||
Félicitations ! Vous venez de consommer le modèle déployé et entraîné sur Azure ML avec le SDK Azure ML !
|
||||
|
||||
> **_NOTE:_** Une fois le projet terminé, n'oubliez pas de supprimer toutes les ressources.
|
||||
|
||||
## 🚀 Défi
|
||||
|
||||
Il y a beaucoup d'autres choses que vous pouvez faire avec le SDK, mais malheureusement, nous ne pouvons pas tout voir dans cette leçon. Bonne nouvelle, apprendre à parcourir la documentation du SDK peut vous mener très loin par vous-même. Consultez la documentation du SDK Azure ML et trouvez la classe `Pipeline` qui vous permet de créer des pipelines. Un Pipeline est une collection d'étapes pouvant être exécutées comme un workflow.
|
||||
|
||||
**ASTUCE :** Rendez-vous sur la [documentation du SDK](https://docs.microsoft.com/python/api/overview/azure/ml/?view=azure-ml-py?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) et tapez des mots-clés dans la barre de recherche comme "Pipeline". Vous devriez trouver la classe `azureml.pipeline.core.Pipeline` dans les résultats de recherche.
|
||||
|
||||
## [Quiz post-cours](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/37)
|
||||
|
||||
## Révision et auto-apprentissage
|
||||
|
||||
Dans cette leçon, vous avez appris à entraîner, déployer et consommer un modèle pour prédire le risque d'insuffisance cardiaque avec le SDK Azure ML dans le cloud. Consultez cette [documentation](https://docs.microsoft.com/python/api/overview/azure/ml/?view=azure-ml-py?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) pour plus d'informations sur le SDK Azure ML. Essayez de créer votre propre modèle avec le SDK Azure ML.
|
||||
|
||||
## Devoir
|
||||
|
||||
[Projet de science des données avec le SDK Azure ML](assignment.md)
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction humaine professionnelle. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,23 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "386efdbc19786951341f6956247ee990",
|
||||
"translation_date": "2025-08-24T13:14:07+00:00",
|
||||
"source_file": "5-Data-Science-In-Cloud/19-Azure/assignment.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Projet de Data Science avec Azure ML SDK
|
||||
|
||||
## Instructions
|
||||
|
||||
Nous avons vu comment utiliser la plateforme Azure ML pour entraîner, déployer et consommer un modèle avec Azure ML SDK. Maintenant, cherchez des données que vous pourriez utiliser pour entraîner un autre modèle, le déployer et le consommer. Vous pouvez rechercher des ensembles de données sur [Kaggle](https://kaggle.com) et [Azure Open Datasets](https://azure.microsoft.com/services/open-datasets/catalog?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109).
|
||||
|
||||
## Critères d'évaluation
|
||||
|
||||
| Exemplaire | Adéquat | À améliorer |
|
||||
|------------|---------|-------------|
|
||||
|Lors de la configuration AutoML, vous avez consulté la documentation du SDK pour voir quels paramètres vous pouviez utiliser. Vous avez effectué un entraînement sur un ensemble de données via AutoML en utilisant Azure ML SDK, et vous avez vérifié les explications du modèle. Vous avez déployé le meilleur modèle et vous avez pu le consommer via Azure ML SDK. | Vous avez effectué un entraînement sur un ensemble de données via AutoML en utilisant Azure ML SDK, et vous avez vérifié les explications du modèle. Vous avez déployé le meilleur modèle et vous avez pu le consommer via Azure ML SDK. | Vous avez effectué un entraînement sur un ensemble de données via AutoML en utilisant Azure ML SDK. Vous avez déployé le meilleur modèle et vous avez pu le consommer via Azure ML SDK. |
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,33 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "8dfe141a0f46f7d253e07f74913c7f44",
|
||||
"translation_date": "2025-08-24T12:57:55+00:00",
|
||||
"source_file": "5-Data-Science-In-Cloud/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# La Data Science dans le Cloud
|
||||
|
||||

|
||||
|
||||
> Photo par [Jelleke Vanooteghem](https://unsplash.com/@ilumire) sur [Unsplash](https://unsplash.com/s/photos/cloud?orientation=landscape)
|
||||
|
||||
Lorsqu'il s'agit de faire de la data science avec des données massives, le cloud peut être une véritable révolution. Dans les trois prochaines leçons, nous allons découvrir ce qu'est le cloud et pourquoi il peut être très utile. Nous allons également explorer un jeu de données sur l'insuffisance cardiaque et construire un modèle pour aider à évaluer la probabilité qu'une personne souffre d'une insuffisance cardiaque. Nous utiliserons la puissance du cloud pour entraîner, déployer et consommer un modèle de deux manières différentes. Une première méthode en utilisant uniquement l'interface utilisateur dans une approche Low code/No code, et une seconde méthode en utilisant le kit de développement logiciel Azure Machine Learning (Azure ML SDK).
|
||||
|
||||

|
||||
|
||||
### Sujets
|
||||
|
||||
1. [Pourquoi utiliser le Cloud pour la Data Science ?](17-Introduction/README.md)
|
||||
2. [La Data Science dans le Cloud : L'approche "Low code/No code"](18-Low-Code/README.md)
|
||||
3. [La Data Science dans le Cloud : L'approche "Azure ML SDK"](19-Azure/README.md)
|
||||
|
||||
### Crédits
|
||||
Ces leçons ont été écrites avec ☁️ et 💕 par [Maud Levy](https://twitter.com/maudstweets) et [Tiffany Souterre](https://twitter.com/TiffanySouterre)
|
||||
|
||||
Les données pour le projet de prédiction de l'insuffisance cardiaque proviennent de [
|
||||
Larxel](https://www.kaggle.com/andrewmvd) sur [Kaggle](https://www.kaggle.com/andrewmvd/heart-failure-clinical-data). Elles sont sous licence [Attribution 4.0 International (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/)
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,153 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "67076ed50f54e7d26ba1ba378d6078f1",
|
||||
"translation_date": "2025-08-24T12:53:48+00:00",
|
||||
"source_file": "6-Data-Science-In-Wild/20-Real-World-Examples/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# La Science des Données dans le Monde Réel
|
||||
|
||||
|  ](../../sketchnotes/20-DataScience-RealWorld.png) |
|
||||
| :--------------------------------------------------------------------------------------------------------------: |
|
||||
| La Science des Données dans le Monde Réel - _Sketchnote par [@nitya](https://twitter.com/nitya)_ |
|
||||
|
||||
Nous sommes presque à la fin de ce parcours d'apprentissage !
|
||||
|
||||
Nous avons commencé par définir la science des données et l'éthique, exploré divers outils et techniques pour l'analyse et la visualisation des données, passé en revue le cycle de vie de la science des données, et examiné comment étendre et automatiser les flux de travail de la science des données grâce aux services de cloud computing. Vous vous demandez probablement : _"Comment puis-je appliquer tout cela dans des contextes réels ?"_
|
||||
|
||||
Dans cette leçon, nous allons explorer les applications concrètes de la science des données dans l'industrie et plonger dans des exemples spécifiques dans les domaines de la recherche, des humanités numériques et de la durabilité. Nous examinerons des opportunités de projets étudiants et conclurons avec des ressources utiles pour continuer votre parcours d'apprentissage !
|
||||
|
||||
## Quiz Avant la Leçon
|
||||
|
||||
[Quiz avant la leçon](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/38)
|
||||
|
||||
## Science des Données + Industrie
|
||||
|
||||
Grâce à la démocratisation de l'IA, les développeurs trouvent désormais plus facile de concevoir et d'intégrer des prises de décision basées sur l'IA et des insights basés sur les données dans les expériences utilisateur et les flux de travail de développement. Voici quelques exemples de l'application de la science des données dans des contextes réels à travers l'industrie :
|
||||
|
||||
* [Google Flu Trends](https://www.wired.com/2015/10/can-learn-epic-failure-google-flu-trends/) a utilisé la science des données pour corréler les termes de recherche avec les tendances de la grippe. Bien que l'approche ait eu des défauts, elle a sensibilisé aux possibilités (et aux défis) des prédictions de santé basées sur les données.
|
||||
|
||||
* [Prédictions de Routage UPS](https://www.technologyreview.com/2018/11/21/139000/how-ups-uses-ai-to-outsmart-bad-weather/) - explique comment UPS utilise la science des données et l'apprentissage automatique pour prédire les itinéraires optimaux de livraison, en tenant compte des conditions météorologiques, des schémas de trafic, des délais de livraison, et plus encore.
|
||||
|
||||
* [Visualisation des Itinéraires des Taxis de NYC](http://chriswhong.github.io/nyctaxi/) - les données recueillies grâce aux [lois sur la liberté d'information](https://chriswhong.com/open-data/foil_nyc_taxi/) ont permis de visualiser une journée dans la vie des taxis de NYC, nous aidant à comprendre comment ils naviguent dans la ville animée, l'argent qu'ils gagnent, et la durée des trajets sur une période de 24 heures.
|
||||
|
||||
* [Uber Data Science Workbench](https://eng.uber.com/dsw/) - utilise les données (sur les lieux de prise en charge et de dépose, la durée des trajets, les itinéraires préférés, etc.) recueillies à partir de millions de trajets Uber *quotidiennement* pour construire un outil d'analyse des données permettant de prendre des décisions sur les prix, la sécurité, la détection de fraude et la navigation.
|
||||
|
||||
* [Analyse des Sports](https://towardsdatascience.com/scope-of-analytics-in-sports-world-37ed09c39860) - se concentre sur l'_analyse prédictive_ (analyse des équipes et des joueurs - pensez à [Moneyball](https://datasciencedegree.wisconsin.edu/blog/moneyball-proves-importance-big-data-big-ideas/) - et gestion des fans) et la _visualisation des données_ (tableaux de bord des équipes et des fans, jeux, etc.) avec des applications comme le recrutement de talents, les paris sportifs et la gestion des inventaires/lieux.
|
||||
|
||||
* [Science des Données dans la Banque](https://data-flair.training/blogs/data-science-in-banking/) - met en évidence la valeur de la science des données dans l'industrie financière avec des applications allant de la modélisation des risques et la détection de fraude, à la segmentation des clients, la prédiction en temps réel et les systèmes de recommandation. L'analyse prédictive alimente également des mesures critiques comme les [scores de crédit](https://dzone.com/articles/using-big-data-and-predictive-analytics-for-credit).
|
||||
|
||||
* [Science des Données dans la Santé](https://data-flair.training/blogs/data-science-in-healthcare/) - met en lumière des applications comme l'imagerie médicale (par exemple, IRM, radiographie, scanner), la génomique (séquençage ADN), le développement de médicaments (évaluation des risques, prédiction de succès), l'analyse prédictive (soins aux patients et logistique des fournitures), le suivi et la prévention des maladies, etc.
|
||||
|
||||
 Crédit Image : [Data Flair: 6 Amazing Data Science Applications ](https://data-flair.training/blogs/data-science-applications/)
|
||||
|
||||
La figure montre d'autres domaines et exemples d'application des techniques de science des données. Vous voulez explorer d'autres applications ? Consultez la section [Révision & Auto-Étude](../../../../6-Data-Science-In-Wild/20-Real-World-Examples) ci-dessous.
|
||||
|
||||
## Science des Données + Recherche
|
||||
|
||||
|  ](../../sketchnotes/20-DataScience-Research.png) |
|
||||
| :---------------------------------------------------------------------------------------------------------------: |
|
||||
| Science des Données & Recherche - _Sketchnote par [@nitya](https://twitter.com/nitya)_ |
|
||||
|
||||
Alors que les applications concrètes se concentrent souvent sur des cas d'utilisation industriels à grande échelle, les applications et projets de _recherche_ peuvent être utiles sous deux perspectives :
|
||||
|
||||
* _opportunités d'innovation_ - explorer le prototypage rapide de concepts avancés et tester des expériences utilisateur pour des applications de prochaine génération.
|
||||
* _défis de déploiement_ - enquêter sur les dommages potentiels ou les conséquences involontaires des technologies de science des données dans des contextes réels.
|
||||
|
||||
Pour les étudiants, ces projets de recherche peuvent offrir des opportunités d'apprentissage et de collaboration qui améliorent votre compréhension du sujet, et élargissent votre sensibilisation et votre engagement avec des personnes ou des équipes travaillant dans des domaines d'intérêt. À quoi ressemblent les projets de recherche et comment peuvent-ils avoir un impact ?
|
||||
|
||||
Prenons un exemple - l'[Étude MIT Gender Shades](http://gendershades.org/overview.html) de Joy Buolamwini (MIT Media Labs) avec un [article de recherche phare](http://proceedings.mlr.press/v81/buolamwini18a/buolamwini18a.pdf) co-écrit avec Timnit Gebru (alors chez Microsoft Research) qui se concentrait sur :
|
||||
|
||||
* **Quoi :** L'objectif du projet de recherche était d'_évaluer les biais présents dans les algorithmes et ensembles de données d'analyse faciale automatisée_ en fonction du genre et du type de peau.
|
||||
* **Pourquoi :** L'analyse faciale est utilisée dans des domaines comme l'application de la loi, la sécurité des aéroports, les systèmes de recrutement et plus encore - des contextes où des classifications inexactes (par exemple, dues à des biais) peuvent causer des dommages économiques et sociaux potentiels aux individus ou groupes concernés. Comprendre (et éliminer ou atténuer) les biais est essentiel pour une utilisation équitable.
|
||||
* **Comment :** Les chercheurs ont reconnu que les benchmarks existants utilisaient principalement des sujets à peau claire, et ont créé un nouvel ensemble de données (1000+ images) _plus équilibré_ par genre et type de peau. L'ensemble de données a été utilisé pour évaluer la précision de trois produits de classification de genre (de Microsoft, IBM & Face++).
|
||||
|
||||
Les résultats ont montré que bien que la précision globale de la classification soit bonne, il y avait une différence notable dans les taux d'erreur entre divers sous-groupes - avec un **mauvais genre** plus élevé pour les femmes ou les personnes à peau foncée, indicatif de biais.
|
||||
|
||||
**Principaux Résultats :** Sensibilisation accrue au fait que la science des données nécessite des _ensembles de données représentatifs_ (sous-groupes équilibrés) et des _équipes inclusives_ (origines diverses) pour reconnaître et éliminer ou atténuer ces biais plus tôt dans les solutions d'IA. Les efforts de recherche comme celui-ci sont également essentiels pour que de nombreuses organisations définissent des principes et des pratiques pour une _IA responsable_ afin d'améliorer l'équité dans leurs produits et processus d'IA.
|
||||
|
||||
**Vous voulez en savoir plus sur les efforts de recherche pertinents chez Microsoft ?**
|
||||
|
||||
* Consultez les [Projets de Recherche Microsoft](https://www.microsoft.com/research/research-area/artificial-intelligence/?facet%5Btax%5D%5Bmsr-research-area%5D%5B%5D=13556&facet%5Btax%5D%5Bmsr-content-type%5D%5B%5D=msr-project) sur l'Intelligence Artificielle.
|
||||
* Explorez les projets étudiants de la [Microsoft Research Data Science Summer School](https://www.microsoft.com/en-us/research/academic-program/data-science-summer-school/).
|
||||
* Consultez le projet [Fairlearn](https://fairlearn.org/) et les initiatives [IA Responsable](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1%3aprimaryr6).
|
||||
|
||||
## Science des Données + Humanités
|
||||
|
||||
|  ](../../sketchnotes/20-DataScience-Humanities.png) |
|
||||
| :---------------------------------------------------------------------------------------------------------------: |
|
||||
| Science des Données & Humanités Numériques - _Sketchnote par [@nitya](https://twitter.com/nitya)_ |
|
||||
|
||||
Les Humanités Numériques [ont été définies](https://digitalhumanities.stanford.edu/about-dh-stanford) comme "une collection de pratiques et d'approches combinant des méthodes computationnelles avec une enquête humaniste". Les [projets de Stanford](https://digitalhumanities.stanford.edu/projects) comme _"rebooting history"_ et _"poetic thinking"_ illustrent le lien entre les [Humanités Numériques et la Science des Données](https://digitalhumanities.stanford.edu/digital-humanities-and-data-science) - en mettant l'accent sur des techniques comme l'analyse de réseau, la visualisation de l'information, l'analyse spatiale et textuelle qui peuvent nous aider à revisiter des ensembles de données historiques et littéraires pour en tirer de nouvelles perspectives.
|
||||
|
||||
*Vous voulez explorer et étendre un projet dans ce domaine ?*
|
||||
|
||||
Consultez ["Emily Dickinson and the Meter of Mood"](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671) - un excellent exemple de [Jen Looper](https://twitter.com/jenlooper) qui pose la question de savoir comment nous pouvons utiliser la science des données pour revisiter une poésie familière et réévaluer sa signification et les contributions de son auteur dans de nouveaux contextes. Par exemple, _pouvons-nous prédire la saison dans laquelle un poème a été écrit en analysant son ton ou son sentiment_ - et qu'est-ce que cela nous dit sur l'état d'esprit de l'auteur pendant la période concernée ?
|
||||
|
||||
Pour répondre à cette question, nous suivons les étapes du cycle de vie de la science des données :
|
||||
* [`Acquisition des Données`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#acquiring-the-dataset) - pour collecter un ensemble de données pertinent pour l'analyse. Les options incluent l'utilisation d'une API (par exemple, [Poetry DB API](https://poetrydb.org/index.html)) ou le scraping de pages web (par exemple, [Project Gutenberg](https://www.gutenberg.org/files/12242/12242-h/12242-h.htm)) avec des outils comme [Scrapy](https://scrapy.org/).
|
||||
* [`Nettoyage des Données`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#clean-the-data) - explique comment le texte peut être formaté, assaini et simplifié à l'aide d'outils de base comme Visual Studio Code et Microsoft Excel.
|
||||
* [`Analyse des Données`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#working-with-the-data-in-a-notebook) - explique comment nous pouvons maintenant importer l'ensemble de données dans des "Notebooks" pour analyse en utilisant des packages Python (comme pandas, numpy et matplotlib) pour organiser et visualiser les données.
|
||||
* [`Analyse des Sentiments`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#sentiment-analysis-using-cognitive-services) - explique comment nous pouvons intégrer des services cloud comme Text Analytics, en utilisant des outils low-code comme [Power Automate](https://flow.microsoft.com/en-us/) pour des flux de travail automatisés de traitement des données.
|
||||
|
||||
En utilisant ce flux de travail, nous pouvons explorer les impacts saisonniers sur le sentiment des poèmes, et nous aider à façonner nos propres perspectives sur l'auteur. Essayez-le vous-même - puis étendez le notebook pour poser d'autres questions ou visualiser les données de nouvelles manières !
|
||||
|
||||
> Vous pouvez utiliser certains des outils du [Digital Humanities toolkit](https://github.com/Digital-Humanities-Toolkit) pour poursuivre ces pistes d'enquête.
|
||||
|
||||
## Science des Données + Durabilité
|
||||
|
||||
|  ](../../sketchnotes/20-DataScience-Sustainability.png) |
|
||||
| :---------------------------------------------------------------------------------------------------------------: |
|
||||
| Science des Données & Durabilité - _Sketchnote par [@nitya](https://twitter.com/nitya)_ |
|
||||
|
||||
L'[Agenda 2030 pour le Développement Durable](https://sdgs.un.org/2030agenda) - adopté par tous les membres des Nations Unies en 2015 - identifie 17 objectifs, dont certains se concentrent sur **Protéger la Planète** contre la dégradation et l'impact du changement climatique. L'initiative [Microsoft Sustainability](https://www.microsoft.com/en-us/sustainability) soutient ces objectifs en explorant les moyens par lesquels les solutions technologiques peuvent soutenir et construire des futurs plus durables avec un [focus sur 4 objectifs](https://dev.to/azure/a-visual-guide-to-sustainable-software-engineering-53hh) - être négatif en carbone, positif en eau, zéro déchet, et bio-diversifié d'ici 2030.
|
||||
|
||||
Relever ces défis de manière évolutive et rapide nécessite une réflexion à l'échelle du cloud - et des données à grande échelle. L'initiative [Planetary Computer](https://planetarycomputer.microsoft.com/) fournit 4 composants pour aider les scientifiques des données et les développeurs dans cet effort :
|
||||
|
||||
* [Catalogue de Données](https://planetarycomputer.microsoft.com/catalog) - avec des pétaoctets de données sur les systèmes terrestres (gratuites et hébergées sur Azure).
|
||||
* [API Planétaire](https://planetarycomputer.microsoft.com/docs/reference/stac/) - pour aider les utilisateurs à rechercher des données pertinentes dans l'espace et le temps.
|
||||
* [Hub](https://planetarycomputer.microsoft.com/docs/overview/environment/) - environnement géré pour les scientifiques afin de traiter des ensembles de données géospatiales massifs.
|
||||
* [Applications](https://planetarycomputer.microsoft.com/applications) - vitrine des cas d'utilisation et des outils pour des insights sur la durabilité.
|
||||
**Le projet Planetary Computer est actuellement en aperçu (à partir de septembre 2021)** - voici comment vous pouvez commencer à contribuer à des solutions durables en utilisant la science des données.
|
||||
|
||||
* [Demandez un accès](https://planetarycomputer.microsoft.com/account/request) pour débuter l'exploration et vous connecter avec vos pairs.
|
||||
* [Explorez la documentation](https://planetarycomputer.microsoft.com/docs/overview/about) pour comprendre les ensembles de données et les API pris en charge.
|
||||
* Découvrez des applications comme [Ecosystem Monitoring](https://analytics-lab.org/ecosystemmonitoring/) pour trouver des idées d'applications inspirantes.
|
||||
|
||||
Réfléchissez à la manière dont vous pouvez utiliser la visualisation de données pour révéler ou amplifier des informations pertinentes sur des sujets comme le changement climatique et la déforestation. Ou pensez à la façon dont ces informations peuvent être utilisées pour créer de nouvelles expériences utilisateur qui motivent des changements de comportement pour un mode de vie plus durable.
|
||||
|
||||
## Science des données + Étudiants
|
||||
|
||||
Nous avons parlé d'applications concrètes dans l'industrie et la recherche, et exploré des exemples d'applications de la science des données dans les humanités numériques et la durabilité. Alors, comment pouvez-vous développer vos compétences et partager votre expertise en tant que débutants en science des données ?
|
||||
|
||||
Voici quelques exemples de projets étudiants en science des données pour vous inspirer.
|
||||
|
||||
* [École d'été en science des données de MSR](https://www.microsoft.com/en-us/research/academic-program/data-science-summer-school/#!projects) avec des [projets](https://github.com/msr-ds3) sur GitHub explorant des sujets comme :
|
||||
- [Biais racial dans l'utilisation de la force par la police](https://www.microsoft.com/en-us/research/video/data-science-summer-school-2019-replicating-an-empirical-analysis-of-racial-differences-in-police-use-of-force/) | [Github](https://github.com/msr-ds3/stop-question-frisk)
|
||||
- [Fiabilité du système de métro de NYC](https://www.microsoft.com/en-us/research/video/data-science-summer-school-2018-exploring-the-reliability-of-the-nyc-subway-system/) | [Github](https://github.com/msr-ds3/nyctransit)
|
||||
* [Numérisation de la culture matérielle : Exploration des distributions socio-économiques à Sirkap](https://claremont.maps.arcgis.com/apps/Cascade/index.html?appid=bdf2aef0f45a4674ba41cd373fa23afc) - par [Ornella Altunyan](https://twitter.com/ornelladotcom) et son équipe à Claremont, utilisant [ArcGIS StoryMaps](https://storymaps.arcgis.com/).
|
||||
|
||||
## 🚀 Défi
|
||||
|
||||
Recherchez des articles qui recommandent des projets de science des données adaptés aux débutants - comme [ces 50 domaines thématiques](https://www.upgrad.com/blog/data-science-project-ideas-topics-beginners/) ou [ces 21 idées de projets](https://www.intellspot.com/data-science-project-ideas) ou [ces 16 projets avec code source](https://data-flair.training/blogs/data-science-project-ideas/) que vous pouvez déconstruire et remixer. Et n'oubliez pas de bloguer sur vos parcours d'apprentissage et de partager vos idées avec nous tous.
|
||||
|
||||
## Quiz post-conférence
|
||||
|
||||
[Quiz post-conférence](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/39)
|
||||
|
||||
## Révision & Auto-apprentissage
|
||||
|
||||
Vous voulez explorer davantage de cas d'utilisation ? Voici quelques articles pertinents :
|
||||
* [17 Applications et exemples de science des données](https://builtin.com/data-science/data-science-applications-examples) - juillet 2021
|
||||
* [11 Applications époustouflantes de la science des données dans le monde réel](https://myblindbird.com/data-science-applications-real-world/) - mai 2021
|
||||
* [La science des données dans le monde réel](https://towardsdatascience.com/data-science-in-the-real-world/home) - Collection d'articles
|
||||
* Science des données dans : [Éducation](https://data-flair.training/blogs/data-science-in-education/), [Agriculture](https://data-flair.training/blogs/data-science-in-agriculture/), [Finance](https://data-flair.training/blogs/data-science-in-finance/), [Cinéma](https://data-flair.training/blogs/data-science-at-movies/) et plus encore.
|
||||
|
||||
## Devoir
|
||||
|
||||
[Explorez un ensemble de données de Planetary Computer](assignment.md)
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,48 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "d1e05715f9d97de6c4f1fb0c5a4702c0",
|
||||
"translation_date": "2025-08-24T12:56:54+00:00",
|
||||
"source_file": "6-Data-Science-In-Wild/20-Real-World-Examples/assignment.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Explorer un Jeu de Données du Planetary Computer
|
||||
|
||||
## Instructions
|
||||
|
||||
Dans cette leçon, nous avons abordé divers domaines d'application de la science des données, avec des études approfondies sur des exemples liés à la recherche, la durabilité et les humanités numériques. Dans cet exercice, vous explorerez l'un de ces exemples plus en détail et appliquerez vos connaissances sur les visualisations et analyses de données pour tirer des enseignements à partir de données sur la durabilité.
|
||||
|
||||
Le projet [Planetary Computer](https://planetarycomputer.microsoft.com/) propose des jeux de données et des API accessibles avec un compte - demandez-en un si vous souhaitez essayer l'étape bonus de l'exercice. Le site offre également une fonctionnalité [Explorer](https://planetarycomputer.microsoft.com/explore) que vous pouvez utiliser sans créer de compte.
|
||||
|
||||
`Étapes :`
|
||||
L'interface Explorer (illustrée dans la capture d'écran ci-dessous) vous permet de sélectionner un jeu de données (parmi les options proposées), une requête prédéfinie (pour filtrer les données) et une option de rendu (pour créer une visualisation pertinente). Dans cet exercice, votre tâche est de :
|
||||
|
||||
1. Lire la [documentation de l'Explorer](https://planetarycomputer.microsoft.com/docs/overview/explorer/) - comprendre les options.
|
||||
2. Explorer le [Catalogue](https://planetarycomputer.microsoft.com/catalog) des jeux de données - découvrir leur utilité.
|
||||
3. Utiliser l'Explorer - choisir un jeu de données qui vous intéresse, sélectionner une requête et une option de rendu pertinentes.
|
||||
|
||||

|
||||
|
||||
`Votre tâche :`
|
||||
Étudiez maintenant la visualisation affichée dans le navigateur et répondez aux questions suivantes :
|
||||
* Quelles _caractéristiques_ le jeu de données possède-t-il ?
|
||||
* Quels _enseignements_ ou résultats la visualisation fournit-elle ?
|
||||
* Quelles sont les _implications_ de ces enseignements pour les objectifs de durabilité du projet ?
|
||||
* Quelles sont les _limites_ de la visualisation (c'est-à-dire, quelles informations n'avez-vous pas obtenues) ?
|
||||
* Si vous pouviez accéder aux données brutes, quelles _visualisations alternatives_ créeriez-vous, et pourquoi ?
|
||||
|
||||
`Points Bonus :`
|
||||
Demandez un compte - et connectez-vous une fois accepté.
|
||||
* Utilisez l'option _Launch Hub_ pour ouvrir les données brutes dans un Notebook.
|
||||
* Explorez les données de manière interactive et implémentez les visualisations alternatives que vous avez imaginées.
|
||||
* Analysez maintenant vos visualisations personnalisées - avez-vous pu tirer les enseignements qui vous manquaient auparavant ?
|
||||
|
||||
## Grille d'évaluation
|
||||
|
||||
Exemplaire | Adéquat | À améliorer
|
||||
--- | --- | -- |
|
||||
Les cinq questions principales ont été répondues. L'étudiant a clairement identifié comment les visualisations actuelles et alternatives pourraient fournir des enseignements sur les objectifs ou résultats de durabilité. | L'étudiant a répondu en détail à au moins les trois premières questions, montrant qu'il a eu une expérience pratique avec l'Explorer. | L'étudiant n'a pas répondu à plusieurs questions ou a fourni des réponses insuffisantes, indiquant qu'aucune tentative significative n'a été faite pour le projet. |
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,23 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "07faf02ff163e609edf0b0308dc5d4e6",
|
||||
"translation_date": "2025-08-24T12:50:55+00:00",
|
||||
"source_file": "6-Data-Science-In-Wild/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# La science des données dans la nature
|
||||
|
||||
Applications concrètes de la science des données dans divers secteurs.
|
||||
|
||||
### Sujets
|
||||
|
||||
1. [La science des données dans le monde réel](20-Real-World-Examples/README.md)
|
||||
|
||||
### Crédits
|
||||
|
||||
Écrit avec ❤️ par [Nitya Narasimhan](https://twitter.com/nitya)
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,21 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "c06b12caf3c901eb3156e3dd5b0aea56",
|
||||
"translation_date": "2025-08-24T11:56:49+00:00",
|
||||
"source_file": "CODE_OF_CONDUCT.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Code de conduite Open Source de Microsoft
|
||||
|
||||
Ce projet a adopté le [Code de conduite Open Source de Microsoft](https://opensource.microsoft.com/codeofconduct/).
|
||||
|
||||
Ressources :
|
||||
|
||||
- [Code de conduite Open Source de Microsoft](https://opensource.microsoft.com/codeofconduct/)
|
||||
- [FAQ sur le Code de conduite de Microsoft](https://opensource.microsoft.com/codeofconduct/faq/)
|
||||
- Contactez [opencode@microsoft.com](mailto:opencode@microsoft.com) pour toute question ou préoccupation
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction humaine professionnelle. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,21 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "61aff2b3273d4ab66709493b43f91ca1",
|
||||
"translation_date": "2025-08-24T11:58:23+00:00",
|
||||
"source_file": "CONTRIBUTING.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Contribuer
|
||||
|
||||
Ce projet accueille les contributions et suggestions. La plupart des contributions nécessitent que vous acceptiez un Accord de Licence de Contributeur (CLA) déclarant que vous avez le droit, et que vous accordez effectivement, les droits nécessaires pour que nous puissions utiliser votre contribution. Pour plus de détails, visitez https://cla.microsoft.com.
|
||||
|
||||
Lorsque vous soumettez une pull request, un CLA-bot déterminera automatiquement si vous devez fournir un CLA et annotera la PR en conséquence (par exemple, étiquette, commentaire). Suivez simplement les instructions fournies par le bot. Vous n'aurez à le faire qu'une seule fois pour tous les dépôts utilisant notre CLA.
|
||||
|
||||
Ce projet a adopté le [Code de Conduite Open Source de Microsoft](https://opensource.microsoft.com/codeofconduct/).
|
||||
Pour plus d'informations, consultez la [FAQ sur le Code de Conduite](https://opensource.microsoft.com/codeofconduct/faq/)
|
||||
ou contactez [opencode@microsoft.com](mailto:opencode@microsoft.com) pour toute question ou commentaire supplémentaire.
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,162 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "6bb17a440fdabf0823105136a5b81029",
|
||||
"translation_date": "2025-08-24T11:51:58+00:00",
|
||||
"source_file": "README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Science des Données pour Débutants - Un Programme
|
||||
|
||||
Azure Cloud Advocates chez Microsoft sont ravis de proposer un programme de 10 semaines et 20 leçons dédié à la science des données. Chaque leçon comprend des quiz avant et après la leçon, des instructions écrites pour compléter la leçon, une solution et un devoir. Notre pédagogie basée sur les projets vous permet d'apprendre tout en construisant, une méthode éprouvée pour ancrer de nouvelles compétences.
|
||||
|
||||
**Un grand merci à nos auteurs :** [Jasmine Greenaway](https://www.twitter.com/paladique), [Dmitry Soshnikov](http://soshnikov.com), [Nitya Narasimhan](https://twitter.com/nitya), [Jalen McGee](https://twitter.com/JalenMcG), [Jen Looper](https://twitter.com/jenlooper), [Maud Levy](https://twitter.com/maudstweets), [Tiffany Souterre](https://twitter.com/TiffanySouterre), [Christopher Harrison](https://www.twitter.com/geektrainer).
|
||||
|
||||
**🙏 Remerciements spéciaux 🙏 à nos [Microsoft Student Ambassadors](https://studentambassadors.microsoft.com/) auteurs, relecteurs et contributeurs de contenu,** notamment Aaryan Arora, [Aditya Garg](https://github.com/AdityaGarg00), [Alondra Sanchez](https://www.linkedin.com/in/alondra-sanchez-molina/), [Ankita Singh](https://www.linkedin.com/in/ankitasingh007), [Anupam Mishra](https://www.linkedin.com/in/anupam--mishra/), [Arpita Das](https://www.linkedin.com/in/arpitadas01/), ChhailBihari Dubey, [Dibri Nsofor](https://www.linkedin.com/in/dibrinsofor), [Dishita Bhasin](https://www.linkedin.com/in/dishita-bhasin-7065281bb), [Majd Safi](https://www.linkedin.com/in/majd-s/), [Max Blum](https://www.linkedin.com/in/max-blum-6036a1186/), [Miguel Correa](https://www.linkedin.com/in/miguelmque/), [Mohamma Iftekher (Iftu) Ebne Jalal](https://twitter.com/iftu119), [Nawrin Tabassum](https://www.linkedin.com/in/nawrin-tabassum), [Raymond Wangsa Putra](https://www.linkedin.com/in/raymond-wp/), [Rohit Yadav](https://www.linkedin.com/in/rty2423), Samridhi Sharma, [Sanya Sinha](https://www.linkedin.com/mwlite/in/sanya-sinha-13aab1200), [Sheena Narula](https://www.linkedin.com/in/sheena-narua-n/), [Tauqeer Ahmad](https://www.linkedin.com/in/tauqeerahmad5201/), Yogendrasingh Pawar, [Vidushi Gupta](https://www.linkedin.com/in/vidushi-gupta07/), [Jasleen Sondhi](https://www.linkedin.com/in/jasleen-sondhi/)
|
||||
|
||||
| ](./sketchnotes/00-Title.png)|
|
||||
|:---:|
|
||||
| Science des Données pour Débutants - _Sketchnote par [@nitya](https://twitter.com/nitya)_ |
|
||||
|
||||
## Annonce - Nouveau programme sur l'IA générative tout juste publié !
|
||||
|
||||
Nous venons de publier un programme de 12 leçons sur l'IA générative. Venez apprendre des sujets tels que :
|
||||
|
||||
- la création de prompts et l'ingénierie des prompts
|
||||
- la génération d'applications de texte et d'images
|
||||
- les applications de recherche
|
||||
|
||||
Comme d'habitude, chaque leçon comprend des devoirs, des vérifications de connaissances et des défis.
|
||||
|
||||
Découvrez-le ici :
|
||||
|
||||
> https://aka.ms/genai-beginners
|
||||
|
||||
# Êtes-vous étudiant ?
|
||||
|
||||
Commencez avec les ressources suivantes :
|
||||
|
||||
- [Page Hub Étudiant](https://docs.microsoft.com/en-gb/learn/student-hub?WT.mc_id=academic-77958-bethanycheum) Sur cette page, vous trouverez des ressources pour débutants, des packs étudiants et même des moyens d'obtenir un bon pour une certification gratuite. C'est une page à mettre en favori et à consulter régulièrement, car nous mettons à jour le contenu au moins une fois par mois.
|
||||
- [Microsoft Learn Student Ambassadors](https://studentambassadors.microsoft.com?WT.mc_id=academic-77958-bethanycheum) Rejoignez une communauté mondiale d'ambassadeurs étudiants, cela pourrait être votre porte d'entrée chez Microsoft.
|
||||
|
||||
# Pour Commencer
|
||||
|
||||
> **Enseignants** : nous avons [inclus quelques suggestions](for-teachers.md) sur la façon d'utiliser ce programme. Nous serions ravis de recevoir vos retours [dans notre forum de discussion](https://github.com/microsoft/Data-Science-For-Beginners/discussions) !
|
||||
|
||||
> **[Étudiants](https://aka.ms/student-page)** : pour utiliser ce programme de manière autonome, clonez l'intégralité du dépôt et complétez les exercices par vous-même, en commençant par un quiz pré-lecture. Ensuite, lisez la leçon et complétez le reste des activités. Essayez de créer les projets en comprenant les leçons plutôt qu'en copiant le code de solution ; cependant, ce code est disponible dans les dossiers /solutions de chaque leçon orientée projet. Une autre idée serait de former un groupe d'étude avec des amis et de parcourir le contenu ensemble. Pour aller plus loin, nous recommandons [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/qprpajyoy3x0g7?WT.mc_id=academic-77958-bethanycheum).
|
||||
|
||||
## Rencontrez l'Équipe
|
||||
|
||||
[](https://youtu.be/8mzavjQSMM4 "Vidéo promo")
|
||||
|
||||
**Gif par** [Mohit Jaisal](https://www.linkedin.com/in/mohitjaisal)
|
||||
|
||||
> 🎥 Cliquez sur l'image ci-dessus pour une vidéo sur le projet et les personnes qui l'ont créé !
|
||||
|
||||
## Pédagogie
|
||||
|
||||
Nous avons choisi deux principes pédagogiques lors de la création de ce programme : garantir qu'il soit basé sur des projets et qu'il inclue des quiz fréquents. À la fin de cette série, les étudiants auront appris les principes de base de la science des données, y compris les concepts éthiques, la préparation des données, différentes façons de travailler avec les données, la visualisation des données, l'analyse des données, des cas d'utilisation réels de la science des données, et plus encore.
|
||||
|
||||
De plus, un quiz à faible enjeu avant un cours oriente l'intention de l'étudiant vers l'apprentissage d'un sujet, tandis qu'un second quiz après le cours assure une meilleure rétention. Ce programme a été conçu pour être flexible et amusant et peut être suivi en totalité ou en partie. Les projets commencent petits et deviennent de plus en plus complexes à la fin du cycle de 10 semaines.
|
||||
|
||||
> Retrouvez notre [Code de Conduite](CODE_OF_CONDUCT.md), nos [Directives de Contribution](CONTRIBUTING.md), et nos [Directives de Traduction](TRANSLATIONS.md). Nous accueillons vos retours constructifs !
|
||||
|
||||
## Chaque leçon comprend :
|
||||
|
||||
- Un sketchnote optionnel
|
||||
- Une vidéo complémentaire optionnelle
|
||||
- Un quiz d'échauffement avant la leçon
|
||||
- Une leçon écrite
|
||||
- Pour les leçons basées sur des projets, des guides étape par étape pour construire le projet
|
||||
- Des vérifications de connaissances
|
||||
- Un défi
|
||||
- Des lectures complémentaires
|
||||
- Un devoir
|
||||
- Un quiz après la leçon
|
||||
|
||||
> **Une note sur les quiz** : Tous les quiz sont contenus dans le dossier Quiz-App, pour un total de 40 quiz de trois questions chacun. Ils sont liés dans les leçons, mais l'application de quiz peut être exécutée localement ou déployée sur Azure ; suivez les instructions dans le dossier `quiz-app`. Ils sont progressivement localisés.
|
||||
|
||||
## Leçons
|
||||
|
||||
| ](./sketchnotes/00-Roadmap.png)|
|
||||
|:---:|
|
||||
| Science des Données pour Débutants : Feuille de Route - _Sketchnote par [@nitya](https://twitter.com/nitya)_ |
|
||||
|
||||
| Numéro de Leçon | Sujet | Regroupement des Leçons | Objectifs d'Apprentissage | Leçon Liée | Auteur |
|
||||
| :-----------: | :----------------------------------------: | :--------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------: | :----: |
|
||||
| 01 | Définir la Science des Données | [Introduction](1-Introduction/README.md) | Apprenez les concepts de base de la science des données et comment elle est liée à l'intelligence artificielle, l'apprentissage automatique et les big data. | [leçon](1-Introduction/01-defining-data-science/README.md) [vidéo](https://youtu.be/beZ7Mb_oz9I) | [Dmitry](http://soshnikov.com) |
|
||||
| 02 | Éthique en Science des Données | [Introduction](1-Introduction/README.md) | Concepts, défis et cadres de l'éthique des données. | [leçon](1-Introduction/02-ethics/README.md) | [Nitya](https://twitter.com/nitya) |
|
||||
| 03 | Définir les Données | [Introduction](1-Introduction/README.md) | Comment les données sont classifiées et leurs sources courantes. | [leçon](1-Introduction/03-defining-data/README.md) | [Jasmine](https://www.twitter.com/paladique) |
|
||||
| 04 | Introduction aux Statistiques et Probabilités | [Introduction](1-Introduction/README.md) | Les techniques mathématiques de probabilité et de statistiques pour comprendre les données. | [leçon](1-Introduction/04-stats-and-probability/README.md) [vidéo](https://youtu.be/Z5Zy85g4Yjw) | [Dmitry](http://soshnikov.com) |
|
||||
| 05 | Travailler avec des Données Relationnelles | [Travailler avec les Données](2-Working-With-Data/README.md) | Introduction aux données relationnelles et aux bases de l'exploration et de l'analyse des données relationnelles avec le langage SQL (Structured Query Language). | [leçon](2-Working-With-Data/05-relational-databases/README.md) | [Christopher](https://www.twitter.com/geektrainer) | | |
|
||||
| 06 | Travailler avec des Données NoSQL | [Travailler avec les Données](2-Working-With-Data/README.md) | Introduction aux données non relationnelles, leurs différents types et les bases de l'exploration et de l'analyse des bases de données documentaires. | [leçon](2-Working-With-Data/06-non-relational/README.md) | [Jasmine](https://twitter.com/paladique)|
|
||||
| 07 | Travailler avec Python | [Travailler avec les Données](2-Working-With-Data/README.md) | Bases de l'utilisation de Python pour l'exploration des données avec des bibliothèques comme Pandas. Une compréhension de base de la programmation Python est recommandée. | [leçon](2-Working-With-Data/07-python/README.md) [vidéo](https://youtu.be/dZjWOGbsN4Y) | [Dmitry](http://soshnikov.com) |
|
||||
| 08 | Préparation des données | [Travailler avec les données](2-Working-With-Data/README.md) | Techniques pour nettoyer et transformer les données afin de gérer les défis liés aux données manquantes, inexactes ou incomplètes. | [leçon](2-Working-With-Data/08-data-preparation/README.md) | [Jasmine](https://www.twitter.com/paladique) |
|
||||
| 09 | Visualiser des quantités | [Visualisation des données](3-Data-Visualization/README.md) | Apprenez à utiliser Matplotlib pour visualiser des données sur les oiseaux 🦆 | [leçon](3-Data-Visualization/09-visualization-quantities/README.md) | [Jen](https://twitter.com/jenlooper) |
|
||||
| 10 | Visualiser les distributions de données | [Visualisation des données](3-Data-Visualization/README.md) | Visualiser des observations et des tendances dans un intervalle. | [leçon](3-Data-Visualization/10-visualization-distributions/README.md) | [Jen](https://twitter.com/jenlooper) |
|
||||
| 11 | Visualiser les proportions | [Visualisation des données](3-Data-Visualization/README.md) | Visualiser des pourcentages discrets et groupés. | [leçon](3-Data-Visualization/11-visualization-proportions/README.md) | [Jen](https://twitter.com/jenlooper) |
|
||||
| 12 | Visualiser les relations | [Visualisation des données](3-Data-Visualization/README.md) | Visualiser les connexions et corrélations entre des ensembles de données et leurs variables. | [leçon](3-Data-Visualization/12-visualization-relationships/README.md) | [Jen](https://twitter.com/jenlooper) |
|
||||
| 13 | Visualisations significatives | [Visualisation des données](3-Data-Visualization/README.md) | Techniques et conseils pour rendre vos visualisations utiles pour résoudre efficacement des problèmes et obtenir des insights. | [leçon](3-Data-Visualization/13-meaningful-visualizations/README.md) | [Jen](https://twitter.com/jenlooper) |
|
||||
| 14 | Introduction au cycle de vie de la science des données | [Cycle de vie](4-Data-Science-Lifecycle/README.md) | Introduction au cycle de vie de la science des données et à sa première étape : l'acquisition et l'extraction des données. | [leçon](4-Data-Science-Lifecycle/14-Introduction/README.md) | [Jasmine](https://twitter.com/paladique) |
|
||||
| 15 | Analyse | [Cycle de vie](4-Data-Science-Lifecycle/README.md) | Cette phase du cycle de vie de la science des données se concentre sur les techniques d'analyse des données. | [leçon](4-Data-Science-Lifecycle/15-analyzing/README.md) | [Jasmine](https://twitter.com/paladique) | | |
|
||||
| 16 | Communication | [Cycle de vie](4-Data-Science-Lifecycle/README.md) | Cette phase du cycle de vie de la science des données se concentre sur la présentation des insights issus des données de manière compréhensible pour les décideurs. | [leçon](4-Data-Science-Lifecycle/16-communication/README.md) | [Jalen](https://twitter.com/JalenMcG) | | |
|
||||
| 17 | Science des données dans le cloud | [Données dans le cloud](5-Data-Science-In-Cloud/README.md) | Cette série de leçons introduit la science des données dans le cloud et ses avantages. | [leçon](5-Data-Science-In-Cloud/17-Introduction/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) et [Maud](https://twitter.com/maudstweets) |
|
||||
| 18 | Science des données dans le cloud | [Données dans le cloud](5-Data-Science-In-Cloud/README.md) | Entraîner des modèles en utilisant des outils Low Code. | [leçon](5-Data-Science-In-Cloud/18-Low-Code/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) et [Maud](https://twitter.com/maudstweets) |
|
||||
| 19 | Science des données dans le cloud | [Données dans le cloud](5-Data-Science-In-Cloud/README.md) | Déployer des modèles avec Azure Machine Learning Studio. | [leçon](5-Data-Science-In-Cloud/19-Azure/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) et [Maud](https://twitter.com/maudstweets) |
|
||||
| 20 | Science des données dans la nature | [Dans la nature](6-Data-Science-In-Wild/README.md) | Projets de science des données appliqués au monde réel. | [leçon](6-Data-Science-In-Wild/20-Real-World-Examples/README.md) | [Nitya](https://twitter.com/nitya) |
|
||||
|
||||
## GitHub Codespaces
|
||||
|
||||
Suivez ces étapes pour ouvrir cet exemple dans un Codespace :
|
||||
1. Cliquez sur le menu déroulant Code et sélectionnez l'option Open with Codespaces.
|
||||
2. Sélectionnez + New codespace en bas du panneau.
|
||||
Pour plus d'informations, consultez la [documentation GitHub](https://docs.github.com/en/codespaces/developing-in-codespaces/creating-a-codespace-for-a-repository#creating-a-codespace).
|
||||
|
||||
## VSCode Remote - Containers
|
||||
|
||||
Suivez ces étapes pour ouvrir ce dépôt dans un conteneur en utilisant votre machine locale et VSCode avec l'extension VS Code Remote - Containers :
|
||||
|
||||
1. Si c'est la première fois que vous utilisez un conteneur de développement, assurez-vous que votre système répond aux prérequis (par exemple, avoir Docker installé) dans [la documentation de démarrage](https://code.visualstudio.com/docs/devcontainers/containers#_getting-started).
|
||||
|
||||
Pour utiliser ce dépôt, vous pouvez soit ouvrir le dépôt dans un volume Docker isolé :
|
||||
|
||||
**Remarque** : En arrière-plan, cela utilisera la commande Remote-Containers : **Clone Repository in Container Volume...** pour cloner le code source dans un volume Docker au lieu du système de fichiers local. Les [volumes](https://docs.docker.com/storage/volumes/) sont le mécanisme préféré pour la persistance des données des conteneurs.
|
||||
|
||||
Ou ouvrez une version clonée ou téléchargée localement du dépôt :
|
||||
|
||||
- Clonez ce dépôt sur votre système de fichiers local.
|
||||
- Appuyez sur F1 et sélectionnez la commande **Remote-Containers: Open Folder in Container...**.
|
||||
- Sélectionnez la copie clonée de ce dossier, attendez que le conteneur démarre, et essayez les fonctionnalités.
|
||||
|
||||
## Accès hors ligne
|
||||
|
||||
Vous pouvez exécuter cette documentation hors ligne en utilisant [Docsify](https://docsify.js.org/#/). Forkez ce dépôt, [installez Docsify](https://docsify.js.org/#/quickstart) sur votre machine locale, puis dans le dossier racine de ce dépôt, tapez `docsify serve`. Le site sera servi sur le port 3000 de votre localhost : `localhost:3000`.
|
||||
|
||||
> Remarque : les notebooks ne seront pas rendus via Docsify, donc lorsque vous devez exécuter un notebook, faites-le séparément dans VS Code avec un kernel Python actif.
|
||||
|
||||
## Besoin d'aide !
|
||||
|
||||
Si vous souhaitez traduire tout ou une partie du curriculum, veuillez suivre notre guide [Traductions](TRANSLATIONS.md).
|
||||
|
||||
## Autres curriculums
|
||||
|
||||
Notre équipe produit d'autres curriculums ! Découvrez :
|
||||
|
||||
- [IA générative pour les débutants](https://aka.ms/genai-beginners)
|
||||
- [IA générative pour les débutants .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet)
|
||||
- [IA générative avec JavaScript](https://github.com/microsoft/generative-ai-with-javascript)
|
||||
- [IA générative avec Java](https://aka.ms/genaijava)
|
||||
- [IA pour les débutants](https://aka.ms/ai-beginners)
|
||||
- [Science des données pour les débutants](https://aka.ms/datascience-beginners)
|
||||
- [ML pour les débutants](https://aka.ms/ml-beginners)
|
||||
- [Cybersécurité pour les débutants](https://github.com/microsoft/Security-101)
|
||||
- [Développement web pour les débutants](https://aka.ms/webdev-beginners)
|
||||
- [IoT pour les débutants](https://aka.ms/iot-beginners)
|
||||
- [Développement XR pour les débutants](https://github.com/microsoft/xr-development-for-beginners)
|
||||
- [Maîtriser GitHub Copilot pour la programmation en binôme](https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming)
|
||||
- [Maîtriser GitHub Copilot pour les développeurs C#/.NET](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers)
|
||||
- [Choisissez votre propre aventure avec Copilot](https://github.com/microsoft/CopilotAdventures)
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,49 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "0d575483100c332b2dbaefef915bb3c4",
|
||||
"translation_date": "2025-08-24T11:57:34+00:00",
|
||||
"source_file": "SECURITY.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
## Sécurité
|
||||
|
||||
Microsoft prend très au sérieux la sécurité de ses produits logiciels et services, y compris tous les dépôts de code source gérés via nos organisations GitHub, qui incluent [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), et [nos organisations GitHub](https://opensource.microsoft.com/).
|
||||
|
||||
Si vous pensez avoir identifié une vulnérabilité de sécurité dans un dépôt appartenant à Microsoft qui correspond à [la définition d'une vulnérabilité de sécurité de Microsoft](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)), veuillez nous la signaler comme décrit ci-dessous.
|
||||
|
||||
## Signalement des problèmes de sécurité
|
||||
|
||||
**Veuillez ne pas signaler de vulnérabilités de sécurité via les issues publiques sur GitHub.**
|
||||
|
||||
À la place, veuillez les signaler au Microsoft Security Response Center (MSRC) à l'adresse [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report).
|
||||
|
||||
Si vous préférez soumettre votre rapport sans vous connecter, envoyez un email à [secure@microsoft.com](mailto:secure@microsoft.com). Si possible, chiffrez votre message avec notre clé PGP ; vous pouvez la télécharger depuis la [page de la clé PGP du Microsoft Security Response Center](https://www.microsoft.com/en-us/msrc/pgp-key-msrc).
|
||||
|
||||
Vous devriez recevoir une réponse sous 24 heures. Si, pour une raison quelconque, vous ne recevez pas de réponse, veuillez nous recontacter par email pour vous assurer que nous avons bien reçu votre message initial. Des informations supplémentaires sont disponibles sur [microsoft.com/msrc](https://www.microsoft.com/msrc).
|
||||
|
||||
Veuillez inclure les informations demandées ci-dessous (autant que possible) pour nous aider à mieux comprendre la nature et l'étendue du problème potentiel :
|
||||
|
||||
* Type de problème (par exemple, débordement de tampon, injection SQL, script intersites, etc.)
|
||||
* Chemins complets des fichiers source liés à la manifestation du problème
|
||||
* Emplacement du code source affecté (tag/branche/commit ou URL directe)
|
||||
* Toute configuration spéciale requise pour reproduire le problème
|
||||
* Instructions détaillées pour reproduire le problème
|
||||
* Code de preuve de concept ou d'exploitation (si possible)
|
||||
* Impact du problème, y compris comment un attaquant pourrait exploiter le problème
|
||||
|
||||
Ces informations nous aideront à traiter votre rapport plus rapidement.
|
||||
|
||||
Si vous signalez dans le cadre d'un programme de récompense pour bugs, des rapports plus complets peuvent contribuer à une récompense plus élevée. Veuillez consulter notre page [Programme de récompense pour bugs de Microsoft](https://microsoft.com/msrc/bounty) pour plus de détails sur nos programmes actifs.
|
||||
|
||||
## Langues préférées
|
||||
|
||||
Nous préférons que toutes les communications soient en anglais.
|
||||
|
||||
## Politique
|
||||
|
||||
Microsoft suit le principe de la [Divulgation coordonnée des vulnérabilités](https://www.microsoft.com/en-us/msrc/cvd).
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,22 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "872be8bc1b93ef1dd9ac3d6e8f99f6ab",
|
||||
"translation_date": "2025-08-24T11:54:54+00:00",
|
||||
"source_file": "SUPPORT.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Support
|
||||
## Comment signaler des problèmes et obtenir de l'aide
|
||||
|
||||
Ce projet utilise GitHub Issues pour suivre les bugs et les demandes de fonctionnalités. Veuillez rechercher les problèmes existants avant d'en créer de nouveaux afin d'éviter les doublons. Pour signaler un nouveau problème, soumettez votre bug ou votre demande de fonctionnalité en tant que nouvel Issue.
|
||||
|
||||
Pour obtenir de l'aide et poser des questions sur l'utilisation de ce projet, créez un Issue.
|
||||
|
||||
## Politique de support de Microsoft
|
||||
|
||||
Le support pour ce dépôt se limite aux ressources mentionnées ci-dessus.
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,38 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "3767555b3cc28a2865c79202f4374204",
|
||||
"translation_date": "2025-08-24T12:19:59+00:00",
|
||||
"source_file": "docs/_sidebar.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
- Introduction
|
||||
- [Définir la science des données](../1-Introduction/01-defining-data-science/README.md)
|
||||
- [Éthique de la science des données](../1-Introduction/02-ethics/README.md)
|
||||
- [Définir les données](../1-Introduction/03-defining-data/README.md)
|
||||
- [Probabilités et statistiques](../1-Introduction/04-stats-and-probability/README.md)
|
||||
- Travailler avec les données
|
||||
- [Bases de données relationnelles](../2-Working-With-Data/05-relational-databases/README.md)
|
||||
- [Bases de données non relationnelles](../2-Working-With-Data/06-non-relational/README.md)
|
||||
- [Python](../2-Working-With-Data/07-python/README.md)
|
||||
- [Préparation des données](../2-Working-With-Data/08-data-preparation/README.md)
|
||||
- Visualisation des données
|
||||
- [Visualiser des quantités](../3-Data-Visualization/09-visualization-quantities/README.md)
|
||||
- [Visualiser des distributions](../3-Data-Visualization/10-visualization-distributions/README.md)
|
||||
- [Visualiser des proportions](../3-Data-Visualization/11-visualization-proportions/README.md)
|
||||
- [Visualiser des relations](../3-Data-Visualization/12-visualization-relationships/README.md)
|
||||
- [Visualisations significatives](../3-Data-Visualization/13-meaningful-visualizations/README.md)
|
||||
- Cycle de vie de la science des données
|
||||
- [Introduction](../4-Data-Science-Lifecycle/14-Introduction/README.md)
|
||||
- [Analyse](../4-Data-Science-Lifecycle/15-analyzing/README.md)
|
||||
- [Communication](../4-Data-Science-Lifecycle/16-communication/README.md)
|
||||
- Science des données dans le cloud
|
||||
- [Introduction](../5-Data-Science-In-Cloud/17-Introduction/README.md)
|
||||
- [Low Code](../5-Data-Science-In-Cloud/18-Low-Code/README.md)
|
||||
- [Azure](../5-Data-Science-In-Cloud/19-Azure/README.md)
|
||||
- Science des données sur le terrain
|
||||
- [Science des données sur le terrain](../6-Data-Science-In-Wild/README.md)
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,76 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "87f157ea00d36c1d12c14390d9852b50",
|
||||
"translation_date": "2025-08-24T11:55:51+00:00",
|
||||
"source_file": "for-teachers.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
## Pour les enseignants
|
||||
|
||||
Souhaitez-vous utiliser ce programme dans votre classe ? N'hésitez pas !
|
||||
|
||||
En fait, vous pouvez l'utiliser directement sur GitHub en utilisant GitHub Classroom.
|
||||
|
||||
Pour ce faire, clonez ce dépôt. Vous devrez créer un dépôt pour chaque leçon, donc il faudra extraire chaque dossier dans un dépôt séparé. Ainsi, [GitHub Classroom](https://classroom.github.com/classrooms) pourra gérer chaque leçon individuellement.
|
||||
|
||||
Ces [instructions complètes](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) vous donneront une idée de la manière de configurer votre classe.
|
||||
|
||||
## Utiliser le dépôt tel quel
|
||||
|
||||
Si vous souhaitez utiliser ce dépôt tel qu'il est actuellement, sans passer par GitHub Classroom, c'est également possible. Vous devrez communiquer avec vos étudiants pour leur indiquer quelle leçon suivre ensemble.
|
||||
|
||||
Dans un format en ligne (Zoom, Teams ou autre), vous pourriez créer des salles de discussion pour les quiz et encadrer les étudiants afin de les préparer à apprendre. Ensuite, invitez les étudiants à participer aux quiz et à soumettre leurs réponses sous forme de "issues" à un moment donné. Vous pourriez faire de même avec les devoirs, si vous souhaitez que les étudiants travaillent de manière collaborative et ouverte.
|
||||
|
||||
Si vous préférez un format plus privé, demandez à vos étudiants de cloner le programme, leçon par leçon, dans leurs propres dépôts GitHub privés, et donnez-vous accès. Ils pourront alors compléter les quiz et les devoirs de manière privée et vous les soumettre via des "issues" sur votre dépôt de classe.
|
||||
|
||||
Il existe de nombreuses façons de faire fonctionner cela dans un format de classe en ligne. Faites-nous savoir ce qui fonctionne le mieux pour vous !
|
||||
|
||||
## Inclus dans ce programme :
|
||||
|
||||
20 leçons, 40 quiz et 20 devoirs. Des sketchnotes accompagnent les leçons pour les apprenants visuels. De nombreuses leçons sont disponibles en Python et en R et peuvent être réalisées à l'aide de notebooks Jupyter dans VS Code. Découvrez comment configurer votre classe pour utiliser cette pile technologique : https://code.visualstudio.com/docs/datascience/jupyter-notebooks.
|
||||
|
||||
Tous les sketchnotes, y compris un poster grand format, se trouvent dans [ce dossier](../../sketchnotes).
|
||||
|
||||
Le programme complet est disponible [en PDF](../../pdf/readme.pdf).
|
||||
|
||||
Vous pouvez également exécuter ce programme comme un site web autonome, accessible hors ligne, en utilisant [Docsify](https://docsify.js.org/#/). [Installez Docsify](https://docsify.js.org/#/quickstart) sur votre machine locale, puis dans le dossier racine de votre copie locale de ce dépôt, tapez `docsify serve`. Le site web sera accessible sur le port 3000 de votre localhost : `localhost:3000`.
|
||||
|
||||
Une version accessible hors ligne du programme s'ouvrira sous forme de page web autonome : https://localhost:3000
|
||||
|
||||
Les leçons sont regroupées en 6 parties :
|
||||
|
||||
- 1 : Introduction
|
||||
- 1 : Définir la science des données
|
||||
- 2 : Éthique
|
||||
- 3 : Définir les données
|
||||
- 4 : Aperçu des probabilités et statistiques
|
||||
- 2 : Travailler avec les données
|
||||
- 5 : Bases de données relationnelles
|
||||
- 6 : Bases de données non relationnelles
|
||||
- 7 : Python
|
||||
- 8 : Préparation des données
|
||||
- 3 : Visualisation des données
|
||||
- 9 : Visualisation des quantités
|
||||
- 10 : Visualisation des distributions
|
||||
- 11 : Visualisation des proportions
|
||||
- 12 : Visualisation des relations
|
||||
- 13 : Visualisations significatives
|
||||
- 4 : Cycle de vie de la science des données
|
||||
- 14 : Introduction
|
||||
- 15 : Analyse
|
||||
- 16 : Communication
|
||||
- 5 : Science des données dans le cloud
|
||||
- 17 : Introduction
|
||||
- 18 : Options low-code
|
||||
- 19 : Azure
|
||||
- 6 : Science des données dans la pratique
|
||||
- 20 : Aperçu
|
||||
|
||||
## Donnez-nous votre avis !
|
||||
|
||||
Nous voulons que ce programme fonctionne pour vous et vos étudiants. Donnez-nous votre feedback sur les forums de discussion ! N'hésitez pas à créer un espace de classe sur les forums de discussion pour vos étudiants.
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,137 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "e92c33ea498915a13c9aec162616db18",
|
||||
"translation_date": "2025-08-24T13:15:09+00:00",
|
||||
"source_file": "quiz-app/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
# Quiz
|
||||
|
||||
Ces quiz sont les quiz avant et après les cours du programme de science des données disponible sur https://aka.ms/datascience-beginners
|
||||
|
||||
## Ajouter un ensemble de quiz traduit
|
||||
|
||||
Ajoutez une traduction de quiz en créant des structures de quiz correspondantes dans les dossiers `assets/translations`. Les quiz originaux se trouvent dans `assets/translations/en`. Les quiz sont divisés en plusieurs groupes. Assurez-vous d'aligner la numérotation avec la section de quiz appropriée. Il y a un total de 40 quiz dans ce programme, avec une numérotation commençant à 0.
|
||||
|
||||
Après avoir modifié les traductions, modifiez le fichier index.js dans le dossier de traduction pour importer tous les fichiers en suivant les conventions de `en`.
|
||||
|
||||
Modifiez le fichier `index.js` dans `assets/translations` pour importer les nouveaux fichiers traduits.
|
||||
|
||||
Ensuite, modifiez le menu déroulant dans `App.vue` de cette application pour ajouter votre langue. Faites correspondre l'abréviation localisée au nom du dossier de votre langue.
|
||||
|
||||
Enfin, modifiez tous les liens de quiz dans les leçons traduites, si elles existent, pour inclure cette localisation comme paramètre de requête : `?loc=fr` par exemple.
|
||||
|
||||
## Configuration du projet
|
||||
|
||||
```
|
||||
npm install
|
||||
```
|
||||
|
||||
### Compilation et rechargement à chaud pour le développement
|
||||
|
||||
```
|
||||
npm run serve
|
||||
```
|
||||
|
||||
### Compilation et minification pour la production
|
||||
|
||||
```
|
||||
npm run build
|
||||
```
|
||||
|
||||
### Analyse et correction des fichiers
|
||||
|
||||
```
|
||||
npm run lint
|
||||
```
|
||||
|
||||
### Personnaliser la configuration
|
||||
|
||||
Voir [Référence de configuration](https://cli.vuejs.org/config/).
|
||||
|
||||
Crédits : Merci à la version originale de cette application de quiz : https://github.com/arpan45/simple-quiz-vue
|
||||
|
||||
## Déploiement sur Azure
|
||||
|
||||
Voici un guide étape par étape pour vous aider à démarrer :
|
||||
|
||||
1. Forker un dépôt GitHub
|
||||
Assurez-vous que le code de votre application web statique se trouve dans votre dépôt GitHub. Forkez ce dépôt.
|
||||
|
||||
2. Créer une application web statique Azure
|
||||
- Créez un [compte Azure](http://azure.microsoft.com)
|
||||
- Accédez au [portail Azure](https://portal.azure.com)
|
||||
- Cliquez sur "Créer une ressource" et recherchez "Application Web Statique".
|
||||
- Cliquez sur "Créer".
|
||||
|
||||
3. Configurer l'application web statique
|
||||
- Bases :
|
||||
- Abonnement : Sélectionnez votre abonnement Azure.
|
||||
- Groupe de ressources : Créez un nouveau groupe de ressources ou utilisez-en un existant.
|
||||
- Nom : Donnez un nom à votre application web statique.
|
||||
- Région : Choisissez la région la plus proche de vos utilisateurs.
|
||||
|
||||
- #### Détails du déploiement :
|
||||
- Source : Sélectionnez "GitHub".
|
||||
- Compte GitHub : Autorisez Azure à accéder à votre compte GitHub.
|
||||
- Organisation : Sélectionnez votre organisation GitHub.
|
||||
- Dépôt : Choisissez le dépôt contenant votre application web statique.
|
||||
- Branche : Sélectionnez la branche à partir de laquelle vous souhaitez déployer.
|
||||
|
||||
- #### Détails de la construction :
|
||||
- Préréglages de construction : Choisissez le framework avec lequel votre application est construite (par exemple, React, Angular, Vue, etc.).
|
||||
- Emplacement de l'application : Spécifiez le dossier contenant le code de votre application (par exemple, / si c'est à la racine).
|
||||
- Emplacement de l'API : Si vous avez une API, spécifiez son emplacement (optionnel).
|
||||
- Emplacement de sortie : Spécifiez le dossier où la sortie de la construction est générée (par exemple, build ou dist).
|
||||
|
||||
4. Réviser et créer
|
||||
Révisez vos paramètres et cliquez sur "Créer". Azure configurera les ressources nécessaires et créera un workflow GitHub Actions dans votre dépôt.
|
||||
|
||||
5. Workflow GitHub Actions
|
||||
Azure créera automatiquement un fichier de workflow GitHub Actions dans votre dépôt (.github/workflows/azure-static-web-apps-<nom>.yml). Ce workflow gérera le processus de construction et de déploiement.
|
||||
|
||||
6. Surveiller le déploiement
|
||||
Accédez à l'onglet "Actions" dans votre dépôt GitHub.
|
||||
Vous devriez voir un workflow en cours d'exécution. Ce workflow construira et déploiera votre application web statique sur Azure.
|
||||
Une fois le workflow terminé, votre application sera en ligne à l'URL Azure fournie.
|
||||
|
||||
### Exemple de fichier de workflow
|
||||
|
||||
Voici un exemple de ce à quoi pourrait ressembler le fichier de workflow GitHub Actions :
|
||||
name: Azure Static Web Apps CI/CD
|
||||
```
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
types: [opened, synchronize, reopened, closed]
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
build_and_deploy_job:
|
||||
runs-on: ubuntu-latest
|
||||
name: Build and Deploy Job
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Build And Deploy
|
||||
id: builddeploy
|
||||
uses: Azure/static-web-apps-deploy@v1
|
||||
with:
|
||||
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }}
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
action: "upload"
|
||||
app_location: "quiz-app" # App source code path
|
||||
api_location: ""API source code path optional
|
||||
output_location: "dist" #Built app content directory - optional
|
||||
```
|
||||
|
||||
### Ressources supplémentaires
|
||||
- [Documentation des applications web statiques Azure](https://learn.microsoft.com/azure/static-web-apps/getting-started)
|
||||
- [Documentation GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app)
|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
@ -0,0 +1,19 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "3a848466cb63aff1a93411affb152c2a",
|
||||
"translation_date": "2025-08-24T12:50:26+00:00",
|
||||
"source_file": "sketchnotes/README.md",
|
||||
"language_code": "fr"
|
||||
}
|
||||
-->
|
||||
Retrouvez toutes les sketchnotes ici !
|
||||
|
||||
## Crédits
|
||||
|
||||
Nitya Narasimhan, artiste
|
||||
|
||||

|
||||
|
||||
**Avertissement** :
|
||||
Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue