
Linguagem R
08/03/2022
Linguagem Python
Famosa por sua diversidade de aplicações, a liguagem Python pode ser encontrada em scripts para rotinas da administração de servidores, em sites/aplicativos web e também em ferramentas para análise de dados.
Para quem está chegando agora no mundo da programação, um prática para ambientação sobre a sintaxe e a semântica dos dados é o Curso em Python disponível no site https://www.w3schools.com/python/. Com conceitos da linguagem e uma plataforma interna para teste dos comandos, é uma ótima alternativa de aprendizagem.
A ideia central é o apelo visual. A familiaridade que todos têm de mapa, desde as séries iniciais da educação, podem tornar a informação mais acessível e, consequentemente, melhorar a mensagem que se deseja passar. De modo a ilustrar esse pressuposto, consideremos um conjunto de dados, relativos a indicadores obstétricos e socioeconômicos, disponível em: https://github.com/wesleyz/mapa_brasil_plotyly/blob/main/dados_brutos_com_latitudes_obstetricos_ibge.csv.
O conjunto de dados utilizado foi construído a partir de dados oriundos do Censo Nacional – edições de 2000 e 2010, coletadas no sítio do Atlas Brasil, e de dados do Sistema de Informação sobre Nascidos Vivos (SINASC).
Haja visto que são 27 unidades federativas e os registros levam em consideração dois anos observados, o número de registros é de 54. A seguir, a lista de variáveis, por grupo.
Variáveis obstétricas:
Variáveis socioeconômicas:
Tomando como exemplo a variável Porc_cesareas, uma visualização comum, usando um gráfico em barras, ficaria da seguinte forma:
Conhecendo a siglas, é fácil localizar o estado que se deseja verificar o índice. Contudo, comparado a visualização em mapa, fica nítida quão amigável a informação se torna.
Notadamente, o gráfico em mapa, com a mesma informação, tem um apelo informativo significativamente maior.
O Python tem uma biblioteca que facilita essa operação, chamada {dash}. Um exemplo pronto no formato jupyter-notebook está disponível em: https://github.com/wesleyz/mapa_brasil_plotyly/blob/main/OOBr_Tutorial_Gera%C3%A7%C3%A3o_de_Mapa_dos_Estados_Brasileiros_em_Python.ipynb.
Em linhas gerais, para este exemplo, o que se deve fazer para gerar o mapa é ter um conjunto de dados com os valores por estados brasileiros. Depois disso, vamos aos passos:
import pandas as pd from urllib.request import urlopen import plotly print(plotly.version) import plotly as plty import plotly.express as px import json from urllib.request import urlopen
with urlopen(‘https://raw.githubusercontent.com/codeforamerica/click_that_hood/master/public/data/brazil-states.geojson’) as response: Brazil = json.load(response) # Javascrip object notation
state_id_map = {} for feature in Brazil [‘features’]: feature[‘id’] = feature[‘properties’][‘name’] state_id_map[feature[‘properties’][‘sigla’]] = feature[‘id’]
dados = pd.read_csv(“dados_escalados_com_latitudes_obstetricos_ibge.csv”, sep=’;’).drop(‘UF.1’, axis=1) dados.head()
Caso não tenha as bibliotecas de geração de mapa instalado, basta rodar:
!pip install plotly –quiet !pip install -U plotly –quiet
Rodando este exemplo no ambiente do Google Colaboratory, é possível rodar a chamada abaixo, apresentando um formulário em javascript:
Definição da variável padrão
feat = ‘Porc_cesareas’
Estilo de mapa disponíveis
estil_map = [‘aggrnyl’, ‘agsunset’, ‘algae’, ‘amp’, ‘armyrose’, ‘balance’, ‘blackbody’, ‘bluered’, ‘blues’, ‘blugrn’, ‘bluyl’, ‘brbg’, ‘brwnyl’, ‘bugn’, ‘bupu’, ‘burg’, ‘burgyl’, ‘cividis’, ‘curl’, ‘darkmint’, ‘deep’, ‘delta’, ‘dense’, ‘earth’, ‘edge’, ‘electric’, ‘emrld’, ‘fall’, ‘geyser’, ‘gnbu’, ‘gray’, ‘greens’, ‘greys’, ‘haline’, ‘hot’, ‘hsv’, ‘ice’, ‘icefire’, ‘inferno’, ‘jet’, ‘magenta’, ‘magma’, ‘matter’, ‘mint’, ‘mrybm’, ‘mygbm’, ‘oranges’, ‘orrd’, ‘oryel’, ‘oxy’, ‘peach’, ‘phase’, ‘picnic’, ‘pinkyl’, ‘piyg’, ‘plasma’, ‘plotly3’, ‘portland’, ‘prgn’, ‘pubu’, ‘pubugn’, ‘puor’, ‘purd’, ‘purp’, ‘purples’, ‘purpor’, ‘rainbow’, ‘rdbu’, ‘rdgy’, ‘rdpu’, ‘rdylbu’, ‘rdylgn’, ‘redor’, ‘reds’, ‘solar’, ‘spectral’, ‘speed’, ‘sunset’, ‘sunsetdark’, ‘teal’, ‘tealgrn’, ‘tealrose’, ‘tempo’, ‘temps’, ‘thermal’, ‘tropic’, ‘turbid’, ‘turbo’, ‘twilight’, ‘viridis’, ‘ylgn’, ‘ylgnbu’, ‘ylorbr’, ‘ylorrd’]
Função para impressão do mapa
def imprime_mapa_by_features_plus(dados, feat, cluster, ano, estilo, animacao): #feat = “Nascimentos” if cluster != “”: dados_to_plot = dados.query(‘Cluster ==’ + str(cluster)) else: dados_to_plot = dados if ano != “”: dados_to_plot = dados_to_plot.query(‘Ano ==’ + str(ano)) if animacao == ‘Cluster’: dados_to_plot = dados_to_plot.sort_values(by=’Cluster’) else: dados_to_plot = dados_to_plot.sort_values(by=’Ano’)
if dados_to_plot.shape[0]>0: fig = px.choropleth( dados_to_plot, #soybean database locations = ‘Estado’, #define the limits on the map/geography geojson = Brazil, #shape information color = feat, #defining the color of the scale through the database color_continuous_scale=estilo, hover_name = ‘Estado’, #the information in the box hover_data =[feat,”Longitude”,”Latitude”], #title = “OOBr – Dados Socioeconômicos & Obstétricos – Cluster: ” + str(cluster) + ” – Ano ” + str(ano) , #title of the map title = “OOBr – Dados Socioeconômicos & Obstétricos – Valores Escalados ~N(0,1)”, #title of the map animation_frame = animacao #creating the application based on the year ) fig.update_geos(fitbounds = “locations”, visible = True)
fig.show()
A função imprime_mapa_by_features_plus( ) recebe os argumentos dados, variável, cluster, ano e tipo de animação. Com elas, renderizar-se as informações com a class dash plotly.
#@title Imprime Mapa
ano = “” #@param [“”, “2000”, “2010”] variavel = “Porc_cesareas” #@param [“Nascimentos”, “Porc_prematuros”, “Porc_cesareas”, “Porc_grav_multipla”, “Porc_anomalias”, “Porc_nenhuma_consulta”, “Porc_consulta7mais”, “Porc_feminino”, “Porc_raca_mae_branca”, “Porc_raca_mae_negra”, “Porc_peso_menor_2500”, “Porc_apgar1_menor_7”, “Porc_apgar5_menor_7”, “GINI”, “T_DES”, “T_ANALF15M”, “PAREDE”, “T_AGUA”, “T_BANAGUA”, “AGUA_ESGOTO”, “T_LIXO”, “CLUSTER”] cluster = “” #@param [“”, “0”, “1”, “2”, “3”, “4”, “5”] animacao = “Ano” #@param [“Ano”, “Cluster”] estilo = “solar” #@param [“aggrnyl”, “agsunset”, “algae”, “amp”, “armyrose”, “balance”, “blackbody”, “bluered”, “blues”, “blugrn”, “bluyl”, “brbg”, “brwnyl”, “bugn”, “bupu”, “burg”, “burgyl”, “cividis”, “curl”, “darkmint”, “deep”, “delta”, “dense”, “earth”, “edge”, “electric”, “emrld”, “fall”, “geyser”, “gnbu”, “gray”, “greens”, “greys”, “haline”, “hot”, “hsv”, “ice”, “icefire”, “inferno”, “jet”, “magenta”, “magma”, “matter”, “mint”, “mrybm”, “mygbm”, “oranges”, “orrd”, “oryel”, “oxy”, “peach”, “phase”, “picnic”, “pinkyl”, “piyg”, “plasma”, “plotly3”, “portland”, “prgn”, “pubu”, “pubugn”, “puor”, “purd”, “purp”, “purples”, “purpor”, “rainbow”, “rdbu”, “rdgy”, “rdpu”, “rdylbu”, “rdylgn”, “redor”, “reds”, “solar”, “spectral”, “speed”, “sunset”, “sunsetdark”, “teal”, “tealgrn”, “tealrose”, “tempo”, “temps”, “thermal”, “tropic”, “turbid”, “turbo”, “twilight”, “viridis”, “ylgn”, “ylgnbu”, “ylorbr”, “ylorrd”]
#@markdown — imprime_mapa_by_features_plus(dados,variavel, cluster,ano, estilo, animacao )
Tem sugestões, comentários e/ou dúvidas? Fale conosco em observatorioobstetricobr@gmail ou nas nossas redes, Twitter ou Instagram.