LOC vs ILOC dans les pandas : Différence entre LOC et ILOC dans les pandas

Publié: 2020-08-01

Table des matières

Loc et iloc dans les pandas

Une cause courante de confusion parmi les nouveaux développeurs Python est loc contre iloc. Ils semblent tous deux très similaires et effectuent des tâches similaires. Cela peut donc déconcerter n'importe quel étudiant.

Si vous souhaitez connaître la différence entre iloc et loc, vous êtes au bon endroit, car dans cet article, nous aborderons ce sujet en détail. Vous découvrirez quelle est la principale différence entre ces fonctions, puis vous les verrez en action pour mieux comprendre le concept. Consultez nos cours de science des données pour en savoir plus sur Pandas.

Commençons.

Différence entre loc et iloc

1. iloc en Python

Vous pouvez utiliser iloc en Python pour la sélection. Il est basé sur un emplacement entier et vous aide à sélectionner par la position. Ainsi, si vous souhaitez rechercher la ligne avec l'index 5, iloc vous montrera la cinquième ligne du bloc de données, quel que soit son nom ou son étiquette.

Voici un exemple d'iloc en Python :

>>> mydict = [{'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4},

… {'a' : 100, 'b' : 200, 'c' : 300, 'd' : 400},

… {'a' : 1000, 'b' : 2000, 'c' : 3000, 'd' : 4000 }]

>>> df = pd.DataFrame(mydict)

>>> df

a B c d

0 1 2 3 4

1 100 200 300 400

2 1000 2000 3000 4000

Nous indexerons les lignes avec un entier scalaire en utilisant la fonction iloc pour la trame de données ci-dessus :

>>> type(df.iloc[0])

<classe 'pandas.core.series.Series'>

>>> df.iloc[0]

un 1

b 2

c 3

j 4

Nom : 0, dtype : int64

2. loc dans Pandas

Vous pouvez utiliser loc dans Pandas pour accéder à plusieurs lignes et colonnes en utilisant des étiquettes ; cependant, vous pouvez également l'utiliser avec un tableau booléen.

Si vous utilisez loc pour trouver une ligne avec l'index 5, vous n'obtiendrez pas la cinquième ligne avec. Au lieu de cela, vous n'obtiendrez que la ligne portant le nom "5".

Voici un exemple de loc dans Pandas :

>>> df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],

… index=['cobra', 'vipère', 'sidewinder'],

… colonnes=['vitesse_max', 'bouclier'])

>>> df

bouclier max_speed

cobra 1 2

vipère 4 5

sidewinder 7 8

Ce qui précède était le tableau dont nous allons extraire la ligne :

>>> df.loc['vipère']

vitesse_max 4

bouclier 5

Nom : viper, dtype : int64

Exemple détaillé pour loc vs iloc

Même si nous utilisons ces deux fonctions pour la sélection, il serait préférable que nous discutions d'un exemple détaillé pour comprendre leurs distinctions.

Dans notre exemple, nous utiliserons l'ensemble de données client telco, qui est disponible sur kaggle. Nous allons l'ajouter à un bloc de données :

df = pd.read_csv(“Projects/churn_prediction/Telco-Customer-Churn.csv”)

df.tête ()

identifiant le sexe Sr. Citoyen Partenaire Personnes à charge mandat Téléphoner Lignes multiples l'Internet Sécurité
0 7590-VHVEG Femme 0 Oui Non 1 Non Pas de téléphone ADSL Non
1 5575-GNVDE Homme 0 Non Non 34 Oui Non ADSL Oui
2 3668-QPYBK Homme 0 Non Non 2 Oui Non ADSL Oui

Cet ensemble de données comporte 21 colonnes ; nous n'en avons montré que quelques-uns à des fins de démonstration. Comme nous l'avons déjà discuté, nous utilisons loc pour sélectionner les données par l'étiquette. Ici, les noms des colonnes sont leurs étiquettes de colonne, telles que genre, mandat, OnlineSecurity ; ce sont tous les noms de colonne ainsi que les étiquettes.

Comme nous n'avons attribué aucun index spécifique, pandas créerait un index entier pour les lignes par défaut. Les étiquettes de ligne sont des nombres entiers, qui commencent à 0 et augmentent. Dans cet exemple, nous verrons comment loc et iloc se comportent différemment.

  • Sélectionnez la ligne "1" et la colonne "Partenaire"

df.loc[1, 'Partenaire']

Sortie : 'Non'

Il affiche la valeur présente dans la colonne 'Partenaire' de la ligne '1'.

  • Sélectionnez les étiquettes de ligne '4' et les colonnes 'customerID' et 'gender'

df.loc[:4, ['identifiant client', 'sexe']]

N ° de client

le sexe

0

7590-VHVEG

Femme

1

5575-GNVDE

Homme

2

3668-QPYBK

Homme

3

7795-CFOCW

Homme

4

9237-HQUIT

Femme

  • Sélectionnez les étiquettes de ligne "1", "2", "3" et la colonne "Dependents"

df.loc[[1,2,3], 'Dépendances']

1 Non

2 Non

3 Non

Nom : Dépendants, dtype : objet

Cette fois, nous allons filtrer la trame de données et appliquer iloc ou loc :

  • Sélectionnez les étiquettes de ligne sur "10" et les colonnes "PhoneService" et "InternetService" d'un client qui a un partenaire (le partenaire doit être "oui")

df [df.Partner == 'Yes'].loc:10, ['PhoneService', 'InternetService']]

Dans le cas ci-dessus, nous avons appliqué un filtre à la base de données mais n'avons pas modifié l'index, de sorte que notre sortie a omis plusieurs étiquettes des lignes requises par notre filtre. Ainsi, en utilisant loc[:10] ici, nous avons sélectionné les lignes qui avaient des étiquettes jusqu'à "10".

Si, d'autre part, nous utilisons ici iloc et appliquons le filtre, nous obtiendrons 10 lignes car iloc sélectionne par position, quelles que soient les étiquettes. Voici le résultat que nous obtiendrons si nous appliquons iloc[:10] :

df[df.Partenaire == 'Oui'].iloc[:10, [6,8]]

Service téléphonique Service Internet
0 Non ADSL
8 Oui Fibre optique
dix Oui ADSL
12 Oui Fibre optique
15 Oui Fibre optique
18 Oui ADSL
21 Oui Non
23 Oui ADSL
24 Oui ADSL
26 Oui Fibre optique

Vous avez dû remarquer que nous devons changer notre méthode pour sélectionner les colonnes.

Lis: Tutoriel Python Pandas

  • Sélectionnez les 5 premières colonnes et les 5 premières lignes avec iloc

df.iloc[:4, :4]

N ° de client le sexe SeniorCitoyen Partenaire
0 7590-VHVEG Femme 0 Oui
1 5575-GNVDE Homme 0 Non
2 3668-QPYBK Homme 0 Non
3 7795-CFOCW Homme 0 Non

Nous pouvons utiliser iloc pour sélectionner des positions à partir de la fin. Pour cela, nous devrons simplement utiliser des entiers négatifs (-1, -2, etc.) et commencer par eux.

  • Sélectionnez les 5 dernières colonnes et les 5 dernières lignes

df.iloc[-5:, -5:]

Facturation sans papier Mode de paiement Frais mensuels Charges totales Baratte
7038 Oui Chèque postal 84,80 1990.5 Non
7039 Oui Carte de crédit 103.20 7362.9 Non
7040 Oui Chèque électronique 29.60 346,45 Non
7041 Oui Chèque posté 74,40 306.6 Oui
7042 Oui Virement 105,65 6844.5 Non

Vous pouvez également utiliser la fonction lambda avec iloc. (Une fonction lambda est une petite fonction anonyme en Python qui peut avoir une seule expression mais n'importe quel nombre d'arguments)

  • Sélectionnez chaque troisième ligne jusqu'à la 15ème et n'affichez que les colonnes "service internet" et "partenaire"

df.iloc[ lambda x : (x.index x 3 == 0) & (x.index <= 150]['Partner', 'InternetService' ]]

Partenaire Service Internet
0 Oui ADSL
3 Non ADSL
6 Non Fibre optique
9 Non ADSL
12 Oui Fibre optique
15 Oui Fibre optique

Nous pouvons également sélectionner des étiquettes ou des positions présentes entre les deux.

  • Sélectionnez les positions de colonne entre 4 et 6 et les positions de ligne entre 20 et 25

df.iloc[20:25, 4:6]

Personnes à charge mandat
20 Non 1
21 Non 12
22 Non 1
23 Non 58
24 Non 49

Maintenant, si vous essayez de passer des étiquettes à iloc, Pandas vous affichera le message d'erreur suivant :

ValueError : l'indexation basée sur l'emplacement ne peut avoir que des types [entier, tranche d'entier (le point de DÉBUT est INCLUS, le point de FIN est EXCLU), type de liste d'entiers, tableau booléen]

Vous obtiendrez une erreur similaire si vous passez des positions à loc.

Lisez aussi: Questions d'entrevue Pandas

En savoir plus sur Python

Un étudiant doit poser des questions et trouver leurs réponses. Nous espérons que cet article aura répondu à vos questions sur loc en Pandas (ou iloc en Python). Il serait préférable que vous essayiez vous-même ces fonctions sur différents ensembles de données pour comprendre leur fonctionnement.

Si vous voulez en savoir plus sur Python, Pandas et les sujets pertinents, vous devriez vous diriger vers notre blog. Nos experts y ajoutent de multiples ressources détaillées.

Si vous êtes curieux d'en savoir plus sur la science des données, consultez le programme Executive PG en science des données de IIIT-B & upGrad qui est créé pour les professionnels en activité et propose plus de 10 études de cas et projets, des ateliers pratiques, un mentorat avec des experts de l'industrie, 1 -on-1 avec des mentors de l'industrie, plus de 400 heures d'apprentissage et d'aide à l'emploi avec les meilleures entreprises.

Comment pouvons-nous ajouter des lignes de Pandas DataFrame ?

Pour insérer des lignes dans le DataFrame, nous pouvons utiliser les commandes loc, iloc et ix.

1. Le loc est principalement utilisé pour les étiquettes de notre index. Cela peut être compris comme lorsque nous insérons dans loc 4, ce qui indique que nous recherchons des entrées DataFrame avec un index de 4.
2. L'iloc est principalement utilisé pour trouver des emplacements dans l'index. C'est comme si nous insérions dans iloc 4, ce qui indique que nous recherchons des entrées DataFrame présentes à l'index 4.
3. Le cas ix est compliqué car nous passons une étiquette à ix si l'index est basé sur un entier. Le ix 4 indique que nous recherchons dans le DataFrame des valeurs avec un index de 4.

Qu'est-ce que la réindexation dans le contexte de Pandas en Python ?

Les étiquettes de ligne et de colonne d'un DataFrame sont modifiées lorsque nous le réindexons. Le terme « réindexation » fait référence au processus d'alignement des données sur un ensemble spécifique d'étiquettes le long d'un axe unique. Dans Pandas, la réindexation peut être utilisée pour modifier l'index des lignes et des colonnes d'un DataFrame. De nombreuses structures de données d'index connectées à de nombreuses séries de pandas ou pandas DataFrame peuvent être utilisées avec des index.

Quelles sont certaines opérations de données dans Pandas ?

Il existe plusieurs opérations de données importantes pour DataFrame dans Pandas, qui sont les suivantes :

1. Sélection des lignes et des colonnes - En transmettant les noms des lignes et des colonnes, nous pouvons sélectionner n'importe quelle ligne et colonne dans le DataFrame. Il devient unidimensionnel et est considéré comme une série lorsque vous le sélectionnez dans le DataFrame.
2. Filtrage des données - En utilisant certaines des expressions booléennes dans DataFrame, nous pouvons filtrer les données.
3. Valeurs nulles - Lorsqu'aucune donnée n'est donnée aux éléments, ils reçoivent une valeur nulle. Il ne peut y avoir aucune valeur dans les différentes colonnes, qui sont généralement représentées par NaN.