Skip to content
Snippets Groups Projects
Commit 64fb6bd5 authored by Epitácio Bessa da Silva's avatar Epitácio Bessa da Silva
Browse files

Finalizando a prova

parent 3b592865
No related branches found
No related tags found
No related merge requests found
import pandas as pd import pandas as pd
df_eleicao = pd.read_csv('eleicao.csv', delimiter=';')
total_cadeiras = 29 total_cadeiras = 29
QE = 12684 QE = 12684
eleicao = pd.read_csv('eleicao.csv', delimiter=';') # retira o 'partido' da coligacao(partido-coligacao)
def separar_coligacao(partido_coligacao):
partido_coligacao = partido_coligacao.split('-')
# o strip remove os espaços do início e fim
return partido_coligacao[1].strip() if len(partido_coligacao) > 1 else partido_coligacao[0].strip()
# aplicando a separação
df_eleicao['Partido/Coligação'] = df_eleicao['Partido/Coligação'].apply(separar_coligacao)
# agrupando e somando os valores de cada partido/coligacao # agrupando e somando os votos de cada partido/coligacao
partidos_votos = eleicao.groupby(['Partido/Coligação']).sum() votacao = df_eleicao.groupby(['Partido/Coligação']).sum()
partidos_votos['QP'] = partidos_votos['Votos']//QE
# cálculo do Quociente partidário
votacao['QP'] = votacao['Votos']//QE
# ir atualizando a quantide de vagas já preenchidas # ir atualizando a quantide de vagas já preenchidas
sumQp = partidos_votos['QP'].sum() cadeiras_restante = total_cadeiras - votacao['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)
# criando uma nova coluna para a distribuição.
votacao = votacao.assign(VagasResiduais = votacao['QP'])
# enquanto total_cadeiras não for atigindo, continua a calcular a media # enquanto total_cadeiras não for atigindo, continua a calcular a media
while(total_cadeiras != sumQp): for vagas in range(0,cadeiras_restante):
partidos_votos['Media'] = partidos_votos['Votos']/(partidos_votos['QP']+1) # calculando a média
partidos_votos[partidos_votos['Media'] == partidos_votos['Media'].max()]['QP'] +=1 votacao['Media'] = votacao['Votos']/(votacao['VagasResiduais']+1)
sumQp +=1 # verifica a média máxima
print(sumQp) votacao.loc[votacao['Media'] == votacao['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)
# 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]])
# ordenando os candidos em forma decrescente
resultado.sort_values('Votos',ascending=False,inplace=True)
#exportando para tsv.
resultado.to_csv('resultado_eleicao.tsv', index=False, sep="\t")
\ No newline at end of file
Número Nome Partido/Coligação Votos
12111 RANIERE BARBOSA PDT / PMDB / PR / PROS / DEM / PSC 10510
90111 CARLA DICKSON OFTALMOLOGISTA PDT / PMDB / PR / PROS / DEM / PSC 7924
15222 UBALDO FERNANDES PDT / PMDB / PR / PROS / DEM / PSC 7574
22607 LUIZ ALMIR PDT / PMDB / PR / PROS / DEM / PSC 7339
13123 NATALIA BONAVIDES PT 6202
12777 JULIA ARRUDA PDT / PMDB / PR / PROS / DEM / PSC 5765
27888 ANA PAULA PRB / PSDC 5465
10333 BISPO FRANCISCO DE ASSIS PRB / PSDC 5160
12222 KLEBER FERNANDES PDT / PMDB / PR / PROS / DEM / PSC 5061
77666 EUDIANE MACEDO SD 4922
12444 CHAGAS CATARINO PDT / PMDB / PR / PROS / DEM / PSC 4810
45123 AROLDO ALVES PSDB / PT do B 4532
15678 FELIPE ALVES PDT / PMDB / PR / PROS / DEM / PSC 4511
70111 WILMA DE FARIA PSDB / PT do B 4421
51610 PRETO AQUINO PEN / PP 4206
40200 DR FRANKLIN CAPISTRANO PSB / PPS 4003
17555 PROFESSORA ELEIKA PSD / PTB / PSL 3758
50123 SANDRO PIMENTEL PSOL 3700
14000 CÍCERO MARTINS PSD / PTB / PSL 3237
55555 NEY LOPES JR PSD / PTB / PSL 3197
77222 PAULINHO FREIRE SD 2884
35007 DINARTE TORRES PMB 2754
19133 ERIKO JÁCOME PTN 2577
35555 ROBSON CARVALHO PMB 2565
13222 FERNANDO LUCENA PT 2495
51111 NINA SOUZA PEN / PP 2289
77555 KLAUS ARAUJO SD 2279
35678 ALDO CLEMENTE PMB 2229
31456 SUELDO MEDEIROS PHS 1829
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment