Selecionando linhas do DataFrame com base nos valores das colunas em Python

Selecionando linhas do DataFrame com base nos valores das colunas em Python
Python

Usando Pandas para filtrar DataFrames por valores de coluna

Ao trabalhar com dados em Python, a biblioteca Pandas oferece ferramentas poderosas para manipulação e análise de dados. Uma tarefa comum é selecionar linhas de um DataFrame com base nos valores de uma coluna específica. Esta operação é semelhante à consulta SQL: SELECT * FROM table WHERE column_name = some_value.

Neste artigo, exploraremos como conseguir isso no Pandas usando vários métodos. Esteja você filtrando por um único valor ou por vários critérios, o Pandas oferece maneiras intuitivas e eficientes de lidar com essas operações. Vamos mergulhar nos detalhes.

Comando Descrição
pd.DataFrame() Cria um objeto DataFrame a partir de um dicionário ou de outras estruturas de dados.
df[condition] Filtra as linhas do DataFrame com base numa condição, devolvendo apenas aquelas que cumprem os critérios.
print() Envia a mensagem ou DataFrame especificado para o console.
df['column'] == value Cria uma série booleana usada para filtrar linhas onde a coluna corresponde ao valor especificado.
df['column'] >df['column'] > value Cria uma série booleana usada para filtrar linhas onde os valores da coluna são maiores que o valor especificado.
# Comment Usado para adicionar explicações ou notas ao código, que não são executadas como parte do script.

Implementando a seleção de linhas do DataFrame no Pandas

Nos scripts fornecidos, a principal tarefa é filtrar linhas de um DataFrame com base em valores de colunas específicos, um requisito comum na análise de dados. O primeiro script começa importando a biblioteca Pandas com import pandas as pd. Isso é essencial porque Pandas é uma biblioteca poderosa de manipulação de dados em Python. A seguir, criamos um DataFrame de amostra usando pd.DataFrame() com um dicionário contendo dados para nomes, idades e cidades. Essa estrutura nos permite visualizar e manipular facilmente dados tabulares. A parte crucial do script é onde filtramos as linhas usando df[df['city'] == 'New York']. Este comando seleciona todas as linhas onde o valor da coluna da cidade é 'Nova York'. O resultado é armazenado na variável ny_rows, que é então impresso para exibir o DataFrame filtrado.

O segundo script segue uma estrutura semelhante, mas concentra-se na filtragem de linhas com base em uma condição numérica. Após importar o Pandas e criar um DataFrame com colunas de produto, preço e quantidade, o script usa df[df['price'] > 150] para filtrar linhas onde o preço é maior que 150. Este comando produz um subconjunto do DataFrame original contendo apenas as linhas que atendem à condição especificada. O resultado é armazenado em expensive_products e impresso para verificação. Ambos os scripts demonstram o poder e a simplicidade do Pandas para manipulação de dados. Ao usar a indexação booleana, um método em que passamos uma série de valores verdadeiros/falso para filtrar dados, podemos selecionar com eficiência subconjuntos de dados com base em várias condições, tornando-a uma ferramenta inestimável para analistas de dados e cientistas.

Filtrando linhas em um DataFrame com base nos valores das colunas

Python - Usando Pandas para operações DataFrame

import pandas as pd
# Create a sample DataFrame
data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David', 'Edward'],
    'age': [24, 27, 22, 32, 29],
    'city': ['New York', 'Los Angeles', 'New York', 'Chicago', 'Los Angeles']
}
df = pd.DataFrame(data)

# Select rows where city is New York
ny_rows = df[df['city'] == 'New York']
print(ny_rows)

# Output:
#       name  age      city
# 0    Alice   24  New York
# 2  Charlie   22  New York

Consultando linhas do DataFrame com base nos valores das colunas

Python - Filtragem Avançada com Pandas

import pandas as pd

# Create a sample DataFrame
data = {
    'product': ['A', 'B', 'C', 'D'],
    'price': [100, 150, 200, 250],
    'quantity': [30, 50, 20, 40]
}
df = pd.DataFrame(data)

# Select rows where price is greater than 150
expensive_products = df[df['price'] > 150]
print(expensive_products)

# Output:
#   product  price  quantity
# 2       C    200        20
# 3       D    250        40

Técnicas avançadas para seleção de linhas do DataFrame

Além da filtragem básica com indexação booleana, o Pandas oferece técnicas mais avançadas para selecionar linhas com base nos valores das colunas. Um desses métodos é o query() função, que permite usar sintaxe semelhante a SQL para filtrar linhas do DataFrame. Por exemplo, você pode usar df.query('age > 25 and city == "New York"') para selecionar linhas onde a idade é maior que 25 anos e a cidade é Nova York. Este método pode tornar seu código mais legível, especialmente para condições complexas. Além disso, Pandas fornece o loc[] e iloc[] acessadores para seleção de linha mais precisa. O loc[] o acessador é baseado em rótulo, o que significa que você pode filtrar linhas por seus rótulos ou por uma matriz booleana. Em contrapartida, o iloc[] o acessador é baseado em posição inteira, permitindo filtrar linhas por suas posições de índice.

Outro recurso poderoso do Pandas é a capacidade de filtrar linhas do DataFrame usando o isin() método. Este método é útil quando você precisa filtrar linhas com base em uma lista de valores. Por exemplo, df[df['city'].isin(['New York', 'Los Angeles'])] seleciona linhas onde o valor da coluna cidade é Nova York ou Los Angeles. Além disso, você pode encadear múltiplas condições usando o & e | operadores para criar filtros mais complexos. Por exemplo, df[(df['age'] > 25) & (df['city'] == 'New York')] filtra linhas onde a idade é maior que 25 anos e a cidade é Nova York. Essas técnicas avançadas fornecem uma estrutura robusta para filtragem de dados, tornando o Pandas uma ferramenta versátil para análise e manipulação de dados.

Perguntas comuns sobre a seleção de linhas do DataFrame no Pandas

  1. Como filtrar linhas em um DataFrame com base em vários valores de coluna?
  2. Você pode usar a indexação booleana com múltiplas condições combinadas usando & e |. Por exemplo: df[(df['age'] > 25) & (df['city'] == 'New York')].
  3. Qual é a diferença entre loc[] e iloc[]?
  4. loc[] é baseado em rótulo, enquanto iloc[] é baseado em posição inteira. Usar loc[] para filtrar por rótulos e iloc[] para filtrar por posições de índice.
  5. Como posso usar o query() função para filtrar linhas do DataFrame?
  6. O query() função permite que você use sintaxe semelhante a SQL. Por exemplo: df.query('age > 25 and city == "New York"').
  7. Posso filtrar linhas com base em uma lista de valores?
  8. Sim, você pode usar o isin() método. Por exemplo: df[df['city'].isin(['New York', 'Los Angeles'])].
  9. Qual é a melhor maneira de filtrar linhas com base na correspondência de strings?
  10. Você pode usar o str.contains() método. Por exemplo: df[df['city'].str.contains('New')].
  11. Como seleciono linhas onde faltam valores de coluna?
  12. Você pode usar o isna() método. Por exemplo: df[df['age'].isna()].
  13. Como posso filtrar linhas usando uma função personalizada?
  14. Você pode usar o apply() método com uma função lambda. Por exemplo: df[df.apply(lambda row: row['age'] > 25, axis=1)].
  15. Posso filtrar linhas com base em valores de índice?
  16. Sim, você pode usar o index.isin() método. Por exemplo: df[df.index.isin([1, 3, 5])].

Principais vantagens para a seleção de linhas do DataFrame

Selecionar linhas de um DataFrame com base nos valores das colunas é uma habilidade fundamental na análise de dados com Pandas. Utilizando indexação booleana, loc[], iloc[], query(), e isin() métodos permitem uma filtragem de dados eficiente. Dominar essas técnicas aumenta sua capacidade de manipular e analisar conjuntos de dados de maneira eficaz.