<jupyter_start><jupyter_text>O que queremos? Decidimos analisar os três turnos (matutino, vespertino e noturno) das turmas de **Resolução de Problemas Matemáticas Para Tecnologia da Informação - RPMTI** durante três semestres letivos correspondentes a **2015.2**, **2016.1** e **2016.2**.As informações para a nossa análise serão extraídas da API de [dados públicos](http://dados.ufrn.br) da **Universidade Federal do Rio Grande do Norte - UFRN**.   Como conseguir esses dados? Inicialmente precisamos descobrir dados sobre a disciplina RPTMI. É possível encontrar a relação de todas as disciplinas presenciais da UFRN atráves [desse link](http://dados.ufrn.br/dataset/3fea67e8-6916-4ed0-aaa6-9a8ca06a9bdc/resource/9a3521d2-4bc5-4fda-93f0-f701c8a20727/download/componentes-curriculares-presenciais.csv).Abrindo o dataset das disciplinas pelo **Libre Office Calc**, é possível visualizar rapidamente o conteúdo de algumas linhas. Para descobrir os dados sobre RPMTI basta aplicar os seguintes filtros:* **nivel:** G* **unidade_responsavel:** INSTITUTO METROPOLE DIGITAL* **codigo:** IMD0019Agora é possível montar um dicionário com as informações chave da disciplina.<jupyter_code>rpmti_info = {
    "codigo": "IMD0019",
    "nome": "RESOLUÇÃO DE PROBLEMAS MATEMÁTICOS PARA TI",
    "id_componente": 55031,
    "carga_horaria": 180
}

rpmti_info<jupyter_output><empty_output><jupyter_text>Prosseguindo com a busca, acessamos novamente a API para conseguir os dados das turmas em [2015.2](http://dados.ufrn.br/dataset/1938623d-fb07-41a4-a55a-1691f7c3b8b5/resource/7c59621c-4a8b-49d4-b319-83cfea9bdf28/download/turmas-2015.2.csv), [2016.1](http://dados.ufrn.br/dataset/1938623d-fb07-41a4-a55a-1691f7c3b8b5/resource/322d9977-ba15-47f1-8216-75a1ca78e197/download/turmas-2016.1.csv) e [2016.2](http://dados.ufrn.br/dataset/1938623d-fb07-41a4-a55a-1691f7c3b8b5/resource/5e8e3228-7f22-40a2-9efd-561c44844567/download/turmas-2016.2.csv).Agora, começaremos a tratar esses datasets para manter apenas as informações que nos são necessárias.<jupyter_code># Importando as bibliotecas necessárias para análise
import pandas as pd
import numpy as np
# Lendo os datasets
rpmti_2015_2 = pd.read_csv("turmas-2015.2.csv", sep=";")
rpmti_2016_1 = pd.read_csv("turmas-2016.1.csv", sep=";")
rpmti_2016_2 = pd.read_csv("turmas-2016.2.csv", sep=";")

# Concatenando datasets
rpmti_turmas = pd.concat([rpmti_2015_2, rpmti_2016_1, rpmti_2016_2])

# Tratando para deixar apenas RPMTI
rpmti_turmas = rpmti_turmas[rpmti_turmas["id_componente_curricular"] == rpmti_info["id_componente"]]
# Excluindo colunas que não serão analizadas
rpmti_turmas.drop([
    "id_docente_interno", "id_docente_externo", "observacao", "nivel_ensino",
    "data_inicio", "data_fim", "distancia", "data_consolidacao", "agrupadora",
    "id_turma_agrupadora", "situacao_turma", "convenio", "campus_turma", "tipo",
    "modalidade_participantes", "id_componente_curricular", "total_solicitacoes",
    "qtd_aulas_lancadas", "Unnamed: 25"
], axis=1, inplace=True)

# Visualizando o dataset
rpmti_turmas<jupyter_output><empty_output><jupyter_text>Nota-se ainda que no dataset as turmas estão duplicadas. Vamos resolver isso atrvés do seguinte código:<jupyter_code>rpmti_turmas = rpmti_turmas.drop_duplicates(subset='id_turma', keep="last")
rpmti_turmas<jupyter_output><empty_output><jupyter_text>Agora nós temos informações referentes a todas as turmas de RPMTI ofertadas nos três semestres que estamos analisando.Também é possível encontrar informações referentes às matrículas dos discentes, incluindo o status final (i.e. APROVADO, REPROVADO, etc.). Aqui estão os links para fazer o download desses dados para as turmas de [2015.2](http://dados.ufrn.br/dataset/c8650d55-3c5a-4787-a126-d28a4ef902a6/resource/baa6c8b4-2072-417f-b238-c028ccc8c14b/download/matriculas-de-2015.2.csv), [2016.1](http://dados.ufrn.br/dataset/c8650d55-3c5a-4787-a126-d28a4ef902a6/resource/4778d3ce-8898-46a8-a623-ee6a480a2980/download/matriculas-de-2016.1.csv) e [2016.2](http://dados.ufrn.br/dataset/c8650d55-3c5a-4787-a126-d28a4ef902a6/resource/f6179838-b619-4d7d-af9c-18c438b80dd4/download/matriculas-de-2016.2.csv).Devido ao tamanho elevado desses datasets, escolheu-se fazer o upload e já trabalhar com a versão tratada dos dados.O seguinte código foi desenvolvido para realizar esse tratamento (não há necessidade de executar a célula):<jupyter_code>import pandas as pd
import numpy as np

def horarios_turmas(row):
  if (row == 57565214 or row == 57576572 or row == 57586202):
    return "Vespertino"
  if (row == 57565222 or row == 57576566 or row == 57576568):
    return "Matutino"
  if (row == 57565224 or row == 57576569 or row == 57576571 or row == 57586215):
    return "Noturno"

# Extraindo apenas as turmas de RPMTI de 2015.2
m_15_2 = pd.read_csv("matriculas-de-2015.2.csv", sep=";")
m_15_2 = m_15_2[
    (m_15_2["id_turma"] == 57565214) | (m_15_2["id_turma"] == 57565222) |
    (m_15_2["id_turma"] == 57565224)
]

# Extraindo apenas as turmas de RPMTI de 2016.1
m_16_1 = pd.read_csv("matriculas-de-2016.1.csv", sep=";")
m_16_1 = m_16_1[
    (m_16_1["id_turma"] == 57576566) | (m_16_1["id_turma"] == 57576568) |
    (m_16_1["id_turma"] == 57576569) | (m_16_1["id_turma"] == 57576571) |
    (m_16_1["id_turma"] == 57576572)
]

# Extraindo apenas as turmas de RPMTI de 2016.2
m_16_2 = pd.read_csv("matriculas-de-2016.2.csv", sep=";")
m_16_2 = m_16_2[
    (m_16_2["id_turma"] == 57586202) | (m_16_2["id_turma"] == 57586215)
]

# Removendo os alunos "Indeferidos"
m_15_2 = m_15_2[m_15_2["descricao"] != "INDEFERIDO"]
m_16_1 = m_16_1[m_16_1["descricao"] != "INDEFERIDO"]
m_16_2 = m_16_2[m_16_2["descricao"] != "INDEFERIDO"]

# Cada aluno está no dataset triplicado, removendo esse problema
m_15_2 = m_15_2.drop_duplicates(subset='discente', keep="last")
m_16_1 = m_16_1.drop_duplicates(subset='discente', keep="last")
m_16_2 = m_16_2.drop_duplicates(subset='discente', keep="last")

# Adicionando informação sobre o semestre
m_15_2["semestre"] = "2015.2"
m_16_1["semestre"] = "2016.1"
m_16_2["semestre"] = "2016.2"

# Concatenando todos os datasets
rpmti = pd.concat([m_15_2, m_16_1, m_16_2])
rpmti.drop("Unnamed: 10", axis=1, inplace=True)

# Adicionando informação sobre o turno
rpmti["turno"] = rpmti["id_turma"].apply(horarios_turmas)

# Convertendo o resultado para um arquivo
rpmti.to_csv("alunos_rpmti.csv", encoding='utf-8', index=False)<jupyter_output><empty_output><jupyter_text>Agora podemos utilizar o nosso dataset já tratado para iniciar as análises sobre os alunos.<jupyter_code>rpmti_dataset = pd.read_csv("alunos_rpmti.csv")
rpmti_dataset.info()
# Criando listas com todas as id_turmas referentes a cada periodo.
rpmti_2015_2 = [57565214, 57565222, 57565224]
rpmti_2016_1 = [57576566, 57576568, 57576569, 57576571, 57576572]
rpmti_2016_2 = [57586202, 57586215]
data_2015_2 = pd.DataFrame()

for it in rpmti_2015_2:
  data_2015_2 = pd.concat([data_2015_2, rpmti_dataset[rpmti_dataset['id_turma'] == it]]) 
  
data_2015_2.info()  
data_2016_1 = pd.DataFrame()

for it in rpmti_2016_1:
  data_2016_1 = pd.concat([data_2016_1, rpmti_dataset[rpmti_dataset['id_turma'] == it]]) 
  
data_2016_1.info()
data_2016_2 = pd.DataFrame()

for it in rpmti_2016_2:
  data_2016_2 = pd.concat([data_2016_2, rpmti_dataset[rpmti_dataset['id_turma'] == it]]) 
  
data_2016_2.info()
data_2015_2.to_csv('rpmti_2015_2.csv', encoding='utf-8', index=False)
data_2016_1.to_csv('rpmti_2016_1.csv', encoding='utf-8', index=False)
data_2016_2.to_csv('rpmti_2016_2.csv', encoding='utf-8', index=False)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.12728476821192053, 'fraction_numerical': 0.12847682119205298, 'mean_word_length': 6.090140845070422, 'pattern_counts': {'":': 4, '<': 21, '<?xml version=': 0, '>': 21, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 8, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '5', 'dir': 'jupyter-structured-clean-dedup', 'id': '617219', 'license': 'MIT', 'n_tokens_mistral': 3819, 'n_tokens_neox': 3174, 'n_words': 606, 'path': 'Extraindo_os_dados.ipynb', 'repo_name': 'vertumno/probabilidade-analise', 'size': '7550'}