Cours
Tutoriel Python sur la sélection de colonnes
Pour exécuter facilement tout le code d'exemple de ce tutoriel, vous pouvez créer un classeur DataLabgratuit, dans lequel Python est préinstallé et qui contient tous les exemples de code.
Si vous disposez d'un DataFrame et que vous souhaitez accéder à quelques lignes/colonnes spécifiques de ce DataFrame ou les sélectionner, vous pouvez utiliser des crochets ou d'autres méthodes avancées telles que loc
et iloc
.
Sélection de colonnes à l'aide de crochets
Supposons maintenant que vous souhaitiez sélectionner la colonne du pays dans le DataFrame brics
. Pour ce faire, vous devez taper brics
puis l'intitulé de la colonne à l'intérieur des crochets.
Sélection d'une colonne
country capital area population
BR Brazil Brasilia 8.516 200.40
RU Russia Moscow 17.100 143.50
IN India New Dehli 3.286 1252.00
CH China Beijing 9.597 1357.00
SA South Africa Pretoria 1.221 52.98
brics["country"]
BR Brazil
RU Russia
IN India
CH China
SA South Africa
Name: country, dtype: object
Vérifier le type d'objet
Vérifions le type de l'objet renvoyé par la fonction type.
type(brics["country"])
pandas.core.series.Series
Comme le montre le résultat ci-dessus, il s'agit d'une série pandas
! La série peut être considérée comme un tableau unidimensionnel qui peut être étiqueté de la même manière qu'un DataFrame.
Si vous souhaitez sélectionner des données et les conserver dans un DataFrame, vous devez utiliser des doubles crochets :
brics[["country"]]
BR Brazil
RU Russia
IN India
CH China
SA South Africa
Si nous vérifions le type de cette sortie, il s'agit d'un DataFrame ! Mais avec une seule colonne.
type(brics[["country"]])
pandas.core.frame.DataFrame
Sélection de plusieurs colonnes
Vous pouvez étendre cet appel pour sélectionner deux colonnes. Essayons de sélectionner country
et capital
.
brics[["country", "capital"]]
country capital
BR Brazil Brasilia
RU Russia Moscow
IN India New Dehli
CH China Beijing
SA South Africa Pretoria
Si vous y regardez de plus près, vous placez en fait une liste avec les étiquettes des colonnes à l'intérieur d'une autre série de crochets et vous vous retrouvez avec un sous DataFrame ne contenant que les colonnes country
et capital
.
Apprenez Python à partir de zéro
Sélection de rangées à l'aide de crochets
Les crochets ne se limitent pas à la sélection de colonnes. Vous pouvez également les utiliser pour obtenir des lignes, ou des observations, à partir d'un DataFrame.
Exemple
Vous ne pouvez sélectionner des lignes à l'aide de crochets que si vous spécifiez une tranche, comme 0:4
. De plus, vous utilisez ici les index entiers des lignes, et non les étiquettes des lignes !
Pour obtenir les deuxième, troisième et quatrième lignes du DataFrame brics
, nous utilisons les tranches 1 à 4. Rappelez-vous que la fin de la tranche est exclusive et que l'index commence à zéro.
brics[1:4]
country capital area population
RU Russia Moscow 17.100 143.50
IN India New Dehli 3.286 1252.00
CH China Beijing 9.597 1357.00
Ces crochets fonctionnent, mais ils n'offrent qu'une fonctionnalité limitée. Idéalement, nous voudrions quelque chose de similaire aux tableaux 2D Numpy
, où vous utilisez également des crochets. L'index, ou la tranche, avant la virgule fait référence aux lignes, et la tranche après la virgule fait référence aux colonnes.
Exemple de tableau 2D Numpy
:
my_array[rows, columns]
Si vous voulez faire quelque chose de similaire avec pandas
, vous devez utiliser les fonctions loc
et iloc
.
loc
: basé sur l'étiquetageiloc
: entier basé sur la position
loc
Fonction
loc
est une technique permettant de sélectionner des parties de vos données sur la base d'étiquettes. Examinons le DataFrame brics et obtenons les lignes pour la Russie.
Pour ce faire, vous placerez l'étiquette qui vous intéresse entre crochets après loc
.
Sélection des lignes
brics.loc["RU"]
country Russia
capital Moscow
area 17.1
population 143.5
Name: RU, dtype: object
Nous obtenons une série de pandas
contenant toutes les informations sur les rangs, mais de manière peu pratique, ces informations sont présentées sur des lignes différentes. Pour obtenir un DataFrame, nous devons placer la chaîne RU
dans une autre paire de crochets. Nous pouvons également sélectionner plusieurs lignes en même temps. Supposons que vous souhaitiez également inclure l'Inde et la Chine. Il suffit d'ajouter ces étiquettes de ligne à la liste.
brics.loc[["RU", "IN", "CH"]]
country capital area population
RU Russia Moscow 17.100 143.50
IN India New Dehli 3.286 1252.00
CH China Beijing 9.597 1357.00
La différence entre l'utilisation de loc
et les crochets de base est que vous pouvez étendre la sélection à l'aide d'une virgule et d'une spécification des colonnes qui vous intéressent.
Sélection de lignes et de colonnes
Étendons l'appel précédent pour n'inclure que les colonnes country
et capital
. Nous ajoutons une virgule et dressons la liste des intitulés de colonnes que nous souhaitons conserver. L'intersection est renvoyée.
brics.loc[["RU", "IN", "CH"], ["country", "capital"]]
country capital
RU Russia Moscow
IN India New Dehli
CH China Beijing
Vous pouvez également utiliser loc
pour sélectionner toutes les lignes mais seulement un nombre spécifique de colonnes. Remplacez simplement la première liste qui spécifie les étiquettes de ligne par deux points. Une tranche qui va du début à la fin. Cette fois, nous récupérons toutes les lignes mais seulement deux colonnes.
Sélection de toutes les lignes et de colonnes spécifiques
brics.loc[:, ["country", "capital"]]
country capital
BR Brazil Brasilia
RU Russia Moscow
IN India New Dehli
CH China Beijing
SA South Africa Pretoria
iloc
Fonction
La fonction iloc
vous permet de sous-répertorier les DataFrames pandas
en fonction de leur position ou de leur index.
Sélection des lignes
Utilisons les mêmes données et des exemples similaires à ceux que nous avons utilisés pour loc
. Commençons par le rang de la Russie.
brics.iloc[[1]]
country capital area population
RU Russia Moscow 17.100 143.50
Pour obtenir les rangs de la Russie, de l'Inde et de la Chine. Vous pouvez maintenant utiliser une liste d'index 1, 2, 3
.
brics.iloc[[1, 2, 3]]
country capital area population
RU Russia Moscow 17.100 143.50
IN India New Dehli 3.286 1252.00
CH China Beijing 9.597 1357.00
Sélection de lignes et de colonnes
Comme pour loc
, nous pouvons également sélectionner des lignes et des colonnes à l'aide de iloc
. Ici, nous sélectionnerons les lignes pour la Russie, l'Inde et la Chine et les colonnes country
et capital
.
brics.iloc[[1, 2, 3], [0, 1]]
country capital
RU Russia Moscow
IN India New Dehli
CH China Beijing
Sélection de toutes les lignes et de colonnes spécifiques
Enfin, si vous souhaitez sélectionner toutes les lignes mais ne conserver que les colonnes country
et capital
, c'est possible :
brics.loc[:, [0, 1]]
country capital
BR Brazil Brasilia
RU Russia Moscow
IN India New Dehli
CH China Beijing
SA South Africa Pretoria
loc
et iloc
sont assez similaires. La seule différence réside dans la manière dont vous vous référez aux colonnes et aux lignes.
Exemple interactif de sélection d'un sous-ensemble de données
Dans l'exemple suivant, les données sur les voitures sont importées d'un fichier CSV sous la forme d'un DataFrame Pandas. Pour ne sélectionner que les cars_per_cap column
des voitures, vous pouvez utiliser :
cars['cars_per_cap']
cars[['cars_per_cap']]
La version à simple crochet donne une série Pandas ; la version à double crochet donne un DataFrame Pandas.
- Vous utiliserez des crochets simples pour imprimer la colonne
country
decars
sous la forme d'une série Pandas. - Utilisez ensuite des doubles crochets pour imprimer la colonne
country
decars
sous la forme d'un DataFrame Pandas. - Enfin, utilisez les doubles crochets pour imprimer un DataFrame avec les colonnes
country
etdrives_right
decars
, dans cet ordre.
# Import cars data
import pandas as pd
cars = pd.read_csv('cars.csv', index_col = 0)
# Print out country column as Pandas Series
print(cars['country'])
# Print out country column as Pandas DataFrame
print(cars[['country']])
# Print out DataFrame with country and drives_right columns
print(cars[['country', 'drives_right']])
Lorsque nous exécutons le code ci-dessus, nous obtenons le résultat suivant :
US United States
AUS Australia
JPN Japan
IN India
RU Russia
MOR Morocco
EG Egypt
Name: country, dtype: object
country
US United States
AUS Australia
JPN Japan
IN India
RU Russia
MOR Morocco
EG Egypt
country drives_right
US United States True
AUS Australia False
JPN Japan False
IN India False
RU Russia True
MOR Morocco True
EG Egypt True
Pour en savoir plus sur les pandas, consultez cette vidéo tirée de notre cours Intermediate Python.
Ce contenu est extrait du cours Python intermédiaire de DataCamp par Hugo Bowne-Anderson.
Cours Python
Cours
Introduction to Python
Cours
Reshaping Data with pandas
blog
Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux

Nisha Arya Ahmed
15 min