Sélection avec la touche .loc en python
J'ai vu ce code dans une iPython notebook, et je suis très confus quant à la façon dont ce code fonctionne. Que j'ai compris, pd.loc[] est utilisée comme une fonction de la localisation de l'indexeur où le format est:
df.loc[index,column_name]
Toutefois, dans ce cas, le premier indice semble être une série de valeurs booléennes. Quelqu'un pourrait-il m'expliquer comment cette sélection d'œuvres. J'ai essayé de lire la documentation, mais je ne pouvais pas trouver une explication. Merci!
iris_data.loc[iris_data['class'] == 'versicolor', 'class'] = 'Iris-versicolor'
Vous devez vous connecter pour publier un commentaire.
pd.DataFrame.loc
peut prendre un ou deux indexeurs. Pour le reste du post, je vais représenter la première indexeur commei
et la deuxième de l'indexeur commej
.Si seulement un indexeur est fourni, il s'applique à l'index de la dataframe et le manque de l'indexeur est supposé représenter toutes les colonnes. Donc les deux exemples suivants sont équivalents.
df.loc[i]
df.loc[i, :]
Où
:
est utilisé pour représenter toutes les colonnes.Si les deux indexeurs sont présents,
i
références valeurs de l'indice etj
références à des valeurs de colonne.Maintenant nous pouvons nous concentrer sur ce que les types de valeurs
i
etj
peut assumer. Nous allons utiliser la suite dataframedf
notre exemple:loc
a été écrite tels quei
etj
peut êtrescalaires qui devraient être les valeurs de l'indice correspondant objets
tableaux dont les éléments sont également membres de l'index de l'objet (notez que l'ordre du tableau je passe à
loc
est respectéAvis de la dimension de l'objet de retour lors du passage de tableaux.
i
est un tableau comme il a été ci-dessus,loc
retourne un objet dans lequel un index avec ces valeurs est retourné. Dans ce cas, parce quej
était un scalaire,loc
renvoyé unpd.Series
objet. Nous pourrions avoir manipulé ce retour d'un dataframe si nous avons passé un tableau pouri
etj
, et le tableau pourrait ai juste eu une seule valeur avais tableau.boolean tableaux dont les éléments sont
True
ouFalse
et dont la longueur correspond à la longueur de l'index. Dans ce cas,loc
simplement extrait les lignes (ou les colonnes) dans laquelle la matrice booléenne estTrue
.En outre à ce que les indexeurs vous pouvez passer à
loc
, il vous permet également d'effectuer des affectations. Maintenant, nous pouvons briser la ligne de code que vous avez fournis.iris_data['class'] == 'versicolor'
retourne un booléen tableau.class
est un scalaire qui représente une valeur dans les colonnes de l'objet.iris_data.loc[iris_data['class'] == 'versicolor', 'class']
renvoie unepd.Series
objet composé de la'class'
colonne pour toutes les lignes où'class'
est'versicolor'
Lorsqu'il est utilisé avec un opérateur d'affectation:
Nous attribuer
'Iris-versicolor'
pour tous les éléments dans la colonne'class'
où'class'
était'versicolor'
C'est à l'aide de dataframes de la
pandas
paquet. L ' "indice" de la partie peut être soit un index, une liste d'indices, ou une liste de booléens. Cela peut être lu dans la documentation: https://pandas.pydata.org/pandas-docs/stable/indexing.htmlDe sorte que le
index
partie spécifie un sous-ensemble de lignes de sortir, et l' (facultatif)column_name
spécifie la colonne que vous voulez travailler à partir de ce sous-ensemble de la dataframe. Donc, si vous souhaitez mettre à jour la colonne "classe", mais seulement dans les lignes où la classe est actuellement défini comme "versicolor", vous pourriez faire quelque chose comme ce que vous de la liste en question:C'est une pandas de données-image et c'est à l'aide de base de l'étiquette outil de sélection df.loc et en cela, il y a deux entrées, l'une pour la ligne et d'autre de la colonne, de sorte que dans la ligne d'entrée c'est la sélection de tous ceux qui les valeurs de ligne où la valeur enregistrée dans la colonne "classe" est 'versicolor', et dans la colonne d'entrée c'est le choix de la colonne avec l'étiquette de "classe", et attribuer des "Iris versicolor' de la valeur.
Donc, fondamentalement, c'est le remplacement de toutes les cellules de la colonne "classe" avec la valeur "versicolor" avec "Iris versicolor'.
C'est
pandas
étiquette de sélection basé sur, comme expliqué ici: https://pandas.pydata.org/pandas-docs/stable/indexing.html#selection-by-labelLe booléen tableau est essentiellement une méthode de sélection à l'aide d'un masque.