diff --git a/prova.py b/prova.py index db3793e927e0bc12c23f91c6b38990668be7962e..f296f59c551b1bcc492b2ffb65407d60846e4dd1 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)