df_matriculas.head()Extração dos dados
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.
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()