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

Pandas索引和数据查询

Esempi di operazioni di indice e query di dati Pandas

In questo capitolo, discuteremo come effettuare slice e chunk su date e ottenere sottoinsiemi di oggetti Pandas.
Operatore di indice Python e NumPy "[]" e l'operatore di attributo ".". È possibile accedere rapidamente e facilmente a strutture dati Pandas in vari casi d'uso. Tuttavia, poiché non si conosce preventivamente il tipo di dati da accedere, l'uso diretto degli operatori standard implica alcune limitazioni ottimizzative. Per codice di produzione, si consiglia di utilizzare i metodi di accesso ottimizzati per Pandas descritti in questo capitolo.
Pandas supporta ora tre tipi di indici multi-assiciati: nei tabella sottostante sono menzionati i tre tipi-

indicedescrizione
.loc()basato su etichetta
.iloc()basato su intero
.ix()basato su etichetta e intero

.loc()

Pandas offre diversi metodi per avere un'indice basato esclusivamente su etichette. Durante lo slice, include anche i limiti di inizio. Gli interi sono etichette validi, ma si riferiscono alle etichette e non alle posizioni.

.loc() Ha diversi metodi di accesso, ad esempio:

un'etichetta scalare elenco etichette oggetto slice array booleano

loc Occorrono due operatori di singola/elencazione/lista/intervallo, separati da virgola. Il primo indica la riga, il secondo la colonna.

Caso 1

# importare la libreria pandas e assegnare un alias pd
 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'])
 # selezionare tutte le righe di colonne specifiche
 print(df.loc[:,'A'])

运行结果:

  a  0.391548
b  -0.070649
c  -0.317212
d  -2.162406
e  2.202797
f  0.613709
g  1.050559
h		1.122680
Nome: A, dtype: float64

Esempio 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'])
 # Seleziona tutte le righe per più colonne, ad esempio list[]
 print(df.loc[:,['A','C']])

运行结果:

          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

实例 3

# importare la libreria pandas e assegnare un alias pd
 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'])
 # Seleziona più righe per più colonne, ad esempio list[]
 print(df.loc[['a','b','f','h'],['A','C']])

运行结果:

         A					C
a		0.391548		0.745623
b		-0.070649		1.620406
f		0.613709		0.286414
h		1.122680		-1.621420

Esempio 4

# importare la libreria pandas e assegnare un alias pd
 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'])
 # Seleziona l'intervallo di righe per tutte le colonne
 print(df.loc['a':'h'])

运行结果:

          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

Esempio 5

# importare la libreria pandas e assegnare un alias pd
 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'])
 # usato per ottenere valori con array booleani
 stampa(df.loc['a']>0)

运行结果:

   A  False
 B  True
 C  False
 D  False
 Nome: a, dtype: bool

.iloc()

Pandas fornisce diversi metodi per ottenere indici basati esclusivamente su interi. Come python e numpy, sono tutti basati su un'indagine da 0.
Modi di accesso vari:

Intero Elenco di interi Intervallo di valori

Esempio 1

# importare la libreria pandas e assegnare un alias pd
 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
 # selezionare tutte le righe di colonne specifiche
 stampa(df.iloc[:4])

运行结果:

         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

Esempio 2

import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
 # Taglio intero
 stampa(df.iloc[:4])
 stampa(df.iloc[1:5, 2:4])

运行结果:

         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

实例 3

import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
 # tagliare le liste di valori
 stampa(df.iloc[[1, 3, 5], [1, 3]])
 stampa(df.iloc[1:3, :])
 stampa(df.iloc[:,1:3])

运行结果:

         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()

Oltre ai metodi basati su etichette puri e basati su interi, Pandas offre anche un metodo misto per selezionare e sottoggetti utilizzando l'operatore .ix().

Esempio 1

import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
 # Taglio intero
 print(df.ix[:4])

运行结果:

         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

Esempio 2

import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
 # Taglio di indici
 print(df.ix[:,'A'])

运行结果:

  0   0.699435
1  -0.685354
2  -0.783192
3   0.539042
4  -1.044209
5  -1.415411
6   1.062095
7   0.994204
Nome: A, dtype: float64

Uso dei simboli

Per ottenere valori da oggetti Pandas tramite un'indagine multiassiale, utilizzare i seguenti simboli:

OggettoIndicizzatoreTipo di ritorno
Seriess.loc[indexer]Valore scalare
DataFramedf.loc[row_index,col_index]Oggetto Series
Pannellop.loc[item_index,major_index, minor_index]p.loc[item_index,major_index, minor_index]

.iloc() e .ix() applicano le stesse opzioni di indagine e restituiscono lo stesso valore.

Vediamo come eseguire ogni operazione sull'oggetto DataFrame. Utilizzeremo l'operatore di indagine di base '[]'-

Esempio 1

import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
 print(df['A'])

运行结果:

  0  -0.478893
1   0.391931
2   0.336825
3  -1.055102
4  -0.165218
5  -0.328641
6   0.567721
7  -0.759399
Nome: A, dtype: float64

Possiamo passare una lista di valori a [] per selezionare quelle colonne

Esempio 2

import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
 print(df[['A','B']])

运行结果:

         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

实例 3

import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
 print(df[2:2])

运行结果:

   Columns: [A, B, C, D]
 Index: []

属性访问

可以使用属性运算符“。”选择列。

实例

import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
 print(df.A)

运行结果:

  0   -0.478893
1    0.391931
2    0.336825
3   -1.055102
4   -0.165218
5   -0.328641
6    0.567721
7   -0.759399
Nome: A, dtype: float64