Filtrando linhas em DataFrames do Pandas
Pandas é uma biblioteca poderosa em Python para manipulação e análise de dados. Uma tarefa comum é selecionar linhas de um DataFrame com base nos valores das colunas, semelhante ao SELECT * FROM table WHERE column_name = some_value do SQL.
Este guia orientará você através de vários métodos para conseguir isso no Pandas, facilitando a filtragem eficiente de seus dados. Quer você seja um usuário iniciante ou experiente, essas dicas irão aprimorar suas habilidades de manipulação de dados.
Comando | Descrição |
---|---|
pd.DataFrame(data) | Cria um DataFrame a partir de um dicionário de dados. |
df[column_name] | Acessa uma coluna no DataFrame por nome. |
df[condition] | Filtra o DataFrame com base numa condição aplicada a uma coluna. |
print(selected_rows) | Imprime o DataFrame ou um subconjunto dele no console. |
df[df['Age'] >df[df['Age'] > 25] | Seleciona linhas onde os valores da coluna 'Idade' são maiores que 25. |
df[df['City'] == 'Chicago'] | Seleciona linhas onde os valores da coluna 'Cidade' são iguais a 'Chicago'. |
Compreendendo a seleção de linhas do DataFrame no Pandas
Os scripts fornecidos demonstram como selecionar linhas de um DataFrame com base nos valores das colunas usando a biblioteca Pandas em Python. O primeiro script começa importando a biblioteca Pandas com o import pandas as pd comando. Em seguida, ele cria um DataFrame de amostra usando um dicionário de dados, que é convertido em um DataFrame com o pd.DataFrame(data) comando. O script ilustra então dois métodos para seleção de linha: selecionar linhas onde o valor da coluna 'Idade' é maior que 25 usando df[df['Age'] > 25]e selecionando linhas onde o valor da coluna 'Cidade' é 'Chicago' usando df[df['City'] == 'Chicago']. Esses DataFrames filtrados são impressos usando o print() função para exibir as linhas selecionadas.
O segundo script segue uma estrutura semelhante, mas utiliza dados e critérios de seleção diferentes. Ele cria um DataFrame com informações do produto, incluindo colunas ‘Produto’, ‘Preço’ e ‘Estoque’. As linhas são selecionadas onde o 'Preço' é menor ou igual a 200 com df[df['Price'] <= 200], e onde o 'Estoque' for superior a 40 usando df[df['Stock'] > 40]. O objetivo destes scripts é mostrar como filtrar linhas do DataFrame com base em condições específicas, semelhante a como você usaria uma consulta SQL para selecionar linhas de uma tabela com base em um valor de coluna. Ao compreender e aplicar esses comandos, você pode manipular e analisar dados com eficiência em seus DataFrames.
Selecionando linhas em um DataFrame usando valores de coluna no Pandas
Biblioteca Python com Pandas
# Importing the necessary library
import pandas as pd
# Creating a sample DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']
}
df = pd.DataFrame(data)
# Selecting rows where Age is greater than 25
selected_rows = df[df['Age'] > 25]
print(selected_rows)
# Selecting rows where City is 'Chicago'
chicago_rows = df[df['City'] == 'Chicago']
print(chicago_rows)
Filtrando dados em um DataFrame com base em critérios de coluna
Biblioteca Python com Pandas
# Importing pandas library
import pandas as pd
# Creating a sample DataFrame
data = {'Product': ['A', 'B', 'C', 'D', 'E'],
'Price': [100, 150, 200, 250, 300],
'Stock': [30, 60, 90, 20, 50]}
df = pd.DataFrame(data)
# Selecting rows where Price is less than or equal to 200
affordable_products = df[df['Price'] <= 200]
print(affordable_products)
# Selecting rows where Stock is more than 40
in_stock = df[df['Stock'] > 40]
print(in_stock)
Técnicas avançadas para selecionar linhas de DataFrame em Pandas
Além da filtragem básica usando indexação booleana, o Pandas oferece técnicas avançadas para selecionar linhas com base nos valores das colunas. Um método poderoso é usar o query() função, que permite filtrar linhas com uma expressão de consulta, tornando a sintaxe mais limpa e muitas vezes mais intuitiva. Por exemplo, em vez de usar df[df['Age'] > 25], você pode escrever df.query('Age > 25'). Este método é particularmente útil ao lidar com condições mais complexas ou quando os nomes das colunas contêm espaços. Além disso, o isin() A função é benéfica quando você deseja filtrar linhas com base em uma lista de valores. Por exemplo, para selecionar linhas onde o valor da coluna 'Cidade' é 'Chicago' ou 'Nova York', você pode usar df[df['City'].isin(['Chicago', 'New York'])].
Outra técnica envolve a loc e iloc indexadores. O loc indexador é baseado em rótulos, permitindo selecionar linhas com base em rótulos de linhas e nomes de colunas, enquanto iloc é baseado em localização inteira, permitindo a seleção por números de linha e coluna. Esta flexibilidade é particularmente útil para selecionar linhas com base em uma condição aplicada a uma coluna diferente. Por exemplo, df.loc[df['Age'] > 25, 'Name'] retornará os nomes de indivíduos com mais de 25 anos. Esses métodos expandem seu kit de ferramentas para manipulação e análise eficiente de dados no Pandas, oferecendo código mais legível e de fácil manutenção.
Perguntas e respostas comuns sobre a seleção de linhas do DataFrame
- Como posso selecionar linhas com base em múltiplas condições?
- Você pode usar o query() funcionar ou combinar condições com operadores lógicos como & e |. Por exemplo, df[(df['Age'] > 25) & (df['City'] == 'Chicago')].
- Posso filtrar linhas com base em uma lista de valores?
- Sim, use o isin() função. Por exemplo, df[df['City'].isin(['Chicago', 'New York'])].
- Qual é a diferença entre loc e iloc?
- loc é baseado em rótulo, enquanto iloc é baseado em localização inteira. Usar loc com rótulos de linha/coluna e iloc com índices de linha/coluna.
- Como posso selecionar colunas específicas ao filtrar linhas?
- Você pode usar loc. Por exemplo, df.loc[df['Age'] > 25, ['Name', 'City']].
- Como lidar com valores ausentes ao selecionar linhas?
- Use o dropna() função para remover linhas com valores ausentes ou fillna() para substituí-los por um valor especificado.
- Posso usar expressões regulares para filtrar linhas?
- Sim o str.contains() funcionar com o regex=True O parâmetro permite filtrar linhas com base em padrões regex. Por exemplo, df[df['Name'].str.contains('^A', regex=True)].
- Como posso filtrar linhas com base no índice?
- Você pode usar loc com o nome do índice. Por exemplo, df.loc[df.index == 'some_index'].
- E se os nomes das minhas colunas contiverem espaços ou caracteres especiais?
- Use o query() função que pode lidar com esses nomes de colunas com crases. Por exemplo, df.query('`column name` == value').
Considerações finais sobre técnicas de seleção de linhas do DataFrame
Selecionar linhas de um DataFrame com base nos valores das colunas no Pandas é uma habilidade crucial para manipulação de dados. Os vários métodos discutidos, incluindo indexação booleana, query(), isin()e indexação baseada em rótulo e em localização de número inteiro com loc e iloc, fornecem ferramentas poderosas para filtrar dados com eficiência. O domínio dessas técnicas permite uma melhor análise de dados e um código mais limpo e de fácil manutenção.