Sélection de données Pandas

PandasBeginner
Pratiquer maintenant

Introduction

Bienvenue dans le laboratoire de sélection de données avec Pandas ! Pandas est une bibliothèque puissante pour la manipulation et l'analyse de données en Python. L'une des tâches les plus fondamentales de l'analyse de données consiste à sélectionner des sous-ensembles spécifiques de vos données. Que vous ayez besoin d'examiner une seule colonne, quelques lignes spécifiques ou une tranche complexe de votre jeu de données, Pandas offre une variété de méthodes flexibles et efficaces pour accomplir cette tâche.

Dans ce laboratoire, vous travaillerez avec un jeu de données d'échantillon d'informations sur les étudiants. Vous apprendrez à :

  • Sélectionner des colonnes uniques et multiples à l'aide de la notation entre crochets (bracket notation).
  • Sélectionner des lignes par leurs étiquettes (labels) à l'aide de l'accesseur .loc.
  • Sélectionner des lignes par leur position entière (integer position) à l'aide de l'accesseur .iloc.
  • Combiner la sélection de lignes et de colonnes pour extraire des tranches de données précises.

À la fin de ce laboratoire, vous aurez une solide compréhension des techniques de sélection de données de base dans Pandas, qui sont essentielles pour toute tâche liée aux données.

Sélectionner une seule colonne à l'aide de la notation entre crochets

Dans cette étape, vous apprendrez la manière la plus courante de sélectionner une seule colonne d'un DataFrame Pandas. Cela se fait à l'aide de la notation entre crochets [], similaire à la façon dont vous accéderiez à une valeur dans un dictionnaire Python.

Tout d'abord, nous devons charger nos données du fichier students.csv dans un DataFrame. Ensuite, nous pouvons sélectionner une colonne en passant son nom sous forme de chaîne de caractères entre les crochets.

Veuillez ouvrir le fichier main.py depuis l'explorateur de fichiers à gauche et ajouter le code suivant.

import pandas as pd

## Load the CSV file into a DataFrame
df = pd.read_csv('students.csv')

## Select the 'name' column
name_column = df['name']

## Print the selected column
print(name_column)

Maintenant, exécutons le script. Ouvrez un terminal dans le WebIDE et exécutez la commande suivante :

python3 main.py

Vous verrez la sortie, qui est un objet Series Pandas contenant tous les noms de la colonne 'name'.

0      Alice
1        Bob
2    Charlie
3      David
4        Eve
Name: name, dtype: object

Comme vous pouvez le constater, la sélection d'une seule colonne renvoie une Series, qui est essentiellement un tableau unidimensionnel étiqueté.

Sélectionner plusieurs colonnes par liste

Dans cette étape, nous allons étendre la technique précédente pour sélectionner plusieurs colonnes à la fois. Pour ce faire, au lieu de passer une seule chaîne de caractères, vous passez une liste de noms de colonnes entre les crochets de sélection. Notez l'utilisation de doubles crochets [[]] : les crochets extérieurs sont pour la sélection elle-même, et les crochets intérieurs créent la liste des colonnes.

Modifions le fichier main.py pour sélectionner les colonnes name et score.

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

import pandas as pd

## Load the CSV file into a DataFrame
df = pd.read_csv('students.csv')

## Select the 'name' and 'score' columns
subset = df[['name', 'score']]

## Print the resulting subset DataFrame
print(subset)

Maintenant, exécutez à nouveau le script depuis votre terminal :

python3 main.py

La sortie sera un nouveau DataFrame contenant uniquement les colonnes que vous avez spécifiées.

      name  score
0    Alice     85
1      Bob     92
2  Charlie     95
3    David     88
4      Eve     90

Contrairement à la sélection d'une seule colonne qui renvoie une Series, la sélection de plusieurs colonnes renvoie un nouveau DataFrame.

Utiliser loc pour sélectionner des lignes par étiquette

Dans cette étape, vous apprendrez comment sélectionner des données en fonction de leur étiquette à l'aide de l'accesseur .loc. L'indexeur .loc est principalement basé sur les étiquettes, ce qui signifie que vous utilisez les noms (ou étiquettes) de l'index pour effectuer des sélections. Par défaut, lorsque vous chargez un fichier CSV sans spécifier de colonne d'index, Pandas attribue un index entier par défaut commençant à 0. Ces entiers agissent comme les étiquettes des lignes.

Utilisons .loc pour sélectionner la troisième ligne de notre DataFrame, qui a l'étiquette d'index 2.

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

import pandas as pd

## Load the CSV file into a DataFrame
df = pd.read_csv('students.csv')

## Select the row with index label 2
charlie_data = df.loc[2]

## Print the selected row
print(charlie_data)

Exécutez le script depuis votre terminal :

python3 main.py

La sortie sera une Series contenant toutes les données de la ligne avec l'étiquette d'index 2.

name        Charlie
age              21
major     Mathematics
score            95
Name: 2, dtype: object

Cela montre les données de l'étudiant "Charlie". L'utilisation de .loc est un moyen puissant d'accéder aux lignes lorsque vous connaissez leurs étiquettes.

Utiliser iloc pour sélectionner des lignes par position entière

Dans cette étape, nous allons explorer une autre méthode de sélection : .iloc. L'indexeur .iloc est principalement basé sur la position entière. Il fonctionne comme le découpage de listes en Python, où vous utilisez des indices entiers pour accéder aux éléments. Ceci est différent de .loc, qui utilise des étiquettes. Bien que nos étiquettes d'index par défaut soient également des entiers, la distinction devient cruciale lorsque vous avez des étiquettes non entières.

Utilisons .iloc pour sélectionner la toute première ligne du DataFrame, qui se trouve à la position entière 0.

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

import pandas as pd

## Load the CSV file into a DataFrame
df = pd.read_csv('students.csv')

## Select the first row (at integer position 0)
first_row = df.iloc[0]

## Print the selected row
print(first_row)

Exécutez le script depuis votre terminal :

python3 main.py

La sortie sera une Series contenant les données du premier étudiant, "Alice".

name       Alice
age           20
major    Physics
score         85
Name: 0, dtype: object

Souvenez-vous de la différence clé : .loc est pour les étiquettes, .iloc est pour les positions entières.

Découper des lignes et des colonnes avec loc

Dans cette dernière étape, vous combinerez ce que vous avez appris pour effectuer des sélections plus puissantes. .loc et .iloc peuvent sélectionner des lignes et des colonnes simultanément en utilisant la syntaxe df.loc[sélecteur_ligne, sélecteur_colonne].

Nous utiliserons .loc pour sélectionner une tranche de lignes et une tranche de colonnes. Une caractéristique clé de .loc est que lorsque vous découpez avec des étiquettes (par exemple, 1:3), l'étiquette de fin (3) est incluse.

Sélectionnons les lignes de l'étiquette d'index 1 à 3 et les colonnes de name à major.

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

import pandas as pd

## Load the CSV file into a DataFrame
df = pd.read_csv('students.csv')

## Select rows with index labels 1 through 3 (inclusive)
## and columns from 'name' to 'major' (inclusive)
data_slice = df.loc[1:3, 'name':'major']

## Print the resulting slice
print(data_slice)

Exécutez le script depuis votre terminal :

python3 main.py

La sortie est un nouveau DataFrame qui est une "tranche" spécifique des données d'origine.

      name  age           major
1      Bob   22  Computer Science
2  Charlie   21       Mathematics
3    David   23       Engineering

Cette technique est extrêmement utile pour isoler des régions spécifiques de votre jeu de données pour l'analyse.

Résumé

Félicitations pour avoir terminé le laboratoire ! Vous avez appris avec succès les méthodes fondamentales de sélection de données dans Pandas.

Dans ce laboratoire, vous avez pratiqué :

  • La sélection d'une seule colonne à l'aide de la notation entre crochets df['colonne'], qui renvoie une Series.
  • La sélection de plusieurs colonnes à l'aide d'une liste dans la notation entre crochets df[['col1', 'col2']], qui renvoie un DataFrame.
  • La sélection de lignes par leur étiquette avec .loc, qui est puissant pour l'indexation basée sur les étiquettes.
  • La sélection de lignes par leur position entière avec .iloc, qui suit les règles de découpage standard de Python.
  • La combinaison de sélecteurs de lignes et de colonnes avec .loc pour extraire des tranches spécifiques et bidimensionnelles de vos données.

Maîtriser ces techniques de sélection est une première étape essentielle pour devenir compétent avec Pandas pour l'analyse et la manipulation de données. Vous pouvez maintenant accéder en toute confiance à n'importe quelle partie de votre DataFrame pour l'inspecter, l'analyser ou la modifier.