Filtragem de Dados com Pandas

PandasBeginner
Pratique Agora

Introdução

Bem-vindo ao laboratório de Filtragem de Dados com Pandas! A filtragem de dados é uma das tarefas mais comuns e essenciais na análise de dados. Ela permite selecionar um subconjunto dos seus dados que atende a critérios específicos, possibilitando que você se concentre nas informações mais relevantes para sua análise.

Pandas é uma poderosa biblioteca Python para manipulação e análise de dados. Sua estrutura de dados principal, o DataFrame, é uma tabela bidimensional de dados com linhas e colunas. Neste laboratório, você aprenderá várias técnicas fundamentais para filtrar linhas de um DataFrame Pandas. Cobriremos:

  • Filtragem com uma única condição booleana.
  • Combinação de múltiplas condições usando operadores lógicos.
  • Uso do método isin() para correspondência de múltiplos valores.
  • Remoção de linhas com dados ausentes (NaN).
  • Contagem dos resultados dos seus dados filtrados.

Ao final deste laboratório, você terá uma base sólida para selecionar e isolar dados em seus projetos Pandas.

Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 97%. Recebeu uma taxa de avaliações positivas de 98% dos estudantes.

Filtrar linhas com condição booleana

Nesta etapa, você aprenderá a técnica de filtragem mais básica: indexação booleana. Este método envolve a criação de uma condição booleana que retorna uma Série Pandas de valores True e False. Ao passar esta Série para um DataFrame, ele retorna apenas as linhas onde o valor é True.

Vamos começar filtrando nosso DataFrame para encontrar todos os funcionários com mais de 30 anos.

Primeiro, abra o arquivo main.py no editor à esquerda. O arquivo já foi preenchido com um DataFrame de exemplo.

Agora, substitua as instruções print existentes na parte inferior de main.py pelo seguinte código. Este código cria uma condição booleana df['Age'] > 30 e a utiliza para filtrar o DataFrame.

## Filter for employees older than 30
older_than_30 = df[df['Age'] > 30]

print("Employees older than 30:")
print(older_than_30)

Seu arquivo main.py completo agora deve se parecer com isto:

import pandas as pd
import numpy as np

## Create a sample DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve', 'Frank'],
    'Department': ['HR', 'HR', 'Sales', 'IT', 'IT', 'Finance'],
    'Age': [25, 45, 38, 52, 29, 33],
    'Salary': [50000, 80000, 75000, 95000, 62000, np.nan]
}

df = pd.DataFrame(data)

## Filter for employees older than 30
older_than_30 = df[df['Age'] > 30]

print("Employees older than 30:")
print(older_than_30)

Agora, vamos executar o script. Abra o terminal e execute o seguinte comando:

python3 main.py

Você deverá ver a seguinte saída, que lista apenas os funcionários cuja idade é maior que 30.

Employees older than 30:
      Name Department  Age   Salary
1      Bob         HR   45  80000.0
2  Charlie      Sales   38  75000.0
3    David         IT   52  95000.0
5    Frank    Finance   33      NaN

Combinar filtros usando o operador &

Nesta etapa, combinaremos múltiplas condições para realizar filtragens mais complexas. Você pode combinar condições booleanas usando operadores lógicos. Os mais comuns são & para AND e | para OR.

Uma regra de sintaxe crucial é que cada condição deve ser encapsulada entre parênteses () devido à precedência de operadores do Python.

Vamos filtrar o DataFrame para encontrar funcionários que trabalham no departamento de 'IT' e têm mais de 30 anos.

Modifique seu arquivo main.py. Substitua o código de filtragem da etapa anterior pelo novo código abaixo.

## Filter for employees in IT and older than 30
it_and_older = df[(df['Department'] == 'IT') & (df['Age'] > 30)]

print("IT employees older than 30:")
print(it_and_older)

Observe como cada condição, df['Department'] == 'IT' e df['Age'] > 30, está envolvida em seu próprio conjunto de parênteses.

Salve o arquivo main.py e execute-o a partir do terminal:

python3 main.py

A saída mostrará apenas os funcionários que satisfazem ambas as condições. Em nosso conjunto de dados, apenas David atende a este critério.

IT employees older than 30:
    Name Department  Age   Salary
3  David         IT   52  95000.0

Usar o método isin para correspondência de valores

Nesta etapa, você aprenderá como filtrar linhas onde o valor de uma coluna é um de vários valores possíveis. Embora você possa usar múltiplas condições | (OR), uma maneira mais eficiente e legível é usar o método isin(). Este método recebe uma lista de valores e retorna True para cada linha onde o valor da coluna está nessa lista.

Vamos encontrar todos os funcionários que trabalham nos departamentos de 'HR' ou 'Finance'.

Atualize a lógica de filtragem em seu arquivo main.py com o seguinte código:

## Filter for employees in HR or Finance departments
hr_or_finance = df[df['Department'].isin(['HR', 'Finance'])]

print("Employees in HR or Finance:")
print(hr_or_finance)

Aqui, isin(['HR', 'Finance']) verifica quais linhas na coluna Department têm um valor de 'HR' ou 'Finance'.

Salve o arquivo e execute o script no terminal:

python3 main.py

A saída exibirá todos os funcionários dos departamentos especificados.

Employees in HR or Finance:
    Name Department  Age   Salary
0  Alice         HR   25  50000.0
1    Bob         HR   45  80000.0
5  Frank    Finance   33      NaN

Filtrar com notnull para remover NaN

Nesta etapa, abordaremos como lidar com dados ausentes. No Pandas, valores ausentes são tipicamente representados por NaN (Not a Number). Muitas vezes é necessário filtrar linhas que contêm esses valores ausentes antes de realizar cálculos.

O método notnull() retorna uma Series booleana que é True para valores não ausentes e False para valores ausentes (NaN). Você pode usar isso para remover facilmente linhas com NaN em uma coluna específica.

Vamos filtrar nosso DataFrame para ver apenas os funcionários para os quais temos informações de salário.

Modifique o arquivo main.py para usar o método notnull() na coluna Salary.

## Filter out rows with missing Salary
valid_salary = df[df['Salary'].notnull()]

print("Employees with valid salary information:")
print(valid_salary)

Este código selecionará todas as linhas onde a coluna Salary não contém NaN.

Salve o arquivo e execute o script no terminal:

python3 main.py

Como você pode ver na saída, Frank, que tinha um salário NaN, foi excluído do resultado.

Employees with valid salary information:
      Name Department  Age   Salary
0    Alice         HR   25  50000.0
1      Bob         HR   45  80000.0
2  Charlie      Sales   38  75000.0
3    David         IT   52  95000.0
4      Eve         IT   29  62000.0

Contar linhas filtradas usando a função len

Nesta etapa final, você aprenderá como contar o número de linhas em um DataFrame filtrado. Após aplicar um filtro, você frequentemente precisa saber quantas linhas corresponderam aos seus critérios. Uma maneira simples de fazer isso é usando a função embutida len() do Python, que retorna o número de linhas em um DataFrame.

Vamos filtrar todos os funcionários do departamento de 'IT' e depois contá-los.

Atualize seu arquivo main.py com o seguinte código. Primeiro filtraremos o DataFrame e depois passaremos o DataFrame filtrado resultante para a função len().

## Filter for employees in the IT department
it_employees = df[df['Department'] == 'IT']

## Count the number of IT employees
num_it_employees = len(it_employees)

print(f"Number of employees in IT: {num_it_employees}")

Este código primeiro cria um novo DataFrame it_employees contendo apenas as linhas do departamento de TI. Em seguida, calcula o comprimento deste novo DataFrame e imprime uma string formatada com o resultado.

Salve o arquivo e execute o script:

python3 main.py

A saída será uma única linha informando a contagem.

Number of employees in IT: 2

Resumo

Parabéns por completar o laboratório de Filtragem de Dados com Pandas!

Neste laboratório, você aprendeu e praticou as técnicas essenciais para selecionar subconjuntos de dados de um Pandas DataFrame. Você cobriu:

  • Indexação Booleana: Filtrar dados com base em uma única condição (por exemplo, df[df['Age'] > 30]).
  • Combinando Filtros: Usando o operador & (AND) para aplicar múltiplas condições simultaneamente, lembrando-se de envolver cada condição entre parênteses.
  • Correspondência de Valores com isin(): Filtrar eficientemente linhas onde o valor de uma coluna corresponde a qualquer valor em uma lista fornecida.
  • Lidando com Dados Ausentes: Usando o método notnull() para remover linhas com valores NaN.
  • Contando Linhas Filtradas: Usando a função len() para obter o número de linhas em um DataFrame filtrado.

Essas habilidades de filtragem são fundamentais para quase todas as tarefas de análise de dados. Dominá-las permitirá que você explore e prepare seus conjuntos de dados de forma eficaz para análises e visualizações posteriores. Continue praticando essas técnicas para se tornar mais proficiente com o Pandas.