<jupyter_start><jupyter_text>Casamento LGBT no Brasil*Este notebook contém o projeto final aplicado da disciplina "Análise exploratória de dados", no Master em Jornalismo Dados, Automação e Data Storytelling do Insper, lecionada pelo Prof. <NAME>, PhD.***Integrantes do grupo:** <NAME>, <NAME> e <NAME> (Grupo GIT).**Transparência:** o trabalho também está disponível no [GitHub](https://github.com/gabrielacaesar/lgbt_casamento).**Base de dados escolhida:** casamentos de pessoas do mesmo gênero de 2013 até 2019 (dado mais recente). **Base de dados complementar:** números de habitantes desagregados por gênero, UF e faixa etária. **Fonte das bases de dados:** Instituto Brasileiro de Geografia e Estatística (IBGE). Os arquivos brutos [estão salvos aqui](https://github.com/gabrielacaesar/lgbt_casamento/tree/main/data/raw_data).**Metodologia:** os dados do IBGE estão disponíveis em um formato que dificulta o reaproveitamento para a análise. Por isso, transformamos os dados em [formato "tidy"](https://escoladedados.org/tutoriais/tidy-data-dados-arrumados-e-5-problemas-comuns/) antes de iniciar as análises. Os arquivos tratados [estão salvos aqui](https://github.com/gabrielacaesar/lgbt_casamento/tree/main/data).  Contexto do assuntoO Brasil tem [mais de 60 mil casais formados por pessoas do mesmo gênero](http://g1.globo.com/brasil/noticia/2011/04/censo-2010-contabiliza-mais-de-60-mil-casais-homossexuais.html), segundo o Censo 2010 - o último realizado no Brasil e divulgado em 2011. Esse número é bastante menor que o de casais formados por pessoas de gêneros diferentes: 37,5 milhões. Mais de dez anos se passaram. E como está essa situação hoje no Brasil? É inegável que, ao caminhar na Avenida Paulista, em São Paulo, em 2021, vemos mais casais LGBTs do que há 10 anos. O sentimento é que mais pessoas puderam viver histórias homoafetivas nas grandes cidades. Mas será que isso vale para todo o Brasil? E será que a eleição de <NAME> impactou esses números?Além disso, apenas em 2011, o STF julgou legal a união civil de pessoas do mesmo gênero. Em 2013, o Conselho Nacional de Justiça [passou a permitir que todos os cartórios registrassem a união homoafetiva](https://g1.globo.com/distrito-federal/noticia/casamento-gay-no-brasil-completa-4-anos-de-regulamentacao-leia-historias.ghtml).A orientação sexual é uma informação pessoal e, por isso, há poucos dados sobre isso, já que os órgãos não costumam coletar essa informação. Antes da definição da base, o grupo mapeou diversos dados sobre LGBTs para verificar qual base poderia ter dados de qualidade para tratar o tema.A base de dados do IBGE, porém, é uma exceção positiva nesse levantamento. Além de ter dados oficiais do Brasil, ela também tem um detalhamento que permite uma ampla análise exploratória para responder a perguntas.  Perguntas a que queremos responder1.   Quantos casamentos homoafetivos ocorreram no Brasil de 2013 a 2019?2.   Qual foi o ano com mais casamentos? E com menos casamento?3.   Quais foram as estatísticas básicas anuais? E em 2018?4.   Quem casa mais no meio LGBT? Homens ou mulheres? 5.   As mulheres também se casam mais considerando os dados anuais?6.   Em qual mês as pessoas mais se casam? E em qual elas menos se casam?7.   Há mais casamentos homoafetivos após a vitória de <NAME>, em 28 de outubro de 2018?8.   Em quais estados aconteceram mais casamentos LGBTs em números absolutos? E menos?9.   Em quais regiões do Brasil os casamentos LGBTs mais ocorrem? E menos?10.   Considerando a população adulta, quais estados têm as maiores e menores proporções de casamentos LGBTs? 11.   Em um mapa do Brasil, como ficam as taxas de casamentos LGBTS por 100 mil adultos?12.  Considerando a UF e o ano informados pelo usuário, quais são as estatísticas básicas dessa UF e desse ano quanto ao casamento LGBT?  O que aprendemos com os dados1.   Mais de 40 mil casamentos homoafetivos foram realizados de 2013 a 20192.  As mulheres definitivamente se casam mais do que os homens3.  2014 foi o ano em que o número de casamentos de homens quase ultrapassou o de mulheres4.   SP e DF foram as unidades federativas com as maiores taxas de casamentos LGBTs por habitantes adultos;5.  Em números absolutos, SP concentra 41,5% dos casamentos, seguido por RJ (9,3%), MG (7,5%) e SC (5,5%). RR, AC e AP têm os menores números.6.    Estados do Norte e do Nordeste, como MA, TO, PI, AP e AC, aparecem com as menores taxas7.   O Sudeste, região mais populosa do Brasil, também foi a região com mais casamentos8.   O ano com mais casamentos LGBTs foi 2018, seguido por 20199.   O mês com mais casamentos foi dezembro; e o mês com menos foi abril10.   Os meses próximos à eleição de <NAME> foram os picos de casamentos LGBTS11.   Os dados apontam que os casais homoafetivos seguiram [a recomendação da presidente da Comissão Especial da Diversidade Sexual e de Gênero do Conselho Federal da OAB, <NAME>](https://g1.globo.com/sp/sao-paulo/noticia/2018/11/07/casamento-lgbt-cresce-25-no-pais-diz-associacao-profissionais-oferecem-servicos-gratuitos-para-celebracoes.ghtml), para os casais procurarem assegurar o matrimônio ainda em 2018.  1. Verificação do dataframeEsta etapa do trabalho se propõe a importar o CSV principal e todas as bibliotecas usadas no Notebook, além de verificar do que esse dataframe é formado antes de responder às perguntas de interesse.<jupyter_code># importação das bibliotecas
# %%capture 
# !pip install geopandas ## para instalar o geopandas
# import geopandas as gpd
import pandas as pd
import altair as alt
# leitura do CSV como dataframe
lgbt_casamento = pd.read_csv('https://raw.githubusercontent.com/gabrielacaesar/lgbt_casamento/main/data/lgbt_casamento.csv')
# primeiras linhas do nosso dataframe
lgbt_casamento.head()
# últimas linhas do nosso dataframe
lgbt_casamento.tail()
# informações do dataframe, por exemplo: tipo da coluna e número de linhas
lgbt_casamento.info()
# estatísticas das colunas numéricas do dataframe
lgbt_casamento.describe()
# cabeçalho da dataframe
lgbt_casamento.columns
# valores únicos da coluna 'ano' do dataframe
lgbt_casamento['ano'].unique()
# valores únicos da coluna 'mes' do dataframe
lgbt_casamento['mes'].unique()
# valores únicos da coluna 'genero' do dataframe
lgbt_casamento['genero'].unique()
# valores únicos da coluna 'uf' do dataframe
lgbt_casamento['uf'].unique()
# tamanho dos valores únicos da coluna 'uf' do dataframe
len(lgbt_casamento['uf'].unique())
# tamanho dos valores únicos da coluna 'mes' do dataframe
len(lgbt_casamento['mes'].unique())
# tamanho dos valores únicos da coluna 'ano' do dataframe
len(lgbt_casamento['ano'].unique())
# seleciona apenas a coluna 'mes'
lgbt_casamento['mes']
# número de linhas na coluna 'numero'
len(lgbt_casamento['mes'])
# pergunta se aquele campo da coluna 'mes' é NA (ou seja, sem preenchimento)
lgbt_casamento['mes'].isna()
# pergunta se aquele campo da coluna 'numero' é NA (ou seja, sem preenchimento)
lgbt_casamento['numero'].isna()
# número máximo da coluna 'numero'
# ou seja, maior número de casamentos em um mês em uma UF
lgbt_casamento['numero'].max()
# número mínimo da coluna 'numero'
# ou seja, menor número de casamentos em um mês em uma UF
lgbt_casamento['numero'].min()
# média da coluna 'numero'
lgbt_casamento['numero'].mean()
# mediana da coluna 'numero'
lgbt_casamento['numero'].median()
# desvio padrão da coluna 'numero'
lgbt_casamento['numero'].std()
# soma da coluna 'numero'
sum(lgbt_casamento['numero'])<jupyter_output><empty_output><jupyter_text>2. Análise exploratória de dadosEsta etapa do trabalho se propõe a analisar os dados com mais profundida para começar a responder a algumas perguntas formuladas inicialmente. Como o CSV já foi importado e as bibliotecas já foram chamadas anteriormente neste Notebook, isso não precisa ser repetido.  Quantos casamentos homoafetivos ocorreram no Brasil de 2013 a 2019?<jupyter_code># mais de 40 mil casamentos homoafetivos nesse período
lgbt_casamento['numero'].sum()<jupyter_output><empty_output><jupyter_text>Qual foi o ano com mais casamentos homoafetivos? E com menos?<jupyter_code># 2018 foi o ano com mais casamentos, seguido por 2019
casamento_ano = lgbt_casamento.groupby('ano')['numero'].sum().sort_values(ascending=False).reset_index()
print(casamento_ano)
# gráfico para mostrar os dados citados acima
# referência https://altair-viz.github.io/gallery/bar_chart_with_highlighted_bar.html
alt.Chart(casamento_ano).mark_bar().encode(
    x = alt.X('ano:O', title = 'Ano'),
    y = alt.Y('numero', title = 'Nº de casamentos'),
    color=alt.condition(
        alt.datum.ano == 2018,  # destacar com laranka
        alt.value('orange'),
        alt.value('steelblue')
    ),
    tooltip = ['ano', 'numero']
).properties(title = '2018 é o recorde de casamentos homoafetivos', width=600, height=300).interactive()<jupyter_output><empty_output><jupyter_text>Quais foram as estatísticas básicas anuais?<jupyter_code># estatísticas básicas por ano e gênero
# ATENÇÃO: as estatísticas (mean, median, std, max e min) se referem a cada mês, e não ao ano completo
lgbt_casamento.groupby(['ano', 'genero']).agg({'numero':['sum', 'mean', 'median', 'std', 'max', 'min']})<jupyter_output><empty_output><jupyter_text>Quais foram as estatísticas básicas de 2018?<jupyter_code># estatísticas básicas por uf e gênero no ano de 2018
# ATENÇÃO: as estatísticas (mean, median, std, max e min) se referem a cada mês, e não ao ano completo
# Nas mulheres, SP, por exemplo, tem média de 209 casamentos mensais
# e mediana e 130,5
# o mínimo mensal por gênero foi 105; o máximo foi 827
lgbt_casamento.query('ano == 2018').groupby(['genero', 'uf']).agg({'numero':['sum', 'mean', 'median', 'std', 'max', 'min']})<jupyter_output><empty_output><jupyter_text>Quem casa mais no meio LGBT? Homens ou mulheres?<jupyter_code># as mulheres se casam mais do que os homens
casamento_genero = lgbt_casamento.groupby('genero')['numero'].sum().sort_values(ascending=False).reset_index()
print(casamento_genero)
# gráfico para mostrar os dados citados acima
# referência https://altair-viz.github.io/gallery/bar_chart_with_highlighted_bar.html
alt.Chart(casamento_genero).mark_bar().encode(
    x = alt.X('genero', title = 'Ano'),
    y = alt.Y('numero', title = 'Nº de casamentos'),
    color=alt.condition(
        alt.datum.genero == 'Feminino',
        alt.value('orange'),
        alt.value('steelblue')
    ),
    tooltip = ['genero', 'numero']
).properties(title = 'Casamentos homoafetivos: mulheres se casam mais do que homens', width=600, height=300).interactive()<jupyter_output><empty_output><jupyter_text>As mulheres também se casam mais considerando os dados anuais?<jupyter_code># considerando os dados anuais também
# as mulheres se casam mais do que os homens
# apenas em 2014 a diferença foi pequena
casamento_genero_ano = lgbt_casamento.groupby(['ano' , 'genero'])['numero'].sum().reset_index()
print(casamento_genero_ano)
# gráfico para mostrar os dados citados acima
# referência https://altair-viz.github.io/gallery/line_percent.html
alt.Chart(casamento_genero_ano).mark_line().encode(
    x = alt.X('ano:O', title = 'Ano'),
    y = alt.Y('numero', title = 'Nº de casamentos'),
    color= alt.Color('genero:N', sort = ['Masculino', 'Feminino'], title = 'Gênero'),
    tooltip = ['ano', 'numero', 'genero']
).properties(title = '2014 foi o ano com mais proximidade', width=600, height=300).interactive()<jupyter_output><empty_output><jupyter_text>Em qual mês as pessoas mais se casam? E menos?<jupyter_code># dezembro é o mês com mais casamentos
# abril é o mês com menos casamentos
casamento_mes = lgbt_casamento.groupby(['mes'])['numero'].sum().sort_values(ascending=False).reset_index()
print(casamento_mes)
# gráfico para mostrar os dados citados acima
# referência https://altair-viz.github.io/gallery/bar_chart_with_highlighted_bar.html
alt.Chart(casamento_mes).mark_bar(point=True).encode(
    x = alt.X('mes', title = 'Mês', sort=['Dezembro', 'Novembro', 'Outubro']),
    y = alt.Y('numero', title='Número'),
    tooltip = ['mes', 'numero'],
    color=alt.condition(
        alt.datum.mes == 'Dezembro',  
        alt.value('orange'),    
        alt.value('steelblue')
    ),
).properties(
    title = 'Dezembro é o mês com mais casamentos homoafetivos', width = 600, height=300).interactive()<jupyter_output><empty_output><jupyter_text>Há mais casamentos homoafetivos após a vitória de <NAME>, em 28 de outubro de 2018?<jupyter_code># observe: dezembro de 2018 foi o mês com mais casamentos
# logo depois, janeiro de 2019, fevereiro de 2019, novembro de 2018...
# todos são meses próximos - e após a eleição de <NAME>
casamento_mes_ano = lgbt_casamento.groupby(['mes', 'ano'])['numero'].sum().sort_values(ascending=False).reset_index()
print(casamento_mes_ano)
# gráfico para mostrar os dados citados acima
# referência https://altair-viz.github.io/gallery/simple_heatmap.html
alt.Chart(casamento_mes_ano).mark_rect().encode(
    x = alt.X('mes', title = 'Mês', sort=['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro']),
    y = alt.Y('ano:O', title = 'Ano'),
    color= alt.Color('numero:Q', title = 'Nº de casamentos'),
    tooltip = ['mes', 'ano', 'numero'],
).properties(title = 'Dezembro de 2018 foi o pico de casamentos homoafetivos', width=600, height=300)<jupyter_output><empty_output><jupyter_text>Em quais estados aconteceram mais casamentos LGBTs em números absolutos? E menos?<jupyter_code># mais de 18 mil casamentos foram em SP, seguido pelo RJ e por MG
# SP concentra 41,5% dos casamentos homoafetivos e é também o estado mais populoso do Brasil
# já Roraima, Acre e Amapá aparecem com poucos casamentos e também são pouco populosos
casamento_uf = lgbt_casamento.groupby('uf')['numero'].sum().sort_values(ascending=False).reset_index()
casamento_uf['n_perc'] = (casamento_uf['numero'] / sum(casamento_uf['numero'])) * 100
print(casamento_uf)
# gráfico para mostrar os dados citados acima
# referência https://altair-viz.github.io/gallery/bar_chart_horizontal.html
alt.Chart(casamento_uf).mark_bar().encode(
    x = alt.X('numero', title = 'Nº de casamentos'),
    y = alt.Y('uf', sort = ['São Paulo', 'Rio de Janeiro', 'Minas Gerais', 'Santa Catarina'], title = 'UF'),
    tooltip = ['uf', 'numero', 'n_perc']
).properties(title = 'Casamento LGBT: estados do Sudeste e do Sul aparecem primeiro no ranking', width=600, height=300)<jupyter_output><empty_output><jupyter_text>Em quais regiões do Brasil os casamentos LGBTs mais ocorrem? E menos?<jupyter_code># criação de dicionário transformado depois em dataframe com as UFs e as respectivas regiões

uf_norte = {'regiao': ['Norte']*7, 'uf': ["Rondônia","Acre","Amazonas","Roraima", "Pará","Amapá","Tocantins"]}
uf_nordeste = {'regiao': ['Nordeste']*9, 'uf': ["Maranhão","Piauí","Ceará","Rio Grande do Norte","Paraíba","Pernambuco", "Alagoas","Sergipe","Bahia"]}
uf_sudeste = {'regiao': ['Sudeste']*4, 'uf': ["Minas Gerais","Espírito Santo","Rio de Janeiro","São Paulo"]}
uf_sul = {'regiao': ['Sul']*3, 'uf': ["Paraná","Santa Catarina","Rio Grande do Sul"]}
uf_centro_oeste = {'regiao': ['Centro-Oeste']*4, 'uf': ["Mato Grosso do Sul","Mato Grosso","Goiás", "Distrito Federal"]}

regiao_norte = pd.DataFrame(uf_norte)
regiao_nordeste = pd.DataFrame(uf_nordeste)
regiao_sudeste = pd.DataFrame(uf_sudeste)
regiao_sul = pd.DataFrame(uf_sul)
regiao_centro_oeste = pd.DataFrame(uf_centro_oeste)

regioes_uf = pd.concat([regiao_norte, regiao_nordeste, regiao_sudeste, regiao_sul, regiao_centro_oeste])
lgbt_casamento_regioes = lgbt_casamento.merge(regioes_uf, on='uf')
lgbt_casamento_regioes_ano = lgbt_casamento_regioes.groupby(['regiao', 'ano'])['numero'].sum().sort_values(ascending=False).reset_index()
lgbt_casamento_regioes_ano.head()
# gráfico para mostrar os dados citados acima
# referência https://altair-viz.github.io/gallery/horizontal_stacked_bar_chart.html
alt.Chart(lgbt_casamento_regioes_ano).mark_bar().encode(
    x = alt.X('sum(numero)', title = 'Nº de casamentos'),
    y = alt.Y('ano', title = 'Ano'),
    tooltip = ['regiao', 'numero'],
    color = alt.Color('regiao', title = "Região")
).properties(title = 'Sudeste concentra maior número de casamentos homoafetivos', width=600, height=300)
lgbt_casamento_regioes_genero = lgbt_casamento_regioes.groupby(['regiao','genero'])['numero'].sum().reset_index()
lgbt_casamento_regioes_genero.head()
# gráfico para mostrar os dados citados acima
# referência https://altair-viz.github.io/gallery/grouped_bar_chart.html
alt.Chart(lgbt_casamento_regioes_genero).mark_bar().encode(
    x = alt.X('genero', title = "Gênero"),
    y = alt.Y('numero', title = 'Nº de casamentos'),
    color = alt.Color('genero', sort = ['Masculino', 'Feminino'], title = 'Gênero'),
    column = alt.Column('regiao:N', title = 'Região'),
    tooltip = ['regiao', 'genero', 'numero']
).properties(title = 'Veja, por região, o total de casamentos de 2013 a 2019', width=100)<jupyter_output><empty_output><jupyter_text>Considerando a população adulta, quais estados têm as maiores e menores proporções de casamentos LGBTs? Este trecho da análise depende de alguns cruzamentos para chegarmos ao resultado<jupyter_code># arquivo com o nome da uf e a respectiva sigla
sigla_uf = pd.read_csv('https://raw.githubusercontent.com/kelvins/Municipios-Brasileiros/main/csv/estados.csv')
# o arquivo com a população adulta usa a sigla, e não o nome da uf
# por isso, vamos cruzar o dataframe principal com o dataframe acima 
# assim, o novo dataframe terá a sigla para criar com o CSV da população adulta
sigla_uf_lgbt_casamento = lgbt_casamento.merge(sigla_uf, how = 'left', left_on = 'uf', right_on = 'nome')
sigla_uf_lgbt_casamento = sigla_uf_lgbt_casamento.drop(['uf_x', 'codigo_uf', 'latitude', 'longitude'], axis=1)
sigla_uf_lgbt_casamento = sigla_uf_lgbt_casamento.rename(columns={'uf_y':'uf', 'nome': 'nome_uf'})
sigla_uf_lgbt_casamento.head(6)
ano_uf_lgbt_casamento = sigla_uf_lgbt_casamento.groupby(['genero', 'ano', 'uf'])['numero'].sum().sort_values(ascending=False)
ano_uf_lgbt_casamento.head(6)
# os dados são do IBGE e tratam das pessoas com 15 anos ou mais 
# aqui chamamos esse grupo de 'população adulta'
# para casar no Brasil, a pessoa precisa ter a partir de 16 anos
# mas o grupo etário dessa idade, para o IBGE, é de 15-19 anos
pop_adulta = pd.read_csv('https://raw.githubusercontent.com/gabrielacaesar/lgbt_casamento/main/data/pop_adulta.csv')
# padronizando gênero para ficar igual ao do csv lgbt_casamento
pop_adulta['genero'] = pop_adulta['genero'].replace(['Mulher'],'Feminino').replace(['Homem'],'Masculino')
pop_adulta.head(2)
pop_lgbt_casamento = pd.merge(ano_uf_lgbt_casamento, pop_adulta, how = 'left', on = ['ano', 'genero', 'uf'])
pop_lgbt_casamento.head(5)
### criamos a taxa de casamento lgbt por 100 mil habitantes adultos
pop_lgbt_casamento['tx_pop'] = (pop_lgbt_casamento['numero'] / pop_lgbt_casamento['pop_adulta']) * 100000
pop_lgbt_casamento.sort_values(by = 'tx_pop', ascending=False)<jupyter_output><empty_output><jupyter_text>2019: taxas mais altas e mais baixas, por UF<jupyter_code># DF e SP aparecem com destaque, com taxas acima de 10, em 2019
tx_2019 = pop_lgbt_casamento.query('ano == 2019').sort_values(by = 'tx_pop', ascending=False)
tx_2019.head(10)
# MA aparece com destaque, com taxas baixo de 1, em 2019
pop_lgbt_casamento.query('ano == 2019').sort_values(by = 'tx_pop', ascending=True).head(10)
# o gráfico abaixo se refere aos dois dataframes criados acima
# o eixo x tem a taxa de casamentos LGBTs por 100 mil adultos, por gênero, naquele ano
# o eixo y tem o número de casamentos LGBTs, por gênero, naquele ano
# referência https://altair-viz.github.io/gallery/trellis_scatter_plot.html
alt.Chart(tx_2019).mark_point().encode(
    x = alt.X('tx_pop:Q', title = 'Nº de casamentos'),
    y = alt.Y('numero:Q', title = 'Taxa por 100 mil adultos'),
    color = alt.Color('genero', sort = ['Masculino', 'Feminino'], title = 'Gênero'),
    tooltip = ['uf', 'genero', 'tx_pop', 'numero', 'pop_adulta']
).properties(title = '2019: Taxa de casamentos LGBTs', width=600, height=300)<jupyter_output><empty_output><jupyter_text>2018: taxas mais altas e mais baixas, por UF<jupyter_code># novamente SP e DF aparecem com destaque
tx_2018 = pop_lgbt_casamento.query('ano == 2018').sort_values(by = 'tx_pop', ascending=False)
tx_2018.head(10)
# desta vez, AP, RR, MA e RO têm taxas abaixo de um
pop_lgbt_casamento.query('ano == 2018').sort_values(by = 'tx_pop', ascending=True).head(10)
# o gráfico abaixo se refere aos dois dataframes criados acima
# o eixo x tem a taxa de casamentos LGBTs por 100 mil adultos, por gênero, naquele ano
# o eixo y tem o número de casamentos LGBTs, por gênero, naquele ano
# referência https://altair-viz.github.io/gallery/trellis_scatter_plot.html
alt.Chart(tx_2018).mark_point().encode(
    x = alt.X('tx_pop:Q', title = 'Nº de casamentos'),
    y = alt.Y('numero:Q', title = 'Taxa por 100 mil adultos'),
    color = alt.Color('genero', sort = ['Masculino', 'Feminino'], title = 'Gênero'),
    tooltip = ['uf', 'genero', 'tx_pop', 'numero', 'pop_adulta']
).properties(title = '2018: Taxa de casamentos LGBTs', width=600, height=300)<jupyter_output><empty_output><jupyter_text>Em um mapa do Brasil, como ficam as taxas de casamentos LGBTS por 100 mil adultos? Observação: para fazer o mapa do Brasil é necessário fazer indicar o caminho para o arquivo "bcim_2016_21_11_2018.gpkg", que pode ser baixado do site do IBGE. Este trecho do mapa não funciona no Colab a princípio, mas sim no Jupyter Notebook. [Veja este trecho da análise neste Notebook aqui](https://github.com/gabrielacaesar/lgbt_casamento/blob/main/notebooks/gabriela-caesar-analise-de-dados-2out2021-perguntas_2.ipynb).<jupyter_code>tx_pop_lgbt_casamento = pop_lgbt_casamento.groupby(['ano', 'uf']).agg({'numero': sum,'tx_pop': sum}).reset_index()
tx_pop_lgbt_casamento.head()
print(" --------------------------- \n         Bem-vindo/a! \n ---------------------------")
ano_user = int(input("Escolha um ano de 2013 a 2019: \n"))
#print(uf_user)
print(" --------------------------- \n      Já vamos calcular! \n ---------------------------")
ano_user_tx_pop_lgbt_casamento = tx_pop_lgbt_casamento.query('ano == @ano_user', engine='python')
ano_user_tx_pop_lgbt_casamento.head()
# referência https://rodrigodutcosky.medium.com/mapas-coropl%C3%A9ticos-com-os-estados-do-brasil-em-python-b9b48c6db585
# baixe o arquivo abaixo no link https://www.ibge.gov.br/geociencias/cartas-e-mapas/bases-cartograficas-continuas/15759-brasil.html?=&t=downloads
# clique em 'bcim' > 'versao2016' > 'geopackage' > 'bcim_2016_21_11_2018.gpkg'
info_ufs = gpd.read_file('bcim_2016_21_11_2018.gpkg', layer = 'lim_unidade_federacao_a')
info_ufs.columns
info_ufs.rename({'sigla':'uf'}, axis = 1, inplace = True)
mapa_br = info_ufs.merge(ano_user_tx_pop_lgbt_casamento, on = 'uf', how = 'left')
#mapa_br[['uf', 'ano', 'numero', 'tx_pop', 'geometry']].head()
%matplotlib inline

mapa_br.plot(column = 'tx_pop',
             cmap = 'Blues',
             figsize = (10, 6),
             legend = True,
             edgecolor = 'black')<jupyter_output><empty_output><jupyter_text>Considerando a UF e o ano informados pelo usuário, quais são as estatísticas básicas dessa UF e desse ano quanto ao casamento LGBT?<jupyter_code>sigla_uf_lgbt_casamento = lgbt_casamento.merge(sigla_uf, how = 'left', left_on = 'uf', right_on = 'nome')
sigla_uf_lgbt_casamento.head()
print(" --------------------------- \n         Bem-vindo/a! \n ---------------------------")
ano_user = int(input("Escolha um ano de 2013 a 2019: \n"))
uf_user = input("Escolha uma UF. Por exemplo, AC, AL, SP, RJ... \n")
uf_user = uf_user.upper().strip()
#print(uf_user)
print(" --------------------------- \n      Já vamos calcular! \n ---------------------------")
# gráfico de linha usando filtro pela UF e pelo ano informados pelo usuário
# referência https://altair-viz.github.io/gallery/line_chart_with_points.html
# obs: tirei a f string por causa da versão antiga no Python neste laptop
alt.Chart(sigla_uf_lgbt_casamento.query('uf_y == @uf_user & ano == @ano_user', engine='python')).mark_line(point=True).encode(
    x = alt.X('mes', title = 'Mês', sort=['Janeiro', 'Fevereiro', 'Março']),
    y = alt.Y('numero', title='Nº de casamentos'),
    color = alt.Color('genero', sort = ['Masculino', 'Feminino'], title = 'Gênero'),
    tooltip = ['mes', 'ano', 'genero', 'numero']
).properties(
    title = '{}: Casamento LGBTs em {}'.format(uf_user, ano_user),
    width = 600, height=300
).interactive()
# boxplot usando filtro pela UF informada pelo usuário
# referência https://altair-viz.github.io/gallery/boxplot.html
# obs: tirei a f string por causa da versão antiga no Python neste laptop
dados_user = sigla_uf_lgbt_casamento.query('uf_y == @uf_user', engine='python')

alt.Chart(dados_user).mark_boxplot(size=80).encode(
    x = alt.X('ano:O', title="Ano"),
    y = alt.Y('numero', title="Nº de casamentos"),
    color = alt.Color('genero', sort = ['Masculino', 'Feminino'], title='Gênero'),
    tooltip = ['mes', 'ano', 'genero', 'numero']
).properties(
    title={
      "text": ['{}: Casamento LGBTs'.format(uf_user)], 
      "subtitle": ['Mulheres vs. Homens']
    },
    width=600,
    height=300
).interactive()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.12939082278481012, 'fraction_numerical': 0.02045094936708861, 'mean_word_length': 5.170612643397608, 'pattern_counts': {'":': 2, '<': 75, '<?xml version=': 0, '>': 78, 'https://': 24, 'lorem ipsum': 0, 'www.': 1, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '16', 'dir': 'jupyter-structured-clean-dedup', 'id': '36502', 'license': 'MIT', 'n_tokens_mistral': 9680, 'n_tokens_neox': 9207, 'n_words': 2570, 'path': 'notebooks/versao_final_trabalho_AED_insper_grupo_GIT-2.ipynb', 'repo_name': 'gabrielacaesar/lgbt_casamento', 'size': '25386'}