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.
Comentários (0)
Seja o primeiro a comentar!
Deixe um comentário