Data Science

Dominando Pandas: Selecionando Múltiplas Colunas em DataFrames Eficientemente

Spread the love

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

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 e loc lançam KeyError. iloc lança IndexError se o índice estiver fora dos limites.
  • P: Posso selecionar colunas com base em uma condição?
    R: Sim, use indexação booleana com loc (como mostrado acima).

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *