From 117569882446f288b06a58c7f93086cf2125bde8 Mon Sep 17 00:00:00 2001 From: Epitacio <bessa.epitacio@gmail.com> Date: Sun, 2 Sep 2018 19:39:31 -0300 Subject: [PATCH] =?UTF-8?q?Alguns=20coment=C3=A1rios?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- prova.py | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/prova.py b/prova.py index db3793e..f296f59 100644 --- a/prova.py +++ b/prova.py @@ -14,37 +14,39 @@ def separar_coligacao(partido_coligacao): df_eleicao['Partido/Coligação'] = df_eleicao['Partido/Coligação'].apply(separar_coligacao) # agrupando e somando os votos de cada partido/coligacao -votacao = df_eleicao.groupby(['Partido/Coligação']).sum() +votos_coligacao = df_eleicao.groupby(['Partido/Coligação']).sum() # cálculo do Quociente partidário -votacao['QP'] = votacao['Votos']//QE +votos_coligacao['QP'] = votos_coligacao['Votos']//QE # ir atualizando a quantide de vagas já preenchidas -cadeiras_restante = total_cadeiras - votacao['QP'].sum() +cadeiras_restante = total_cadeiras - votos_coligacao['QP'].sum() # removendo partidos com o QP igual a 0. Eles não participam do cálculo da média -votacao.drop(votacao[votacao['QP'] == 0].index, inplace=True) +votos_coligacao.drop(votos_coligacao[votos_coligacao['QP'] == 0].index, inplace=True) # criando uma nova coluna para a distribuição. -votacao = votacao.assign(VagasResiduais = votacao['QP']) +votos_coligacao = votos_coligacao.assign(VagasResiduais = votos_coligacao['QP']) # enquanto total_cadeiras não for atigindo, continua a calcular a media for vagas in range(0,cadeiras_restante): # calculando a média - votacao['Media'] = votacao['Votos']/(votacao['VagasResiduais']+1) + votos_coligacao['Media'] = votos_coligacao['Votos']/(votos_coligacao['VagasResiduais']+1) # verifica a média máxima - votacao.loc[votacao['Media'] == votacao['Media'].max(), 'VagasResiduais'] +=1 + votos_coligacao.loc[votos_coligacao['Media'] == votos_coligacao['Media'].max(), 'VagasResiduais'] +=1 # limpando os dados (removendo colunas descenessárias a partir de agora) -votacao.drop(['QP','Media','Número'], inplace=True, axis=1) +votos_coligacao.drop(['QP','Media','Número'], inplace=True, axis=1) # ordenando pelos votos df_eleicao.sort_values('Votos',ascending=False,inplace=True) # pegando o resultado da eleição resultado = pd.DataFrame() -for i in votacao.itertuples(): - resultado = resultado.append(df_eleicao.loc[df_eleicao['Partido/Coligação'] == i[0]].iloc[:i[2]]) +for coligacao in votos_coligacao.itertuples(): + # coligacao[0] é o index(nome da coligacao) e coligacao[2] é a quantidade de vagas + # pega os n primeiros de cada coligação de acordo com as vagas + resultado = resultado.append(df_eleicao.loc[df_eleicao['Partido/Coligação'] == coligacao[0]].iloc[:coligacao[2]]) # ordenando os candidos em forma decrescente resultado.sort_values('Votos',ascending=False,inplace=True) -- GitLab