Pandas : Lecture de données externes

PandasBeginner
Pratiquer maintenant

Introduction

En analyse de données, la première étape consiste souvent à charger vos données dans un format structuré. Pandas, une bibliothèque Python puissante, excelle dans cette tâche. La fonction la plus courante pour lire des données à partir de fichiers plats comme les CSV est pandas.read_csv(). Cette fonction est incroyablement flexible, offrant une large gamme de paramètres pour gérer différents formats de fichiers et problèmes potentiels.

Dans ce laboratoire, vous apprendrez à utiliser pd.read_csv() pour importer des données d'un fichier CSV dans un DataFrame Pandas. Nous aborderons la gestion des commentaires, la spécification des en-têtes, la gestion des valeurs manquantes et l'inspection initiale des données chargées.

Lire un fichier CSV avec read_csv

Dans cette étape, vous apprendrez l'utilisation de base de la fonction pd.read_csv() pour charger des données à partir d'un fichier CSV dans un DataFrame Pandas.

Notre répertoire de projet, ~/project, contient un fichier nommé data.csv. Examinons son contenu. Il comprend des lignes de commentaires au début, qui commencent par le symbole #. La fonction read_csv peut être instruite pour ignorer ces lignes en utilisant le paramètre comment.

Tout d'abord, ouvrez le fichier main.py depuis l'explorateur de fichiers sur la gauche. Nous écrirons notre code Python dans ce fichier.

Ajoutez le code suivant à main.py pour importer Pandas et lire le fichier data.csv. Nous assignerons le DataFrame résultant à une variable nommée df, puis nous l'afficherons.

import pandas as pd

## Read the CSV file, treating lines starting with '#' as comments
df = pd.read_csv('data.csv', comment='#')

## Print the DataFrame
print(df)

Maintenant, pour exécuter le script, ouvrez un terminal dans le WebIDE (vous pouvez utiliser le menu Terminal > New Terminal) et exécutez la commande suivante :

python3 main.py

Vous devriez voir la sortie suivante, qui montre le contenu du fichier CSV chargé dans un DataFrame structuré.

   id     name          age         city
0   1    Alice           25     New York
1   2      Bob           30  Los Angeles
2   3  Charlie  Not Available       London
3   4    David           35          NaN
4   5      Eve           22        Paris

Spécifier la ligne d'en-tête dans read_csv

Dans cette étape, nous allons explorer le paramètre header de la fonction read_csv.

Par défaut, read_csv suppose que la première ligne non commentée et non ignorée de votre fichier est la ligne d'en-tête contenant les noms des colonnes. Dans notre fichier data.csv, après avoir ignoré les lignes de commentaires, la ligne id,name,age,city est correctement déduite comme en-tête.

Le paramètre header vous permet de spécifier explicitement quelle ligne utiliser comme en-tête. Il prend un entier représentant l'indice de la ligne (en commençant par 0). Comme la première ligne de données (après les commentaires) est notre en-tête, son indice est 0.

Modifions le fichier main.py pour définir explicitement header=0. Bien que ce soit le comportement par défaut dans notre cas, être explicite peut éviter des erreurs avec des fichiers formatés de manière inhabituelle.

Mettez à jour votre main.py avec le code suivant :

import pandas as pd

## Explicitly specify that the first row (index 0) after comments is the header
df = pd.read_csv('data.csv', comment='#', header=0)

print(df)

Exécutez à nouveau le script depuis le terminal :

python3 main.py

La sortie sera identique à l'étape précédente, car nous n'avons fait que confirmer le comportement par défaut. Cette pratique est utile pour la clarté et la robustesse du code.

   id     name          age         city
0   1    Alice           25     New York
1   2      Bob           30  Los Angeles
2   3  Charlie  Not Available       London
3   4    David           35          N/A
4   5      Eve           22        Paris

Gérer les valeurs manquantes avec le paramètre na_values

Dans cette étape, vous apprendrez à gérer des représentations personnalisées des données manquantes.

Si vous regardez le DataFrame de l'étape précédente, vous verrez les valeurs "Not Available" dans la colonne age et NaN dans la colonne city. Pandas reconnaît automatiquement certains indicateurs courants de valeurs manquantes comme les chaînes vides, NA ou N/A, mais pas ceux personnalisés comme "Not Available". Nous pouvons utiliser le paramètre na_values pour fournir une liste de chaînes qui doivent être interprétées comme NaN (Not a Number), qui est le marqueur standard de Pandas pour les données manquantes.

Modifiez votre main.py pour inclure le paramètre na_values.

import pandas as pd

## Define a list of strings to be treated as missing values
missing_values = ["Not Available", "N/A"]

## Read the CSV, specifying the custom missing values
df = pd.read_csv('data.csv', comment='#', na_values=missing_values)

print(df)

Maintenant, exécutez le script :

python3 main.py

Observez la nouvelle sortie. La chaîne "Not Available" a été remplacée par NaN.

   id     name   age         city
0   1    Alice  25.0     New York
1   2      Bob  30.0  Los Angeles
2   3  Charlie   NaN       London
3   4    David  35.0          NaN
4   5      Eve  22.0        Paris

Notez que le type de données de la colonne age a également été changé en float64 pour pouvoir accueillir la valeur NaN.

Afficher les premières lignes avec la méthode head

Dans cette étape, nous allons apprendre à inspecter les premières lignes d'un DataFrame.

Lorsque l'on travaille avec de grands ensembles de données, imprimer l'intégralité du DataFrame est inefficace et peut encombrer votre écran. La méthode .head() est un moyen pratique d'obtenir un aperçu rapide de vos données. Par défaut, elle renvoie les 5 premières lignes.

Vous pouvez également passer un entier à .head() pour spécifier le nombre de lignes que vous souhaitez afficher. Affichons seulement les 3 premières lignes de notre DataFrame.

Mettez à jour votre fichier main.py comme suit. Au lieu d'imprimer l'intégralité du DataFrame, nous allons maintenant imprimer uniquement sa tête.

import pandas as pd

missing_values = ["Not Available", "N/A"]
df = pd.read_csv('data.csv', comment='#', na_values=missing_values)

## Display the first 3 rows of the DataFrame
print(df.head(3))

Exécutez le script depuis votre terminal :

python3 main.py

La sortie sera maintenant beaucoup plus courte, n'affichant que l'en-tête et les trois premiers enregistrements.

   id     name   age         city
0   1    Alice  25.0     New York
1   2      Bob  30.0  Los Angeles
2   3  Charlie   NaN       London

Vérifier la forme du DataFrame avec l'attribut shape

Dans cette étape, vous apprendrez à vérifier les dimensions de votre DataFrame.

Connaître le nombre de lignes et de colonnes est une vérification fondamentale en analyse de données. Les DataFrames Pandas possèdent un attribut .shape qui renvoie un tuple contenant le nombre de lignes et de colonnes.

Notez que .shape est un attribut, pas une méthode, vous n'utilisez donc pas de parenthèses () lors de son accès.

Modifions main.py pour imprimer la forme de notre DataFrame.

import pandas as pd

missing_values = ["Not Available", "N/A"]
df = pd.read_csv('data.csv', comment='#', na_values=missing_values)

## Get the dimensions (rows, columns) of the DataFrame
df_shape = df.shape

print(df_shape)

Exécutez le script une dernière fois :

python3 main.py

La sortie sera un tuple indiquant que notre DataFrame comporte 5 lignes et 4 colonnes.

(5, 4)

Résumé

Félicitations pour avoir terminé ce laboratoire ! Vous avez acquis les compétences essentielles pour lire et inspecter des données à l'aide de Pandas.

Dans ce laboratoire, vous avez maîtrisé :

  • La lecture d'un fichier CSV dans un DataFrame à l'aide de pd.read_csv().
  • Le saut des lignes de commentaires avec le paramètre comment.
  • La définition explicite de la ligne d'en-tête avec le paramètre header.
  • La gestion des valeurs manquantes personnalisées à l'aide du paramètre na_values.
  • L'aperçu d'un DataFrame avec la méthode .head().
  • La vérification des dimensions d'un DataFrame avec l'attribut .shape.

Ce sont des opérations fondamentales qui constituent le point de départ de presque toutes les tâches d'analyse de données. Avec ces compétences, vous êtes désormais mieux équipé pour relever divers défis d'importation de données.