Python

Como Filtrar Dados com GeoPandas e Parquet

Escrito por Erick Faria · 2 min. >
dados categóricos no Pandas

Se você trabalha com dados geoespaciais, provavelmente já ouviu falar do GeoPandas, uma biblioteca incrível que combina o poder do Pandas com funcionalidades geoespaciais. Neste post, vou explicar como você pode usar o Filtrar Dados com GeoPandas usando parquet, um formato de armazenamento eficiente e amplamente utilizado para grandes volumes de dados.

O que é o GeoPandas?

GeoPandas é uma extensão do Pandas que permite manipular dados geoespaciais de forma simples e intuitiva. Ele adiciona suporte para geometrias (pontos, linhas, polígonos) e operações espaciais, como interseções, uniões e buffers. Além disso, ele se integra perfeitamente com outras bibliotecas populares, como ShapelyFiona e PyProj.

Por que usar Parquet?

Parquet é um formato de armazenamento colunar otimizado para grandes volumes de dados. Ele é altamente eficiente em termos de espaço e desempenho, especialmente quando você precisa filtrar ou consultar apenas um subconjunto dos dados. Combinar GeoPandas com Parquet é uma excelente escolha para trabalhar com dados geoespaciais em escala.

Exemplos Práticos de Filtragem com GeoPandas e Parquet

Vamos explorar alguns exemplos práticos de como filtrar como Filtrar Dados com GeoPandas:

import geopandas as gpd

path = r'H:\\BalaioCientifico\\area_imovel.parquet'
# Exemplo 1: Filtrar apenas imóveis do Acre (AC)
# Estrutura: [(coluna, operador, valor)]
filtro_ac = [('cod_estado', '==', 'AC')]
gdf = gpd.read_parquet(path, filters=filtro_ac)

# Exemplo 2: Filtrar imóveis de múltiplos estados (AC ou PA)
filtro_estados = [[('cod_estado', 'in', ['AC', 'PA'])]]
# OU usando OR lógico entre condições
filtro_estados_or = [[('cod_estado', '==', 'AC')], [('cod_estado', '==', 'PA')]]
gdf = gpd.read_parquet(path, filters=filtro_estados)
# Exemplo 3: Filtrar imóveis com status "PE" (Pendentes)
filtro_pendentes = [('ind_status', '==', 'PE')]
gdf = gpd.read_parquet(path, filters=filtro_ativos)

# Exemplo 4: Filtrar imóveis que NÃO estão Ativos
filtro_nao_ativos = [('ind_status', '!=', 'AT')]
gdf = gpd.read_parquet(path, filters=filtro_nao_cancelados)
# Exemplo 5: Filtrar imóveis com área maior que 1000 hectares
filtro_grandes = [('num_area', '>', 1000)]
gdf = gpd.read_parquet(path, filters=filtro_grandes)

# Exemplo 6: Filtrar imóveis entre 100 e 500 hectares (AND lógico)
filtro_medio_porte = [[('num_area', '>=', 100), ('num_area', '<=', 500)]]
gdf = gpd.read_parquet(path, filters=filtro_medio_porte)
# Exemplo 7: Imóveis ativos (AT) OU em análise no Acre
# [[condição1, condição2]] = condição1 AND condição2
# [[condição1], [condição2]] = condição1 OR condição2
filtro_complexo = [
    [('ind_status', '==', 'AT'), ('cod_estado', '==', 'AC')],  # Ativos no Acre
    [('des_condic', '==', 'Aguardando analise')]               # OU aguardando análise (qualquer estado)
]
gdf = gpd.read_parquet(path, filters=filtro_complexo)
# Exemplo 8: Imóveis indígenas (IRU) com área maior que 1000 hectares
filtro_indigenas_grandes = [[('ind_tipo', '==', 'IRU'), ('num_area', '>', 1000)]]
gdf = gpd.read_parquet(path, filters=filtro_indigenas_grandes)

# Exemplo 9: Imóveis do município de Xapuri OU Sena Madureira
filtro_municipios = [
    [('municipio', '==', 'Xapuri')], 
    [('municipio', '==', 'Sena Madureira')]
]
gdf = gpd.read_parquet(path, filters=filtro_municipios)
# Exemplo 10: Imóveis com mais de 4 módulos fiscais que são ativos
filtro_modulos = [[('mod_fiscal', '>', 4), ('ind_status', '==', 'AT')]]
gdf = gpd.read_parquet(path, filters=filtro_modulos)
# Para aplicar filtros em um GeoDataFrame já carregado, use pandas normalmente:
gdf_filtrado = gdf[gdf['cod_estado'] == 'AC']
gdf_filtrado = gdf[(gdf['num_area'] > 100) & (gdf['ind_status'] == 'AT')]

Confira o vídeo que ensino Como Filtrar Dados com GeoPandas e Parquet:

Escrito por Erick Faria
Engenheiro de Dados com Ph.D. em Geografia e experiência em análise espacial e geoprocessamento. Expertise em processamento de grandes volumes de dados geoespaciais, imagens de satélite e dados de mercado, utilizando ferramentas como Spark, Databricks e Google Earth Engine. Experiência em projetos de mercado de carbono, modelos preditivos para investimentos agrícolas e liderança de projetos de dados em saúde pública. Habilidades em Python, R, SQL e diversas ferramentas de engenharia de dados. Profile