English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Beispieloperationen für die Indexierung und Datenabfrage von Pandas
In diesem Kapitel werden wir besprechen, wie man Daten für Datenbanken schneidet und zerschnippelt und wie man Teilobjekte von Pandas erhält.
Python und NumPy-Index-Operatoren "[]" und Attribut-Operatoren ".". Sie können in verschiedenen Fällen schnell und einfach auf die Pandas-Datenstrukturen zugreifen. Da jedoch der zu accessierende Datentyp vorher nicht bekannt ist, gibt es einige Optimierungsbeschränkungen bei der direkten Verwendung der Standardoperatoren. Für Produktionscode empfehlen wir, die optimierten Pandas-Datenzugriffsmethoden, die in diesem Kapitel vorgestellt werden, zu nutzen.
Pandas unterstützt jetzt drei Arten von mehrdimensionalen Indizes: In der Tabelle werden die drei Arten erwähnt.-
Index | Erklärung |
.loc() | Auf Basis von Etikett |
.iloc() | Auf Basis von Ganzzahl |
.ix() | Auf Basis von Etikett und Ganzzahl |
Pandas bietet verschiedene Methoden für rein auf Etiketten basierende Indizes. Beim Schneiden werden auch die Startgrenzen berücksichtigt. Ganzzahlen sind gültige Etiketten, aber sie beziehen sich auf die Etiketten und nicht auf die Positionen.
.loc() Mit verschiedenen Zugriffsmethoden, zum Beispiel:
Ein Skalar-Etikett Etikettenliste Schnipselobjekt Boolesches Array
loc Benötigen zwei einfache/Liste/Bereichsoperator, durch Komma getrennt. Der erste Indikator für die Zeile, der zweite für die Spalte.
# Importieren Sie die Bibliothek pandas und benennen Sie sie in pd um import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D']) # Wählen Sie alle Zeilen einer bestimmten Spalte aus print(df.loc[:,'A'])
Laufende Ergebnisse:
a 0.391548 b -0.070649 c -0.317212 d -2.162406 e 2.202797 f 0.613709 g 1.050559 h 1.122680 Name: A, dtype: float64
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D']) # Wählen Sie alle Zeilen für mehrere Spalten aus, z.B. list[] print(df.loc[:,['A','C']])
Laufende Ergebnisse:
A C a 0.391548 0.745623 b -0.070649 1.620406 c -0.317212 1.448365 d -2.162406 -0.873557 e 2.202797 0.528067 f 0.613709 0.286414 g 1.050559 0.216526 h 1.122680 -1.621420
# Importieren Sie die Bibliothek pandas und benennen Sie sie in pd um import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D']) # Wählen Sie Zeilen für mehrere Spalten aus, z.B. list[] print(df.loc[['a','b','f','h'],['A','C']])
Laufende Ergebnisse:
A C a 0.391548 0.745623 b -0.070649 1.620406 f 0.613709 0.286414 h 1.122680 -1.621420
# Importieren Sie die Bibliothek pandas und benennen Sie sie in pd um import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D']) # Wählen Sie Zeilenbereiche für alle Spalten aus print(df.loc['a':'h'])
Laufende Ergebnisse:
A B C D a 0.391548 -0.224297 0.745623 0.054301 b -0.070649 -0.880130 1.620406 1.419743 c -0.317212 -1.929698 1.448365 0.616899 d -2.162406 0.614256 -0.873557 1.093958 e 2.202797 -2.315915 0.528067 0.612482 f 0.613709 -0.157674 0.286414 -0.500517 g 1.050559 -2.272099 0.216526 0.928449 h 1.122680 0.324368 -1.621420 -0.741470
# Importieren Sie die Bibliothek pandas und benennen Sie sie in pd um import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D']) # Verwendet, um Werte mit Boolean-Arrays abzurufen print(df.loc['a'] > 0)
Laufende Ergebnisse:
A False B True C False D False Name: a, dtype: bool
Pandas bietet mehrere Methoden, um rein auf Ganzzahlen basierende Indizes zu erhalten. Wie Python und NumPy sind sie auf Indizierung basierend auf 0.
Die verschiedenen Zugriffsmethoden sind wie folgt:
Ganzzahl Ganzzahlensliste Wertebereich
# Importieren Sie die Bibliothek pandas und benennen Sie sie in pd um import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), Spalten = ['A', 'B', 'C', 'D']) # Wählen Sie alle Zeilen einer bestimmten Spalte aus print(df.iloc[:4)
Laufende Ergebnisse:
A B C D 0 0.699435 0.256239 -1.270702 -0.645195 1 -0.685354 0.890791 -0.813012 0.631615 2 -0.783192 -0.531378 0.025070 0.230806 3 0.539042 -1.284314 0.826977 -0.026251
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), Spalten = ['A', 'B', 'C', 'D']) # Ganzzahlschneiden print(df.iloc[:4] print(df.iloc[1:5, 2:4)
Laufende Ergebnisse:
A B C D 0 0.699435 0.256239 -1.270702 -0.645195 1 -0.685354 0.890791 -0.813012 0.631615 2 -0.783192 -0.531378 0.025070 0.230806 3 0.539042 -1.284314 0.826977 -0.026251 C D 1 -0.813012 0.631615 2 0.025070 0.230806 3 0.826977 -0.026251 4 1.423332 1.130568
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), Spalten = ['A', 'B', 'C', 'D']) # Schneiden von Wertelisten print(df.iloc[[1, 3, 5], [1, 3] print(df.iloc[1:3, :]) print(df.iloc[:,1:3)
Laufende Ergebnisse:
B D 1 0.890791 0.631615 3 -1.284314 -0.026251 5 -0.512888 -0.518930 A B C D 1 -0.685354 0.890791 -0.813012 0.631615 2 -0.783192 -0.531378 0.025070 0.230806 B C 0 0.256239 -1.270702 1 0.890791 -0.813012 2 -0.531378 0.025070 3 -1.284314 0.826977 4 -0.460729 1.423332 5 -0.512888 0.581409 6 -1.204853 0.098060 7 -0.947857 0.641358
Außer den Methoden basierend auf reinen Labels und ganzzahligen Methoden bietet Pandas auch eine gemischte Methode, um mit dem Operator .ix() Auswahl- und Teilmengenobjekte zu wählen.
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), Spalten = ['A', 'B', 'C', 'D']) # Ganzzahlschneiden print(df.ix[:4)
Laufende Ergebnisse:
A B C D 0 0.699435 0.256239 -1.270702 -0.645195 1 -0.685354 0.890791 -0.813012 0.631615 2 -0.783192 -0.531378 0.025070 0.230806 3 0.539042 -1.284314 0.826977 -0.026251
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), Spalten = ['A', 'B', 'C', 'D']) # Index-Schneiden print(df.ix[:, 'A'])
Laufende Ergebnisse:
0 0.699435 1 -0.685354 2 -0.783192 3 0.539042 4 -1.044209 5 -1.415411 6 1.062095 7 0.994204 Name: A, dtype: float64
Werte aus Pandas-Objekten mit Multi-Achsen-Indizes abrufen, indem folgende Symbole verwendet werden:
Objekt | Indexierer | Rückgabetyp |
Series | s.loc[indexer] | Skalärwert |
DataFrame | df.loc[row_index,col_index] | Series-Objekt |
Panel | p.loc[item_index,major_index, minor_index] | p.loc[item_index,major_index, minor_index] |
.iloc() und .ix() verwenden die gleichen Indexoptionen und geben die gleichen Werte zurück.
Sehen wir uns an, wie man auf einen DataFrame-Objekt operiert. Wir werden den grundlegenden Index-Operator '[]' verwenden.-
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), Spalten = ['A', 'B', 'C', 'D']) print(df['A'])
Laufende Ergebnisse:
0 -0.478893 1 0.391931 2 0.336825 3 -1.055102 4 -0.165218 5 -0.328641 6 0.567721 7 -0.759399 Name: A, dtype: float64
Man kann Wertelisten an [] übergeben, um diejenigen Spalten auszuwählen.
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), Spalten = ['A', 'B', 'C', 'D']) print(df[['A','B']])
Laufende Ergebnisse:
A B 0 -0.478893 -0.606311 1 0.391931 -0.949025 2 0.336825 0.093717 3 -1.055102 -0.012944 4 -0.165218 1.550310 5 -0.328641 -0.226363 6 0.567721 -0.312585 7 -0.759399 -0.372696
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), Spalten = ['A', 'B', 'C', 'D']) print(df[2:2)
Laufende Ergebnisse:
Spalten: [A, B, 'C', 'D] Index: []
Man kann den Attributoperator "." verwenden, um Spalten auszuwählen.
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), Spalten = ['A', 'B', 'C', 'D']) print(df.A)
Laufende Ergebnisse:
0 -0.478893 1 0.391931 2 0.336825 3 -1.055102 4 -0.165218 5 -0.328641 6 0.567721 7 -0.759399 Name: A, dtype: float64