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

Índice e Consulta de Dados do Pandas

Exemplos de operações de índice e consulta de dados do Pandas

Neste capítulo, discutiremos como fatiar e cortar datas e obter subconjuntos de objetos Pandas.
Operadores de índice e atributo do Python e NumPy "[]" e ".". Pode-se acessar rapidamente e facilmente as estruturas de dados do Pandas em várias situações. No entanto, devido ao desconhecimento prévio do tipo de dados a ser acessado, existem algumas limitações de otimização ao usar operadores padrão. Para código de produção, recomendamos que você utilize os métodos de acesso otimizados ao Pandas介绍的 introduzidos neste capítulo.
O Pandas suporta três tipos de índices multiaxiais: os três tipos mencionados na tabela a seguir-

ÍndiceDescrição
.loc()Baseado em rótulos
.iloc()Baseado em inteiros
.ix()Baseado em rótulos e inteiros

.loc()

O Pandas oferece várias maneiras de ter índices puramente baseados em rótulos. Ao fatiar, também inclui os limites de início. Os inteiros são rótulos válidos, mas eles referenciam os rótulos e não as posições.

.loc() Possui várias formas de acesso, por exemplo:

Um rótulo escalar Lista de rótulos Objeto de fatia Array booleano

loc Precisa de dois/Lista/Operador de faixa, separado por ",". A primeira indica a linha, a segunda a coluna.

Caso 1

# Importar a biblioteca pandas e usar o alias pd
 import pandas como pd
 import numpy como np
 df = pd.DataFrame(np.random.randn(8, 4,
 index = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'], columns = ['A', 'B', 'C', 'D'])
 # Selecionar todas as linhas de colunas específicas
 print(df.loc[:, 'A'])

Resultados da Execução:

  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

Instância 2

   
 import pandas como pd
 import numpy como np
 df = pd.DataFrame(np.random.randn(8, 4,
 index = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'], columns = ['A', 'B', 'C', 'D'])
 # Selecionar todas as linhas para várias colunas, por exemplo, list[]
 print(df.loc[:, ['A', 'C']])

Resultados da Execução:

          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

Instância 3

# Importar a biblioteca pandas e usar o alias pd
 import pandas como pd
 import numpy como np
 df = pd.DataFrame(np.random.randn(8, 4,
 index = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'], columns = ['A', 'B', 'C', 'D'])
 # Selecionar várias linhas para várias colunas, por exemplo, list[]
 print(df.loc[['a', 'b', 'f', 'h'], ['A', 'C']])

Resultados da Execução:

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

Instância 4

# Importar a biblioteca pandas e usar o alias pd
 import pandas como pd
 import numpy como np
 df = pd.DataFrame(np.random.randn(8, 4,
 index = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'], columns = ['A', 'B', 'C', 'D'])
 # Selecionar intervalo de linhas para todas as colunas
 print(df.loc['a':'h'])

Resultados da Execução:

          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

Instância 5

# Importar a biblioteca pandas e usar o alias pd
 import pandas como pd
 import numpy como np
 df = pd.DataFrame(np.random.randn(8, 4,
 index = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'], columns = ['A', 'B', 'C', 'D'])
 # Usado para obter valores usando arrays booleanos
 print(df.loc['a'] > 0)

Resultados da Execução:

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

.iloc()

O Pandas oferece várias maneiras de obter índices puramente baseados em inteiros. Como o Python e o NumPy, eles são baseados em 0.
Os vários métodos de acesso são os seguintes:

Inteiro Lista de inteiros Faixa de valores

Instância1

# Importar a biblioteca pandas e usar o alias pd
 import pandas como pd
 import numpy como np
 df = pd.DataFrame(np.random.randn(8, 4), colunas = ['A', 'B', 'C', 'D'])
 # Selecionar todas as linhas de colunas específicas
 print(df.iloc[:4])

Resultados da Execução:

         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

Instância 2

import pandas como pd
 import numpy como np
 df = pd.DataFrame(np.random.randn(8, 4), colunas = ['A', 'B', 'C', 'D'])
 # Fatia de inteiro
 print(df.iloc[:4]]
 print(df.iloc[1:5, 2:4])

Resultados da Execução:

         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

Instância 3

import pandas como pd
 import numpy como np
 df = pd.DataFrame(np.random.randn(8, 4), colunas = ['A', 'B', 'C', 'D'])
 # Fatia de lista de valores
 print(df.iloc[[1, 3, 5], [1, 3]]
 print(df.iloc[1:3, :])
 print(df.iloc[:,1:3])

Resultados da Execução:

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

Além dos métodos baseados em rótulos puros e baseados em inteiros, o Pandas também oferece um método híbrido para usar o operador .ix() para selecionar e subseções de objetos.

Instância 1

import pandas como pd
 import numpy como np
 df = pd.DataFrame(np.random.randn(8, 4), colunas = ['A', 'B', 'C', 'D'])
 # Fatia de inteiro
 print(df.ix[:4])

Resultados da Execução:

         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

Instância 2

import pandas como pd
 import numpy como np
 df = pd.DataFrame(np.random.randn(8, 4), colunas = ['A', 'B', 'C', 'D'])
 # Fatia de índice
 print(df.ix[:, 'A'])

Resultados da Execução:

  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 de símbolos

Obter valores de objetos Pandas usando índices multi-axiais com os seguintes símbolos:

ObjetoIndexadorTipo de Retorno
Séries.loc[indexer]Valor Escalar
DataFramedf.loc[row_index,col_index]Objeto Series
Panelp.loc[item_index,major_index, minor_index]p.loc[item_index,major_index, minor_index]

.iloc() e .ix() aplicam as mesmas opções de índice e retornam os mesmos valores.

Vamos ver como executar cada operação no objeto DataFrame. Usaremos os operadores de indexação básicos '[]'-

Instância 1

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

Resultados da Execução:

  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

Podemos passar uma lista de valores para [] para escolher aquelas colunas

Instância 2

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

Resultados da Execução:

         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

Instância 3

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

Resultados da Execução:

   Colunas: [A, B, C, D]
 Índice: []

Acesso de Propriedade

Pode usar o operador de atribuição de propriedade "." para escolher colunas.

Instância

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

Resultados da Execução:

  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