Curso
Para executar facilmente todo o código de exemplo deste tutorial, você pode criar uma pasta de trabalho do DataLabgratuitamente, que tem o Python pré-instalado e contém todos os exemplos de código.
Se você tiver um DataFrame e quiser acessar ou selecionar algumas linhas/colunas específicas desse DataFrame, poderá usar colchetes ou outros métodos avançados, como loc
e iloc
.
Seleção de colunas usando colchetes
Agora, suponha que você queira selecionar a coluna do país no DataFrame brics
. Para isso, você digitará brics
e, em seguida, o rótulo da coluna dentro dos colchetes.
Seleção de uma coluna
country capital area population
BR Brazil Brasilia 8.516 200.40
RU Russia Moscow 17.100 143.50
IN India New Dehli 3.286 1252.00
CH China Beijing 9.597 1357.00
SA South Africa Pretoria 1.221 52.98
brics["country"]
BR Brazil
RU Russia
IN India
CH China
SA South Africa
Name: country, dtype: object
Verificação do tipo do objeto
Vamos verificar o tipo do objeto que é retornado com a função de tipo.
type(brics["country"])
pandas.core.series.Series
Como podemos ver na saída acima, estamos lidando com uma série pandas
aqui! A série pode ser considerada como uma matriz unidimensional que pode ser rotulada como um DataFrame.
Se quiser selecionar dados e mantê-los em um DataFrame, você precisará usar colchetes duplos:
brics[["country"]]
BR Brazil
RU Russia
IN India
CH China
SA South Africa
Se verificarmos o tipo dessa saída, você verá que se trata de um DataFrame! Porém, com apenas uma coluna.
type(brics[["country"]])
pandas.core.frame.DataFrame
Seleção de várias colunas
Você pode estender essa chamada para selecionar duas colunas. Vamos tentar selecionar country
e capital
.
brics[["country", "capital"]]
country capital
BR Brazil Brasilia
RU Russia Moscow
IN India New Dehli
CH China Beijing
SA South Africa Pretoria
Se você observar isso com atenção, na verdade estará colocando uma lista com rótulos de coluna dentro de outro conjunto de colchetes e acabará com um sub DataFrame contendo apenas as colunas country
e capital
.
Seleção de linhas usando colchetes
Os colchetes podem fazer mais do que apenas selecionar colunas. Você também pode usá-los para obter linhas, ou observações, de um DataFrame.
Exemplo
Você só pode selecionar linhas usando colchetes se especificar uma fatia, como 0:4
. Além disso, você está usando os índices inteiros das linhas aqui, não os rótulos das linhas!
Para obter a segunda, terceira e quarta linhas do brics
DataFrame, usamos a fatia de 1 a 4. Lembre-se de que o final da fatia é exclusivo, e o índice começa em zero.
brics[1:4]
country capital area population
RU Russia Moscow 17.100 143.50
IN India New Dehli 3.286 1252.00
CH China Beijing 9.597 1357.00
Esses colchetes funcionam, mas oferecem apenas uma funcionalidade limitada. Idealmente, gostaríamos de algo semelhante às matrizes 2D Numpy
, em que você também usa colchetes. O índice, ou fatia, antes da vírgula se refere às linhas, e a fatia após a vírgula se refere às colunas.
Exemplo de matriz 2D Numpy
:
my_array[rows, columns]
Se quiser fazer algo semelhante com pandas
, você precisará usar as funções loc
e iloc
.
loc
: baseado em rótulosiloc
: inteiro baseado em posição
loc
Função
loc
é uma técnica para selecionar partes de seus dados com base em rótulos. Vamos examinar o DataFrame do brics e obter as linhas da Rússia.
Para isso, você colocará o rótulo de interesse entre colchetes após loc
.
Seleção de linhas
brics.loc["RU"]
country Russia
capital Moscow
area 17.1
population 143.5
Name: RU, dtype: object
Obtemos uma série pandas
contendo todas as informações das linhas; porém, de forma inconveniente, elas são mostradas em linhas diferentes. Para obter um DataFrame, temos que colocar o link RU
em outro par de colchetes. Você também pode selecionar várias linhas ao mesmo tempo. Suponha que você queira incluir também a Índia e a China. Basta adicionar esses rótulos de linha à lista.
brics.loc[["RU", "IN", "CH"]]
country capital area population
RU Russia Moscow 17.100 143.50
IN India New Dehli 3.286 1252.00
CH China Beijing 9.597 1357.00
A diferença entre usar um loc
e colchetes básicos é que você pode estender a seleção com uma vírgula e uma especificação das colunas de interesse.
Seleção de linhas e colunas
Vamos estender a chamada anterior para incluir apenas as colunas country
e capital
. Adicionamos uma vírgula e listamos os rótulos das colunas que queremos manter. A interseção é retornada.
brics.loc[["RU", "IN", "CH"], ["country", "capital"]]
country capital
RU Russia Moscow
IN India New Dehli
CH China Beijing
Você também pode usar loc
para selecionar todas as linhas, mas apenas um número específico de colunas. Basta substituir a primeira lista que especifica os rótulos de linha por dois pontos. Uma fatia que vai do começo ao fim. Dessa vez, você receberá de volta todas as linhas, mas apenas duas colunas.
Seleção de todas as linhas e colunas específicas
brics.loc[:, ["country", "capital"]]
country capital
BR Brazil Brasilia
RU Russia Moscow
IN India New Dehli
CH China Beijing
SA South Africa Pretoria
iloc
Função
A função iloc
permite que você faça um subconjunto de pandas
DataFrames com base em sua posição ou índice.
Seleção de linhas
Vamos usar os mesmos dados e exemplos semelhantes que usamos para loc
. Vamos começar com a fila para a Rússia.
brics.iloc[[1]]
country capital area population
RU Russia Moscow 17.100 143.50
Para obter as linhas da Rússia, Índia e China. Agora você pode usar uma lista de índices 1, 2, 3
.
brics.iloc[[1, 2, 3]]
country capital area population
RU Russia Moscow 17.100 143.50
IN India New Dehli 3.286 1252.00
CH China Beijing 9.597 1357.00
Seleção de linhas e colunas
Da mesma forma que em loc
, também podemos selecionar linhas e colunas usando iloc
. Aqui, selecionaremos as linhas da Rússia, Índia e China e as colunas country
e capital
.
brics.iloc[[1, 2, 3], [0, 1]]
country capital
RU Russia Moscow
IN India New Dehli
CH China Beijing
Seleção de todas as linhas e colunas específicas
Por fim, se você quiser selecionar todas as linhas, mas apenas manter as colunas country
e capital
, poderá fazê-lo:
brics.loc[:, [0, 1]]
country capital
BR Brazil Brasilia
RU Russia Moscow
IN India New Dehli
CH China Beijing
SA South Africa Pretoria
loc
e iloc
são bastante semelhantes. A única diferença é como você se refere às colunas e linhas.
Exemplo interativo sobre a seleção de um subconjunto de dados
No exemplo a seguir, os dados dos carros são importados de um arquivo CSV como um DataFrame do Pandas. Para selecionar apenas o cars_per_cap column
dos carros, você pode usar:
cars['cars_per_cap']
cars[['cars_per_cap']]
A versão com colchetes simples fornece uma série do Pandas; a versão com colchetes duplos fornece um DataFrame do Pandas.
- Você usará colchetes simples para imprimir a coluna
country
decars
como uma série Pandas. - Em seguida, use colchetes duplos para imprimir a coluna
country
decars
como um Pandas DataFrame. - Por fim, use os colchetes duplos para imprimir um DataFrame com as colunas
country
edrives_right
decars
, nesta ordem.
# Import cars data
import pandas as pd
cars = pd.read_csv('cars.csv', index_col = 0)
# Print out country column as Pandas Series
print(cars['country'])
# Print out country column as Pandas DataFrame
print(cars[['country']])
# Print out DataFrame with country and drives_right columns
print(cars[['country', 'drives_right']])
Quando executamos o código acima, ele produz o seguinte resultado:
US United States
AUS Australia
JPN Japan
IN India
RU Russia
MOR Morocco
EG Egypt
Name: country, dtype: object
country
US United States
AUS Australia
JPN Japan
IN India
RU Russia
MOR Morocco
EG Egypt
country drives_right
US United States True
AUS Australia False
JPN Japan False
IN India False
RU Russia True
MOR Morocco True
EG Egypt True
Experimente você mesmo.
Para saber mais sobre pandas, assista a este vídeo do nosso curso Python Intermediário.
Este conteúdo foi extraído do curso Python Intermediário da DataCamp, ministrado por Hugo Bowne-Anderson.