Science des données - Préparation des données


Avant d'analyser les données, un Data Scientist doit extraire les données et les rendre propres et précieuses.


Extraire et lire des données avec Pandas

Avant que les données puissent être analysées, elles doivent être importées/extraites.

Dans l'exemple ci-dessous, nous vous montrons comment importer des données à l'aide de Pandas en Python.

Nous utilisons la read_csv()fonction pour importer un fichier CSV avec les données de santé :

Exemple

import pandas as pd

health_data = pd.read_csv("data.csv", header=0, sep=",")

print(health_data)

Exemple expliqué

  • Importer la bibliothèque Pandas
  • Nommez le bloc de données health_data.
  • header=0 signifie que les en-têtes des noms de variables doivent être trouvés dans la première ligne (notez que 0 signifie la première ligne en Python)
  • sep=","signifie que "," est utilisé comme séparateur entre les valeurs. C'est parce que nous utilisons le type de fichier .csv (valeurs séparées par des virgules)

Conseil : Si vous avez un fichier CSV volumineux, vous pouvez utiliser la head()fonction pour n'afficher que les 5 premières lignes :

Exemple

import pandas as pd

health_data = pd.read_csv("data.csv", header=0, sep=",")

print(health_data.head())

Nettoyage des données

Regardez les données importées. Comme vous pouvez le voir, les données sont "sales" avec des valeurs erronées ou non enregistrées :

Données sales
  • Il y a des champs vides
  • Un pouls moyen de 9 000 n'est pas possible
  • 9 000 sera traité comme non numérique, à cause du séparateur d'espace
  • Une observation du pouls maximum est notée "AF", ce qui n'a pas de sens

Donc, nous devons nettoyer les données afin d'effectuer l'analyse.


Supprimer les lignes vides

Nous voyons que les valeurs non numériques (9 000 et AF) sont dans les mêmes lignes avec des valeurs manquantes.

Solution : Nous pouvons supprimer les lignes avec des observations manquantes pour résoudre ce problème.

Lorsque nous chargeons un ensemble de données à l'aide de Pandas, toutes les cellules vides sont automatiquement converties en valeurs "NaN".

Ainsi, la suppression des cellules NaN nous donne un ensemble de données propres qui peuvent être analysées.

Nous pouvons utiliser la dropna()fonction pour supprimer les NaN. axis=0 signifie que nous voulons supprimer toutes les lignes qui ont une valeur NaN :

Exemple

health_data.dropna(axis=0,inplace=True)

print(health_data)

Le résultat est un ensemble de données sans lignes NaN :

Données nettoyées

Catégories de données

Pour analyser les données, nous devons également connaître les types de données que nous traitons.

Les données peuvent être divisées en trois catégories principales :

  1. Numérique - Contient des valeurs numériques. Peut être divisé en deux catégories :
    • Discret : les nombres sont comptés comme "entiers". Exemple : Vous ne pouvez pas avoir entraîné 2,5 séances, c'est soit 2, soit 3
    • Continu : les nombres peuvent être d'une précision infinie. Par exemple, vous pouvez dormir 7 heures, 30 minutes et 20 secondes, soit 7,533 heures
  2. Catégoriel - Contient des valeurs qui ne peuvent pas être mesurées les unes par rapport aux autres. Exemple : Une couleur ou un type d'entraînement
  3. Ordinal - Contient des données catégorielles qui peuvent être mesurées les unes par rapport aux autres. Exemple : notes scolaires où A est meilleur que B et ainsi de suite

En connaissant le type de vos données, vous pourrez savoir quelle technique utiliser lors de leur analyse.


Types de données

Nous pouvons utiliser la info()fonction pour répertorier les types de données dans notre ensemble de données : 

Exemple

print(health_data.info())

Résultat:

Type de données flottant et objet

Nous voyons que cet ensemble de données a deux types de données différents :

  • Flotteur64
  • Objet

Nous ne pouvons pas utiliser d'objets pour calculer et effectuer une analyse ici. Nous devons convertir l'objet type en float64 (float64 est un nombre avec une décimale en Python).

Nous pouvons utiliser la astype()fonction pour convertir les données en float64.

L'exemple suivant convertit "Average_Pulse" et "Max_Pulse" en type de données float64 (les autres variables sont déjà du type de données float64) :

Exemple

health_data["Average_Pulse"] = health_data['Average_Pulse'].astype(float)
health_data["Max_Pulse"] = health_data["Max_Pulse"].astype(float)

print (health_data.info())

Résultat:

Type de données flottant

Maintenant, l'ensemble de données n'a que des types de données float64.


Analyser les données

Lorsque nous avons nettoyé l'ensemble de données, nous pouvons commencer à analyser les données.

Nous pouvons utiliser la describe()fonction en Python pour résumer les données :

Exemple

print(health_data.describe())

Résultat:

  Durée Pouls_moyen Max_Pulse Calorie_burnage Heures_travail Heures_Sommeil
Compter 10.0 10.0 10.0 10.0 10.0 10.0
Moyenne 51,0 102,5 137,0 285,0 6.6 7.5
Std 10h49 15.4 11h35 30.28 3.63 0,53
Min 30,0 80,0 120,0 240,0 0.0 7.0
25% 45,0 91,25 130,0 262,5 7.0 7.0
50% 52,5 102,5 140,0 285,0 8.0 7.5
75% 60,0 113,75 145,0 307.5 8.0 8.0
Max 60,0 125,0 150,0 330,0 10.0 8.0
  • Compter - Compte le nombre d'observations
  • Moyenne - La valeur moyenne
  • Std - Écart type (expliqué dans le chapitre sur les statistiques)
  • Min - La valeur la plus basse
  • 25 % , 50 % et 75 % sont des centiles (expliqués dans le chapitre sur les statistiques)
  • Max - La valeur la plus élevée