Pandas loc contre iloc
-
Sélectionner une valeur particulière dans la DataFrame en spécifiant l’index et le libellé de la colonne en utilisant la méthode
.loc()
-
Sélectionner des colonnes particulières dans le DataFrame en utilisant la méthode
.loc()
-
Filtrer les lignes en appliquant une condition aux colonnes à l’aide de la méthode
.loc()
-
Filtrer les lignes avec des indices en utilisant
iloc
- Filtrer des lignes et des colonnes particulières du DataFrame
-
Filtrer la plage des lignes et des colonnes de la DataFrame en utilisant la méthode
iloc
-
Pandas
loc
vsiloc
Ce tutoriel explique comment filtrer les données d’un Pandas DataFrame en utilisant loc
et iloc
en Python. Pour filtrer les entrées du DataFrame en utilisant iloc
, nous utilisons l’index entier pour les lignes et les colonnes, et pour filtrer les entrées du DataFrame en utilisant loc
, nous utilisons les noms de lignes et de colonnes.
Pour démontrer le filtrage des données en utilisant loc
, nous utiliserons le DataFrame décrit dans l’exemple suivant.
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
student_df = pd.DataFrame(
{
"Name": ["Alice", "Steven", "Neesham", "Chris", "Alice"],
"Age": [17, 20, 18, 21, 15],
"City": ["New York", "Portland", "Boston", "Seattle", "Austin"],
"Grade": ["A", "B-", "B+", "A-", "A"],
},
index=roll_no,
)
print(student_df)
Production :
Name Age City Grade
501 Alice 17 New York A
502 Steven 20 Portland B-
503 Neesham 18 Boston B+
504 Chris 21 Seattle A-
505 Alice 15 Austin A
Sélectionner une valeur particulière dans la DataFrame en spécifiant l’index et le libellé de la colonne en utilisant la méthode .loc()
Nous pouvons passer un label d’index et un label de colonne comme argument à la méthode .loc()
pour extraire la valeur correspondant à l’index et au label de colonne donnés.
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
student_df = pd.DataFrame(
{
"Name": ["Alice", "Steven", "Neesham", "Chris", "Alice"],
"Age": [17, 20, 18, 21, 15],
"City": ["New York", "Portland", "Boston", "Seattle", "Austin"],
"Grade": ["A", "B-", "B+", "A-", "A"],
},
index=roll_no,
)
print("The DataFrame of students with marks is:")
print(student_df)
print("")
print("The Grade of student with Roll No. 504 is:")
value = student_df.loc[504, "Grade"]
print(value)
Production :
The DataFrame of students with marks is:
Name Age City Grade
501 Alice 17 New York A
502 Steven 20 Portland B-
503 Neesham 18 Boston B+
504 Chris 21 Seattle A-
505 Alice 15 Austin A
The Grade of student with Roll No. 504 is:
A-
Il sélectionne la valeur dans la DataFrame avec le label d’index comme 504
et le label de colonne Grade
. Le premier argument de la méthode .loc()
représente le nom de l’index, tandis que le second argument se réfère au nom de la colonne.
Sélectionner des colonnes particulières dans le DataFrame en utilisant la méthode .loc()
Nous pouvons également filtrer les colonnes requises du DataFrame en utilisant la méthode .loc()
. Nous passons la liste des noms de colonnes requises comme deuxième argument à la méthode .loc()
pour filtrer les colonnes spécifiées.
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
student_df = pd.DataFrame(
{
"Name": ["Alice", "Steven", "Neesham", "Chris", "Alice"],
"Age": [17, 20, 18, 21, 15],
"City": ["New York", "Portland", "Boston", "Seattle", "Austin"],
"Grade": ["A", "B-", "B+", "A-", "A"],
},
index=roll_no,
)
print("The DataFrame of students with marks is:")
print(student_df)
print("")
print("The name and age of students in the DataFrame are:")
value = student_df.loc[:, ["Name", "Age"]]
print(value)
Production :
The DataFrame of students with marks is:
Name Age City Grade
501 Alice 17 New York A
502 Steven 20 Portland B-
503 Neesham 18 Boston B+
504 Chris 21 Seattle A-
505 Alice 15 Austin A
The name and age of students in the DataFrame are:
Name Age
501 Alice 17
502 Steven 20
503 Neesham 18
504 Chris 21
505 Alice 15
Le premier argument du .loc()
est :
, qui désigne toutes les lignes du DataFrame. De même, nous passons ["Name", "Age"]
comme deuxième argument à la méthode .loc()
qui représente de ne sélectionner que les colonnes Name
et Age
du DataFrame.
Filtrer les lignes en appliquant une condition aux colonnes à l’aide de la méthode .loc()
Nous pouvons également filtrer les lignes qui remplissent la condition spécifiée pour les valeurs des colonnes en utilisant la méthode .loc()
.
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
student_df = pd.DataFrame(
{
"Name": ["Alice", "Steven", "Neesham", "Chris", "Alice"],
"Age": [17, 20, 18, 21, 15],
"City": ["New York", "Portland", "Boston", "Seattle", "Austin"],
"Grade": ["A", "B-", "B+", "A-", "A"],
},
index=roll_no,
)
print("The DataFrame of students with marks is:")
print(student_df)
print("")
print("Students with Grade A are:")
value = student_df.loc[student_df.Grade == "A"]
print(value)
Production :
The DataFrame of students with marks is:
Name Age City Grade
501 Alice 17 New York A
502 Steven 20 Portland B-
503 Neesham 18 Boston B+
504 Chris 21 Seattle A-
505 Alice 15 Austin A
Students with Grade A are:
Name Age City Grade
501 Alice 17 New York A
505 Alice 15 Austin A
Il sélectionne tous les élèves de la DataFrame avec la note A
.
Filtrer les lignes avec des indices en utilisant iloc
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
student_df = pd.DataFrame(
{
"Name": ["Alice", "Steven", "Neesham", "Chris", "Alice"],
"Age": [17, 20, 18, 21, 15],
"City": ["New York", "Portland", "Boston", "Seattle", "Austin"],
"Grade": ["A", "B-", "B+", "A-", "A"],
},
index=roll_no,
)
print("The DataFrame of students with marks is:")
print(student_df)
print("")
print("2nd and 3rd rows in the DataFrame:")
filtered_rows = student_df.iloc[[1, 2]]
print(filtered_rows)
Production :
The DataFrame of students with marks is:
Name Age City Grade
501 Alice 17 New York A
502 Steven 20 Portland B-
503 Neesham 18 Boston B+
504 Chris 21 Seattle A-
505 Alice 15 Austin A
2nd and 3rd rows in the DataFrame:
Name Age City Grade
502 Steven 20 Portland B-
503 Neesham 18 Boston B+
Il filtre les deuxième et troisième lignes du DataFrame.
Nous passons l’index entier des lignes comme argument à la méthode iloc
pour filtrer les lignes de la DataFrame. Ici, les index entiers pour les deuxième et troisième lignes sont respectivement 1
et 2
, car l’index commence à partir de 0
.
Filtrer des lignes et des colonnes particulières du DataFrame
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
student_df = pd.DataFrame(
{
"Name": ["Alice", "Steven", "Neesham", "Chris", "Alice"],
"Age": [17, 20, 18, 21, 15],
"City": ["New York", "Portland", "Boston", "Seattle", "Austin"],
"Grade": ["A", "B-", "B+", "A-", "A"],
},
index=roll_no,
)
print("The DataFrame of students with marks is:")
print(student_df)
print("")
print("Filtered values from the DataFrame:")
filtered_values = student_df.iloc[[1, 2, 3], [0, 3]]
print(filtered_values)
Production :
The DataFrame of students with marks is:
Name Age City Grade
501 Alice 17 New York A
502 Steven 20 Portland B-
503 Neesham 18 Boston B+
504 Chris 21 Seattle A-
505 Alice 15 Austin A
Filtered values from the DataFrame:
Name Grade
502 Steven B-
503 Neesham B+
504 Chris A-
Il filtre la première et la dernière colonne, c’est-à-dire Name
et Grade
de la deuxième, troisième et quatrième ligne du DataFrame. Nous passons la liste avec les indices entiers de la ligne comme premier argument et la liste avec les indices entiers de la colonne comme deuxième argument à la méthode iloc
.
Filtrer la plage des lignes et des colonnes de la DataFrame en utilisant la méthode iloc
Pour filtrer l’éventail des lignes et des colonnes, nous pouvons utiliser le découpage en listes et passer les tranches de chaque ligne et colonne en argument à la méthode iloc
.
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
student_df = pd.DataFrame(
{
"Name": ["Alice", "Steven", "Neesham", "Chris", "Alice"],
"Age": [17, 20, 18, 21, 15],
"City": ["New York", "Portland", "Boston", "Seattle", "Austin"],
"Grade": ["A", "B-", "B+", "A-", "A"],
},
index=roll_no,
)
print("The DataFrame of students with marks is:")
print(student_df)
print("")
print("Filtered values from the DataFrame:")
filtered_values = student_df.iloc[1:4, 0:2]
print(filtered_values)
Production :
The DataFrame of students with marks is:
Name Age City Grade
501 Alice 17 New York A
502 Steven 20 Portland B-
503 Neesham 18 Boston B+
504 Chris 21 Seattle A-
505 Alice 15 Austin A
Filtered values from the DataFrame:
Name Age
502 Steven 20
503 Neesham 18
504 Chris 21
Il sélectionne les deuxième, troisième et quatrième lignes et les première et deuxième colonnes de la DataFrame. 1:4 représente les lignes avec un index allant de 1 à 3 et 4 est exclusif dans la plage. De même, 0:2
représente les colonnes avec un indice allant de 0
à 1
.
Pandas loc
vs iloc
Pour filtrer les lignes
et colonnes
du DataFrame en utilisant loc()
, nous devons transmettre le nom des lignes et des colonnes à filtrer. De même, nous devons passer les indices entiers de lignes
et colonnes
à filtrer pour filtrer les valeurs en utilisant iloc()
.
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
student_df = pd.DataFrame(
{
"Name": ["Alice", "Steven", "Neesham", "Chris", "Alice"],
"Age": [17, 20, 18, 21, 15],
"City": ["New York", "Portland", "Boston", "Seattle", "Austin"],
"Grade": ["A", "B-", "B+", "A-", "A"],
},
index=roll_no,
)
print("The DataFrame of students with marks is:")
print(student_df)
print("")
print("Filtered values from the DataFrame using loc:")
iloc_filtered_values = student_df.loc[[502, 503, 504], ["Name", "Age"]]
print(iloc_filtered_values)
print("")
print("Filtered values from the DataFrame using iloc:")
iloc_filtered_values = student_df.iloc[[1, 2, 3], [0, 3]]
print(iloc_filtered_values)
The DataFrame of students with marks is:
Name Age City Grade
501 Alice 17 New York A
502 Steven 20 Portland B-
503 Neesham 18 Boston B+
504 Chris 21 Seattle A-
505 Alice 15 Austin A
Filtered values from the DataFrame using loc:
Name Age
502 Steven 20
503 Neesham 18
504 Chris 21
Filtered values from the DataFrame using iloc:
Name Grade
502 Steven B-
503 Neesham B+
504 Chris A-
Il montre comment nous pouvons filtrer les mêmes valeurs à partir de DataFrame en utilisant loc
et iloc
.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn