#Filtro:
opcoes_cidade = 'Cuiabá'
mostrar_graficos_em_png = True
import pandas as pd
import numpy as np
import glob
import os
import plotly.express as px
import plotly.graph_objects as go
import plotly.figure_factory as ff
import geopy
from geopy.geocoders import Nominatim
from IPython.display import clear_output, Image, Markdown as md
# caso true, gera os gráficos em formato png
try: mostrar_graficos_em_png
except NameError: mostrar_graficos_em_png = False
# Carrega arquivo .feather GEO
geo_polos = pd.read_feather('./dados/geo_polos.feather')
geo_polos = geo_polos.drop(columns=['index'])
# Carrega arquivo .feather MENSALIDADES
polos_mensalidades = pd.read_feather('./dados/mensalidades_polos.feather')
polos_mensalidades = polos_mensalidades.drop(columns=['index'])
# funcção para adicionar casas decimais
def real(valor):
a = "{:,.0f}".format(float(valor))
b = a.replace(',','v')
c = b.replace('.',',')
return c.replace('v','.')
#Lista de Cidades
lista_cidades = ['ALTAMIRA','AMERICANA','ANÁPOLIS','ARAQUARI','BELO HORIZONTE','BELÉM','BENEVIDES','BRASÍLIA''CAMPINAS','CAMPO GRANDE''CARAGUATATUBA''CARUARU','CASCAVEL''CODÓ','COLATINA','CUIABÁ','CURITIBA','DIADEMA','DUQUE DE CAXIAS','ENGENHEIRO COELHO''FLORIANÓPOLIS','FORTALEZA','GOIÂNIA''GRAVATAÍ','GUARULHOS','HORTOLÂNDIA','IMPERATRIZ','ITABORAÍ''ITARARÉ','JACAREÍ','JI-PARANÁ''JOINVILLE','JUIZ DE FORA','JUNDIAÍ','LAVRAS''LIMEIRA','MACAPÁ','MACEIÓ','MANAUS','MARABÁ','MOGI GUAÇU','OSASCO''PALMAS''PARAUAPEBAS','PAULÍNIA','PORTO VELHO','PRESIDENTE PRUDENTE','RECIFE','REGISTRO','RIO BRANCO''RIO CLARO','RIO DE JANEIRO','SAIRÉ','SALVADOR''SANTARÉM','SANTOS','SOROCABA''SÃO JOSÉ DO RIO PRETO','SÃO JOSÉ DOS CAMPOS''SÃO JOSÉ DOS PINHAIS''SÃO LUÍS','SÃO PAULO','TATUÍ','TELÊMACO BORBA''UBERABA','UBERLÂNDIA','URUARÁ''VITÓRIA DA CONQUISTA','VITÓRIA',]
lista_cidades.sort()
demanda = geo_polos[geo_polos.cidade == opcoes_cidade]
demanda = demanda[['pop-renda-a-partir-1/2salario', 'pop-renda-a-partir-1/2salario-18a44anos', 'pessoas-medio-completo-superior-incompleto-18a44anos', 'frequentando-graduacao-18a44anos', 'mercado']].copy()
pop_com_renda = demanda['pop-renda-a-partir-1/2salario'].iloc[0]
pop_com_renda_e_idade_univ = demanda['pop-renda-a-partir-1/2salario-18a44anos'].iloc[0]
pop_com_ensino_medio = demanda['pessoas-medio-completo-superior-incompleto-18a44anos'].iloc[0]
alu_ensino_sup = demanda['frequentando-graduacao-18a44anos'].iloc[0]
mercado = demanda['mercado'].iloc[0]
# adiciona casas decimais
pop_com_renda = float(pop_com_renda)
pop_com_renda = real(pop_com_renda)
pop_com_renda_e_idade_univ = float(pop_com_renda_e_idade_univ)
pop_com_renda_e_idade_univ = real(pop_com_renda_e_idade_univ)
pop_com_ensino_medio = float(pop_com_ensino_medio)
pop_com_ensino_medio = real(pop_com_ensino_medio)
alu_ensino_sup = float(alu_ensino_sup)
alu_ensino_sup = real(alu_ensino_sup)
mercado = float(mercado)
mercado = real(mercado)
# md("### População com renda: {} <br> (população com renda a partir de 1/2 salário mínimo.)<br><br> População com renda e idade universitária: {} <br> (Pessoas de 18 até 44 anos e com renda a partir e 1/2 salário mínimo)<br><br> População com ensino médio: {} <br> (Pessoas de 18 até 44 anos com ensino médio completo ou superior incompleto) <br><br> Cursando ensino superior: {} <br> (Alunos do ensino superior de 18 até 44 anos que residem na região) <br><br> Mercado potencial: {} <br> (Pessoas de 18 até 44 anos, com médio completo que não estão cursando o ensino superior)".format(pop_com_renda, pop_com_renda_e_idade_univ, pop_com_ensino_medio, alu_ensino_sup, mercado))
# percentual da população ente 18 e 44 anos
geo_polos['percentual_18a24'] = round(geo_polos['idade-18a24'] * 100 / geo_polos['populacao'])
# percentual da população homem
geo_polos['percentual_m'] = round(geo_polos['pop-masculino'] * 100 / geo_polos['populacao'])
# percentual da população mulher
geo_polos['percentual_f'] = round(geo_polos['pop-feminino'] * 100 / geo_polos['populacao'])
pop = geo_polos['populacao'].iloc[0]
pop_m = geo_polos['pop-masculino'].iloc[0]
pop_f = geo_polos['pop-feminino'].iloc[0]
pop_perc_18a44 = geo_polos['percentual_18a24'].iloc[0]
pop_perc_m = geo_polos['percentual_m'].iloc[0]
pop_perc_f = geo_polos['percentual_f'].iloc[0]
# adiciona casas decimais
pop = float(pop)
pop = real(pop)
pop_m = float(pop_m)
pop_m = real(pop_m)
pop_f = float(pop_f)
pop_f = real(pop_f)
# md("## População total: {} <br><br>Homens: {} ({}%) <br> Mulheres: {} ({}%) <br><br> {}% com idade entre 18 e 44 anos".format(pop, pop_m, pop_perc_m, pop_f, pop_perc_f, pop_perc_18a44))
lista_a = list()
lista_a.append("População total:")
lista_a.append("Homens:")
lista_a.append("Mulheres:")
lista_a.append("População com renda:")
lista_a.append("População com renda e idade universitária:")
lista_a.append("População com ensino médio:")
lista_a.append("Cursando ensino superior:")
lista_a.append("Mercado potencial:")
lista_b = list()
lista_b.append("{}".format(pop))
lista_b.append("{} ({}%)".format(pop_m, pop_perc_m))
lista_b.append("{} ({}%)".format(pop_f, pop_perc_f))
lista_b.append("{}".format(pop_com_renda))
lista_b.append("{}".format(pop_com_renda_e_idade_univ))
lista_b.append("{}".format(pop_com_ensino_medio))
lista_b.append("{}".format(alu_ensino_sup))
lista_b.append("{}".format(mercado))
lista_c = list()
lista_c.append("{}% com idade entre 18 e 44 anos".format(pop_perc_18a44))
lista_c.append(" - ")
lista_c.append(" - ")
lista_c.append("população com renda a partir de 1/2 salário mínimo")
lista_c.append("pessoas de 18 até 44 anos e com renda a partir e 1/2 salário mínimo")
lista_c.append("pessoas de 18 até 44 anos com ensino médio completo ou superior incompleto")
lista_c.append("alunos do ensino superior de 18 até 44 anos que residem na região")
lista_c.append("pessoas de 18 até 44 anos, com médio completo que não estão cursando o ensino superior")
df = pd.DataFrame(list(zip(lista_a,lista_b,lista_c)),columns=['Indicador','Valor','Obs'])
fig = go.Figure(data=[go.Table(
columnwidth = [50,35,100],
header=dict(
fill_color='#6BAED6',
align='left',
height=0),
cells=dict(values=[df.Indicador,df.Valor,df.Obs],
fill_color='lavender',
align=['left','left','left'],
fill=dict(color=['#6BAED6', 'white']),
font_size=[15,15,15],
height=60))
])
fig.add_annotation(
xref='x domain', yref='y2 domain', x=1.0, y=1, text='Fonte: INEP - Censo Educacional (2019), IBGE - Censo (2010)',
showarrow=False, arrowhead=1
)
if(mostrar_graficos_em_png):
grafico_png = fig.to_image(format="png", width=1200, height=700, engine="kaleido")
display(Image(grafico_png))
del grafico_png
else:
fig.show()
renda = geo_polos[['cidade', '1-salario', '1ate2-salarios', '2ate5-salarios', '5ate10-salarios', '10ate20-salarios', '20-salarios']].copy()
# rename colunas
renda.rename(columns={'1-salario':'Mais de 1/2 até 1 salário mínimo',
'1ate2-salarios':'Mais de 1 até 2 salários mínimos',
'2ate5-salarios':'Mais de 2 até 5 salários mínimos',
'5ate10-salarios':'Mais de 5 até 10 salários mínimos',
'10ate20-salarios':'Mais de 10 até 20 salários mínimos',
'20-salarios':'Mais de 20 salários mínimos'
},inplace=True)
# transpor colunas em linhas
renda1= renda.set_index('cidade').stack().reset_index(name='value')
fig = px.bar(renda1,
y= 'value',
x= 'level_1',
text= 'value',
title= 'Distribuição de Renda da população - ' + opcoes_cidade,
color='level_1',
color_discrete_sequence=px.colors.sequential.Blues_r,
labels={
'value':'População',
'level_1':'Classe social'
}, height=600
)
fig.add_annotation(
xref='paper', yref='paper', x=1.0, y=-0.5, text='Fonte: IBGE - Censo (2010)',
showarrow=False, arrowhead=1
)
fig.update_traces(texttemplate='%{text:.2s}', textposition='outside')
fig.update_layout(uniformtext_minsize=8, uniformtext_mode='hide')
if(mostrar_graficos_em_png):
grafico_png = fig.to_image(format="png", width=1000, height=550, engine="kaleido")
display(Image(grafico_png))
del grafico_png
else:
fig.show()
# percentual da população matriculados
geo_polos['percentual_matriculados'] = round(geo_polos['Matriculados'] * 100 / geo_polos['populacao'])
educacao = geo_polos[['cidade', 'Matriculados', 'Concluintes', 'Ingressantes']].copy()
# transpor colunas em linhas
educacao = educacao.set_index('cidade').stack().reset_index(name='value')
matri = geo_polos['Matriculados'].iloc[0]
# adiciona casas decimais
matri = float(matri)
matri = real(matri)
matri
fig = px.bar(educacao,
y='value',
x='level_1',
text='value',
title= (str(matri))+' alunos estão matriculados no ensino superior e o total representa aproximadamente '+ str(round(geo_polos['percentual_matriculados'].iloc[0],2))+'% da População de '+opcoes_cidade,
color='level_1',
color_discrete_sequence=px.colors.sequential.Blues_r,
labels={'level_1':'Alunos', 'value':'Quantidade'},
height=550
)
fig.add_annotation(xref='paper', yref='paper', x=1.0, y=-0.2, text='Fonte: INEP - Censo Educacional (2019)', showarrow=False, arrowhead=1)
fig.update_traces(texttemplate='%{text:.2s}', textposition='outside')
fig.update_layout(uniformtext_minsize=8, uniformtext_mode='hide')
if(mostrar_graficos_em_png):
grafico_png = fig.to_image(format="png", width=1000, height=550, engine="kaleido")
display(Image(grafico_png))
del grafico_png
else:
fig.show()
modalidade = geo_polos[['cidade', 'matriculados-ead', 'matriculados-presencial',]].copy()
# rename colunas
modalidade.rename(columns={
'matriculados-ead':'EAD',
'matriculados-presencial':'Presencial',
},inplace=True)
# transpor colunas em linhas
modalidade = modalidade.set_index('cidade').stack().reset_index(name='value')
# total de matriculados do município
total_matriculados = geo_polos['matriculados-ead'].iloc[0] + geo_polos['matriculados-ead'].iloc[0]
# adiciona casas decimais
total_matriculados = float(total_matriculados)
total_matriculados = real(total_matriculados)
fig = px.pie(modalidade,
values='value',
names='level_1',
title=' Total de '+ str(total_matriculados) + ' alunos matriculados no município de ' +str(opcoes_cidade),
color='level_1',
# color_discrete_map={'EAD':'#6cbcff',
# 'Presencial':'#a0a7d6'},
color_discrete_sequence=px.colors.sequential.Blues_r,
labels={'level_1':'Modalidade','value':'Alunos Matriculados'}
)
fig.add_annotation(
xref='paper', yref='paper', x=1.0, y=0, text='Fonte: INEP - Censo Educacional (2019)',
showarrow=False, arrowhead=1
)
if(mostrar_graficos_em_png):
grafico_png = fig.to_image(format="png", width=1000, height=550, engine="kaleido")
display(Image(grafico_png))
del grafico_png
else:
fig.show()
idade = geo_polos[['cidade', 'alunos-idade-65+','alunos-idade-60a64','alunos-idade-55a59','alunos-idade-50a54','alunos-idade-45a49','alunos-idade-40a44','alunos-idade-35a39','alunos-idade-30a34','alunos-idade-25a29','alunos-idade-19a24','alunos-idade-18-',]].copy()
# rename colunas''' '''
idade.rename(columns={
'alunos-idade-18-':'18 anos ou menos',
'alunos-idade-19a24':'de 19 até 24',
'alunos-idade-25a29':