100% ont trouvé ce document utile (2 votes)
896 vues8 pages

Examen DA 101 - VF

Transféré par

Sayoba Gansane
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (2 votes)
896 vues8 pages

Examen DA 101 - VF

Transféré par

Sayoba Gansane
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Examen DA 101

Introduction à Python pour la data-science

Consignes

L'exercice est composé de plusieurs questions, faites-les dans l'ordre et faites attention à
respecter le nom des variables. La majorité des questions sont indépendantes.
Evitez de rester bloqué plus de 5 minutes sur la même question.
Un code clair et commenté si nécessaire, sera apprecié.

N'hésitez pas à contacter l'équipe DataScientest si vous rencontrez des problèmes sur
help@datascientest.com

Exploration du Jeu de données

Cette évaluation porte sur le jeu de données "german_credit_data.csv". Ce dernier contient des
informations sur plus de 1000 individus ayant souscrits à un prêt bancaire. La
variable duration indique la durée de l'emprunt en mois.
Le principal objectif de l'examen est d'utiliser des méthodes d'exploration, de manipulation et de
préparation de données dans l'optique d'entraîner un algorithme de régression pour prédire
l'espérance de vie d'un pays

 (a) Importer le module pandas sous le nom pd


 (b) Lire le fichier "german_credit_data.csv" dans un DataFrame appelé df en précisant
que la première colonne contient les indices.
 (c) Afficher un aperçu et une première description des variables du jeu de données.

In [53]:

# Import du module pandas sous le pd


import pandas as pd

# Lecture du fichier "german_credit_data.csv" dans un DataFrame appelé df

df = pd.read_csv("german_credit_data.csv",sep = ';', index_col = 0)

# Affichage d'un aperçu et une première description des variables du jeu de données
df.head()

Out[53]:
Les variables purpose et credit_amount renseigne respectivement le motif du prêt contracté
par un individu et le montant du crédit.

 (d) Quel est le montant moyen du crédit suivant les différents motifs invoqués ?

In [54]:

#le montant moyen du crédit suivant les différents motifs invoqués

df.groupby(['purpose']).mean()['credit_amount']

Out[54]:
purpose
business 4158.041237
car 3768.192878
domestic appliances 1498.000000
education 2879.203390
furniture/equipment 3066.988950
radio/TV 2487.653571
repairs 2728.090909
vacation/others 8209.333333
Name: credit_amount, dtype: float64

 (e) Quel est le motif revenant le plus souvent ?

In [55]:

df['purpose'].mode()

# le motif revenant le plus souvent est car


Out[55]:
0 car
dtype: object

 (f) Afficher les informations concernant l'individu le plus âgé. Quelle est la durée de son
prêt ?
 (g) Qu'en est-il de l'individu du plus jeune ?

In [56]:
# Affichage des informations concernant l'individu le plus âgé

df['age'].max()
df.loc[df['age'].idxmax()]

# la est la durée de son prêt est 24 mois

Out[56]:
age 75.0
job 3
housing free
saving_accounts little
checking_account little
credit_amount 6615
duration 24-month
purpose car
Name: 330, dtype: object
In [57]:

# Affichage des informations concernant l'individu le plus âgé

df['age'].min()
df.loc[df['age'].idxmin()]

# la est la durée de son prêt est 12 mois


Out[57]:
age 19.0
job 1
housing rent
saving_accounts rich
checking_account moderate
credit_amount 983
duration 12-month
purpose furniture/equipment
Name: 391, dtype: object

 (h) La variable duration renseigne la durée des emprunts. Transformez-la en variable


numérique en supprimant -month pour chaque individu.

Pour cette question, appliquer à chaque observation de la colonne duration une fonction qui
supprime les 6 derniers éléments
In [58]:
# duration en variable numérique en supprimant -month pour chaque individu

df['duration'] = df.apply(lambda x:x ['duration'].split('-')[0], axis=1).astype(int)

df.head()

Out[58]:

 (i) Créer une nouvelle variable nommée duration_categ contenant 3


modalités : court-terme pour tous les prêts d'une durée inférieure ou
égale à 10 mois, moyen-terme pour tous les prêts d'une durée strictement
supérieure à 10 mois et inférieure ou égale à 30 mois, long-terme pour tous les prêts
d'une durée strictement supérieure à 30 mois.

In [60]:

# Création de la nouvelle variable nommée duration_categ

import numpy as np

critere = [(df['duration'] <= 10), (df['duration'] > 10) & (df['duration'] <=30),
(df['duration'] > 30)]
modalites = ['court-terme', 'moyen-terme', 'long-terme']
df['duration_categ'] = np.select(critere, modalites, default='Not Specified')

df.head()
Out[60]:
La variable housing renseigne 3 catégories : own (propriétaire), rent (locataire) et free (libre).

 (j) En majorité, les propriétaires ont-ils des prêts moyen-terme ?

In [61]:

print(pd.crosstab(df['housing'],df['duration_categ']))

# Oui les propriétaires ont des prêts moyen-terme en majorité


duration_categ court-terme long-terme moyen-terme
housing
free 13 38 51
own 118 104 460
rent 32 20 119

Preprocessing et cleaning des données

La phase de préparation des données regroupe les activités liées à la construction de l'ensemble
précis des données à analyser, faite à partir des données brutes. Elle inclut ainsi le classement
des données en fonction de critères choisis, le nettoyage des données, et surtout leur recodage
pour les rendre compatibles avec les algorithmes qui seront utilisés.

 (k) Pour la variablechecking_account, remplacer les modalités 'little', 'moderate' et


'rich' par 0,1 et 2.

In [62]:

# Remplacement des modalités 'little', 'moderate' et 'rich' par 0,1 et 2

df['checking_account'] = df['checking_account'].replace(to_replace = ['little', 'moderate',


'rich'],
value= [0,1, 2])
df.head()

Out[62]:

* (l) Pour la variable`saving_accounts`, remplacer les modalités 'little', 'moderate', 'quite


rich' et rich' par 0,1,2 et 3.
In [63]:

# Remplacement des modalités 'little', 'moderate', 'quite rich' et rich' par 0,1,2 et 3

df['saving_accounts'] = df['saving_accounts'].replace(to_replace = ['little', 'moderate',


'rich'],
value= [0,1, 2])
df.head()
Out[63]:

 (m) Remarquez-vous la présence de doublons dans les données ?

In [64]:

print(df.duplicated().sum())

# Il n'y a pas de doublons dans les données

 (n) Afficher le nombre de valeurs manquantes pour chaque colonne de df.

In [65]:

# Affichage du nombre de valeurs manquantes pour chaque colonne de df

print(df.isna().sum(axis = 0))

age 76
job 0
housing 45
saving_accounts 0
checking_account 0
credit_amount 0
duration 0
purpose 0
duration_categ 0
dtype: int64
Certaines variables comme 'housing' ou 'purpose' sont des variables catégorielles. En
effet, elles contiennent un nombre fini de modalités (3 pour la première par exemple).

Dans le cas de ces variables, il est possible de remplacer les valeurs manquantes dans ces
colonnes par l'élément le plus fréquent.
En statistique, cette valeur s'appelle le mode, et la méthode du même nom permet de retourner
cet/ces eléments à l'intérieur d'une pandas Series.

 (o) Dans df, remplacer les valeurs manquantes de la variable housing par le mode.

In [66]:
# remplacement des valeurs manquantes de la variable housing par le mode dans df

df['housing'] = df['housing'].fillna(df['housing'].mode()[0])

df.head()

Out[66]:

 (p) Dans df, remplacer les valeurs manquantes de la variable age par la moyenne.

In [67]:

# remplacement des valeurs manquantes de la variable age par la moyenne dans df

df['age'] = df['age'].fillna(df['age'].mean())
df.head()
Out[67]:
Apprentissage des données

Une équipe de Data Scientists a déjà entraîné un modèle de régression prédictif sur des données
en plus grand nombre et identiques aux données sur lesquelles vous avez travaillé. Après envoi
de vos données sans la variable duration ils ont essayé de prédire la durée des prêts de vos
1000 individus.

Les résultats des prédictions sont disponibles dans le fichier 'predictions_german.csv', qui
contient également l'ID des clients.

 (q) Lire le fichier "predictions_german.csv" dans


un DataFrame appelé predictions en précisant que la première colonne contient les
indices.
 (r) En fusionnant df et predictions, créer un dataframe df_pred contenant les
informations dont nous disposons ainsi que les prédictions sur les 1000 individus.

In [68]:

# Lecture du fichier "predictions_german.csv" dans un DataFrame appelé df

predictions = pd.read_csv("predictions_german.csv" , sep = ';', index_col = 0)


# fusion de df et predictions

df_pred = df.merge(right = predictions, on = 'ID', how = 'left')

df_pred.head()
Out[68]:
Évaluation du modèle de régression
 (s) Créer une nouvelle variable error renseignant la différence entre les
variables duration et predictions.

In [69]:

# Création de la nouvelle variable error

df_pred['error'] = df_pred['duration'] - df_pred['predictions']

df_pred.head()
Out[69]:

 (t) Combien d'individus ont vu leur durée de prêt sous-estimée par le modèle ?

In [70]:

print(df_pred.loc[df_pred['error'] < 0,:])

# 352 individus ont vu leur durée de prêt sous-estimée par le modèle

age job housing saving_accounts checking_account credit_

Vous aimerez peut-être aussi