0Pricing
Pandas & NumPy Academy · Leçon

Sélectionner des colonnes et des lignes

Sélectionnez une ou plusieurs colonnes avec la notation entre crochets, puis récupérez les lignes par étiquette et par position avec .loc et .iloc.

Sélectionner des colonnes et des lignes est une leçon Pandas & NumPy Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Pandas & NumPy Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Pandas & NumPy Academy comprend 4 leçons au total.

Sélectionner une seule colonne

Accédez à une colonne par son nom avec la notation entre crochets df['col'], qui renvoie une Series. Vous pouvez également utiliser la notation avec point df.col lorsque le nom de la colonne est un identifiant Python valide, sans espaces. La notation entre crochets est toujours sûre ; la notation avec point échoue lorsque le nom entre en conflit avec une méthode du DataFrame, comme count ou mean.

import pandas as pd

df = pd.DataFrame({'name': ['Alice', 'Bob'], 'score': [90, 75]})
print(df['name'])     # Series
print(type(df['name']))  # pandas.core.series.Series

Sélectionner plusieurs colonnes

Pour sélectionner plusieurs colonnes, transmettez une liste de noms de colonnes entre crochets : df[['col1', 'col2']]. Remarquez les doubles crochets : la paire extérieure est l’opérateur d’indexation et la paire intérieure crée une liste Python. Le résultat est un DataFrame, et non une Series. Cette technique est couramment utilisée pour extraire une matrice de caractéristiques destinée à l’apprentissage automatique.

import pandas as pd

df = pd.DataFrame({'a': [1,2], 'b': [3,4], 'c': [5,6]})
subset = df[['a', 'c']]
print(type(subset))      # pandas.core.frame.DataFrame
print(subset)

.loc pour sélectionner des lignes et des colonnes

df.loc[row_label, col_label] sélectionne les données par étiquette. Fournissez une seule étiquette, une liste d’étiquettes ou une tranche, pour les lignes comme pour les colonnes. df.loc[:, 'score'] sélectionne toutes les lignes de la colonne 'score'. df.loc['r1':'r3', ['a', 'b']] sélectionne les lignes r1 à r3 incluses pour les colonnes a et b.

import pandas as pd

df = pd.DataFrame({'x': [10,20,30], 'y': [40,50,60]},
                  index=['r1', 'r2', 'r3'])
print(df.loc['r2', 'x'])       # 20
print(df.loc['r1':'r2', 'y'])  # r1:40  r2:50

.iloc pour sélectionner par position

df.iloc[row_pos, col_pos] sélectionne les données par position entière, sans tenir compte des étiquettes. Les deux arguments suivent les conventions des tranches Python, avec des bornes de fin exclusives. df.iloc[:, 0] sélectionne la première colonne sous forme de Series. df.iloc[0:2, 1:3] sélectionne un sous-DataFrame rectangulaire de 2 × 2 dans le coin supérieur gauche.

import pandas as pd

df = pd.DataFrame({'a': [1,2,3], 'b': [4,5,6], 'c': [7,8,9]})
print(df.iloc[1, 2])        # 8  -- row 1, col 2
print(df.iloc[0:2, 0:2])   # top-left 2x2 sub-table

Sélection booléenne des lignes

Transmettez à .loc une Series booléenne (possédant le même index que le DataFrame) pour filtrer les lignes. Construisez cette Series booléenne à partir d’une condition appliquée à une colonne. Vous pouvez combiner les conditions avec & et |. Il s’agit du modèle de filtrage standard dans l’analyse de données avec Pandas, bien plus expressif que les clauses WHERE de SQL pour les conditions complexes portant sur plusieurs colonnes.

import pandas as pd

df = pd.DataFrame({'name': ['A','B','C','D'], 'score': [80,55,92,71]})
high = df.loc[df['score'] >= 70]
print(high)
#   name  score
# 0    A     80
# 2    C     92
# 3    D     71

Conditions de filtrage combinées

Chaque condition doit être placée entre parenthèses, puis combinée avec & (AND) ou | (OR). L’utilisation des mots-clés Python and/or sur des Series provoque une erreur. Pour nier une condition, utilisez ~ (tilde) au lieu de not. Testez toujours les conditions séparément avant de les combiner afin d’isoler la source de résultats inattendus.

import pandas as pd

df = pd.DataFrame({'name': ['A','B','C','D'],
                   'score': [80, 55, 92, 71],
                   'dept': ['Eng', 'HR', 'Eng', 'HR']})
filtered = df.loc[(df['score'] >= 70) & (df['dept'] == 'Eng')]
print(filtered)

Sélectionner des lignes par position entière

df.iloc[n] renvoie la n-ième ligne sous forme de Series. df.iloc[n:m] renvoie les lignes n à m-1 sous forme de DataFrame. df.iloc[[0, 2, 4]] sélectionne des lignes précises par position grâce à l’indexation avancée. Ces opérations sont équivalentes à la sélection de lignes dans un tableau NumPy et sont souvent utilisées pour séparer les données d’entraînement et de test avant d’appliquer des modèles d’apprentissage automatique.

import pandas as pd

df = pd.DataFrame({'a': range(5), 'b': range(5, 10)})
print(df.iloc[0])         # first row as Series
print(df.iloc[1:3])       # rows 1 and 2 as DataFrame
print(df.iloc[[0, 4]])    # first and last row

Combiner la sélection de lignes et de colonnes

.loc et .iloc acceptent tous deux deux arguments : df.loc[row_selector, col_selector]. Cela permet d’effectuer une sélection rectangulaire précise en une seule expression. Un deux-points : seul sélectionne toutes les lignes ou toutes les colonnes. Cette méthode est essentielle pour extraire une matrice de caractéristiques contenant des colonnes précises, uniquement pour les lignes d’entraînement d’un jeu de données.

import pandas as pd

df = pd.DataFrame({'x': [1,2,3], 'y': [4,5,6], 'z': [7,8,9]})
# Filter rows where x > 1, keep columns y and z
result = df.loc[df['x'] > 1, ['y', 'z']]
print(result)
#    y  z
# 1  5  8
# 2  6  9

Sélectionner une seule ligne avec .loc

Lorsque vous transmettez une seule étiquette scalaire à df.loc[label], le résultat est une Series dont l’index correspond aux noms des colonnes. Cette méthode est utile pour examiner un enregistrement précis. Pour obtenir plutôt un DataFrame d’une seule ligne, placez l’étiquette dans une liste : df.loc[[label]]. Cette distinction est importante lorsque vous transmettez le résultat à des fonctions qui attendent un DataFrame.

import pandas as pd

df = pd.DataFrame({'name': ['A','B'], 'score': [80, 90]},
                  index=['r1', 'r2'])
print(type(df.loc['r1']))    # Series
print(type(df.loc[['r1']])) # DataFrame

at et iat pour un accès rapide aux valeurs scalaires

df.at[row_label, col_name] et df.iat[row_pos, col_pos] permettent de récupérer ou de définir une valeur scalaire unique avec un coût moindre que .loc/.iloc. Ils sont conçus pour les boucles qui mettent à jour des cellules individuelles. En production, préférez toujours les opérations vectorisées aux mises à jour cellule par cellule, mais utilisez at/iat lorsque vous devez réellement itérer.

import pandas as pd

df = pd.DataFrame({'x': [1, 2, 3], 'y': [4, 5, 6]},
                  index=['a', 'b', 'c'])
print(df.at['b', 'y'])    # 5
print(df.iat[2, 0])       # 3

Avertissement sur l’indexation en chaîne

L’indexation en chaîne, comme df['col'][condition] ou df[mask]['col'] = val, peut produire un SettingWithCopyWarning, car Pandas peut travailler sur une copie plutôt que sur l’original. Utilisez toujours une seule expression .loc pour toute modification : df.loc[mask, 'col'] = val. Il s’agit de la méthode correcte, sans avertissement.

import pandas as pd

df = pd.DataFrame({'score': [80, 55, 92]})
# WRONG - may not modify original:
# df[df['score'] > 60]['score'] = 100

# CORRECT:
df.loc[df['score'] > 60, 'score'] = 100
print(df)

Vérification rapide

Vérifiez votre compréhension de la sélection des colonnes et des lignes présentée dans cette leçon.

Récapitulatif de la leçon

Dans cette leçon, vous avez appris que .loc sélectionne les lignes et les colonnes par étiquette, avec des bornes de fin incluses, que .iloc sélectionne par position entière, avec des bornes de fin exclusives comme les tranches Python et que les conditions booléennes appliquées avec .loc filtrent les lignes sans le problème de SettingWithCopyWarning lié à l’indexation en chaîne. Nous allons maintenant ajouter de nouvelles colonnes calculées, renommer les colonnes existantes et supprimer les colonnes inutiles avec drop().

Questions Fréquemment Posées

La leçon « Sélectionner des colonnes et des lignes » est-elle gratuite ?

Oui — le texte complet de « Sélectionner des colonnes et des lignes » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Pandas & NumPy Academy, passe à CoddyKit PRO. Le cours Pandas & NumPy Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Sélectionner des colonnes et des lignes » ?

Sélectionnez une ou plusieurs colonnes avec la notation entre crochets, puis récupérez les lignes par étiquette et par position avec .loc et .iloc. Tu pratiques Pandas & NumPy Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Pandas & NumPy Academy ?

Aucune expérience préalable n'est requise. Pandas & NumPy Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Sélectionner des colonnes et des lignes » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Pandas & NumPy Academy ?

Oui. Chaque leçon Pandas & NumPy Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Créer des DataFrames
  2. Sélectionner des colonnes et des lignes
  3. Ajouter et supprimer des colonnes
  4. Inspection de base des DataFrames
← Retour à Pandas & NumPy Academy