Esse é um dos projetos mais gostosos de fazer. Super legal e prático. Vamos aprender como transformar dados brutos em um mapa interativo e visualmente impactante. Se você sempre quis ver o PIB (Produto Interno Bruto) dos munícipios de São Paulo de um jeito diferente, este é o lugar.

Se você está começando no mundo de análise de dados ou quer aprender a trabalhar com dados geográficos, este projeto é para você.

Os arquivos para este projeto podem ser encontrados no meu google drive. Preencha desta forma, e terá todos os documentos.

[wpforms id="305" title="false"] Vamos usar o Python e algumas bibliotecas poderosas para criar um mapa que destaca visualmente aquelas cidades com maior PIB per capita. Prepare-se para colocar a mão na massa.

Preparando o Terreno: Nosso Ambiente de Trabalho

Antes de começar a codificar, é fundamental ter um ambiente organizado. Eu sempre crio um venv para cada projeto.

Depois de criar o ambiente, instala as bibliotecas necessárias. Inicie o seu projeto e vamos começar a fazer esse code.

Importando os dados de PIB

Vamos importar algumas bibliotecas e carregar os nossos dados do PIB dos municípios. Esses dados foram obtidos do site do IBGE. Eu já dei uma limpada neste documento. A limpeza em si seria assunto para outro post.

Antes de carregar, certifique-se de onde você guardou o seu arquivo. Por exemplo, o meu estava dentro de uma pasta chamada dados. Portanto, no meu código, você pode notar que coloquei o nome ali.

import pandas as pd
import geopandas as gpd
import folium
from branca.colormap import linear
from folium.plugins import Fullscreen

sp = pd.read_csv("dados/datamap_sp.csv", index_col=0)

Dica importante: Se o seu arquivo CSV tiver uma coluna de índice que o pandas está lendo como uma coluna normal (geralmente a segunda coluna), você pode usar o index_col=0 como fiz no código demonstrado acima.

Carregando os Dados Geográficos

Para que isso funcione, é necessário ter todos os shapefile com os limites geográficos dos municípios (.shp, .shx, .dbf). Todos esses arquivos podem ser encontrados no meu google file. O link está acima.

gdf = gpd.read_file("dados/SP_Municipios_2023.shp")

# mudando de número para string
gdf["CD_MUN"] = gdf["CD_MUN"].astype(str)

#limpando dataframe deixando somente o que precisamos
gdf_limpo = gdf[["CD_MUN", "geometry"]]

Unindo Dados com Geografia

Vamos unir os nossos dados. Usando o dataframe que contém os dados do PIB e o dataframe que contém os de geometria para o mapa.

Observando os dataframes, ambos têm um número de identificação que podemos usar. Se os nomes das colunas fossem os mesmos, a união seria mais simples. Contudo, neste caso, os nomes das colunas são diferentes. No dataframe que contém o PIB, este numero está no Código [-], e no outro, esse número de identificação está no CD_MUN.

Por isso, quando efetuando a merge, vamos usar um tempero especial:

unidos = pd.merge(gdf_limpo, sp, left_on="CD_MUN", right_on="Código [-]", how="inner")

Criando mapa com Folium

Agora que os nossos dados estão prontos, vamos criar o mapa para visualizar.

import folium
from branca.colormap import linear
from folium.plugins import Fullscreen

# Escala de cor
colormap = linear.OrRd_09.scale(
    unidos["pib"].min(), unidos["pib"].max()
)
colormap.caption = "PIB per Capita (R$)"

# Criando mapa base
m = folium.Map(
    location=[-23.5505, -46.6333], 
    zoom_start=7, 
    tiles="CartoDB positron"
)
Fullscreen().add_to(m)

# Adicionando os municípios
folium.GeoJson(
    unidos,
    style_function=lambda feature: {
        "fillColor": colormap(feature["properties"]["pib"]),
        "color": "black",
        "weight": 0.5,
        "fillOpacity": 0.7
    },
    tooltip=folium.GeoJsonTooltip(
        fields=["NM_MUN", "pib"],
        aliases=["Município:", "PIB per capita (R$):"],
        localize=True
    )
).add_to(m)

colormap.add_to(m)
m

Conclusão: Transformando Dados em Insights

Com apenas algumas bibliotecas e um pouco de código, conseguimos transformar uma planilha do IBGE em uma ferramenta visual poderosa.

Esse tipo de visualização ajuda na tomada de decisões, estudos regionais, e ainda é uma excelente forma de treinar Python na prática.