Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
A
adega
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
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
Odair M.
adega
Commits
5eff804c
Commit
5eff804c
authored
7 years ago
by
odair mario
Browse files
Options
Downloads
Patches
Plain Diff
semestrais atualizado
parent
ff15cbc7
No related branches found
Branches containing commit
No related tags found
1 merge request
!1
WIP: Development
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
script/analysis/course_analysis.py
+76
-54
76 additions, 54 deletions
script/analysis/course_analysis.py
with
76 additions
and
54 deletions
script/analysis/course_analysis.py
+
76
−
54
View file @
5eff804c
...
@@ -6,33 +6,33 @@ from utils.situations import Situation as sit
...
@@ -6,33 +6,33 @@ from utils.situations import Situation as sit
#funcoes
#funcoes
#
#
# make_taxas -- parametros df e ultima turma ingresso
# make_taxas -- parametros df e ultima turma ingresso
# *qtd_alunos
# *qtd_alunos
# *qtd_trancamento
# *qtd_trancamento
# *taxa_reprovacao_absoluta
# *taxa_reprovacao_absoluta
# *taxa_reprovacao_frequencia
# *taxa_reprovacao_frequencia
# *taxa_reprovacao_ultimo_absoluto
# *taxa_reprovacao_ultimo_absoluto
# *taxa_reprovacao_ultimo_frequencia
# *taxa_reprovacao_ultimo_frequencia
# *taxa_trancamento
# *taxa_trancamento
##listas_disciplinas é dicionario com todas as disciplinas
##listas_disciplinas é dicionario com todas as disciplinas
#def taxas_gerais(df,ultima_turma_ingresso,lista_disciplina):
#def taxas_gerais(df,ultima_turma_ingresso,lista_disciplina):
# df_quantidade = df.groupby(['COD_ATIV_CURRIC', 'SITUACAO']
# df_quantidade = df.groupby(['COD_ATIV_CURRIC', 'SITUACAO']
# ).size().reset_index(name='Quantidades')
# ).size().reset_index(name='Quantidades')
# for disciplina in lista_disciplina.keys:
# for disciplina in lista_disciplina.keys:
# quantidades = df_quantidade.loc[df_quantidade.COD_ATIV_CURRIC == disciplina]
# quantidades = df_quantidade.loc[df_quantidade.COD_ATIV_CURRIC == disciplina]
#
#
# qtd_trancamento_df =quantidades.loc[quantidades.SITUACAO ==
# qtd_trancamento_df =quantidades.loc[quantidades.SITUACAO ==
# (sit.SIT_CANCELADO || sit.SIT_TRANCAMENTO_ADMINISTRATIVO ||
# (sit.SIT_CANCELADO || sit.SIT_TRANCAMENTO_ADMINISTRATIVO ||
# sit.SIT_TRANCAMENTO_TOTAL) ]
# sit.SIT_TRANCAMENTO_TOTAL) ]
# qtd_trancamento = qtd_trancamento_df.sum
# qtd_trancamento = qtd_trancamento_df.sum
#
#
# qtd_conhecimento_aprov = quantidades.loc[quantidades.SITUACAO ==
# qtd_conhecimento_aprov = quantidades.loc[quantidades.SITUACAO ==
# sit.SIT_CONHECIMENTO_APROVADO].Quantidade
# sit.SIT_CONHECIMENTO_APROVADO].Quantidade
# qtd_conhecimento_reprov = quantidades.loc[quantidades.SITUACAO ==
# qtd_conhecimento_reprov = quantidades.loc[quantidades.SITUACAO ==
# sit.SIT_CONHECIMENTO_REPROVADO].Quantidade
# sit.SIT_CONHECIMENTO_REPROVADO].Quantidade
# lista_disciplina[disciplina][qtd_conhecimento] = qtd_conhecimento_aprov
# lista_disciplina[disciplina][qtd_conhecimento] = qtd_conhecimento_aprov
# + qtd_conhecimento_reprov
# + qtd_conhecimento_reprov
# if qtd_conhecimento:
# if qtd_conhecimento:
# taxa_conhecimento = qtd_conhecimento_aprov / listas_disciplinas[disciplina][qtd_conhecimento]
# taxa_conhecimento = qtd_conhecimento_aprov / listas_disciplinas[disciplina][qtd_conhecimento]
# else:
# else:
# taxa_conhecimento = -1
# taxa_conhecimento = -1
#
#
...
@@ -147,15 +147,15 @@ from utils.situations import Situation as sit
...
@@ -147,15 +147,15 @@ from utils.situations import Situation as sit
#
#
def
informacoes_gerais
(
df
,
lista_disciplinas
):
def
informacoes_gerais
(
df
,
lista_disciplinas
):
#quantidade de matriculas
#quantidade de matriculas
disciplinas
=
df
.
groupby
([
'
COD_ATIV_CURRIC
'
]).
size
()
disciplinas
=
df
.
groupby
([
'
COD_ATIV_CURRIC
'
]).
size
()
for
disciplina
in
disciplinas
.
index
:
for
disciplina
in
disciplinas
.
index
:
disciplina_dict
=
{}
disciplina_dict
=
{}
disciplina_df
=
df
.
loc
[
df
.
COD_ATIV_CURRIC
==
disciplina
]
disciplina_df
=
df
.
loc
[
df
.
COD_ATIV_CURRIC
==
disciplina
]
disciplina_dict
[
'
qtd_alunos
'
]
=
disciplinas
[
disciplina
]
disciplina_dict
[
'
qtd_alunos
'
]
=
disciplinas
[
disciplina
]
disciplina_dict
[
'
disciplina_codigo
'
]
=
disciplina
disciplina_dict
[
'
disciplina_codigo
'
]
=
disciplina
disciplina_dict
[
'
disciplina_nome
'
]
=
\
disciplina_dict
[
'
disciplina_nome
'
]
=
\
disciplina_df
.
NOME_ATIV_CURRIC
.
values
[
0
]
disciplina_df
.
NOME_ATIV_CURRIC
.
values
[
0
]
lista_disciplinas
[
disciplina
]
=
disciplina_dict
lista_disciplinas
[
disciplina
]
=
disciplina_dict
# -nome da disciplina
# -nome da disciplina
# -codigo da disciplina
# -codigo da disciplina
# -lista de disciplina
# -lista de disciplina
...
@@ -164,45 +164,45 @@ def informacoes_gerais(df,lista_disciplinas):
...
@@ -164,45 +164,45 @@ def informacoes_gerais(df,lista_disciplinas):
# matriculas
# matriculas
def
conhecimento
(
qtd
,
disciplina_dict
):
def
conhecimento
(
qtd
,
disciplina_dict
):
conheci_df
=
qtd
.
loc
[(
qtd
.
SITUACAO
==
sit
.
SIT_CONHECIMENTO_APROVADO
)
|
conheci_df
=
qtd
.
loc
[(
qtd
.
SITUACAO
==
sit
.
SIT_CONHECIMENTO_APROVADO
)
|
(
qtd
.
SITUACAO
==
sit
.
SIT_CONHECIMENTO_REPROVADO
)]
(
qtd
.
SITUACAO
==
sit
.
SIT_CONHECIMENTO_REPROVADO
)]
total_conheci
=
conheci_df
.
qtd
.
sum
()
total_conheci
=
conheci_df
.
qtd
.
sum
()
if
np
.
isnan
(
total_conheci
):
if
np
.
isnan
(
total_conheci
):
total_conheci
=
0
total_conheci
=
0
conheci_aprov
=
conheci_df
.
loc
[
conheci_df
.
SITUACAO
==
\
conheci_aprov
=
conheci_df
.
loc
[
conheci_df
.
SITUACAO
==
\
sit
.
SIT_CONHECIMENTO_APROVADO
].
set_index
(
'
COD_ATIV_CURRIC
'
)
sit
.
SIT_CONHECIMENTO_APROVADO
].
set_index
(
'
COD_ATIV_CURRIC
'
)
disciplina_dict
[
'
qtd_conhecimento
'
]
=
total_conheci
disciplina_dict
[
'
qtd_conhecimento
'
]
=
total_conheci
if
(
total_conheci
!=
0
)
and
(
not
conheci_aprov
.
empty
):
if
(
total_conheci
!=
0
)
and
(
not
conheci_aprov
.
empty
):
disciplina_dict
[
'
taxa_conhecimento
'
]
=
conheci_aprov
.
qtd
.
values
[
0
]
/
total_conheci
disciplina_dict
[
'
taxa_conhecimento
'
]
=
conheci_aprov
.
qtd
.
values
[
0
]
/
total_conheci
else
:
else
:
disciplina_dict
[
'
taxa_conhecimento
'
]
=
0.0
disciplina_dict
[
'
taxa_conhecimento
'
]
=
0.0
def
trancamento
(
qtd
,
disciplina_dict
,
qtd_matr
):
def
trancamento
(
qtd
,
disciplina_dict
,
qtd_matr
):
trancamento_df
=
qtd
.
loc
[(
qtd
.
SITUACAO
==
sit
.
SIT_TRANCAMENTO_ADMINISTRATIVO
)
|
trancamento_df
=
qtd
.
loc
[(
qtd
.
SITUACAO
==
sit
.
SIT_TRANCAMENTO_ADMINISTRATIVO
)
|
(
qtd
.
SITUACAO
==
sit
.
SIT_TRANCAMENTO_TOTAL
)
|
(
qtd
.
SITUACAO
==
sit
.
SIT_TRANCAMENTO_TOTAL
)
|
(
qtd
.
SITUACAO
==
sit
.
SIT_CANCELADO
)]
(
qtd
.
SITUACAO
==
sit
.
SIT_CANCELADO
)]
qtd_tranc
=
trancamento_df
.
qtd
.
sum
()
qtd_tranc
=
trancamento_df
.
qtd
.
sum
()
if
np
.
isnan
(
qtd_tranc
):
if
np
.
isnan
(
qtd_tranc
):
qtd_tranc
=
0
qtd_tranc
=
0
disciplina_dict
[
'
qtd_trancamento
'
]
=
qtd_tranc
disciplina_dict
[
'
qtd_trancamento
'
]
=
qtd_tranc
disciplina_dict
[
'
taxa_trancamento
'
]
=
qtd_tranc
/
qtd_matr
if
qtd_matr
else
0.0
disciplina_dict
[
'
taxa_trancamento
'
]
=
qtd_tranc
/
qtd_matr
if
qtd_matr
else
0.0
def
reprovacao
(
qtd
,
disciplina
,
qtd_matr
,
taxa_reprov_absoluta
,
taxa_reprov_freq
):
def
reprovacao
(
qtd
,
disciplina
,
qtd_matr
,
taxa_reprov_absoluta
,
taxa_reprov_freq
):
'''
existe as analises reprovacao absoluta, reprovacao por frequencia e
'''
existe as analises reprovacao absoluta, reprovacao por frequencia e
reprovacao absoluta, reprovacao por frequencia da ultima vez que a
reprovacao absoluta, reprovacao por frequencia da ultima vez que a
disciplina foi ofertada, a logica da analise eh a mesma so muda os valores
disciplina foi ofertada, a logica da analise eh a mesma so muda os valores
do dataframe qtd e o nomes das chaves do dicionario.Eh possivel reaproveitar
do dataframe qtd e o nomes das chaves do dicionario.Eh possivel reaproveitar
o mesmo codigo para fazer analise geral e da ultima vez que foi ofertado,
o mesmo codigo para fazer analise geral e da ultima vez que foi ofertado,
para isso so eh preciso enviar outro dataframe qtd e enviar como string o
para isso so eh preciso enviar outro dataframe qtd e enviar como string o
indice do dicionario para ser atribuido de forma correta
'''
indice do dicionario para ser atribuido de forma correta
'''
sit_reprov
=
sit
.
SITUATION_FAIL
+
(
sit
.
SIT_REPROVADO_SEM_NOTA
,)
sit_reprov
=
sit
.
SITUATION_FAIL
+
(
sit
.
SIT_REPROVADO_SEM_NOTA
,)
reprov_df
=
qtd
.
loc
[(
qtd
.
SITUACAO
==
sit_reprov
[
0
])
|
reprov_df
=
qtd
.
loc
[(
qtd
.
SITUACAO
==
sit_reprov
[
0
])
|
(
qtd
.
SITUACAO
==
sit_reprov
[
1
])
|
(
qtd
.
SITUACAO
==
sit_reprov
[
1
])
|
(
qtd
.
SITUACAO
==
sit_reprov
[
2
])
|
(
qtd
.
SITUACAO
==
sit_reprov
[
2
])
|
(
qtd
.
SITUACAO
==
sit_reprov
[
3
])
]
(
qtd
.
SITUACAO
==
sit_reprov
[
3
])
]
qtd_reprov_abso
=
reprov_df
.
qtd
.
sum
()
#quantidade de reprovacao absoluta
qtd_reprov_abso
=
reprov_df
.
qtd
.
sum
()
#quantidade de reprovacao absoluta
qtd_reprov_freq
=
reprov_df
.
loc
[
reprov_df
.
SITUACAO
==
sit_reprov
[
1
]]
qtd_reprov_freq
=
reprov_df
.
loc
[
reprov_df
.
SITUACAO
==
sit_reprov
[
1
]]
if
qtd_matr
!=
0
:
if
qtd_matr
!=
0
:
disciplina
[
taxa_reprov_absoluta
]
=
0.0
\
disciplina
[
taxa_reprov_absoluta
]
=
0.0
\
if
np
.
isnan
(
qtd_reprov_abso
)
else
qtd_reprov_abso
/
qtd_matr
if
np
.
isnan
(
qtd_reprov_abso
)
else
qtd_reprov_abso
/
qtd_matr
...
@@ -210,43 +210,65 @@ def reprovacao(qtd,disciplina,qtd_matr,taxa_reprov_absoluta,taxa_reprov_freq):
...
@@ -210,43 +210,65 @@ def reprovacao(qtd,disciplina,qtd_matr,taxa_reprov_absoluta,taxa_reprov_freq):
if
qtd_reprov_freq
.
empty
else
qtd_reprov_freq
.
qtd
.
values
[
0
]
/
qtd_matr
if
qtd_reprov_freq
.
empty
else
qtd_reprov_freq
.
qtd
.
values
[
0
]
/
qtd_matr
else
:
else
:
disciplina
[
taxa_reprov_absoluta
]
=
0.0
disciplina
[
taxa_reprov_absoluta
]
=
0.0
disciplina
[
taxa_reprov_freq
]
=
0.0
disciplina
[
taxa_reprov_freq
]
=
0.0
def
analises_gerais
(
df
,
lista_disciplinas
):
def
analises_gerais
(
df
,
lista_disciplinas
):
qtd_geral
=
df
.
groupby
([
'
COD_ATIV_CURRIC
'
,
'
SITUACAO
'
]).
size
().
reset_index
(
name
=
'
qtd
'
)
qtd_geral
=
df
.
groupby
([
'
COD_ATIV_CURRIC
'
,
'
SITUACAO
'
]).
size
().
reset_index
(
name
=
'
qtd
'
)
print
(
df
.
columns
)
qtd_ultimo_geral
=
\
df
.
groupby
([
'
COD_ATIV_CURRIC
'
,
'
SITUACAO
'
,
'
ANO
'
,
'
PERIODO
'
]).
size
().
reset_index
(
name
=
'
qtd
'
)
matr_por_semestre
=
\
df
.
groupby
([
'
COD_ATIV_CURRIC
'
,
'
ANO
'
,
'
PERIODO
'
]).
size
().
reset_index
(
name
=
'
matr
'
)
for
disciplina
in
lista_disciplinas
.
keys
():
for
disciplina
in
lista_disciplinas
.
keys
():
disciplina_dict
=
{}
disciplina_dict
=
{}
disciplina_df
=
df
.
loc
[
df
.
COD_ATIV_CURRIC
==
disciplina
]
qtd
=
qtd_geral
.
loc
[
qtd_geral
.
COD_ATIV_CURRIC
==
disciplina
]
disciplina_semestral
=
qtd_ultimo_geral
.
loc
[
qtd_ultimo_geral
.
COD_ATIV_CURRIC
==
\
disciplina
]
ano
=
np
.
amax
(
disciplina_semestral
.
ANO
)
disciplina_ano
=
disciplina_semestral
.
loc
[
disciplina_semestral
.
ANO
\
==
ano
]
periodo
=
np
.
amax
(
disciplina_ano
.
PERIODO
)
qtd_ultimo
=
disciplina_ano
.
loc
[
disciplina_ano
.
PERIODO
==
periodo
]
#quantidade de alunos
#quantidade de alunos
qtd_matriculas
=
lista_disciplinas
[
disciplina
][
'
qtd_alunos
'
]
qtd_matriculas
=
lista_disciplinas
[
disciplina
][
'
qtd_alunos
'
]
qtd_matr_ultimo
=
\
matr_por_semestre
.
loc
[(
matr_por_semestre
.
COD_ATIV_CURRIC
==
disciplina
)
&
(
matr_por_semestre
.
ANO
==
ano
)
&
(
matr_por_semestre
.
PERIODO
==
periodo
)].
matr
.
values
[
0
]
#qtd eh um dataframe que contem a ocorrencia de cada situacao
#qtd eh um dataframe que contem a ocorrencia de cada situacao
qtd
=
qtd_geral
.
loc
[
qtd_geral
.
COD_ATIV_CURRIC
==
disciplina
]
qtd
=
qtd_geral
.
loc
[
qtd_geral
.
COD_ATIV_CURRIC
==
disciplina
]
#faz analises relacionada ao conhecimento
#faz analises relacionada ao conhecimento
conhecimento
(
qtd
,
disciplina_dict
)
conhecimento
(
qtd
,
disciplina_dict
)
# faz analises relacionada ao trancamento
# faz analises relacionada ao trancamento
trancamento
(
qtd
,
disciplina_dict
,
qtd_matriculas
)
trancamento
(
qtd
,
disciplina_dict
,
qtd_matriculas
)
# faz analises relacionada a reprovacoes
# faz analises relacionada a reprovacoes
reprovacao
(
qtd
,
disciplina_dict
,
qtd_matriculas
)
reprovacao
(
qtd
,
disciplina_dict
,
qtd_matriculas
,
'
taxa_reprovacao_absoluta
'
,
'
taxa_reprovacao_frequencia
'
)
#print(disciplina_dict)
reprovacao
(
qtd_ultimo
,
disciplina_dict
,
qtd_matriculas
,
'
taxa_reprovacao_ultimo_absoluta
'
,
print
(
"
\n
"
)
'
taxa_reprovacao_ultimo_frequencia
'
)
lista_disciplinas
[
disciplina
].
update
(
disciplina_dict
)
#print(disciplina_dict)
# -qtd_conhecimento
# -qtd_conhecimento
# -qtd_trancamento
# -qtd_trancamento
# -taxa_conhecimento
# -taxa_conhecimento
# -taxa_reprovacao_absoluta
# -taxa_reprovacao_absoluta
# -taxa_reprovacao_frequencia
# -taxa_reprovacao_frequencia
#
*
taxa_reprovacao_ultimo_absoluto
#
-
taxa_reprovacao_ultimo_absoluto
#
*
taxa_reprovacao_ultimo_frequencia
#
-
taxa_reprovacao_ultimo_frequencia
# -taxa_trancamento
# -taxa_trancamento
# *nota geral desvio padrao geral
# *nota geral desvio padrao geral
# *nota ultima vez ofertado e desvio padrao
# *nota ultima vez ofertado e desvio padrao
#def analises_semestrais()
def
analises_semestrais
(
df
,
lista_disciplinas
):
geral_df
=
\
df
.
groupby
([
'
COD_ATIV_CURRIC
'
,
'
ANO
'
,
'
PERIODO
'
]).
size
().
reset_index
(
name
=
'
matr
'
)
geral_nota_df
=
\
df
.
groupby
([
'
COD_ATIV_CURRIC
'
,
'
ANO
'
,
'
PERIODO
'
,
'
SITUACAO
'
,
'
MEDIA_FINAL
'
]).
size
()
print
(
geral_nota_df
.
loc
[
geral_nota_df
.
SITUACAO
==
sit
.
SIT_APROVADO
])
# *taxa aprovacao semestral
# *taxa aprovacao semestral
# *quantidade de matricula por semestre
# *quantidade de matricula por semestre
def
analises_disciplinas
(
df
):
def
analises_disciplinas
(
df
):
lista_disciplinas
=
{}
lista_disciplinas
=
{}
informacoes_gerais
(
df
,
lista_disciplinas
)
informacoes_gerais
(
df
,
lista_disciplinas
)
analises_gerais
(
df
,
lista_disciplinas
)
analises_gerais
(
df
,
lista_disciplinas
)
#
analises_semestrais(df,lista
s
_disciplinas)
analises_semestrais
(
df
,
lista_disciplinas
)
# """tranformar para json """
# """tranformar para json """
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