Cours
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
countrydecarssous la forme d'une série Pandas. - Utilisez ensuite des doubles crochets pour imprimer la colonne
countrydecarssous la forme d'un DataFrame Pandas. - Enfin, utilisez les doubles crochets pour imprimer un DataFrame avec les colonnes
countryetdrives_rightdecars, 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.