Maison >développement back-end >Tutoriel Python >Quelle est la différence entre Pandas `loc` et `iloc` pour la sélection de données ?

Quelle est la différence entre Pandas `loc` et `iloc` pour la sélection de données ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-20 03:10:10154parcourir

What's the Difference Between Pandas `loc` and `iloc` for Data Selection?

Comment iloc et loc diffèrent dans Pandas :

Dans la manipulation de données à l'aide de Pandas, iloc et loc sont deux méthodes de découpage couramment utilisées qui prêtent souvent à confusion. Comprendre leur différence fondamentale est essentiel pour une gestion efficace des données.

Étiquette ou emplacement

La distinction clé entre loc et iloc réside dans la façon dont ils sélectionnent les données :

  • loc : Accède aux données en fonction des étiquettes, telles que la ligne ou noms de colonnes (étiquettes d'index et de colonne).
  • iloc : Accède aux données en fonction des emplacements entiers dans l'axe de l'objet (numéros de ligne/colonne).

Exemples :

Considérez un DataFrame df avec un index non monotone contenant des lettres :

import pandas as pd

df = pd.DataFrame({'col1': ['a', 'b', 'c', 'd', 'e', 'f']}, index=[49, 48, 47, 0, 1, 2])

loc (Label-Based Slicing) :

  • df.loc[0] : Récupère la ligne avec l'étiquette d'index "0" ("d').
  • df.loc[0:1] : renvoie deux lignes avec les étiquettes 0 et 1 ('d' et 'e').

iloc (Location-Based Slicing) :

  • df.iloc[0] : Obtient la valeur à l'emplacement d'index 0 (« a »).
  • df.iloc[0:1] : sélectionne une ligne à l'emplacement d'index 0 ('a').

Différences clés :

Le tableau suivant met en évidence les différences entre loc et iloc dans divers scénarios :

Object Description loc iloc
0 Single item Value at index label 0 ('d') Value at index location 0 ('a')
0:1 Slice Two rows (labels 0 and 1) One row (first row at location 0)
1:47 Slice with out-of-bounds end Zero rows (empty Series) Five rows (location 1 onwards)
1:47:-1 Slice with negative step Three rows (labels 1 back to 47) Zero rows (empty Series)
[2, 0] Integer list Two rows with given labels Two rows with given locations
s > 'e' Boolean series (indicating true values) One row (containing 'f') NotImplementedError
(s>'e').values Boolean array One row (containing 'f') Same as loc
999 Integer object not in index KeyError IndexError (out of bounds)
-1 Integer object not in index KeyError Returns last value in s
lambda x: x.index[3] Callable applied to series (here returning 3rd item in index) s.loc[s.index[3]] s.iloc[s.index[3]]

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn