Extração dos dados

Esse notebook realiza o download de todos os arquivos relacionados a matrícula, posteriormente limpando e conectando os dados em uma única tabela

Matriculas

As células a seguir realizam o download das matrículas de determinados semestres.

Cada matrícula é associada a uma turma, um discente (anonimizado) e um curso.

df_matriculas.head()

Turmas

Para saber qual componente currícular as notas e status (aprovado ou não) são relacionadas é preciso baixar as informações de turmas. Dessa tabela apenas as informações relacionadas ao componente currícular são pertinentes e serão, portanto, logo filtradas.

df_turmas.head()

Componentes

Para ter acesso ao nome do componente currícular é necessário baixar os componentes currículares. Note que apenas componente presenciais foram levados em conta no presente sistema.

df_componentes_curriculares_presenciais.head()

Docente

A lista dos docentes da UFRN é baixada para ter acesso ao nome dos professores responsáveis pelo componente currícular.

Matricula + Turma + Componente + Docente

A presente seção une os dados filtrados em um único pd.DataFrame e exporta-o como .csv permitindo que ele seja inserido em um banco de dados posteriormente.

df.head()
df.head()
df.head()

Análise exemplo

O plot a seguir realiza a análise que pretende ser feita com o sistema, filtrando o dataframe com base em uma turma e curso específico.

id_turma_especifica = 57705399
id_curso_especifico = 2000005
id_docente_especifico = 2140673
df_filtrado = df[(df['id_turma'] == id_turma_especifica) & (df['id_curso'] == id_curso_especifico) & (df['siape'] == id_docente_especifico)]

contagem_descricao = df_filtrado['descricao'].value_counts()
porcentagens = (contagem_descricao / contagem_descricao.sum()) * 100

# Plota o gráfico de pizza
fig, ax = plt.subplots(figsize=(10, 6))  # Ajustando o tamanho da figura
wedges, _ = ax.pie(porcentagens, labels=porcentagens.index, startangle=90, wedgeprops=dict(width=0.4))

ax.axis('equal')  # Equal aspect ratio ensures that pie is drawn as a circle.

# Adiciona uma legenda à direita do gráfico de pizza
legend_labels = [f"{label}: {value}" for label, value in zip(contagem_descricao.index, contagem_descricao.values)]
ax.legend(wedges, legend_labels, title="Descrições", loc="center left", bbox_to_anchor=(1, 0, 0.5, 1))

plt.title('Porcentagem por Descrição')
plt.show()