Vous avez toutes les données dont vous avez besoin mais certaines ne sont pas de bonne qualité, elles sont illisibles, voire pas exploitables du tout ! Bref, il est temps de mettre de l’ordre dans tout ça.
Sans ça, vous n’allez pas pouvoir suivre les prochaines étapes.
Nettoyez les données
Nettoyer les données est une étape clé avant toute analyse statistique. Elle inclut :
la gestion des valeurs manquantes et incomplètes,
la correction des erreurs,
la suppression des doublons,
le traitement des données aberrantes, etc.
Cette liste n’est pas exhaustive car il y a toujours beaucoup de choses à faire pour rendre les données exploitables.
Gestion des valeurs manquantes ou incomplètes : ces valeurs peuvent être le résultat d’une erreur de saisie, d’une non-réponse dans les enquêtes ou d’une donnée perdue lors de la collecte. Mais ne vous inquiétez pas, vous avez plusieurs solutions pour gérer ce genre de situation. Vous pouvez exclure les observations concernées ou remplacer les valeurs manquantes en utilisant la moyenne, la médiane ou la régression linéaire. Comme souvent dans l’analyse des données, il n’y a pas qu’une seule façon de procéder mais bien une multitude. Il vous faudra choisir la plus pertinente.
Mais en calculant la moyenne ou la médiane, tu supposes que les réponses manquantes se rapprochent des données existantes. C’est pas un peu risqué ?
Oui, c’est vrai ! Remplacer les valeurs manquantes par la moyenne ou la médiane est une méthode qui a ses limites. En faisant ça, je pars du principe que les valeurs manquantes sont similaires aux valeurs disponibles, ce qui n’est peut-être pas le cas. Mais cette méthode a un principal avantage car elle permet de conserver le plus grand nombre possible de données pour l'analyse sans introduire de biais significatif dû à des valeurs arbitraires. C’est particulièrement utile dans les analyses préliminaires ou lorsque la distribution des données est relativement uniforme. On minimise l'impact sur les résultats globaux de l'étude.
Voici un exemple de code pour gérer les valeurs manquantes :
# Remplacer les valeurs manquantes par la médiane
df['colonne_avec_valeur_manquante'].fillna(df['colonne_avec_valeur_manquante'].median(), inplace=True)
Correction des erreurs : les erreurs peuvent provenir de diverses sources, comme les fautes de frappe lors de la saisie des données ou des erreurs de mesure. Il faut donc veiller à ce que chaque entrée soit correcte et cohérente. Cette étape peut parfois nécessiter une vérification manuelle pour les petites erreurs ou l'utilisation d'algorithmes pour les erreurs plus systématiques.
Voici un exemple de code pour gérer une faute de frappe :
# Corriger une faute de frappe
df['colonne'] = df['colonne'].replace('faute_de_frapp','faute_de_frappe')
Suppression des doublons : les doublons peuvent survenir à la suite d'erreurs de saisie. C’est la suppression de ces répétitions qui va assurer que chaque donnée contribue de manière unique à l'ensemble.
Voici un exemple de code pour gérer les doublons :
# Identifier et compter les doublons
print(df.duplicated().sum())
# Supprimer les doublons
df.drop_duplicates(inplace=True)
Gestion des données aberrantes et atypiques (outliers en anglais) : une donnée aberrante est une observation qui est logiquement impossible alors qu’une donnée atypique est une valeur qui diffère beaucoup des autres dans un jeu de données. Ces valeurs extrêmes peuvent indiquer des erreurs de saisie ou des variations naturelles. Dans certains cas, il peut être pertinent de les exclure. Dans d’autres cas, une transformation des données ou une analyse plus approfondie peut être nécessaire pour comprendre leur origine et leur signification.
Il y a plusieurs méthodes pour trouver des valeurs aberrantes. On peut, par exemple, utiliser des techniques de visualisation de données comme la boîte à moustaches (box plot en anglais) ou le nuage de points pour vérifier s’il y a des points éloignés les uns des autres. On peut aussi utiliser des méthodes statistiques comme le Z-score ou l’écart interquartile. C’est cette dernière méthode que nous avons choisi d’utiliser pour nettoyer les valeurs atypiques de notre exemple ci-dessous.
Voici un exemple de code pour gérer les valeurs atypiques avec la méthode de l’écart interquartile :
# Identifier les valeurs atypiques basées sur l'IQR
Q1 = df['colonne'].quantile(0.25)
Q3 = df['colonne'].quantile(0.75)
IQR = Q3 - Q1
# Exclure les valeurs atypiques basées sur l'IQR
df = df[~((df['colonne'] < (Q1 - 1.5 * IQR)) |(df['colonne'] > (Q3 + 1.5 * IQR)))]
Pourquoi doit-on supprimer des données aberrantes ?
Les données aberrantes ont un effet sur le reste de notre analyse, elles introduisent un biais dans les statistiques comme :
une distorsion des résultats : les valeurs aberrantes peuvent fausser les mesures statistiques clés, telles que la moyenne et la variance, rendant les résultats des tests moins représentatifs de l'ensemble de données global.
une réduction de la précision : les valeurs aberrantes peuvent réduire la précision des indicateurs, affectant la fiabilité des conclusions tirées de l'analyse.
un impact sur la normalité : de nombreux tests statistiques supposent une distribution normale des données. Les valeurs aberrantes peuvent biaiser cette distribution, compromettant les hypothèses du test et affectant sa validité (nous allons parler de la normalisation dans la prochaine partie).
Astuce : on remplace communément les valeurs aberrantes par… rien ! En effet, la valeur aberrante devient ainsi une valeur manquante et on peut appliquer notre règle de remplacement des valeurs manquantes pour gérer notre valeur aberrante. Autrement, on peut aussi la remplacer par la valeur maximale qu’on autorise pour cette variable. Cela dépend beaucoup du contexte de la variable en question.
Quelles valeurs sont à nettoyer dans “Données clients VertiGo” ?
Dans le fichier qui nous a été partagé, on peut en identifier plusieurs ! Par exemple, certaines données comme les évaluations de certains clients sont manquantes. On pourrait remplacer ces valeurs manquantes par la médiane de toutes les évaluations pour conserver la structure des données. On remarque aussi que le voyageur n°110 a soumis plusieurs fois le même formulaire de feedback pour un voyage spécifique, par erreur ou en raison d’un potentiel problème technique. Il faudrait identifier et consolider ces données en une seule ligne. D’autres participants ont 350 ans ou 220 ans, ce qui n’est, a priori, pas très réaliste. On pourrait exclure toutes ces valeurs ou les examiner plus en détail pour vérifier leur exactitude.
Après avoir nettoyé les données, nous devons les transformer en un format optimal pour l'analyse.
Transformez les données
Il est commun de faciliter la manipulation des données grâce à l’agrégation de ces dernières. Ce processus consiste à combiner des données de différentes sources (base de données ou feuille de calcul) ou à résumer des données pour former un ensemble plus gérable et interprétable. Cette étape est cruciale pour synthétiser de larges ensembles de données en informations claires et actionnables.
Quelles sont les données VertiGo qu’on pourrait agréger ?
On pourrait, par exemple, calculer la moyenne des évaluations des clients par type de voyage. Ça nous offrirait une vue d'ensemble de la satisfaction clientèle.
Voici un exemple de code qui illustre mes propos. Il regroupe les données par'type de voyage'
et calcule ensuite la moyenne des'évaluation sur 5'
pour chaque type. Cela permet d'obtenir un aperçu clair de la satisfaction client en fonction du type de voyage proposé par VertiGo.
import pandas as pd
# Chargement des données
df = pd.read_csv('chemin/vers/votre/fichier.csv')
# Calcul de la moyenne des évaluations par type de voyage
moyenne_evaluations = df.groupby('type de voyage')['évaluation sur 5'].mean()
print(moyenne_evaluations)
À vous de jouer
Contexte
Toujours dans l’optique d’améliorer les ventes de VertiGo, vous devez maintenant préparer les données que vous avez collectées dans “Données clients VertiGo”. Mais il y a un problème : elles regorgent d’erreurs !
Consignes
Identifiez et traitez les valeurs manquantes.
Corrigez les erreurs et supprimez les doublons.
Gérez les données aberrantes dans votre jeu de données.
Agrégez l’âge des clients en fonction du type de voyage.
Sauvegardez votre jeu de données.
Livrable
Rédigez un script Python qui inclut le code pour les cinq étapes.
En résumé
Le nettoyage des données inclut la gestion des valeurs manquantes et incomplètes, la correction des erreurs, l'élimination des doublons et le traitement des données aberrantes.
Remplacer les valeurs manquantes par la moyenne ou la médiane permet de conserver le plus grand nombre possible de données sans introduire de biais significatif dû à des valeurs arbitraires.
Les valeurs aberrantes doivent être supprimées pour éviter une distorsion des résultats, un manque de précision et un impact négatif sur la normalité de la distribution des données.
L'agrégation des données résume ou combine les informations pour extraire des tendances ou des moyennes significatives, offrant une vue d’ensemble sur les données.
Maintenant que nos données sont prêtes, ça serait bien de pouvoir les visualiser de façon plus claire, non ?