Selecionando colunas e linhas
Selecione uma ou várias colunas com a notação de colchetes e recupere linhas por rótulo e posição usando .loc e .iloc.
Selecionando colunas e linhas é uma aula grátis de Pandas & NumPy Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Pandas & NumPy Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Pandas & NumPy Academy inclui 4 aulas no total.
Selecionando uma única coluna
Acesse uma única coluna pelo nome usando a notação de colchetes df['col'], que retorna uma Series. Você também pode usar a notação de ponto df.col quando o nome da coluna for um identificador Python válido e não contiver espaços. A notação de colchetes é sempre segura; a notação de ponto falha para nomes que entram em conflito com métodos do DataFrame, como count ou mean.
import pandas as pd
df = pd.DataFrame({'name': ['Alice', 'Bob'], 'score': [90, 75]})
print(df['name']) # Series
print(type(df['name'])) # pandas.core.series.SeriesSelecionando várias colunas
Para selecionar várias colunas, passe uma lista de nomes de colunas dentro dos colchetes: df[['col1', 'col2']]. Observe os colchetes duplos — o par externo é o operador de indexação, e o par interno cria uma lista Python. O resultado é um DataFrame, não uma Series. Isso é usado com frequência para extrair uma matriz de características para aprendizado de máquina.
import pandas as pd
df = pd.DataFrame({'a': [1,2], 'b': [3,4], 'c': [5,6]})
subset = df[['a', 'c']]
print(type(subset)) # pandas.core.frame.DataFrame
print(subset).loc para selecionar linhas e colunas
df.loc[row_label, col_label] seleciona dados por rótulo. Forneça um único rótulo, uma lista de rótulos ou uma fatia para as linhas e colunas. df.loc[:, 'score'] seleciona todas as linhas da coluna 'score'. df.loc['r1':'r3', ['a', 'b']] seleciona as linhas de r1 a r3 (inclusive) para as colunas a e b.
import pandas as pd
df = pd.DataFrame({'x': [10,20,30], 'y': [40,50,60]},
index=['r1', 'r2', 'r3'])
print(df.loc['r2', 'x']) # 20
print(df.loc['r1':'r2', 'y']) # r1:40 r2:50.iloc para selecionar por posição
df.iloc[row_pos, col_pos] seleciona pela posição inteira, ignorando os rótulos. Os dois argumentos seguem as convenções de fatias do Python, com limites finais exclusivos. df.iloc[:, 0] seleciona a primeira coluna como uma Series. df.iloc[0:2, 1:3] seleciona um sub-DataFrame retangular de 2×2 no canto superior esquerdo.
import pandas as pd
df = pd.DataFrame({'a': [1,2,3], 'b': [4,5,6], 'c': [7,8,9]})
print(df.iloc[1, 2]) # 8 -- row 1, col 2
print(df.iloc[0:2, 0:2]) # top-left 2x2 sub-tableSeleção booleana de linhas
Passe uma Series booleana (com o mesmo índice do DataFrame) para .loc a fim de filtrar linhas. Construa a Series booleana a partir de uma condição sobre uma coluna. Você pode combinar condições com & e |. Esse é o padrão de filtragem convencional na análise de dados com Pandas e é muito mais expressivo do que cláusulas WHERE do SQL para condições complexas envolvendo várias colunas.
import pandas as pd
df = pd.DataFrame({'name': ['A','B','C','D'], 'score': [80,55,92,71]})
high = df.loc[df['score'] >= 70]
print(high)
# name score
# 0 A 80
# 2 C 92
# 3 D 71Condições de filtragem compostas
Cada condição deve estar entre parênteses e ser combinada com & (AND) ou | (OR). Usar as palavras-chave Python and/or em Series gera um erro. Para negar uma condição, use ~ (til) em vez de not. Sempre teste as condições individualmente antes de combiná-las, para isolar a origem de resultados inesperados.
import pandas as pd
df = pd.DataFrame({'name': ['A','B','C','D'],
'score': [80, 55, 92, 71],
'dept': ['Eng', 'HR', 'Eng', 'HR']})
filtered = df.loc[(df['score'] >= 70) & (df['dept'] == 'Eng')]
print(filtered)Selecionando linhas por posição inteira
df.iloc[n] retorna a n-ésima linha como uma Series. df.iloc[n:m] retorna as linhas de n até m-1 como um DataFrame. df.iloc[[0, 2, 4]] seleciona linhas específicas por posição usando indexação avançada. Essas operações equivalem à seleção de linhas de um array NumPy e são usadas com frequência na divisão em conjuntos de treinamento e teste antes da aplicação de modelos de aprendizado de máquina.
import pandas as pd
df = pd.DataFrame({'a': range(5), 'b': range(5, 10)})
print(df.iloc[0]) # first row as Series
print(df.iloc[1:3]) # rows 1 and 2 as DataFrame
print(df.iloc[[0, 4]]) # first and last rowCombinando a seleção de linhas e colunas
Tanto .loc quanto .iloc aceitam dois argumentos: df.loc[row_selector, col_selector]. Isso permite uma seleção retangular precisa em uma única expressão. Um sinal de dois-pontos : sozinho seleciona todas as linhas ou todas as colunas. Esse padrão é essencial para extrair uma matriz de características com colunas específicas apenas para as linhas de treinamento de um conjunto de dados.
import pandas as pd
df = pd.DataFrame({'x': [1,2,3], 'y': [4,5,6], 'z': [7,8,9]})
# Filter rows where x > 1, keep columns y and z
result = df.loc[df['x'] > 1, ['y', 'z']]
print(result)
# y z
# 1 5 8
# 2 6 9Selecionando uma única linha com .loc
Quando você passa um único rótulo escalar para df.loc[label], o resultado é uma Series cujo índice contém os nomes das colunas. Isso é útil para inspecionar um registro específico. Para obter um DataFrame com uma única linha, envolva o rótulo em uma lista: df.loc[[label]]. Essa distinção é importante ao passar resultados para funções que esperam um DataFrame.
import pandas as pd
df = pd.DataFrame({'name': ['A','B'], 'score': [80, 90]},
index=['r1', 'r2'])
print(type(df.loc['r1'])) # Series
print(type(df.loc[['r1']])) # DataFrameat e iat para acesso rápido a escalares
df.at[row_label, col_name] e df.iat[row_pos, col_pos] recuperam ou definem um único valor escalar com menos sobrecarga do que .loc/.iloc. Eles foram projetados para laços que atualizam células individuais. Em código de produção, prefira sempre operações vetorizadas a atualizações célula por célula, mas use at/iat quando realmente precisar iterar.
import pandas as pd
df = pd.DataFrame({'x': [1, 2, 3], 'y': [4, 5, 6]},
index=['a', 'b', 'c'])
print(df.at['b', 'y']) # 5
print(df.iat[2, 0]) # 3Aviso sobre indexação encadeada
Indexação encadeada, como df['col'][condition] ou df[mask]['col'] = val, pode produzir um SettingWithCopyWarning porque o Pandas pode operar em uma cópia em vez do original. Use sempre uma única expressão .loc para qualquer modificação: df.loc[mask, 'col'] = val. Esse é o padrão correto e sem avisos.
import pandas as pd
df = pd.DataFrame({'score': [80, 55, 92]})
# WRONG - may not modify original:
# df[df['score'] > 60]['score'] = 100
# CORRECT:
df.loc[df['score'] > 60, 'score'] = 100
print(df)Verificação rápida
Teste sua compreensão sobre a seleção de colunas e linhas apresentada nesta lição.
Recapitulação da lição
Nesta lição, você aprendeu que: .loc seleciona linhas e colunas por rótulo, com limites finais inclusivos nas fatias, .iloc seleciona por posição inteira, com limites finais exclusivos como nas fatias do Python e condições booleanas aplicadas por meio de .loc filtram linhas sem o problema do SettingWithCopyWarning causado pela indexação encadeada. A seguir, adicionaremos novas colunas calculadas, renomearemos as existentes e removeremos colunas indesejadas com drop().
Aprenda Python com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 30
- Aulas
- 120
Perguntas Frequentes
A aula “Selecionando colunas e linhas” é grátis?
Sim — o texto completo de “Selecionando colunas e linhas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Pandas & NumPy Academy, atualize para CoddyKit PRO. O curso de Pandas & NumPy Academy inclui 4 aulas no total.
O que vou aprender em “Selecionando colunas e linhas”?
Selecione uma ou várias colunas com a notação de colchetes e recupere linhas por rótulo e posição usando .loc e .iloc. Você pratica Pandas & NumPy Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Pandas & NumPy Academy?
Nenhuma experiência prévia é necessária. Pandas & NumPy Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Selecionando colunas e linhas”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Pandas & NumPy Academy?
Sim. Cada aula de Pandas & NumPy Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Criando DataFrames
- Selecionando colunas e linhas
- Adicionando e removendo colunas
- Inspeção básica de DataFrame