LOC vs. ILOC bei Pandas: Unterschied zwischen LOC und ILOC bei Pandas
Veröffentlicht: 2020-08-01Inhaltsverzeichnis
Loc und iloc in Pandas
Ein häufiger Grund für Verwirrung unter neuen Python-Entwicklern ist loc vs. iloc. Sie scheinen beide sehr ähnlich zu sein und führen ähnliche Aufgaben aus. Das kann also jeden Schüler verwirren.
Wenn Sie den Unterschied zwischen iloc und loc herausfinden möchten, sind Sie hier genau richtig, denn in diesem Artikel gehen wir ausführlich auf dieses Thema ein. Sie werden herausfinden, was der Hauptunterschied zwischen diesen Funktionen ist, und sie dann in Aktion sehen, um das Konzept besser zu verstehen. Sehen Sie sich unsere Data-Science-Kurse an, um mehr über Pandas zu erfahren.
Lass uns anfangen.
Unterschied zwischen loc und iloc
1. iloc in Python
Sie können iloc in Python zur Auswahl verwenden. Es basiert auf ganzzahligen Standorten und hilft Ihnen bei der Auswahl nach Position. Wenn Sie also die Zeile mit dem Index 5 finden möchten, zeigt Ihnen iloc die fünfte Zeile des Datenrahmens, unabhängig von seinem Namen oder Label.
Hier ist ein Beispiel für iloc in 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
Wir werden die Zeilen mit einer skalaren Ganzzahl indizieren, indem wir die iloc-Funktion für den obigen Datenrahmen verwenden:
>>> Typ(df.iloc[0])
<Klasse 'pandas.core.series.Series'>
>>> df.iloc[0]
eine 1
b 2
c 3
d 4
Name: 0, dtyp: int64
2. Ort in Pandas
Sie können loc in Pandas verwenden, um auf mehrere Zeilen und Spalten zuzugreifen, indem Sie Labels verwenden; Sie können es jedoch auch mit einem booleschen Array verwenden.
Wenn Sie loc verwenden, um eine Zeile mit Index 5 zu finden, erhalten Sie damit nicht die fünfte Zeile. Stattdessen erhalten Sie nur die Zeile mit dem Namen „5“.
Hier ist ein Beispiel für loc in Pandas:
>>> df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],
… index=['cobra', 'viper', 'sidewinder'],
… Spalten=['max_speed', 'shield'])
>>> df
max_speed Schild
Kobra 1 2
Viper 4 5
Seitenwinder 7 8
Das Obige war die Tabelle, aus der wir die Zeile extrahieren werden:
>>> df.loc['Viper']
max_speed 4
Schild 5
Name: viper, dtyp: int64
Ausführliches Beispiel für loc vs. iloc
Obwohl wir diese beiden Funktionen zur Auswahl verwenden, wäre es am besten, wenn wir ein detailliertes Beispiel besprechen würden, um ihre Unterschiede zu verstehen.
In unserem Beispiel verwenden wir den Telco-Kundendatensatz, der auf kaggle verfügbar ist. Wir fügen es einem Datenrahmen hinzu:
df = pd.read_csv („Projekte/Abwanderungsvorhersage/Telco-Kunden-Abwanderung.csv“)
df.head ()
| ICH WÜRDE | Geschlecht | Sr.Bürger | Partner | Angehörige | Amtszeit | Telefon | Mehrere Zeilen | Internet | Sicherheit | |
| 0 | 7590-VHVEG | Weiblich | 0 | Jawohl | Nein | 1 | Nein | Kein Handy | DSL | Nein |
| 1 | 5575-GNVDE | Männlich | 0 | Nein | Nein | 34 | Jawohl | Nein | DSL | Jawohl |
| 2 | 3668-QPYBK | Männlich | 0 | Nein | Nein | 2 | Jawohl | Nein | DSL | Jawohl |
Dieser Datensatz hat 21 Spalten; Wir haben nur einige zu Demonstrationszwecken gezeigt. Wie wir bereits besprochen haben, verwenden wir loc, um Daten nach dem Label auszuwählen. Hier sind die Namen der Spalten ihre Spaltenbezeichnungen, wie z. B. Geschlecht, Amtszeit, OnlineSicherheit; Sie alle sind die Spaltennamen sowie die Beschriftungen.
Da wir keinen bestimmten Index zugewiesen haben, würden Pandas standardmäßig einen ganzzahligen Index für die Zeilen erstellen. Die Zeilenbeschriftungen sind Ganzzahlen, die bei 0 beginnen und nach oben gehen. In diesem Beispiel sehen wir, wie sich loc und iloc unterschiedlich verhalten.
- Zeile „1“ und Spalte „Partner“ auswählen
df.loc[1, 'Partner']
Ausgang: 'Nein'
Es zeigt den Wert, der in der Spalte „Partner“ der Zeile „1“ vorhanden ist.
- Wählen Sie die Zeilenbeschriftungen „4“ und die Spalten „Kundennummer“ und „Geschlecht“ aus.
df.loc[:4, ['Kunden-ID', 'Geschlecht']]
Kundennummer | Geschlecht | |
| 0 | 7590-VHVEG | Weiblich |
| 1 | 5575-GNVDE | Männlich |
| 2 | 3668-QPYBK | Männlich |
| 3 | 7795-CFOCW | Männlich |
| 4 | 9237-HQITU | Weiblich |
- Wählen Sie die Zeilenbeschriftungen „1“, „2“, „3“ und die Spalte „Abhängige“.
df.loc[[1,2,3], 'Abhängige']
1 Nr
2 Nr
3 Nr
Name: Abhängige, dtype: Objekt
Dieses Mal filtern wir den Datenrahmen und wenden iloc oder loc an:
- Wählen Sie Zeilenbeschriftungen für die Spalten „10“ und „PhoneService“ und „InternetService“ eines Kunden aus, der einen Partner hat (Partner sollte „Ja“ sein).
df [df.Partner == 'Ja'].loc:10, ['PhoneService', 'InternetService']]
Im obigen Fall haben wir einen Filter auf die Datenbank angewendet, aber den Index nicht geändert, sodass in unserer Ausgabe mehrere Beschriftungen der Zeilen weggelassen wurden, die unser Filter benötigte. Durch die Verwendung von loc[:10] hier haben wir also die Zeilen ausgewählt, die Beschriftungen bis zu „10“ hatten.
Wenn wir andererseits hier iloc verwenden und den Filter anwenden, erhalten wir 10 Zeilen, da iloc unabhängig von den Beschriftungen nach Position auswählt. Hier ist das Ergebnis, das wir erhalten, wenn wir iloc[:10] anwenden:

df[df.Partner == 'Ja'].iloc[:10, [6,8]]
| TelefonService | Internetdienst | |
| 0 | Nein | DSL |
| 8 | Jawohl | Glasfaser |
| 10 | Jawohl | DSL |
| 12 | Jawohl | Glasfaser |
| fünfzehn | Jawohl | Glasfaser |
| 18 | Jawohl | DSL |
| 21 | Jawohl | Nein |
| 23 | Jawohl | DSL |
| 24 | Jawohl | DSL |
| 26 | Jawohl | Glasfaser |
Sie müssen bemerkt haben, dass wir unsere Methode zum Auswählen von Spalten ändern müssen.
Lesen Sie: Python-Pandas-Tutorial
- Wählen Sie die ersten 5 Spalten und die ersten 5 Zeilen mit iloc aus
df.iloc[:4, :4]
| Kundennummer | Geschlecht | Senior | Partner | |
| 0 | 7590-VHVEG | Weiblich | 0 | Jawohl |
| 1 | 5575-GNVDE | Männlich | 0 | Nein |
| 2 | 3668-QPYBK | Männlich | 0 | Nein |
| 3 | 7795-CFOCW | Männlich | 0 | Nein |
Wir können iloc verwenden, um Positionen vom Ende auszuwählen. Dazu müssen wir einfach negative Ganzzahlen (-1, -2 usw.) verwenden und mit ihnen beginnen.
- Wählen Sie die letzten 5 Spalten und die letzten 5 Zeilen aus
df.iloc[-5:, -5:]
| Papierlose Abrechnung | Zahlungsmethode | Monatliche Gebühren | Gesamte Gebühren | Abwanderung | |
| 7038 | Jawohl | Versendeter Scheck | 84,80 | 1990.5 | Nein |
| 7039 | Jawohl | Kreditkarte | 103.20 | 7362.9 | Nein |
| 7040 | Jawohl | Elektronische Prüfung | 29.60 | 346,45 | Nein |
| 7041 | Jawohl | Versendeter Scheck | 74.40 | 306.6 | Jawohl |
| 7042 | Jawohl | Banküberweisung | 105.65 | 6844.5 | Nein |
Sie können die Lambda-Funktion auch mit iloc verwenden. (Eine Lambda-Funktion ist eine kleine anonyme Funktion in Python, die einen einzelnen Ausdruck, aber eine beliebige Anzahl von Argumenten haben kann.)
- Wählen Sie jede dritte Zeile bis zur 15. und zeigen Sie nur die Spalten „Internetdienst“ und „Partner“ an
df.iloc[ lambda x: (x.index x 3 == 0) & (x.index <= 150]['Partner', 'InternetService' ]]
| Partner | Internetdienst | |
| 0 | Jawohl | DSL |
| 3 | Nein | DSL |
| 6 | Nein | Glasfaser |
| 9 | Nein | DSL |
| 12 | Jawohl | Glasfaser |
| fünfzehn | Jawohl | Glasfaser |
Wir können auch Labels oder dazwischen liegende Positionen auswählen.
- Wählen Sie die Spaltenpositionen zwischen 4 und 6 und die Zeilenpositionen zwischen 20 und 25 aus
df.iloc[20:25, 4:6]
| Angehörige | Amtszeit | |
| 20 | Nein | 1 |
| 21 | Nein | 12 |
| 22 | Nein | 1 |
| 23 | Nein | 58 |
| 24 | Nein | 49 |
Wenn Sie nun versuchen, Labels an iloc zu übergeben, zeigt Ihnen Pandas die folgende Fehlermeldung:
ValueError: Die standortbasierte Indizierung kann nur die Typen [Integer, Integer-Slice (START-Punkt ist INCLUDED, END-Punkt ist EXCLUDED), Listlike of Integers, Boolean Array] haben
Sie erhalten einen ähnlichen Fehler, wenn Sie Positionen an loc übergeben.
Lesen Sie auch: Pandas-Interviewfragen
Erfahren Sie mehr über Python
Ein Schüler muss Fragen stellen und Antworten finden. Wir hoffen, dass dieser Artikel Ihre Fragen zu loc in Pandas (oder iloc in Python) beantwortet hat. Am besten probieren Sie diese Funktionen selbst an verschiedenen Datensätzen aus, um zu verstehen, wie sie funktionieren.
Wenn Sie mehr über Python, Pandas und relevante Themen erfahren möchten, sollten Sie unseren Blog besuchen. Unsere Experten fügen dort mehrere detaillierte Ressourcen hinzu.
Wenn Sie neugierig sind, etwas über Data Science zu lernen, schauen Sie sich das Executive PG Program in Data Science von IIIT-B & upGrad an, das für Berufstätige entwickelt wurde und mehr als 10 Fallstudien und Projekte, praktische Workshops, Mentoring mit Branchenexperten, 1 -on-1 mit Branchenmentoren, mehr als 400 Stunden Lern- und Jobunterstützung bei Top-Unternehmen.
Wie können wir Zeilen von Pandas DataFrame hinzufügen?
Um Zeilen in den DataFrame einzufügen, können wir die Befehle loc, iloc und ix verwenden.
1. Das loc wird hauptsächlich für die Labels unseres Indexes verwendet. Es kann so verstanden werden, dass wir in loc 4 einfügen, was anzeigt, dass wir nach DataFrame-Einträgen mit einem Index von 4 suchen.
2. Der iloc wird hauptsächlich verwendet, um Orte im Index zu finden. Es ist, als würden wir in iloc 4 einfügen, was darauf hinweist, dass wir nach DataFrame-Einträgen suchen, die an Index 4 vorhanden sind.
3. Der ix-Fall ist kompliziert, weil wir ein Label an ix übergeben, wenn der Index ganzzahlbasiert ist. Das ix 4 gibt an, dass wir den DataFrame nach Werten mit einem Index von 4 durchsuchen.
Was bedeutet Neuindizierung im Kontext von Pandas in Python?
Die Zeilen- und Spaltenbeschriftungen eines DataFrame werden geändert, wenn wir ihn neu indizieren. Der Begriff „Neuindizierung“ bezieht sich auf den Vorgang des Ausrichtens von Daten an einem bestimmten Satz von Etiketten entlang einer einzelnen Achse. In Pandas kann die Neuindizierung verwendet werden, um den Index der Zeilen und Spalten eines DataFrame zu ändern. Viele Indexdatenstrukturen, die mit vielen Pandas-Serien oder Pandas DataFrame verbunden sind, können mit Indizes verwendet werden.
Welche Datenoperationen gibt es in Pandas?
Es gibt mehrere wichtige Datenoperationen für DataFrame in Pandas, die wie folgt sind:
1. Auswahl von Zeilen und Spalten – Indem wir die Namen der Zeilen und Spalten übergeben, können wir jede Zeile und Spalte im DataFrame auswählen. Es wird eindimensional und wird als Serie betrachtet, wenn Sie es aus dem DataFrame auswählen.
2. Datenfilterung – Durch die Verwendung einiger boolescher Ausdrücke in DataFrame können wir die Daten filtern.
3. Nullwerte – Wenn den Elementen keine Daten gegeben werden, erhalten sie einen Nullwert. In den verschiedenen Spalten, die im Allgemeinen als NaN dargestellt werden, dürfen keine Werte vorhanden sein.
