Pandas é uma poderosa biblioteca Python para manipulação e análise de dados. Uma tarefa comum envolve selecionar colunas específicas de um DataFrame. Este artigo explora métodos eficientes e claros para selecionar múltiplas colunas, destacando as melhores práticas.
Sumário:
- Usando a Sintaxe Getitem
- Usando
iloc()
- Usando
loc()
- Indexação Booleana para Seleção de Colunas
- Considerações de Desempenho
- Conclusão
- FAQ
Usando a Sintaxe Getitem
A abordagem mais simples usa a sintaxe getitem ([]
). Forneça uma lista de nomes de colunas para selecionar essas colunas.
import pandas as pd
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9], 'col4': [10, 11, 12]}
df = pd.DataFrame(data)
# Seleciona 'col1', 'col3' e 'col4'
selected_columns = ['col1', 'col3', 'col4']
selected_df = df[selected_columns]
print(selected_df)
Isso é conciso e legível, mas certifique-se de que todas as colunas listadas existam no DataFrame; caso contrário, um KeyError
ocorrerá.
Usando iloc()
iloc()
usa indexação baseada em inteiros. Selecione colunas fornecendo uma lista de suas posições inteiras (lembrando que Python usa indexação baseada em zero).
import pandas as pd
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9], 'col4': [10, 11, 12]}
df = pd.DataFrame(data)
# Seleciona colunas nos índices 0, 2 e 3
selected_df = df.iloc[:, [0, 2, 3]] # : seleciona todas as linhas, [0, 2, 3] seleciona as colunas 0, 2 e 3
print(selected_df)
O :
seleciona todas as linhas. iloc()
é útil quando os nomes das colunas são desconhecidos, mas os índices estão disponíveis.
Usando loc()
loc()
usa rótulos (nomes de colunas). Embora seja semelhante ao getitem para múltiplas colunas, loc
oferece maior flexibilidade para seleções combinadas de linhas e colunas.
import pandas as pd
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9], 'col4': [10, 11, 12]}
df = pd.DataFrame(data)
# Seleciona 'col1', 'col3' e 'col4'
selected_df = df.loc[:, ['col1', 'col3', 'col4']] # : seleciona todas as linhas, ['col1', 'col3', 'col4'] seleciona as colunas especificadas
print(selected_df)
loc
indica explicitamente a seleção baseada em rótulos, sendo benéfico quando combinado com a seleção de linhas usando rótulos ou indexação booleana.
Indexação Booleana para Seleção de Colunas
Para cenários mais complexos, a indexação booleana com loc
permite selecionar colunas com base em condições aplicadas aos seus nomes.
import pandas as pd
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9], 'col4': [10, 11, 12], 'other_col': [13,14,15]}
df = pd.DataFrame(data)
# Seleciona colunas que começam com 'col'
selected_df = df.loc[:, [col.startswith('col') for col in df.columns]]
print(selected_df)
Considerações de Desempenho
Geralmente, getitem é o mais rápido, seguido por loc
e depois iloc
. No entanto, as diferenças são geralmente insignificantes, a menos que se esteja lidando com DataFrames massivos. Priorize a legibilidade e a manutenibilidade em detrimento de ganhos de desempenho menores.
Conclusão
Selecionar múltiplas colunas é fundamental no Pandas. Getitem é o mais simples para nomes de colunas conhecidos. iloc()
é adequado para indexação baseada em inteiros, enquanto loc()
oferece flexibilidade e é preferido para seleção baseada em rótulos. O melhor método depende das suas necessidades específicas e da estrutura dos dados.
FAQ
- P: O que acontece se eu selecionar uma coluna inexistente?
R: Getitem eloc
lançamKeyError
.iloc
lançaIndexError
se o índice estiver fora dos limites. - P: Posso selecionar colunas com base em uma condição?
R: Sim, use indexação booleana comloc
(como mostrado acima).