A Função `loc` do Pandas: Filtragem Detalhada e Exemplos Práticos
Published: 2023-08-08 09:36:56

O Pandas é uma biblioteca popular em Python para manipulação e análise de dados tabulares. Entre as várias funções úteis que o Pandas oferece, a função `loc` é uma das mais poderosas e versáteis. A função `loc` é utilizada para selecionar e filtrar dados em um DataFrame com base em rótulos de linhas e colunas, oferecendo uma maneira eficaz de acessar informações específicas de um conjunto de dados. Neste artigo, exploraremos em detalhes a função `loc`, seu uso e forneceremos diversos exemplos de filtragem.

## Visão Geral da Função `loc`

A função `loc` permite que você selecione um subconjunto de linhas e colunas de um DataFrame usando rótulos de índice e de coluna. Sua sintaxe básica é:

```python
dataframe.loc[linhas, colunas]
```

- `linhas`: Pode ser um rótulo de índice único, uma lista de rótulos ou um slice de rótulos, que define as linhas a serem selecionadas.
- `colunas`: Pode ser um rótulo de coluna único, uma lista de rótulos ou um slice de rótulos, que define as colunas a serem selecionadas.

## Exemplos de Filtragem usando a Função `loc`

Vamos considerar um conjunto de dados fictício de informações de alunos para ilustrar vários exemplos de uso da função `loc`. Primeiro, importamos a biblioteca Pandas e criamos um DataFrame de exemplo:

```python
import pandas as pd

data = {
    'Nome': ['Alice', 'Bob', 'Carol', 'David', 'Eva'],
    'Idade': [25, 22, 28, 21, 24],
    'Gênero': ['Feminino', 'Masculino', 'Feminino', 'Masculino', 'Feminino']
}

df = pd.DataFrame(data)
df.set_index('Nome', inplace=True)
```

### Exemplo 1: Selecionando Linhas por Rótulo de Índice

Para selecionar uma única linha com base no rótulo de índice, usamos um rótulo de índice único dentro do método `loc`:

```python
linha_bob = df.loc['Bob']
print(linha_bob)
```

### Exemplo 2: Selecionando Linhas por Lista de Rótulos

Para selecionar várias linhas com base em uma lista de rótulos de índice, usamos uma lista dentro do método `loc`:

```python
linhas_carol_david = df.loc[['Carol', 'David']]
print(linhas_carol_david)
```

### Exemplo 3: Fatiando Linhas por Intervalo de Rótulos

Podemos também fatiar o DataFrame com base em um intervalo de rótulos de índice:

```python
linhas_bob_eva = df.loc['Bob':'Eva']
print(linhas_bob_eva)
```

### Exemplo 4: Selecionando Linhas e Colunas Específicas

Podemos selecionar linhas e colunas específicas, passando listas de rótulos tanto para as linhas quanto para as colunas:

```python
subset = df.loc[['Alice', 'Eva'], ['Idade', 'Gênero']]
print(subset)
```

### Exemplo 5: Usando Condições de Filtro

A função `loc` é muito útil para filtrar dados com base em condições:

```python
alunos_mais_velhos = df.loc[df['Idade'] > 23]
print(alunos_mais_velhos)
```

### Exemplo 6: Combinando Condições de Filtro

Podemos usar múltiplas condições combinadas usando os operadores lógicos `&` (and) e `|` (or):

```python
alunas_jovens = df.loc[(df['Idade'] < 25) & (df['Gênero'] == 'Feminino')]
print(alunas_jovens)
```


## Exemplos de Filtragem de Periodo

Vamos considerar um conjunto de dados fictício de informações de alunos para ilustrar vários exemplos de uso da função `loc`, incluindo filtragem de datas em diferentes situações. Primeiro, importamos a biblioteca Pandas e criamos um DataFrame de exemplo:

```python
import pandas as pd

data = {
    'Nome': ['Alice', 'Bob', 'Carol', 'David', 'Eva'],
    'Idade': [25, 22, 28, 21, 24],
    'Gênero': ['Feminino', 'Masculino', 'Feminino', 'Masculino', 'Feminino'],
    'Data de Nascimento': ['1998-05-15', '2001-02-28', '1995-11-10', '2002-07-03', '1999-09-21']
}

df = pd.DataFrame(data)
df['Data de Nascimento'] = pd.to_datetime(df['Data de Nascimento'])
df.set_index('Nome', inplace=True)
```

### Exemplo 1: Filtragem de Datas por Ano

Para filtrar as linhas com base em um ano específico em uma coluna de datas, usamos o método `loc` e a propriedade `.year` para extrair o ano:

```python
alunos_nascidos_em_1999 = df.loc[df['Data de Nascimento'].dt.year == 1999]
print(alunos_nascidos_em_1999)
```

### Exemplo 2: Filtragem de Datas por Mês

Podemos também filtrar as linhas com base em um mês específico:

```python
alunos_nascidos_em_setembro = df.loc[df['Data de Nascimento'].dt.month == 9]
print(alunos_nascidos_em_setembro)
```

### Exemplo 3: Filtragem de Datas por Dia

Para filtrar as linhas com base em um dia específico:

```python
alunos_nascidos_no_dia_15 = df.loc[df['Data de Nascimento'].dt.day == 15]
print(alunos_nascidos_no_dia_15)
```

### Exemplo 4: Filtragem por Período

Podemos criar um período e usar isso para filtrar os dados:

```python
import pandas as pd

periodo = pd.Period('2000-01')
alunos_nascidos_em_janeiro_de_2000 = df.loc[df['Data de Nascimento'].dt.to_period('M') == periodo]
print(alunos_nascidos_em_janeiro_de_2000)
```

## Conclusão

A função `loc` do Pandas é uma ferramenta essencial para a seleção e filtragem de dados em DataFrames, permitindo aos usuários acessar informações específicas de maneira eficiente. Neste artigo, exploramos vários exemplos de uso da função `loc` para selecionar linhas e colunas com base em rótulos e condições de filtro. Com essa poderosa ferramenta em mãos, os analistas de dados podem manipular e extrair informações relevantes de conjuntos de dados complexos de forma mais eficaz.