Newer
Older
df_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 votos de cada partido/coligacao
votos_coligacao = df_eleicao.groupby(['Partido/Coligação']).sum()
votos_coligacao['QP'] = votos_coligacao['Votos']//QE
# ir atualizando a quantide de vagas já preenchidas
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
votos_coligacao.drop(votos_coligacao[votos_coligacao['QP'] == 0].index, inplace=True)
# criando uma nova coluna para a distribuição.
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
votos_coligacao['Media'] = votos_coligacao['Votos']/(votos_coligacao['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)
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 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)
#exportando para tsv.
resultado.to_csv('resultado_eleicao.tsv', index=False, sep="\t")