TP Analyse de Données avec Pandas

TP Analyse de Données avec Pandas
Author

Natacha NJONGWA YEPNGA

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
tickers = ['NVDA', 'AAPL', 'AMZN', 'MSFT']

# Téléchargement des données de 2020 à 2024
df = yf.download(tickers, start='2020-01-01', end='2024-01-01', group_by='ticker')

# Affichage des premières lignes du DataFrame
print(df.head())

2.1.2 Analyse exploratoire

📌 Questions à traiter :

  1. Quelles sont les colonnes disponibles dans le DataFrame ?
  2. Quel est le nombre total de lignes et de colonnes ?
  3. Y a-t-il des valeurs manquantes ? Comment les gérer ?

2.2 2. Nettoyage et Préparation des Données

📌 Questions à traiter :

  1. Supprimez les lignes contenant des valeurs manquantes.
  2. Définissez la colonne Date comme index du DataFrame.
  3. 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 :

  1. Quelle est la tendance des prix des actions pour chaque entreprise ?
  2. Quel jour chaque action a-t-elle atteint son plus haut prix ?
  3. Calculez le rendement quotidien de chaque action et affichez sa moyenne.

2.4 4. Comparaison des Performances

📌 Questions à traiter :

  1. Quelle entreprise a eu la meilleure croissance sur la période analysée ?
  2. Quel est le rendement moyen mensuel de chaque action ?
  3. 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

df_credit = pd.read_csv('credit_risk_data.csv')
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é).