You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# Visualisation des Données avec Matplotlib et Seaborn
15
-
# Partie 1 : Analyse des Données Financières
16
15
17
-
Ce TP a pour objectif d'explorer et d'analyser les données financières de plusieurs grandes entreprises cotées en bourse : **NVIDIA, OpenAI, Amazon et Apple**. Nous allons récupérer ces données directement depuis **Yahoo Finance** et les manipuler avec **pandas**.
16
+
## Exercice 1 : Courbe linéaire
17
+
Tracez la courbe de la fonction $f(x) = x^2$ pour $x$ allant de 0 à 10. Utilisez 100 points pour $x$ afin d’obtenir une courbe lisse. Ajoutez un titre "Courbe parabole" et nommez les axes "x" et "f(x)".
18
18
19
-
---
20
-
21
-
## 1. Récupération et Exploration des Données
19
+
## Exercice 2 : Nuage de points
20
+
Générez deux listes de 50 valeurs aléatoires chacune entre 0 et 1. Affichez le nuage de points correspondant. Personnalisez les points avec une couleur et un style de votre choix.
22
21
23
-
### Téléchargement des données depuis Yahoo Finance
22
+
## Exercice 3 : Histogramme
23
+
Créez un tableau de 1000 valeurs aléatoires suivant une distribution normale de moyenne 5 et d’écart-type 2. Réalisez l’histogramme de ces données avec 30 bins et affichez un titre "Distribution normale simulée".
24
24
25
-
Nous allons utiliser la bibliothèque `yfinance` pour récupérer les prix historiques des actions de plusieurs entreprises technologiques.
25
+
## Exercice 4 : Diagramme en barres
26
+
On dispose du nombre d’élèves inscrits dans différents clubs d’une école. Créez un DataFrame avec ces données et affichez un diagramme en barres.
Reprenez les données de l’exercice précédent et représentez-les sous forme de camembert avec les pourcentages affichés.
42
48
43
-
📌 **Questions à traiter** :
49
+
## Exercice 6 : Boxplot
50
+
Simulez deux séries de 50 notes (sur 20) pour deux classes (classe A et classe B). Créez un DataFrame Pandas contenant ces données et réalisez un boxplot comparant les distributions.
44
51
45
-
1.**Quelles sont les colonnes disponibles dans le DataFrame ?**
46
-
2.**Quel est le nombre total de lignes et de colonnes ?**
47
-
3.**Y a-t-il des valeurs manquantes ? Comment les gérer ?**
52
+
## Exercice 7 : Violin plot
53
+
Reprenez le DataFrame de l’exercice précédent et tracez un violin plot comparatif des deux distributions.
48
54
49
-
---
50
-
51
-
## 2. Nettoyage et Préparation des Données
55
+
## Exercice 8 : Pairplot (analyse multivariée)
56
+
Utilisez le dataset Iris (`sns.load_dataset("iris")`). Réalisez un pairplot de l’ensemble des variables en utilisant "species" pour la couleur.
52
57
53
-
📌 **Questions à traiter** :
58
+
## Exercice 9 : Heatmap de corrélation
59
+
Toujours avec le dataset Iris, calculez la matrice de corrélation et affichez une heatmap de cette matrice avec les valeurs annotées.
54
60
55
-
1.**Supprimez les lignes contenant des valeurs manquantes.**
56
-
2.**Définissez la colonne Date comme index du DataFrame.**
57
-
3.**Vérifiez les types de données des colonnes et convertissez-les si nécessaire.**
58
-
59
-
---
61
+
## Exercice 10 : Analyse univariée
62
+
Utilisez la base de données [Credit Risk Dataset](https://www.kaggle.com/datasets/laotse/credit-risk-dataset?resource=download).
63
+
- Chargez les données et affichez les premières lignes.
64
+
- Faites une analyse univariée des variables `person_age`, `person_income`, et `loan_amnt` en utilisant des histogrammes et des boxplots.
65
+
- Identifiez les valeurs aberrantes dans `loan_int_rate`.
60
66
61
-
## 3. Analyse des Tendances du Marché
67
+
## Exercice 11 : Analyse bivariée
68
+
- Étudiez la relation entre `person_income` et `loan_amnt` à l’aide d’un scatter plot (quanti-quanti).
69
+
- Étudiez l’influence de `person_home_ownership` sur `loan_amnt` via un boxplot (quanti-quali).
70
+
- Étudiez la relation entre `loan_intent` et `loan_grade` via un countplot (quali-quali).
62
71
63
-
### Calcul du rendement journalier
72
+
## Exercice 12 : Tests statistiques en Python
73
+
- Testez s’il y a une différence significative de revenu (`person_income`) entre les propriétaires et non-propriétaires (`person_home_ownership`) avec un test t de Student.
74
+
- Testez si la distribution des taux d’intérêt (`loan_int_rate`) suit une loi normale.
75
+
- Testez l’indépendance entre `loan_intent` et `loan_status` avec un test du chi².
76
+
- Réalisez une ANOVA pour comparer le revenu (`person_income`) entre plusieurs catégories de but du prêt (`loan_intent`).
64
77
65
-
Le rendement journalier d'une action est donné par la formule :
78
+
## Exercice 13 : Organisation en subplots
79
+
Créez une figure comportant 4 subplots organisés en 2 lignes × 2 colonnes contenant :
80
+
- Un graphique linéaire représentant une fonction de votre choix.
81
+
- Un scatter plot illustrant une relation entre deux variables quantitatives.
82
+
- Un histogramme d’une variable de votre choix.
83
+
- Un camembert illustrant la répartition d’une variable catégorielle.
66
84
67
-
\[
68
-
R_t = \frac{P_t - P_{t-1}}{P_{t-1}} \times 100
69
-
\]
85
+
Ajoutez un titre à chaque subplot et ajustez la disposition pour éviter le chevauchement.
70
86
71
-
📌 **Questions à traiter** :
72
-
73
-
1.**Quelle est la tendance des prix des actions pour chaque entreprise ?**
74
-
2.**Quel jour chaque action a-t-elle atteint son plus haut prix ?**
75
-
3.**Calculez le rendement quotidien de chaque action et affichez sa moyenne.**
76
-
77
-
---
78
-
79
-
## 4. Comparaison des Performances
80
-
81
-
📌 **Questions à traiter** :
82
-
83
-
1.**Quelle entreprise a eu la meilleure croissance sur la période analysée ?**
84
-
2.**Quel est le rendement moyen mensuel de chaque action ?**
85
-
3.**Comparez la volatilité des différentes actions.**
86
-
87
-
---
88
-
89
-
## Conclusion
90
-
91
-
- Quelle entreprise a eu la meilleure croissance sur la période ?
92
-
- Quel titre a offert le rendement moyen le plus élevé ?
93
-
- Quelle action était la plus volatile, indiquant un risque plus élevé ?
94
-
- Discussion sur les facteurs pouvant expliquer ces résultats (ex. crise, innovations, changements dans l’industrie).
95
-
96
-
---
97
-
98
-
## Résumé des principales manipulations avec pandas
99
-
100
-
| Opération | Commande Pandas |
101
-
|-----------|----------------|
102
-
| Télécharger des données financières |`yfinance.download()`|
103
-
| Afficher les colonnes disponibles |`df.columns`|
104
-
| Vérifier la présence de valeurs manquantes |`df.isnull().sum()`|
105
-
| Supprimer les valeurs manquantes |`df.dropna()`|
106
-
| Définir un index de type datetime |`df.index = pd.to_datetime(df.index)`|
107
-
| Calculer le rendement journalier |`.pct_change()`|
108
-
| Calculer la volatilité |`.std()`|
109
-
| Trouver la date du prix maximum |`.idxmax()`|
110
-
| Agréger les données par mois |`.resample('M').mean()`|
111
-
112
-
---
113
-
114
-
## Partie 2 : Analyse du Risque de Défaut
115
-
116
-
Nous allons maintenant utiliser une base de données de crédit pour analyser les facteurs influençant le risque de défaut.
117
-
118
-
La base de données est disponible ici: https://www.kaggle.com/datasets/laotse/credit-risk-dataset?resource=download
119
-
### Description des Colonnes de la Base de Données
|`loan_status`| Statut du prêt (0: non défaut, 1: défaut) |
132
-
|`loan_percent_income`| Pourcentage du revenu |
133
-
|`cb_person_default_on_file`| Historique de défaut |
134
-
|`cb_person_cred_hist_length`| Longueur de l'historique de crédit |
135
-
136
-
### 1. Chargement et Exploration des Données
137
-
138
-
```python
139
-
df_credit = pd.read_csv('credit_risk_data.csv')
140
-
print(df_credit.head())
141
-
df_credit.info()
142
-
df_credit.describe()
143
-
```
87
+
## Exercice 14 : Tests statistiques avancés
88
+
- Effectuez un test de corrélation de Pearson et de Spearman entre `person_income` et `loan_amnt` (quanti-quanti).
89
+
- Réalisez un test du chi² pour tester l’indépendance entre `cb_person_default_on_file` et `loan_status` (quali-quali).
90
+
- Effectuez une comparaison de moyennes (`t-test indépendant`) entre `loan_int_rate` pour les individus ayant un historique de défaut (`cb_person_default_on_file`) et ceux qui n’en ont pas.
91
+
- Effectuez une ANOVA pour comparer `loan_amnt` entre plusieurs catégories (`loan_grade`).
144
92
145
-
📌 **Questions** :
146
-
1. Quelles sont les variables disponibles pour l’analyse du risque de défaut ?
147
-
2. Quelle est la répartition des clients en défaut et non en défaut ?
148
-
3. Identifiez les valeurs manquantes et proposez une méthode de traitement.
93
+
**Bonus** : Expérimentez avec d'autres types de graphiques et tests statistiques pour approfondir l'analyse.
149
94
150
-
### 2. Nettoyage et Préparation des Données
151
-
152
-
📌 **Questions** :
153
-
1. Convertissez les variables catégoriques en variables numériques.
154
-
2. Séparez le dataset en deux groupes : clients en défaut et non en défaut.
155
-
156
-
### 3. Analyse des Facteurs de Risque
157
-
158
-
📌 **Questions** :
159
-
Dans cette section, nous allons explorer les facteurs influençant le risque de défaut en manipulant **pandas** et en réalisant des analyses numériques.
160
-
161
-
## Objectifs
162
-
- Manipuler des **DataFrames pandas** pour explorer les relations entre les variables.
163
-
- Utiliser des statistiques descriptives et des mesures de corrélation.
164
-
- Comprendre comment les facteurs influencent le risque de défaut et interpréter les résultats.
165
-
166
-
## Questions et Analyses
167
-
168
-
### 1. Impact du revenu annuel sur le risque de défaut
169
-
170
-
**Analyse numérique**
171
-
- Afficher les statistiques descriptives du revenu annuel en fonction du statut de défaut.
172
-
- Comparer les moyennes et médianes des revenus des clients en défaut et non en défaut.
173
-
- Calculer l'écart-type et la variance du revenu annuel pour chaque groupe.
174
-
175
-
**Étapes**
176
-
1. Charger les données dans un DataFrame pandas.
177
-
2. Utiliser `.describe()` pour obtenir des statistiques globales sur le revenu annuel.
178
-
3. Utiliser `.groupby('Défaut')` et `.agg(['mean', 'median', 'std', 'var'])` pour comparer les groupes.
179
-
4. Interpréter les résultats et voir si une tendance se dégage.
180
-
181
-
---
182
-
183
-
### 2. Influence de l’historique des paiements sur le risque de défaut
184
-
185
-
**Analyse numérique**
186
-
- Calculer le nombre moyen de paiements en retard pour chaque statut de défaut.
187
-
- Analyser la médiane et l'écart-type du nombre de paiements en retard.
188
-
- Déterminer si les clients en défaut ont un historique de paiements significativement différent des autres.
2. Comparer les valeurs moyennes et médianes pour identifier les différences entre les groupes.
193
-
3. Vérifier si la dispersion des retards de paiement est plus élevée chez les clients en défaut.
194
-
195
-
---
196
-
197
-
### 3. Identification des facteurs les plus corrélés au risque de défaut
198
-
199
-
**Analyse numérique**
200
-
- Calculer la matrice de corrélation entre les variables.
201
-
- Identifier les trois facteurs les plus corrélés avec le risque de défaut.
202
-
- Vérifier si ces corrélations sont significatives.
203
-
204
-
**Étapes**
205
-
1. Utiliser `.corr()` pour calculer la matrice de corrélation du DataFrame.
206
-
2. Extraire les valeurs de corrélation associées à la colonne "Défaut".
207
-
3. Trier ces valeurs par ordre décroissant et sélectionner les trois variables les plus influentes.
208
-
4. Interpréter les résultats et vérifier si ces facteurs sont cohérents avec les analyses précédentes.
209
-
210
-
### Synthèse
211
-
Dans cette section, nous allons approfondir l’étude des facteurs influençant le risque de défaut en réalisant des analyses numériques sur la répartition des âges et l'impact du statut d’emploi.
212
-
213
-
## Objectifs
214
-
- Analyser la distribution des âges des clients à l'aide de statistiques descriptives.
215
-
- Examiner l'influence du statut d'emploi sur le risque de défaut à travers des mesures numériques.
216
-
- Synthétiser les résultats obtenus et proposer des interprétations.
217
-
218
-
## Questions et Analyses
219
-
220
-
### Analyse de la distribution des âges des clients
221
-
222
-
**Analyse numérique**
223
-
- Calculer les statistiques descriptives générales sur l'âge des clients.
224
-
- Identifier l'âge moyen, la médiane, l'écart-type et les valeurs minimales/maximales.
225
-
- Déterminer s'il y a des valeurs aberrantes en comparant l’écart interquartile.
226
-
227
-
**Étapes**
228
-
1. Utiliser `.describe()` sur la colonne **Âge** pour obtenir les principales statistiques.
229
-
2. Vérifier les bornes des quartiles avec `.quantile([0.25, 0.5, 0.75])`.
230
-
3. Déterminer les valeurs aberrantes potentielles en utilisant la règle des **1,5 IQR** (Interquartile Range).
231
-
4. Comparer ces statistiques avec celles d’autres variables pour voir si certaines tranches d’âge sont plus représentées parmi les clients en défaut.
232
-
233
-
---
234
-
235
-
### Influence du statut d’emploi sur le risque de défaut
236
-
237
-
**Analyse numérique**
238
-
- Compter le nombre de clients par catégorie de statut d'emploi.
239
-
- Calculer la proportion de clients en défaut dans chaque catégorie de statut d'emploi.
240
-
- Identifier si certaines catégories ont un taux de défaut significativement plus élevé.
241
-
242
-
**Étapes**
243
-
1. Utiliser `.value_counts()` sur la colonne **Statut_Emploi** pour connaître la répartition des clients par catégorie.
244
-
2. Grouper les données par **Statut_Emploi** et calculer le **taux de défaut** dans chaque groupe avec `.groupby('Statut_Emploi')['Défaut'].mean()`.
245
-
3. Comparer ces taux et identifier les catégories ayant une probabilité plus élevée de défaut.
246
-
4. Interpréter les résultats en lien avec les analyses précédentes (ex. une catégorie d’emploi avec des revenus plus faibles pourrait avoir un taux de défaut plus élevé).
0 commit comments