Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
P
prova-01
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Epitácio Bessa da Silva
prova-01
Commits
11756988
Commit
11756988
authored
6 years ago
by
Epitácio Bessa da Silva
Browse files
Options
Downloads
Patches
Plain Diff
Alguns comentários
parent
64fb6bd5
Branches
master
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
prova.py
+12
-10
12 additions, 10 deletions
prova.py
with
12 additions
and
10 deletions
prova.py
+
12
−
10
View file @
11756988
...
...
@@ -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
()
vot
os_colig
acao
=
df_eleicao
.
groupby
([
'
Partido/Coligação
'
]).
sum
()
# cálculo do Quociente partidário
votacao
[
'
QP
'
]
=
votacao
[
'
Votos
'
]
//
QE
vot
os_colig
acao
[
'
QP
'
]
=
vot
os_colig
acao
[
'
Votos
'
]
//
QE
# ir atualizando a quantide de vagas já preenchidas
cadeiras_restante
=
total_cadeiras
-
votacao
[
'
QP
'
].
sum
()
cadeiras_restante
=
total_cadeiras
-
vot
os_colig
acao
[
'
QP
'
].
sum
()
# removendo partidos com o QP igual a 0. Eles não participam do cálculo da média
votacao
.
drop
(
vot
acao
[
vot
acao
[
'
QP
'
]
==
0
].
index
,
inplace
=
True
)
vot
os_colig
acao
.
drop
(
vot
os_coligacao
[
votos_colig
acao
[
'
QP
'
]
==
0
].
index
,
inplace
=
True
)
# criando uma nova coluna para a distribuição.
votacao
=
votacao
.
assign
(
VagasResiduais
=
votacao
[
'
QP
'
])
vot
os_colig
acao
=
vot
os_colig
acao
.
assign
(
VagasResiduais
=
vot
os_colig
acao
[
'
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
)
vot
os_colig
acao
[
'
Media
'
]
=
vot
os_colig
acao
[
'
Votos
'
]
/
(
vot
os_colig
acao
[
'
VagasResiduais
'
]
+
1
)
# verifica a média máxima
votacao
.
loc
[
votacao
[
'
Media
'
]
==
votacao
[
'
Media
'
].
max
(),
'
VagasResiduais
'
]
+=
1
vot
os_colig
acao
.
loc
[
vot
os_colig
acao
[
'
Media
'
]
==
vot
os_colig
acao
[
'
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
)
vot
os_colig
acao
.
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
)
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment