English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Pandas-Indizes-und-Datenabfragen

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.-

IndexErklärung
.loc()Auf Basis von Etikett
.iloc()Auf Basis von Ganzzahl
.ix()Auf Basis von Etikett und Ganzzahl

.loc()

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.

Fall 1

# 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

Fallstudie 2

   
 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

Fallstudie 3

# 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

Fallstudie 4

# 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

Fallstudie 5

# 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

.iloc()

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

Fallstudie1

# 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

Fallstudie 2

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

Fallstudie 3

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

.ix()

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.

Fallstudie 1

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

Fallstudie 2

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

Verwendung der Symbole

Werte aus Pandas-Objekten mit Multi-Achsen-Indizes abrufen, indem folgende Symbole verwendet werden:

ObjektIndexiererRückgabetyp
Seriess.loc[indexer]Skalärwert
DataFramedf.loc[row_index,col_index]Series-Objekt
Panelp.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.-

Fallstudie 1

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.

Fallstudie 2

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

Fallstudie 3

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: []

Attributzugriff

Man kann den Attributoperator "." verwenden, um Spalten auszuwählen.

Fallstudie

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