TP Analyse de Données avec Pandas
1 TP Analyse de Données avec Pandas
2 Partie 1 : Analyse des Données Financières
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.
2.1 1. Récupération et Exploration des Données
2.1.1 Téléchargement des données depuis Yahoo Finance
Nous allons utiliser la bibliothèque yfinance
pour récupérer les prix historiques des actions de plusieurs entreprises technologiques.
import pandas as pd
import yfinance as yf
# Liste des tickers des entreprises étudiées
= ['NVDA', 'AAPL', 'AMZN', 'MSFT']
tickers
# Téléchargement des données de 2020 à 2024
= yf.download(tickers, start='2020-01-01', end='2024-01-01', group_by='ticker')
df
# Affichage des premières lignes du DataFrame
print(df.head())
2.1.2 Analyse exploratoire
📌 Questions à traiter :
- Quelles sont les colonnes disponibles dans le DataFrame ?
- Quel est le nombre total de lignes et de colonnes ?
- Y a-t-il des valeurs manquantes ? Comment les gérer ?
2.2 2. Nettoyage et Préparation des Données
📌 Questions à traiter :
- Supprimez les lignes contenant des valeurs manquantes.
- Définissez la colonne Date comme index du DataFrame.
- Vérifiez les types de données des colonnes et convertissez-les si nécessaire.
2.3 3. Analyse des Tendances du Marché
2.3.1 Calcul du rendement journalier
Le rendement journalier d’une action est donné par la formule :
[ R_t = ]
📌 Questions à traiter :
- Quelle est la tendance des prix des actions pour chaque entreprise ?
- Quel jour chaque action a-t-elle atteint son plus haut prix ?
- Calculez le rendement quotidien de chaque action et affichez sa moyenne.
2.4 4. Comparaison des Performances
📌 Questions à traiter :
- Quelle entreprise a eu la meilleure croissance sur la période analysée ?
- Quel est le rendement moyen mensuel de chaque action ?
- Comparez la volatilité des différentes actions.
2.5 Conclusion
- Quelle entreprise a eu la meilleure croissance sur la période ?
- Quel titre a offert le rendement moyen le plus élevé ?
- Quelle action était la plus volatile, indiquant un risque plus élevé ?
- Discussion sur les facteurs pouvant expliquer ces résultats (ex. crise, innovations, changements dans l’industrie).
2.6 Résumé des principales manipulations avec pandas
Opération | Commande Pandas |
---|---|
Télécharger des données financières | yfinance.download() |
Afficher les colonnes disponibles | df.columns |
Vérifier la présence de valeurs manquantes | df.isnull().sum() |
Supprimer les valeurs manquantes | df.dropna() |
Définir un index de type datetime | df.index = pd.to_datetime(df.index) |
Calculer le rendement journalier | .pct_change() |
Calculer la volatilité | .std() |
Trouver la date du prix maximum | .idxmax() |
Agréger les données par mois | .resample('M').mean() |
2.7 Partie 2 : Analyse du Risque de Défaut
Nous allons maintenant utiliser une base de données de crédit pour analyser les facteurs influençant le risque de défaut.
La base de données est disponible ici: https://www.kaggle.com/datasets/laotse/credit-risk-dataset?resource=download ### Description des Colonnes de la Base de Données
Nom de la Colonne | Description |
---|---|
person_age |
Âge |
person_income |
Revenu annuel |
person_home_ownership |
Type de propriété |
person_emp_length |
Ancienneté professionnelle (années) |
loan_intent |
But du prêt |
loan_grade |
Grade du prêt |
loan_amnt |
Montant du prêt |
loan_int_rate |
Taux d’intérêt |
loan_status |
Statut du prêt (0: non défaut, 1: défaut) |
loan_percent_income |
Pourcentage du revenu |
cb_person_default_on_file |
Historique de défaut |
cb_person_cred_hist_length |
Longueur de l’historique de crédit |
2.7.1 1. Chargement et Exploration des Données
= pd.read_csv('credit_risk_data.csv')
df_credit print(df_credit.head())
df_credit.info() df_credit.describe()
📌 Questions : 1. Quelles sont les variables disponibles pour l’analyse du risque de défaut ? 2. Quelle est la répartition des clients en défaut et non en défaut ? 3. Identifiez les valeurs manquantes et proposez une méthode de traitement.
2.7.2 2. Nettoyage et Préparation des Données
📌 Questions : 1. Convertissez les variables catégoriques en variables numériques. 2. Séparez le dataset en deux groupes : clients en défaut et non en défaut.
2.7.3 3. Analyse des Facteurs de Risque
📌 Questions : 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.
2.8 Objectifs
- Manipuler des DataFrames pandas pour explorer les relations entre les variables.
- Utiliser des statistiques descriptives et des mesures de corrélation.
- Comprendre comment les facteurs influencent le risque de défaut et interpréter les résultats.
2.9 Questions et Analyses
2.9.1 1. Impact du revenu annuel sur le risque de défaut
Analyse numérique
- Afficher les statistiques descriptives du revenu annuel en fonction du statut de défaut.
- Comparer les moyennes et médianes des revenus des clients en défaut et non en défaut.
- Calculer l’écart-type et la variance du revenu annuel pour chaque groupe.
Étapes
1. Charger les données dans un DataFrame pandas.
2. Utiliser .describe()
pour obtenir des statistiques globales sur le revenu annuel.
3. Utiliser .groupby('Défaut')
et .agg(['mean', 'median', 'std', 'var'])
pour comparer les groupes.
4. Interpréter les résultats et voir si une tendance se dégage.
2.9.2 2. Influence de l’historique des paiements sur le risque de défaut
Analyse numérique
- Calculer le nombre moyen de paiements en retard pour chaque statut de défaut.
- Analyser la médiane et l’écart-type du nombre de paiements en retard.
- Déterminer si les clients en défaut ont un historique de paiements significativement différent des autres.
Étapes
1. Utiliser .groupby('Défaut')['Nb_Paiements_Retard'].agg(['mean', 'median', 'std'])
.
2. Comparer les valeurs moyennes et médianes pour identifier les différences entre les groupes.
3. Vérifier si la dispersion des retards de paiement est plus élevée chez les clients en défaut.
2.9.3 3. Identification des facteurs les plus corrélés au risque de défaut
Analyse numérique
- Calculer la matrice de corrélation entre les variables.
- Identifier les trois facteurs les plus corrélés avec le risque de défaut.
- Vérifier si ces corrélations sont significatives.
Étapes
1. Utiliser .corr()
pour calculer la matrice de corrélation du DataFrame.
2. Extraire les valeurs de corrélation associées à la colonne “Défaut”.
3. Trier ces valeurs par ordre décroissant et sélectionner les trois variables les plus influentes.
4. Interpréter les résultats et vérifier si ces facteurs sont cohérents avec les analyses précédentes.
2.9.4 Synthèse
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.
2.10 Objectifs
- Analyser la distribution des âges des clients à l’aide de statistiques descriptives.
- Examiner l’influence du statut d’emploi sur le risque de défaut à travers des mesures numériques.
- Synthétiser les résultats obtenus et proposer des interprétations.
2.11 Questions et Analyses
2.11.1 Analyse de la distribution des âges des clients
Analyse numérique
- Calculer les statistiques descriptives générales sur l’âge des clients.
- Identifier l’âge moyen, la médiane, l’écart-type et les valeurs minimales/maximales.
- Déterminer s’il y a des valeurs aberrantes en comparant l’écart interquartile.
Étapes
1. Utiliser .describe()
sur la colonne Âge pour obtenir les principales statistiques.
2. Vérifier les bornes des quartiles avec .quantile([0.25, 0.5, 0.75])
.
3. Déterminer les valeurs aberrantes potentielles en utilisant la règle des 1,5 IQR (Interquartile Range).
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.
2.11.2 Influence du statut d’emploi sur le risque de défaut
Analyse numérique
- Compter le nombre de clients par catégorie de statut d’emploi.
- Calculer la proportion de clients en défaut dans chaque catégorie de statut d’emploi.
- Identifier si certaines catégories ont un taux de défaut significativement plus élevé.
Étapes
1. Utiliser .value_counts()
sur la colonne Statut_Emploi pour connaître la répartition des clients par catégorie.
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()
.
3. Comparer ces taux et identifier les catégories ayant une probabilité plus élevée de défaut.
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é).