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
64fb6bd5
Commit
64fb6bd5
authored
6 years ago
by
Epitácio Bessa da Silva
Browse files
Options
Downloads
Patches
Plain Diff
Finalizando a prova
parent
3b592865
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
prova.py
+43
-10
43 additions, 10 deletions
prova.py
resultado_eleicao.tsv
+30
-0
30 additions, 0 deletions
resultado_eleicao.tsv
with
73 additions
and
10 deletions
prova.py
+
43
−
10
View file @
64fb6bd5
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
This diff is collapsed.
Click to expand it.
resultado_eleicao.tsv
0 → 100644
+
30
−
0
View file @
64fb6bd5
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
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