giseldo commited on
Commit
412840c
·
1 Parent(s): 70ac028

última versão

Browse files
.devcontainer/devcontainer.json ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "Python 3",
3
+ // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
4
+ "image": "mcr.microsoft.com/devcontainers/python:1-3.11-bullseye",
5
+ "customizations": {
6
+ "codespaces": {
7
+ "openFiles": [
8
+ "README.md",
9
+ "1_Principal.py"
10
+ ]
11
+ },
12
+ "vscode": {
13
+ "settings": {},
14
+ "extensions": [
15
+ "ms-python.python",
16
+ "ms-python.vscode-pylance"
17
+ ]
18
+ }
19
+ },
20
+ "updateContentCommand": "[ -f packages.txt ] && sudo apt update && sudo apt upgrade -y && sudo xargs apt install -y <packages.txt; [ -f requirements.txt ] && pip3 install --user -r requirements.txt; pip3 install --user streamlit; echo '✅ Packages installed and Requirements met'",
21
+ "postAttachCommand": {
22
+ "server": "streamlit run 1_Principal.py --server.enableCORS false --server.enableXsrfProtection false"
23
+ },
24
+ "portsAttributes": {
25
+ "8501": {
26
+ "label": "Application",
27
+ "onAutoForward": "openPreview"
28
+ }
29
+ },
30
+ "forwardPorts": [
31
+ 8501
32
+ ]
33
+ }
.gitignore ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ configuracao.txt
2
+ send.bat
1_Principal.py ADDED
@@ -0,0 +1,130 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from streamlit_oauth import OAuth2Component
3
+ from dotenv import load_dotenv
4
+ from google.oauth2.credentials import Credentials
5
+ from googleapiclient.discovery import build
6
+ import pandas as pd
7
+ import os
8
+
9
+ load_dotenv()
10
+
11
+ CLIENT_ID = os.environ["GOOGLE_CLIENT_ID"]
12
+ CLIENT_SECRET = os.environ["GOOGLE_CLIENT_SECRET"]
13
+ REDIRECT_URI = os.environ["GOOGLE_REDIRECT_URI"]
14
+ AUTHORIZE_URL = "https://accounts.google.com/o/oauth2/v2/auth"
15
+ TOKEN_URL = "https://oauth2.googleapis.com/token"
16
+ REFRESH_TOKEN_URL = "https://oauth2.googleapis.com/token"
17
+ REVOKE_TOKEN_URL = "https://oauth2.googleapis.com/revoke"
18
+ SCOPES = "openid profile email https://www.googleapis.com/auth/spreadsheets https://www.googleapis.com/auth/classroom.courses https://www.googleapis.com/auth/drive.readonly.metadata https://www.googleapis.com/auth/classroom.announcements https://www.googleapis.com/auth/classroom.courses https://www.googleapis.com/auth/classroom.coursework.me https://www.googleapis.com/auth/classroom.coursework.students https://www.googleapis.com/auth/classroom.courseworkmaterials https://www.googleapis.com/auth/classroom.guardianlinks.students https://www.googleapis.com/auth/classroom.profile.emails https://www.googleapis.com/auth/classroom.profile.photos https://www.googleapis.com/auth/classroom.push-notifications https://www.googleapis.com/auth/classroom.rosters https://www.googleapis.com/auth/classroom.rosters.readonly https://www.googleapis.com/auth/classroom.topics"
19
+
20
+ oauth2 = OAuth2Component(CLIENT_ID, CLIENT_SECRET, AUTHORIZE_URL, TOKEN_URL, REFRESH_TOKEN_URL, REVOKE_TOKEN_URL)
21
+ st.title("NEOAVA")
22
+ #st.subheader("Um ambiente virtual de aprendizagem para a Autorregulação e o Big Five")
23
+ st.success("Esse aplicativo é integrado com o Google Sala de aula. \n Portanto, é preciso efetuar login com a sua conta do Google.")
24
+
25
+ if 'token' not in st.session_state:
26
+ result = oauth2.authorize_button("Login", REDIRECT_URI, SCOPES)
27
+ if result and 'token' in result:
28
+ st.session_state.token = result.get('token')
29
+
30
+ else:
31
+
32
+ token = st.session_state['token']
33
+ #st.json(token)
34
+ access_token = token.get("access_token")
35
+
36
+ st.success("Aguarde, pois estamos efetuando seu login e carregandos os dados do Google Sala de aula.")
37
+
38
+ # carregar as questoes do mslq
39
+ df_questoes_mslq = pd.read_csv("datasets/mslq.csv")
40
+ st.session_state["df_questoes_mslq"] = df_questoes_mslq
41
+
42
+ # carregar as dicas
43
+ df_dicas = pd.read_csv("datasets/dicas.csv")
44
+ st.session_state["df_dicas"] = df_dicas
45
+
46
+ creds = Credentials(token=access_token)
47
+ service = build('classroom', 'v1', credentials=creds)
48
+
49
+ def carregar_dataframe_autorregulacao_novo():
50
+ spreadsheet_id="19Bn8EFdhkSx71m0PkvoG8GbEUJW7vNRdJBdatfn6Keg"
51
+ creds = Credentials(token=access_token)
52
+ service = build('sheets', 'v4', credentials=creds)
53
+ result = service.spreadsheets().values().get(
54
+ spreadsheetId=spreadsheet_id, range="A1:AT10").execute()
55
+ rows = result.get('values', [])
56
+
57
+ panda_df = pd.DataFrame(data = rows[1:], columns=rows[0])
58
+
59
+ panda_df = panda_df.astype({panda_df.columns[2]: int, panda_df.columns[3]: int, panda_df.columns[4]: int, panda_df.columns[5]: int, panda_df.columns[6]: int, panda_df.columns[7]: int, panda_df.columns[8]: int, panda_df.columns[9]: int, panda_df.columns[10]: int,
60
+ panda_df.columns[11]: int, panda_df.columns[12]: int, panda_df.columns[13]: int, panda_df.columns[14]: int, panda_df.columns[15]: int, panda_df.columns[16]: int, panda_df.columns[17]: int, panda_df.columns[18]: int, panda_df.columns[19]: int, panda_df.columns[20]: int,
61
+ panda_df.columns[21]: int, panda_df.columns[22]: int, panda_df.columns[23]: int, panda_df.columns[24]: int, panda_df.columns[25]: int, panda_df.columns[26]: int, panda_df.columns[27]: int, panda_df.columns[28]: int, panda_df.columns[29]: int, panda_df.columns[30]: int,
62
+ panda_df.columns[31]: int, panda_df.columns[32]: int, panda_df.columns[33]: int, panda_df.columns[34]: int, panda_df.columns[35]: int, panda_df.columns[36]: int, panda_df.columns[37]: int, panda_df.columns[38]: int, panda_df.columns[39]: int, panda_df.columns[40]: int,
63
+ panda_df.columns[41]: int, panda_df.columns[42]: int, panda_df.columns[43]: int, panda_df.columns[44]: int, panda_df.columns[45]: int})
64
+
65
+ return panda_df
66
+ #return pd.read_csv("datasets/resposta_autorregulacao_v2.csv")
67
+
68
+ def carregar_dataframe_bigfive_novo():
69
+ spreadsheet_id="19Py0-JS3o2QDEdCX2EaJ2vV3M8uTUIgX8q52BQ4NiY4"
70
+ creds = Credentials(token=access_token)
71
+ service = build('sheets', 'v4', credentials=creds)
72
+ result = service.spreadsheets().values().get(
73
+ spreadsheetId=spreadsheet_id, range="A1:AT10").execute()
74
+ rows = result.get('values', [])
75
+
76
+ panda_df = pd.DataFrame(data = rows[1:], columns=rows[0])
77
+
78
+ panda_df = panda_df.astype({panda_df.columns[2]: int, panda_df.columns[3]: int, panda_df.columns[4]: int, panda_df.columns[5]: int, panda_df.columns[6]: int, panda_df.columns[7]: int, panda_df.columns[8]: int, panda_df.columns[9]: int, panda_df.columns[10]: int,
79
+ panda_df.columns[11]: int, panda_df.columns[12]: int, panda_df.columns[13]: int, panda_df.columns[14]: int, panda_df.columns[15]: int, panda_df.columns[16]: int, panda_df.columns[17]: int, panda_df.columns[18]: int, panda_df.columns[19]: int, panda_df.columns[20]: int,
80
+ panda_df.columns[21]: int, panda_df.columns[22]: int, panda_df.columns[23]: int, panda_df.columns[24]: int, panda_df.columns[25]: int, panda_df.columns[26]: int, panda_df.columns[27]: int, panda_df.columns[28]: int, panda_df.columns[29]: int, panda_df.columns[30]: int,
81
+ panda_df.columns[31]: int, panda_df.columns[32]: int, panda_df.columns[33]: int, panda_df.columns[34]: int, panda_df.columns[35]: int, panda_df.columns[36]: int, panda_df.columns[37]: int, panda_df.columns[38]: int, panda_df.columns[39]: int, panda_df.columns[40]: int,
82
+ panda_df.columns[41]: int, panda_df.columns[42]: int, panda_df.columns[43]: int, panda_df.columns[44]: int, panda_df.columns[45]: int})
83
+
84
+ return panda_df
85
+ #return pd.read_csv("datasets/resposta_bigfive_v2.csv")
86
+
87
+ # carregar as respostas de autorregulação
88
+ df_respostas = carregar_dataframe_autorregulacao_novo()
89
+ st.session_state["df_respostas"] = df_respostas
90
+
91
+ # carregar questoes do big five
92
+ df_respostas_big_five = carregar_dataframe_bigfive_novo()
93
+ st.session_state["df_respostas_big_five"] = df_respostas_big_five
94
+
95
+ st.session_state["limite"] = 4
96
+
97
+ results = service.courses().list(pageSize=10).execute()
98
+ courses = results.get("courses", [])
99
+ lista_curso = list()
100
+ for course in courses:
101
+ lista_curso.append([course['name'], course['id']])
102
+
103
+ df_cursos = pd.DataFrame(lista_curso, columns=["nome", "id"])
104
+ st.session_state["df_cursos"] = df_cursos
105
+ st.success("Selecione uma turma.")
106
+ curso_selecionado = st.selectbox(label="Selecione um curso do sala de aula para continuar:", options=df_cursos["nome"])
107
+
108
+ btn_carregar_curso = st.button("Carregar", key="btncarregarcurso")
109
+
110
+ def carregar_alunos(id_curso_selecionado):
111
+ creds = Credentials(token=access_token)
112
+ classroom = build('classroom', 'v1', credentials=creds)
113
+ results = classroom.courses().students().list(courseId=id_curso_selecionado).execute()
114
+ estudantes = results.get("students", [])
115
+ lista_estudante = list()
116
+ for estudante in estudantes:
117
+ lista_estudante.append([estudante['userId'], estudante["profile"]["name"]["fullName"], estudante["profile"]["emailAddress"]])
118
+ df_estudantes = pd.DataFrame(lista_estudante, columns=["userId", "nome", "email"])
119
+ st.session_state["df_estudantes"] = df_estudantes
120
+ #st.success("Todos os estudantes carregados!")
121
+
122
+ if btn_carregar_curso:
123
+ #st.write("Curso Selecionado: ", curso_selecionado)
124
+ df_curso = df_cursos[df_cursos["nome"]==curso_selecionado]
125
+ id_curso_selecionado = df_curso["id"].iloc[0]
126
+ #st.write("ID do curso selecionado: ", id_curso_selecionado)
127
+ st.session_state["id_curso_selecionado"] = id_curso_selecionado
128
+ carregar_alunos(id_curso_selecionado)
129
+ st.success("Todos os dados carregados!")
130
+
README.md CHANGED
@@ -1,12 +1,3 @@
1
- ---
2
- title: Neo AVA
3
- emoji: 🏃
4
- colorFrom: blue
5
- colorTo: indigo
6
- sdk: streamlit
7
- sdk_version: 1.42.0
8
- app_file: app.py
9
- pinned: false
10
- short_description: Um ambiente virtual de aprendizagem
11
- license: mit
12
- ---
 
1
+ # about
2
+
3
+ Source code for NeoAVA a recommendation System with Self-Regulated Learning for students and teachers
 
 
 
 
 
 
 
 
 
app.py DELETED
@@ -1,4 +0,0 @@
1
- import streamlit as st
2
-
3
- x = st.slider('selecione um valor')
4
- st.write(x, 'squared is', x * x)
 
 
 
 
 
code/main.ipynb ADDED
@@ -0,0 +1,832 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 17,
6
+ "metadata": {},
7
+ "outputs": [],
8
+ "source": [
9
+ "lista = [\n",
10
+ " ['Carimbo de data/hora', 'Endereço de e-mail', 'Vejo-me como alguém que É conversador, comunicativo', 'Vejo-me como alguém que Tende a ser crítico com os outros ', 'Vejo-me como alguém que É minucioso e detalhista no trabalho ', 'Vejo-me como alguém que É depressivo, triste ', 'Vejo-me como alguém que É original, tem sempre novas ideias ', 'Vejo-me como alguém que É reservado ', 'Vejo-me como alguém que É prestativo e ajuda os outros ', 'Vejo-me como alguém que Pode ser um tanto descuidado ', 'Vejo-me como alguém que É relaxado, controla bem o stress ', 'Vejo-me como alguém que É curioso sobre muitas coisas diferentes ', 'Vejo-me como alguém que É cheio de energia ', 'Vejo-me como alguém que Começa discussões, disputas, com os outros ', 'Vejo-me como alguém que É um trabalhador de confiança ', 'Vejo-me como alguém que Fica tenso com frequência ', 'Vejo-me como alguém que É engenhoso, alguém que gosta de analisar profundamente as coisas ', 'Vejo-me como alguém que Gera muito entusiasmo ', 'Vejo-me como alguém que Tem capacidade de perdoar, perdoa facilmente ', 'Vejo-me como alguém que Tende a ser desorganizado ', 'Vejo-me como alguém que Preocupa-se muito com tudo ', 'Vejo-me como alguém que Tem uma imaginação fértil ', 'Vejo-me como alguém que Tende a ser quieto, calado ', 'Vejo-me como alguém que É geralmente confiável ', 'Vejo-me como alguém que Tende a ser preguiçoso ', 'Vejo-me como alguém que É emocionalmente estável, não se altera facilmente ', 'Vejo-me como alguém que É inventivo, criativo ', 'Vejo-me como alguém que É assertivo, não teme expressar o que sente ', 'Vejo-me como alguém que Às vezes é frio e distante ', 'Vejo-me como alguém que Insiste até concluir a tarefa ou o trabalho ', 'Vejo-me como alguém que É temperamental, muda de humor facilmente ', 'Vejo-me como alguém que Valoriza o artístico, o estético ', 'Vejo-me como alguém que É, às vezes, tímido e inibido ', 'Vejo-me como alguém que É amável, tem consideração pelos outros ', 'Vejo-me como alguém que Faz as coisas com eficiência ', 'Vejo-me como alguém que Mantém-se calmo nas situações de tensão ', 'Vejo-me como alguém que Prefere trabalho rotineiro ', 'Vejo-me como alguém que É sociável, extrovertido ', 'Vejo-me como alguém que É, às vezes, rude (grosseiro) com os outros ', 'Vejo-me como alguém que Faz planos e segue-os à risca ', 'Vejo-me como alguém que Fica nervoso facilmente ', 'Vejo-me como alguém que Gosta de refletir, brincar com as ideias ', 'Vejo-me como alguém que Tem poucos interesses artísticos ', 'Vejo-me como alguém que Gosta de cooperar com os outros ', 'Vejo-me como alguém que É facilmente distraído ', 'Vejo-me como alguém que É sofisticado em artes, música ou literatura '], \n",
11
+ " ['07/10/2023 21:55:06', 'gisellaneo@gmail.com', '1', '3', '4', '3', '4', '1', '4', '5', '2', '4', '4', '1', '2', '4', '4', '3', '4', '5', '4', '5', '4', '3', '4', '3', '5', '1', '2', '3', '3', '4', '5', '3', '2', '1', '4', '2', '3', '2', '4', '5', '1', '4', '4', '4'], \n",
12
+ " ['11/10/2023 13:11:32', 'jobstern80@gmail.com', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3']\n",
13
+ "]"
14
+ ]
15
+ },
16
+ {
17
+ "cell_type": "code",
18
+ "execution_count": null,
19
+ "metadata": {},
20
+ "outputs": [],
21
+ "source": []
22
+ },
23
+ {
24
+ "cell_type": "code",
25
+ "execution_count": 18,
26
+ "metadata": {},
27
+ "outputs": [
28
+ {
29
+ "data": {
30
+ "text/plain": [
31
+ "['Carimbo de data/hora',\n",
32
+ " 'Endereço de e-mail',\n",
33
+ " 'Vejo-me como alguém que É conversador, comunicativo',\n",
34
+ " 'Vejo-me como alguém que Tende a ser crítico com os outros ',\n",
35
+ " 'Vejo-me como alguém que É minucioso e detalhista no trabalho ',\n",
36
+ " 'Vejo-me como alguém que É depressivo, triste ',\n",
37
+ " 'Vejo-me como alguém que É original, tem sempre novas ideias ',\n",
38
+ " 'Vejo-me como alguém que É reservado ',\n",
39
+ " 'Vejo-me como alguém que É prestativo e ajuda os outros ',\n",
40
+ " 'Vejo-me como alguém que Pode ser um tanto descuidado ',\n",
41
+ " 'Vejo-me como alguém que É relaxado, controla bem o stress ',\n",
42
+ " 'Vejo-me como alguém que É curioso sobre muitas coisas diferentes ',\n",
43
+ " 'Vejo-me como alguém que É cheio de energia ',\n",
44
+ " 'Vejo-me como alguém que Começa discussões, disputas, com os outros ',\n",
45
+ " 'Vejo-me como alguém que É um trabalhador de confiança ',\n",
46
+ " 'Vejo-me como alguém que Fica tenso com frequência ',\n",
47
+ " 'Vejo-me como alguém que É engenhoso, alguém que gosta de analisar profundamente as coisas ',\n",
48
+ " 'Vejo-me como alguém que Gera muito entusiasmo ',\n",
49
+ " 'Vejo-me como alguém que Tem capacidade de perdoar, perdoa facilmente ',\n",
50
+ " 'Vejo-me como alguém que Tende a ser desorganizado ',\n",
51
+ " 'Vejo-me como alguém que Preocupa-se muito com tudo ',\n",
52
+ " 'Vejo-me como alguém que Tem uma imaginação fértil ',\n",
53
+ " 'Vejo-me como alguém que Tende a ser quieto, calado ',\n",
54
+ " 'Vejo-me como alguém que É geralmente confiável ',\n",
55
+ " 'Vejo-me como alguém que Tende a ser preguiçoso ',\n",
56
+ " 'Vejo-me como alguém que É emocionalmente estável, não se altera facilmente ',\n",
57
+ " 'Vejo-me como alguém que É inventivo, criativo ',\n",
58
+ " 'Vejo-me como alguém que É assertivo, não teme expressar o que sente ',\n",
59
+ " 'Vejo-me como alguém que Às vezes é frio e distante ',\n",
60
+ " 'Vejo-me como alguém que Insiste até concluir a tarefa ou o trabalho ',\n",
61
+ " 'Vejo-me como alguém que É temperamental, muda de humor facilmente ',\n",
62
+ " 'Vejo-me como alguém que Valoriza o artístico, o estético ',\n",
63
+ " 'Vejo-me como alguém que É, às vezes, tímido e inibido ',\n",
64
+ " 'Vejo-me como alguém que É amável, tem consideração pelos outros ',\n",
65
+ " 'Vejo-me como alguém que Faz as coisas com eficiência ',\n",
66
+ " 'Vejo-me como alguém que Mantém-se calmo nas situações de tensão ',\n",
67
+ " 'Vejo-me como alguém que Prefere trabalho rotineiro ',\n",
68
+ " 'Vejo-me como alguém que É sociável, extrovertido ',\n",
69
+ " 'Vejo-me como alguém que É, às vezes, rude (grosseiro) com os outros ',\n",
70
+ " 'Vejo-me como alguém que Faz planos e segue-os à risca ',\n",
71
+ " 'Vejo-me como alguém que Fica nervoso facilmente ',\n",
72
+ " 'Vejo-me como alguém que Gosta de refletir, brincar com as ideias ',\n",
73
+ " 'Vejo-me como alguém que Tem poucos interesses artísticos ',\n",
74
+ " 'Vejo-me como alguém que Gosta de cooperar com os outros ',\n",
75
+ " 'Vejo-me como alguém que É facilmente distraído ',\n",
76
+ " 'Vejo-me como alguém que É sofisticado em artes, música ou literatura ']"
77
+ ]
78
+ },
79
+ "execution_count": 18,
80
+ "metadata": {},
81
+ "output_type": "execute_result"
82
+ }
83
+ ],
84
+ "source": [
85
+ "lista[0]"
86
+ ]
87
+ },
88
+ {
89
+ "cell_type": "code",
90
+ "execution_count": 19,
91
+ "metadata": {},
92
+ "outputs": [
93
+ {
94
+ "data": {
95
+ "text/plain": [
96
+ "[['07/10/2023 21:55:06',\n",
97
+ " 'gisellaneo@gmail.com',\n",
98
+ " '1',\n",
99
+ " '3',\n",
100
+ " '4',\n",
101
+ " '3',\n",
102
+ " '4',\n",
103
+ " '1',\n",
104
+ " '4',\n",
105
+ " '5',\n",
106
+ " '2',\n",
107
+ " '4',\n",
108
+ " '4',\n",
109
+ " '1',\n",
110
+ " '2',\n",
111
+ " '4',\n",
112
+ " '4',\n",
113
+ " '3',\n",
114
+ " '4',\n",
115
+ " '5',\n",
116
+ " '4',\n",
117
+ " '5',\n",
118
+ " '4',\n",
119
+ " '3',\n",
120
+ " '4',\n",
121
+ " '3',\n",
122
+ " '5',\n",
123
+ " '1',\n",
124
+ " '2',\n",
125
+ " '3',\n",
126
+ " '3',\n",
127
+ " '4',\n",
128
+ " '5',\n",
129
+ " '3',\n",
130
+ " '2',\n",
131
+ " '1',\n",
132
+ " '4',\n",
133
+ " '2',\n",
134
+ " '3',\n",
135
+ " '2',\n",
136
+ " '4',\n",
137
+ " '5',\n",
138
+ " '1',\n",
139
+ " '4',\n",
140
+ " '4',\n",
141
+ " '4'],\n",
142
+ " ['11/10/2023 13:11:32',\n",
143
+ " 'jobstern80@gmail.com',\n",
144
+ " '3',\n",
145
+ " '3',\n",
146
+ " '3',\n",
147
+ " '3',\n",
148
+ " '3',\n",
149
+ " '3',\n",
150
+ " '3',\n",
151
+ " '3',\n",
152
+ " '3',\n",
153
+ " '3',\n",
154
+ " '3',\n",
155
+ " '3',\n",
156
+ " '3',\n",
157
+ " '3',\n",
158
+ " '3',\n",
159
+ " '3',\n",
160
+ " '3',\n",
161
+ " '3',\n",
162
+ " '3',\n",
163
+ " '3',\n",
164
+ " '3',\n",
165
+ " '3',\n",
166
+ " '3',\n",
167
+ " '3',\n",
168
+ " '3',\n",
169
+ " '3',\n",
170
+ " '3',\n",
171
+ " '3',\n",
172
+ " '3',\n",
173
+ " '3',\n",
174
+ " '3',\n",
175
+ " '3',\n",
176
+ " '3',\n",
177
+ " '3',\n",
178
+ " '3',\n",
179
+ " '3',\n",
180
+ " '3',\n",
181
+ " '3',\n",
182
+ " '3',\n",
183
+ " '3',\n",
184
+ " '3',\n",
185
+ " '3',\n",
186
+ " '3',\n",
187
+ " '3']]"
188
+ ]
189
+ },
190
+ "execution_count": 19,
191
+ "metadata": {},
192
+ "output_type": "execute_result"
193
+ }
194
+ ],
195
+ "source": [
196
+ "lista[1:]"
197
+ ]
198
+ },
199
+ {
200
+ "cell_type": "code",
201
+ "execution_count": 23,
202
+ "metadata": {},
203
+ "outputs": [],
204
+ "source": [
205
+ "\n",
206
+ "import pandas as pd\n",
207
+ "panda_df = pd.DataFrame(data=lista[1:], columns=lista[0])"
208
+ ]
209
+ },
210
+ {
211
+ "cell_type": "code",
212
+ "execution_count": 36,
213
+ "metadata": {},
214
+ "outputs": [
215
+ {
216
+ "data": {
217
+ "text/plain": [
218
+ "Index(['Carimbo de data/hora', 'Endereço de e-mail',\n",
219
+ " 'Vejo-me como alguém que É conversador, comunicativo',\n",
220
+ " 'Vejo-me como alguém que Tende a ser crítico com os outros ',\n",
221
+ " 'Vejo-me como alguém que É minucioso e detalhista no trabalho ',\n",
222
+ " 'Vejo-me como alguém que É depressivo, triste ',\n",
223
+ " 'Vejo-me como alguém que É original, tem sempre novas ideias ',\n",
224
+ " 'Vejo-me como alguém que É reservado ',\n",
225
+ " 'Vejo-me como alguém que É prestativo e ajuda os outros ',\n",
226
+ " 'Vejo-me como alguém que Pode ser um tanto descuidado ',\n",
227
+ " 'Vejo-me como alguém que É relaxado, controla bem o stress ',\n",
228
+ " 'Vejo-me como alguém que É curioso sobre muitas coisas diferentes ',\n",
229
+ " 'Vejo-me como alguém que É cheio de energia ',\n",
230
+ " 'Vejo-me como alguém que Começa discussões, disputas, com os outros ',\n",
231
+ " 'Vejo-me como alguém que É um trabalhador de confiança ',\n",
232
+ " 'Vejo-me como alguém que Fica tenso com frequência ',\n",
233
+ " 'Vejo-me como alguém que É engenhoso, alguém que gosta de analisar profundamente as coisas ',\n",
234
+ " 'Vejo-me como alguém que Gera muito entusiasmo ',\n",
235
+ " 'Vejo-me como alguém que Tem capacidade de perdoar, perdoa facilmente ',\n",
236
+ " 'Vejo-me como alguém que Tende a ser desorganizado ',\n",
237
+ " 'Vejo-me como alguém que Preocupa-se muito com tudo ',\n",
238
+ " 'Vejo-me como alguém que Tem uma imaginação fértil ',\n",
239
+ " 'Vejo-me como alguém que Tende a ser quieto, calado ',\n",
240
+ " 'Vejo-me como alguém que É geralmente confiável ',\n",
241
+ " 'Vejo-me como alguém que Tende a ser preguiçoso ',\n",
242
+ " 'Vejo-me como alguém que É emocionalmente estável, não se altera facilmente ',\n",
243
+ " 'Vejo-me como alguém que É inventivo, criativo ',\n",
244
+ " 'Vejo-me como alguém que É assertivo, não teme expressar o que sente ',\n",
245
+ " 'Vejo-me como alguém que Às vezes é frio e distante ',\n",
246
+ " 'Vejo-me como alguém que Insiste até concluir a tarefa ou o trabalho ',\n",
247
+ " 'Vejo-me como alguém que É temperamental, muda de humor facilmente ',\n",
248
+ " 'Vejo-me como alguém que Valoriza o artístico, o estético ',\n",
249
+ " 'Vejo-me como alguém que É, às vezes, tímido e inibido ',\n",
250
+ " 'Vejo-me como alguém que É amável, tem consideração pelos outros ',\n",
251
+ " 'Vejo-me como alguém que Faz as coisas com eficiência ',\n",
252
+ " 'Vejo-me como alguém que Mantém-se calmo nas situações de tensão ',\n",
253
+ " 'Vejo-me como alguém que Prefere trabalho rotineiro ',\n",
254
+ " 'Vejo-me como alguém que É sociável, extrovertido ',\n",
255
+ " 'Vejo-me como alguém que É, às vezes, rude (grosseiro) com os outros ',\n",
256
+ " 'Vejo-me como alguém que Faz planos e segue-os à risca ',\n",
257
+ " 'Vejo-me como alguém que Fica nervoso facilmente ',\n",
258
+ " 'Vejo-me como alguém que Gosta de refletir, brincar com as ideias ',\n",
259
+ " 'Vejo-me como alguém que Tem poucos interesses artísticos ',\n",
260
+ " 'Vejo-me como alguém que Gosta de cooperar com os outros ',\n",
261
+ " 'Vejo-me como alguém que É facilmente distraído ',\n",
262
+ " 'Vejo-me como alguém que É sofisticado em artes, música ou literatura '],\n",
263
+ " dtype='object')"
264
+ ]
265
+ },
266
+ "execution_count": 36,
267
+ "metadata": {},
268
+ "output_type": "execute_result"
269
+ }
270
+ ],
271
+ "source": [
272
+ "panda_df.columns"
273
+ ]
274
+ },
275
+ {
276
+ "cell_type": "code",
277
+ "execution_count": 39,
278
+ "metadata": {},
279
+ "outputs": [],
280
+ "source": [
281
+ "panda_df = panda_df.astype({panda_df.columns[2]: int, panda_df.columns[3]: int, panda_df.columns[4]: int, panda_df.columns[5]: int, panda_df.columns[6]: int, panda_df.columns[7]: int, panda_df.columns[8]: int, panda_df.columns[9]: int, panda_df.columns[10]: int,\n",
282
+ " panda_df.columns[11]: int, panda_df.columns[12]: int, panda_df.columns[13]: int, panda_df.columns[14]: int, panda_df.columns[15]: int, panda_df.columns[16]: int, panda_df.columns[17]: int, panda_df.columns[18]: int, panda_df.columns[19]: int, panda_df.columns[20]: int,\n",
283
+ " panda_df.columns[21]: int, panda_df.columns[22]: int, panda_df.columns[23]: int, panda_df.columns[24]: int, panda_df.columns[25]: int, panda_df.columns[26]: int, panda_df.columns[27]: int, panda_df.columns[28]: int, panda_df.columns[29]: int, panda_df.columns[30]: int,\n",
284
+ " panda_df.columns[31]: int, panda_df.columns[32]: int, panda_df.columns[33]: int, panda_df.columns[34]: int, panda_df.columns[35]: int, panda_df.columns[36]: int, panda_df.columns[37]: int, panda_df.columns[38]: int, panda_df.columns[39]: int, panda_df.columns[40]: int,\n",
285
+ " panda_df.columns[41]: int, panda_df.columns[42]: int, panda_df.columns[43]: int, panda_df.columns[44]: int, panda_df.columns[45]: int})"
286
+ ]
287
+ },
288
+ {
289
+ "cell_type": "code",
290
+ "execution_count": 40,
291
+ "metadata": {},
292
+ "outputs": [
293
+ {
294
+ "name": "stdout",
295
+ "output_type": "stream",
296
+ "text": [
297
+ "<class 'pandas.core.frame.DataFrame'>\n",
298
+ "RangeIndex: 2 entries, 0 to 1\n",
299
+ "Data columns (total 46 columns):\n",
300
+ " # Column Non-Null Count Dtype \n",
301
+ "--- ------ -------------- ----- \n",
302
+ " 0 Carimbo de data/hora 2 non-null object\n",
303
+ " 1 Endereço de e-mail 2 non-null object\n",
304
+ " 2 Vejo-me como alguém que É conversador, comunicativo 2 non-null int32 \n",
305
+ " 3 Vejo-me como alguém que Tende a ser crítico com os outros 2 non-null int32 \n",
306
+ " 4 Vejo-me como alguém que É minucioso e detalhista no trabalho 2 non-null int32 \n",
307
+ " 5 Vejo-me como alguém que É depressivo, triste 2 non-null int32 \n",
308
+ " 6 Vejo-me como alguém que É original, tem sempre novas ideias 2 non-null int32 \n",
309
+ " 7 Vejo-me como alguém que É reservado 2 non-null int32 \n",
310
+ " 8 Vejo-me como alguém que É prestativo e ajuda os outros 2 non-null int32 \n",
311
+ " 9 Vejo-me como alguém que Pode ser um tanto descuidado 2 non-null int32 \n",
312
+ " 10 Vejo-me como alguém que É relaxado, controla bem o stress 2 non-null int32 \n",
313
+ " 11 Vejo-me como alguém que É curioso sobre muitas coisas diferentes 2 non-null int32 \n",
314
+ " 12 Vejo-me como alguém que É cheio de energia 2 non-null int32 \n",
315
+ " 13 Vejo-me como alguém que Começa discussões, disputas, com os outros 2 non-null int32 \n",
316
+ " 14 Vejo-me como alguém que É um trabalhador de confiança 2 non-null int32 \n",
317
+ " 15 Vejo-me como alguém que Fica tenso com frequência 2 non-null int32 \n",
318
+ " 16 Vejo-me como alguém que É engenhoso, alguém que gosta de analisar profundamente as coisas 2 non-null int32 \n",
319
+ " 17 Vejo-me como alguém que Gera muito entusiasmo 2 non-null int32 \n",
320
+ " 18 Vejo-me como alguém que Tem capacidade de perdoar, perdoa facilmente 2 non-null int32 \n",
321
+ " 19 Vejo-me como alguém que Tende a ser desorganizado 2 non-null int32 \n",
322
+ " 20 Vejo-me como alguém que Preocupa-se muito com tudo 2 non-null int32 \n",
323
+ " 21 Vejo-me como alguém que Tem uma imaginação fértil 2 non-null int32 \n",
324
+ " 22 Vejo-me como alguém que Tende a ser quieto, calado 2 non-null int32 \n",
325
+ " 23 Vejo-me como alguém que É geralmente confiável 2 non-null int32 \n",
326
+ " 24 Vejo-me como alguém que Tende a ser preguiçoso 2 non-null int32 \n",
327
+ " 25 Vejo-me como alguém que É emocionalmente estável, não se altera facilmente 2 non-null int32 \n",
328
+ " 26 Vejo-me como alguém que É inventivo, criativo 2 non-null int32 \n",
329
+ " 27 Vejo-me como alguém que É assertivo, não teme expressar o que sente 2 non-null int32 \n",
330
+ " 28 Vejo-me como alguém que Às vezes é frio e distante 2 non-null int32 \n",
331
+ " 29 Vejo-me como alguém que Insiste até concluir a tarefa ou o trabalho 2 non-null int32 \n",
332
+ " 30 Vejo-me como alguém que É temperamental, muda de humor facilmente 2 non-null int32 \n",
333
+ " 31 Vejo-me como alguém que Valoriza o artístico, o estético 2 non-null int32 \n",
334
+ " 32 Vejo-me como alguém que É, às vezes, tímido e inibido 2 non-null int32 \n",
335
+ " 33 Vejo-me como alguém que É amável, tem consideração pelos outros 2 non-null int32 \n",
336
+ " 34 Vejo-me como alguém que Faz as coisas com eficiência 2 non-null int32 \n",
337
+ " 35 Vejo-me como alguém que Mantém-se calmo nas situações de tensão 2 non-null int32 \n",
338
+ " 36 Vejo-me como alguém que Prefere trabalho rotineiro 2 non-null int32 \n",
339
+ " 37 Vejo-me como alguém que É sociável, extrovertido 2 non-null int32 \n",
340
+ " 38 Vejo-me como alguém que É, às vezes, rude (grosseiro) com os outros 2 non-null int32 \n",
341
+ " 39 Vejo-me como alguém que Faz planos e segue-os à risca 2 non-null int32 \n",
342
+ " 40 Vejo-me como alguém que Fica nervoso facilmente 2 non-null int32 \n",
343
+ " 41 Vejo-me como alguém que Gosta de refletir, brincar com as ideias 2 non-null int32 \n",
344
+ " 42 Vejo-me como alguém que Tem poucos interesses artísticos 2 non-null int32 \n",
345
+ " 43 Vejo-me como alguém que Gosta de cooperar com os outros 2 non-null int32 \n",
346
+ " 44 Vejo-me como alguém que É facilmente distraído 2 non-null int32 \n",
347
+ " 45 Vejo-me como alguém que É sofisticado em artes, música ou literatura 2 non-null int32 \n",
348
+ "dtypes: int32(44), object(2)\n",
349
+ "memory usage: 512.0+ bytes\n"
350
+ ]
351
+ }
352
+ ],
353
+ "source": [
354
+ "panda_df.info()"
355
+ ]
356
+ },
357
+ {
358
+ "cell_type": "code",
359
+ "execution_count": null,
360
+ "metadata": {},
361
+ "outputs": [
362
+ {
363
+ "data": {
364
+ "text/html": [
365
+ "<div>\n",
366
+ "<style scoped>\n",
367
+ " .dataframe tbody tr th:only-of-type {\n",
368
+ " vertical-align: middle;\n",
369
+ " }\n",
370
+ "\n",
371
+ " .dataframe tbody tr th {\n",
372
+ " vertical-align: top;\n",
373
+ " }\n",
374
+ "\n",
375
+ " .dataframe thead th {\n",
376
+ " text-align: right;\n",
377
+ " }\n",
378
+ "</style>\n",
379
+ "<table border=\"1\" class=\"dataframe\">\n",
380
+ " <thead>\n",
381
+ " <tr style=\"text-align: right;\">\n",
382
+ " <th></th>\n",
383
+ " <th>Carimbo de data/hora</th>\n",
384
+ " <th>Endereço de e-mail</th>\n",
385
+ " <th>Vejo-me como alguém que É conversador, comunicativo</th>\n",
386
+ " <th>Vejo-me como alguém que Tende a ser crítico com os outros</th>\n",
387
+ " <th>Vejo-me como alguém que É minucioso e detalhista no trabalho</th>\n",
388
+ " <th>Vejo-me como alguém que É depressivo, triste</th>\n",
389
+ " <th>Vejo-me como alguém que É original, tem sempre novas ideias</th>\n",
390
+ " <th>Vejo-me como alguém que É reservado</th>\n",
391
+ " <th>Vejo-me como alguém que É prestativo e ajuda os outros</th>\n",
392
+ " <th>Vejo-me como alguém que Pode ser um tanto descuidado</th>\n",
393
+ " <th>...</th>\n",
394
+ " <th>Vejo-me como alguém que Prefere trabalho rotineiro</th>\n",
395
+ " <th>Vejo-me como alguém que É sociável, extrovertido</th>\n",
396
+ " <th>Vejo-me como alguém que É, às vezes, rude (grosseiro) com os outros</th>\n",
397
+ " <th>Vejo-me como alguém que Faz planos e segue-os à risca</th>\n",
398
+ " <th>Vejo-me como alguém que Fica nervoso facilmente</th>\n",
399
+ " <th>Vejo-me como alguém que Gosta de refletir, brincar com as ideias</th>\n",
400
+ " <th>Vejo-me como alguém que Tem poucos interesses artísticos</th>\n",
401
+ " <th>Vejo-me como alguém que Gosta de cooperar com os outros</th>\n",
402
+ " <th>Vejo-me como alguém que É facilmente distraído</th>\n",
403
+ " <th>Vejo-me como alguém que É sofisticado em artes, música ou literatura</th>\n",
404
+ " </tr>\n",
405
+ " </thead>\n",
406
+ " <tbody>\n",
407
+ " <tr>\n",
408
+ " <th>0</th>\n",
409
+ " <td>07/10/2023 21:55:06</td>\n",
410
+ " <td>gisellaneo@gmail.com</td>\n",
411
+ " <td>1</td>\n",
412
+ " <td>3</td>\n",
413
+ " <td>4</td>\n",
414
+ " <td>3</td>\n",
415
+ " <td>4</td>\n",
416
+ " <td>1</td>\n",
417
+ " <td>4</td>\n",
418
+ " <td>5</td>\n",
419
+ " <td>...</td>\n",
420
+ " <td>4</td>\n",
421
+ " <td>2</td>\n",
422
+ " <td>3</td>\n",
423
+ " <td>2</td>\n",
424
+ " <td>4</td>\n",
425
+ " <td>5</td>\n",
426
+ " <td>1</td>\n",
427
+ " <td>4</td>\n",
428
+ " <td>4</td>\n",
429
+ " <td>4</td>\n",
430
+ " </tr>\n",
431
+ " <tr>\n",
432
+ " <th>1</th>\n",
433
+ " <td>11/10/2023 13:11:32</td>\n",
434
+ " <td>jobstern80@gmail.com</td>\n",
435
+ " <td>3</td>\n",
436
+ " <td>3</td>\n",
437
+ " <td>3</td>\n",
438
+ " <td>3</td>\n",
439
+ " <td>3</td>\n",
440
+ " <td>3</td>\n",
441
+ " <td>3</td>\n",
442
+ " <td>3</td>\n",
443
+ " <td>...</td>\n",
444
+ " <td>3</td>\n",
445
+ " <td>3</td>\n",
446
+ " <td>3</td>\n",
447
+ " <td>3</td>\n",
448
+ " <td>3</td>\n",
449
+ " <td>3</td>\n",
450
+ " <td>3</td>\n",
451
+ " <td>3</td>\n",
452
+ " <td>3</td>\n",
453
+ " <td>3</td>\n",
454
+ " </tr>\n",
455
+ " </tbody>\n",
456
+ "</table>\n",
457
+ "<p>2 rows × 46 columns</p>\n",
458
+ "</div>"
459
+ ],
460
+ "text/plain": [
461
+ " Carimbo de data/hora Endereço de e-mail \\\n",
462
+ "0 07/10/2023 21:55:06 gisellaneo@gmail.com \n",
463
+ "1 11/10/2023 13:11:32 jobstern80@gmail.com \n",
464
+ "\n",
465
+ " Vejo-me como alguém que É conversador, comunicativo \\\n",
466
+ "0 1 \n",
467
+ "1 3 \n",
468
+ "\n",
469
+ " Vejo-me como alguém que Tende a ser crítico com os outros \\\n",
470
+ "0 3 \n",
471
+ "1 3 \n",
472
+ "\n",
473
+ " Vejo-me como alguém que É minucioso e detalhista no trabalho \\\n",
474
+ "0 4 \n",
475
+ "1 3 \n",
476
+ "\n",
477
+ " Vejo-me como alguém que É depressivo, triste \\\n",
478
+ "0 3 \n",
479
+ "1 3 \n",
480
+ "\n",
481
+ " Vejo-me como alguém que É original, tem sempre novas ideias \\\n",
482
+ "0 4 \n",
483
+ "1 3 \n",
484
+ "\n",
485
+ " Vejo-me como alguém que É reservado \\\n",
486
+ "0 1 \n",
487
+ "1 3 \n",
488
+ "\n",
489
+ " Vejo-me como alguém que É prestativo e ajuda os outros \\\n",
490
+ "0 4 \n",
491
+ "1 3 \n",
492
+ "\n",
493
+ " Vejo-me como alguém que Pode ser um tanto descuidado ... \\\n",
494
+ "0 5 ... \n",
495
+ "1 3 ... \n",
496
+ "\n",
497
+ " Vejo-me como alguém que Prefere trabalho rotineiro \\\n",
498
+ "0 4 \n",
499
+ "1 3 \n",
500
+ "\n",
501
+ " Vejo-me como alguém que É sociável, extrovertido \\\n",
502
+ "0 2 \n",
503
+ "1 3 \n",
504
+ "\n",
505
+ " Vejo-me como alguém que É, às vezes, rude (grosseiro) com os outros \\\n",
506
+ "0 3 \n",
507
+ "1 3 \n",
508
+ "\n",
509
+ " Vejo-me como alguém que Faz planos e segue-os à risca \\\n",
510
+ "0 2 \n",
511
+ "1 3 \n",
512
+ "\n",
513
+ " Vejo-me como alguém que Fica nervoso facilmente \\\n",
514
+ "0 4 \n",
515
+ "1 3 \n",
516
+ "\n",
517
+ " Vejo-me como alguém que Gosta de refletir, brincar com as ideias \\\n",
518
+ "0 5 \n",
519
+ "1 3 \n",
520
+ "\n",
521
+ " Vejo-me como alguém que Tem poucos interesses artísticos \\\n",
522
+ "0 1 \n",
523
+ "1 3 \n",
524
+ "\n",
525
+ " Vejo-me como alguém que Gosta de cooperar com os outros \\\n",
526
+ "0 4 \n",
527
+ "1 3 \n",
528
+ "\n",
529
+ " Vejo-me como alguém que É facilmente distraído \\\n",
530
+ "0 4 \n",
531
+ "1 3 \n",
532
+ "\n",
533
+ " Vejo-me como alguém que É sofisticado em artes, música ou literatura \n",
534
+ "0 4 \n",
535
+ "1 3 \n",
536
+ "\n",
537
+ "[2 rows x 46 columns]"
538
+ ]
539
+ },
540
+ "execution_count": 34,
541
+ "metadata": {},
542
+ "output_type": "execute_result"
543
+ }
544
+ ],
545
+ "source": [
546
+ "panda_df"
547
+ ]
548
+ },
549
+ {
550
+ "cell_type": "code",
551
+ "execution_count": 35,
552
+ "metadata": {},
553
+ "outputs": [
554
+ {
555
+ "name": "stdout",
556
+ "output_type": "stream",
557
+ "text": [
558
+ "<class 'pandas.core.frame.DataFrame'>\n",
559
+ "RangeIndex: 2 entries, 0 to 1\n",
560
+ "Data columns (total 46 columns):\n",
561
+ " # Column Non-Null Count Dtype \n",
562
+ "--- ------ -------------- ----- \n",
563
+ " 0 Carimbo de data/hora 2 non-null object\n",
564
+ " 1 Endereço de e-mail 2 non-null object\n",
565
+ " 2 Vejo-me como alguém que É conversador, comunicativo 2 non-null int32 \n",
566
+ " 3 Vejo-me como alguém que Tende a ser crítico com os outros 2 non-null int32 \n",
567
+ " 4 Vejo-me como alguém que É minucioso e detalhista no trabalho 2 non-null object\n",
568
+ " 5 Vejo-me como alguém que É depressivo, triste 2 non-null object\n",
569
+ " 6 Vejo-me como alguém que É original, tem sempre novas ideias 2 non-null object\n",
570
+ " 7 Vejo-me como alguém que É reservado 2 non-null object\n",
571
+ " 8 Vejo-me como alguém que É prestativo e ajuda os outros 2 non-null object\n",
572
+ " 9 Vejo-me como alguém que Pode ser um tanto descuidado 2 non-null object\n",
573
+ " 10 Vejo-me como alguém que É relaxado, controla bem o stress 2 non-null object\n",
574
+ " 11 Vejo-me como alguém que É curioso sobre muitas coisas diferentes 2 non-null object\n",
575
+ " 12 Vejo-me como alguém que É cheio de energia 2 non-null object\n",
576
+ " 13 Vejo-me como alguém que Começa discussões, disputas, com os outros 2 non-null object\n",
577
+ " 14 Vejo-me como alguém que É um trabalhador de confiança 2 non-null object\n",
578
+ " 15 Vejo-me como alguém que Fica tenso com frequência 2 non-null object\n",
579
+ " 16 Vejo-me como alguém que É engenhoso, alguém que gosta de analisar profundamente as coisas 2 non-null object\n",
580
+ " 17 Vejo-me como alguém que Gera muito entusiasmo 2 non-null object\n",
581
+ " 18 Vejo-me como alguém que Tem capacidade de perdoar, perdoa facilmente 2 non-null object\n",
582
+ " 19 Vejo-me como alguém que Tende a ser desorganizado 2 non-null object\n",
583
+ " 20 Vejo-me como alguém que Preocupa-se muito com tudo 2 non-null object\n",
584
+ " 21 Vejo-me como alguém que Tem uma imaginação fértil 2 non-null object\n",
585
+ " 22 Vejo-me como alguém que Tende a ser quieto, calado 2 non-null object\n",
586
+ " 23 Vejo-me como alguém que É geralmente confiável 2 non-null object\n",
587
+ " 24 Vejo-me como alguém que Tende a ser preguiçoso 2 non-null object\n",
588
+ " 25 Vejo-me como alguém que É emocionalmente estável, não se altera facilmente 2 non-null object\n",
589
+ " 26 Vejo-me como alguém que É inventivo, criativo 2 non-null object\n",
590
+ " 27 Vejo-me como alguém que É assertivo, não teme expressar o que sente 2 non-null object\n",
591
+ " 28 Vejo-me como alguém que Às vezes é frio e distante 2 non-null object\n",
592
+ " 29 Vejo-me como alguém que Insiste até concluir a tarefa ou o trabalho 2 non-null object\n",
593
+ " 30 Vejo-me como alguém que É temperamental, muda de humor facilmente 2 non-null object\n",
594
+ " 31 Vejo-me como alguém que Valoriza o artístico, o estético 2 non-null object\n",
595
+ " 32 Vejo-me como alguém que É, às vezes, tímido e inibido 2 non-null object\n",
596
+ " 33 Vejo-me como alguém que É amável, tem consideração pelos outros 2 non-null object\n",
597
+ " 34 Vejo-me como alguém que Faz as coisas com eficiência 2 non-null object\n",
598
+ " 35 Vejo-me como alguém que Mantém-se calmo nas situações de tensão 2 non-null object\n",
599
+ " 36 Vejo-me como alguém que Prefere trabalho rotineiro 2 non-null object\n",
600
+ " 37 Vejo-me como alguém que É sociável, extrovertido 2 non-null object\n",
601
+ " 38 Vejo-me como alguém que É, às vezes, rude (grosseiro) com os outros 2 non-null object\n",
602
+ " 39 Vejo-me como alguém que Faz planos e segue-os à risca 2 non-null object\n",
603
+ " 40 Vejo-me como alguém que Fica nervoso facilmente 2 non-null object\n",
604
+ " 41 Vejo-me como alguém que Gosta de refletir, brincar com as ideias 2 non-null object\n",
605
+ " 42 Vejo-me como alguém que Tem poucos interesses artísticos 2 non-null object\n",
606
+ " 43 Vejo-me como alguém que Gosta de cooperar com os outros 2 non-null object\n",
607
+ " 44 Vejo-me como alguém que É facilmente distraído 2 non-null object\n",
608
+ " 45 Vejo-me como alguém que É sofisticado em artes, música ou literatura 2 non-null object\n",
609
+ "dtypes: int32(2), object(44)\n",
610
+ "memory usage: 848.0+ bytes\n"
611
+ ]
612
+ }
613
+ ],
614
+ "source": [
615
+ "panda_df.info()"
616
+ ]
617
+ },
618
+ {
619
+ "cell_type": "code",
620
+ "execution_count": 32,
621
+ "metadata": {},
622
+ "outputs": [
623
+ {
624
+ "data": {
625
+ "text/html": [
626
+ "<div>\n",
627
+ "<style scoped>\n",
628
+ " .dataframe tbody tr th:only-of-type {\n",
629
+ " vertical-align: middle;\n",
630
+ " }\n",
631
+ "\n",
632
+ " .dataframe tbody tr th {\n",
633
+ " vertical-align: top;\n",
634
+ " }\n",
635
+ "\n",
636
+ " .dataframe thead th {\n",
637
+ " text-align: right;\n",
638
+ " }\n",
639
+ "</style>\n",
640
+ "<table border=\"1\" class=\"dataframe\">\n",
641
+ " <thead>\n",
642
+ " <tr style=\"text-align: right;\">\n",
643
+ " <th></th>\n",
644
+ " <th>Carimbo de data/hora</th>\n",
645
+ " <th>Endereço de e-mail</th>\n",
646
+ " <th>Vejo-me como alguém que É conversador, comunicativo</th>\n",
647
+ " <th>Vejo-me como alguém que Tende a ser crítico com os outros</th>\n",
648
+ " <th>Vejo-me como alguém que É minucioso e detalhista no trabalho</th>\n",
649
+ " <th>Vejo-me como alguém que É depressivo, triste</th>\n",
650
+ " <th>Vejo-me como alguém que É original, tem sempre novas ideias</th>\n",
651
+ " <th>Vejo-me como alguém que É reservado</th>\n",
652
+ " <th>Vejo-me como alguém que É prestativo e ajuda os outros</th>\n",
653
+ " <th>Vejo-me como alguém que Pode ser um tanto descuidado</th>\n",
654
+ " <th>...</th>\n",
655
+ " <th>Vejo-me como alguém que Prefere trabalho rotineiro</th>\n",
656
+ " <th>Vejo-me como alguém que É sociável, extrovertido</th>\n",
657
+ " <th>Vejo-me como alguém que É, às vezes, rude (grosseiro) com os outros</th>\n",
658
+ " <th>Vejo-me como alguém que Faz planos e segue-os à risca</th>\n",
659
+ " <th>Vejo-me como alguém que Fica nervoso facilmente</th>\n",
660
+ " <th>Vejo-me como alguém que Gosta de refletir, brincar com as ideias</th>\n",
661
+ " <th>Vejo-me como alguém que Tem poucos interesses artísticos</th>\n",
662
+ " <th>Vejo-me como alguém que Gosta de cooperar com os outros</th>\n",
663
+ " <th>Vejo-me como alguém que É facilmente distraído</th>\n",
664
+ " <th>Vejo-me como alguém que É sofisticado em artes, música ou literatura</th>\n",
665
+ " </tr>\n",
666
+ " </thead>\n",
667
+ " <tbody>\n",
668
+ " <tr>\n",
669
+ " <th>0</th>\n",
670
+ " <td>07/10/2023 21:55:06</td>\n",
671
+ " <td>gisellaneo@gmail.com</td>\n",
672
+ " <td>1</td>\n",
673
+ " <td>3</td>\n",
674
+ " <td>4</td>\n",
675
+ " <td>3</td>\n",
676
+ " <td>4</td>\n",
677
+ " <td>1</td>\n",
678
+ " <td>4</td>\n",
679
+ " <td>5</td>\n",
680
+ " <td>...</td>\n",
681
+ " <td>4</td>\n",
682
+ " <td>2</td>\n",
683
+ " <td>3</td>\n",
684
+ " <td>2</td>\n",
685
+ " <td>4</td>\n",
686
+ " <td>5</td>\n",
687
+ " <td>1</td>\n",
688
+ " <td>4</td>\n",
689
+ " <td>4</td>\n",
690
+ " <td>4</td>\n",
691
+ " </tr>\n",
692
+ " <tr>\n",
693
+ " <th>1</th>\n",
694
+ " <td>11/10/2023 13:11:32</td>\n",
695
+ " <td>jobstern80@gmail.com</td>\n",
696
+ " <td>3</td>\n",
697
+ " <td>3</td>\n",
698
+ " <td>3</td>\n",
699
+ " <td>3</td>\n",
700
+ " <td>3</td>\n",
701
+ " <td>3</td>\n",
702
+ " <td>3</td>\n",
703
+ " <td>3</td>\n",
704
+ " <td>...</td>\n",
705
+ " <td>3</td>\n",
706
+ " <td>3</td>\n",
707
+ " <td>3</td>\n",
708
+ " <td>3</td>\n",
709
+ " <td>3</td>\n",
710
+ " <td>3</td>\n",
711
+ " <td>3</td>\n",
712
+ " <td>3</td>\n",
713
+ " <td>3</td>\n",
714
+ " <td>3</td>\n",
715
+ " </tr>\n",
716
+ " </tbody>\n",
717
+ "</table>\n",
718
+ "<p>2 rows × 46 columns</p>\n",
719
+ "</div>"
720
+ ],
721
+ "text/plain": [
722
+ " Carimbo de data/hora Endereço de e-mail \\\n",
723
+ "0 07/10/2023 21:55:06 gisellaneo@gmail.com \n",
724
+ "1 11/10/2023 13:11:32 jobstern80@gmail.com \n",
725
+ "\n",
726
+ " Vejo-me como alguém que É conversador, comunicativo \\\n",
727
+ "0 1 \n",
728
+ "1 3 \n",
729
+ "\n",
730
+ " Vejo-me como alguém que Tende a ser crítico com os outros \\\n",
731
+ "0 3 \n",
732
+ "1 3 \n",
733
+ "\n",
734
+ " Vejo-me como alguém que É minucioso e detalhista no trabalho \\\n",
735
+ "0 4 \n",
736
+ "1 3 \n",
737
+ "\n",
738
+ " Vejo-me como alguém que É depressivo, triste \\\n",
739
+ "0 3 \n",
740
+ "1 3 \n",
741
+ "\n",
742
+ " Vejo-me como alguém que É original, tem sempre novas ideias \\\n",
743
+ "0 4 \n",
744
+ "1 3 \n",
745
+ "\n",
746
+ " Vejo-me como alguém que É reservado \\\n",
747
+ "0 1 \n",
748
+ "1 3 \n",
749
+ "\n",
750
+ " Vejo-me como alguém que É prestativo e ajuda os outros \\\n",
751
+ "0 4 \n",
752
+ "1 3 \n",
753
+ "\n",
754
+ " Vejo-me como alguém que Pode ser um tanto descuidado ... \\\n",
755
+ "0 5 ... \n",
756
+ "1 3 ... \n",
757
+ "\n",
758
+ " Vejo-me como alguém que Prefere trabalho rotineiro \\\n",
759
+ "0 4 \n",
760
+ "1 3 \n",
761
+ "\n",
762
+ " Vejo-me como alguém que É sociável, extrovertido \\\n",
763
+ "0 2 \n",
764
+ "1 3 \n",
765
+ "\n",
766
+ " Vejo-me como alguém que É, às vezes, rude (grosseiro) com os outros \\\n",
767
+ "0 3 \n",
768
+ "1 3 \n",
769
+ "\n",
770
+ " Vejo-me como alguém que Faz planos e segue-os à risca \\\n",
771
+ "0 2 \n",
772
+ "1 3 \n",
773
+ "\n",
774
+ " Vejo-me como alguém que Fica nervoso facilmente \\\n",
775
+ "0 4 \n",
776
+ "1 3 \n",
777
+ "\n",
778
+ " Vejo-me como alguém que Gosta de refletir, brincar com as ideias \\\n",
779
+ "0 5 \n",
780
+ "1 3 \n",
781
+ "\n",
782
+ " Vejo-me como alguém que Tem poucos interesses artísticos \\\n",
783
+ "0 1 \n",
784
+ "1 3 \n",
785
+ "\n",
786
+ " Vejo-me como alguém que Gosta de cooperar com os outros \\\n",
787
+ "0 4 \n",
788
+ "1 3 \n",
789
+ "\n",
790
+ " Vejo-me como alguém que É facilmente distraído \\\n",
791
+ "0 4 \n",
792
+ "1 3 \n",
793
+ "\n",
794
+ " Vejo-me como alguém que É sofisticado em artes, música ou literatura \n",
795
+ "0 4 \n",
796
+ "1 3 \n",
797
+ "\n",
798
+ "[2 rows x 46 columns]"
799
+ ]
800
+ },
801
+ "execution_count": 32,
802
+ "metadata": {},
803
+ "output_type": "execute_result"
804
+ }
805
+ ],
806
+ "source": [
807
+ "panda_df"
808
+ ]
809
+ }
810
+ ],
811
+ "metadata": {
812
+ "kernelspec": {
813
+ "display_name": "Python 3",
814
+ "language": "python",
815
+ "name": "python3"
816
+ },
817
+ "language_info": {
818
+ "codemirror_mode": {
819
+ "name": "ipython",
820
+ "version": 3
821
+ },
822
+ "file_extension": ".py",
823
+ "mimetype": "text/x-python",
824
+ "name": "python",
825
+ "nbconvert_exporter": "python",
826
+ "pygments_lexer": "ipython3",
827
+ "version": "3.10.11"
828
+ }
829
+ },
830
+ "nbformat": 4,
831
+ "nbformat_minor": 2
832
+ }
datasets/dicas.csv ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ id,tipo,titulo,constructo,dicas
2
+ 1,"Escalas de Motivação","Motivação","Interesse (Orientação a metas intrínsecas, Orientação a metas extrínsecas, Valorização da atividade e Controle do aprendizado)","Leia rapidamente a lista com os conteúdos do seu material didático ou o programa da disciplina. / Faça uma lista dos três tópicos que mais te interessam e dos três tópicos que menos te interessam. / Preste atenção a esses tópicos em particular. / O que nos três tópicos mais interessantes faz com que você goste tanto deles? / O que faz os três outros tópicos desinteressantes? / Você encontra alguma característica dos três tópicos mais interessantes nos tópicos menos interessantes? / Se você conseguir identificar o quê, nos três tópicos mais interessantes, faz com que você goste deles, talvez você seja capaz de aplicar o que encontrou aos três menos interessantes. / E talvez você descubra que os tópicos desinteressantes não são tão desinteressantes assim!"
3
+ 2,"Escalas de Motivação","Motivação","Expectativa de Sucesso","Avalie como você aborda as tarefas da disciplina sob diferentes pontos de vista. / Descreva a eficácia e a ineficácia da sua abordagem a partir do seu ponto de vista. / Imagine como um colega de classe avaliaria a sua abordagem. / Ao analisar a forma como você lida com uma tarefa, você pode ser capaz de descobrir o que está fazendo certo e o que está fazendo errado e então pode mudar a sua abordagem. / A sua confiança em ter um bom desempenho pode aumentar ao compreender melhor a forma como você estuda, o que funciona e o que não funciona."
4
+ 3,"Escalas de Motivação","Motivação","Ansiedade em testes","Desenvolver boas habilidades de estudo resulta em menor ansiedade. / Prepare-se bem para as aulas e tente terminar as tarefas pontualmente. / Não espere até o último minuto para realizar as tarefas ou para se preparar para uma prova. / Isso ajudará você a se tornar confiante em situações de teste e talvez reduza a sua ansiedade. / Ao fazer uma prova, concentre-se em um item de cada vez; se estiver com dificuldades em uma questão, siga em frente e volte a essa questão depois. / Lembre-se de que se você está bem preparado; se não conseguir responder algumas questões, tudo bem, você ainda será capaz de responder as outras."
5
+ 4,"Escalas de Estratégias de Aprendizagem","Estratégia Cognitiva","Ensaio (memorização)","Liste os termos e tópicos importantes da disciplina. / Defina-os e os repita em voz alta. / Divida essa lista em listas menores compostas de termos que se relacionam. / Construa imagens ou rimas que te ajudarão a lembrar dessas listas. / Faça perguntas que ajudarão você a avaliar se você se lembra delas ou não."
6
+ 5,"Escalas de Estratégias de Aprendizagem","Estratégia Cognitiva","Elaboração","Parafraseie e resuma as informações importantes. / Use suas próprias palavras para descrever o conteúdo visto durante as aulas ou em leituras específicas. / Faça de conta que você é o professor e está tentando explicar a matéria para os alunos. / Tente descobrir como cada tópico da matéria se relaciona com os outros. / Quais são as relações entre o que você ouviu em sala de aula, conversou em discussões e leu no livro?"
7
+ 6,"Escalas de Estratégias de Aprendizagem","Estratégia Cognitiva","Organização","Faça um resumo do seu material da disciplina e identifique onde seu texto e a aula se sobrepõem e não se sobrepõem. / Isso vai dar a você um ponto departida para estabelecer conexões entre ideias apresentadas em dois contextos diferentes. / Faça gráficos, diagramas ou tabelas dos conceitos importantes. / Organogramas ou diagramas de árvore geralmente são bastante úteis para ajudar a entender como as ideias se reúnem diferentemente."
8
+ 7,"Escalas de Estratégias de Aprendizagem","Autorregulação Metacognitiva","Autorregulação Metacognitiva","Leia rapidamente seu material antes de começar a ver como ele está organizado. / Olhe para os títulos e subtítulos do texto para ter uma ideia de como as coisas se relacionam umas com as outras. / Enquanto estiver lendo, faça perguntas a si mesmo sobre o parágrafo que acabou de ler e escreva palavras-chave nas margens do livro ou em um caderno. / Tente determinar quais conceitos você não compreende bem. / Apesar de esse método demorar bastante no início, você tem mais chance de se lembrar do que leu. / Isso economizará seu tempo depois quando estudar para a prova."
9
+ 8,"Escalas de Estratégias de Aprendizagem","Administração dos estudos","Tempo e Ambiente de Estudo","Acompanhe o que você faz no seu tempo de estudo durante uma semana. / Escreva seus objetivos para cada período de estudo e anote o que você realmente cumpriu durante esse tempo. / Analise o resultado ao final de uma semana. / Talvez você precise mudar seu local de estudo, o período de estudo ou com quem você estuda. / Tente criar uma agenda que funcione bem para você."
10
+ 9,"Escalas de Estratégias de Aprendizagem","Administração dos estudos","Administração de Esforços","Faça uma lista dos tópicos que você deixa para estudar no outro dia. / Tente analisar por que você adia estudar esses tópicos conversando com outros alunos. / Ao falar com eles, talvez você considere uma abordagem que te ajude a agir mais rapidamente ao invés de demorar a estudar o material."
datasets/mslq.csv ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ id_questao,tipo,constructo,dsc_questao
2
+ "q1","Escalas de Motivacao","Orientação a Metas Intrínsecas","Prefiro um trabalho de classe desafiador em que eu possa aprender coisas novas."
3
+ "q2","Escalas de Motivacao","Orientação a Metas Intrínsecas","Costumo escolher tópicos de assuntos dos quais aprenderei algo, mesmo que exijam mais trabalhos."
4
+ "q3","Escalas de Motivacao","Orientação a Metas Extrínsecas","Comparado com outros alunos desta turma, espero ter sucesso."
5
+ "q4","Escalas de Motivacao","Orientação a Metas Extrínsecas","Eu acho que vou receber uma boa nota nesta aula."
6
+ "q5","Escalas de Motivacao","Valorização da Atividade","É importante para mim aprender o que está sendo ensinado na aula."
7
+ "q6","Escalas de Motivacao","Valorização da Atividade","Gosto do que estou aprendendo na aula."
8
+ "q7","Escalas de Motivacao","Valorização da Atividade","Acho que vou poder usar o que aprendi nesta aula em outras aulas."
9
+ "q8","Escalas de Motivacao","Valorização da Atividade","Acho que o que estou aprendendo nesta aula é útil para meu aprendizado."
10
+ "q9","Escalas de Motivacao","Valorização da Atividade","Eu acho que o que estamos aprendendo nesta aula é interessante."
11
+ "q10","Escalas de Motivacao","Valorização da Atividade","Entender esse assunto é importante para mim."
12
+ "q11","Escalas de Motivacao","Controle do Aprendizado","Comparado com os outros alunos, acho que sou um bom aluno."
13
+ "q12","Escalas de Motivacao","Controle do Aprendizado","Minhas habilidades de estudo são excelentes em comparação com outras pessoas nesta classe."
14
+ "q13","Escalas de Motivacao","Controle do Aprendizado","Comparado com outros alunos desta turma, acho que sei bastante sobre o conteúdo."
15
+ "q14","Escalas de Motivacao","Autoeficácia para Aprendizado","Estou certo de que posso entender as ideias ensinadas neste curso."
16
+ "q15","Escalas de Motivacao","Autoeficácia para Aprendizado","Espero me sair muito bem nesta aula."
17
+ "q16","Escalas de Motivacao","Autoeficácia para Aprendizado","Tenho certeza de que posso fazer um excelente trabalho nos problemas e tarefas atribuídos a esta classe."
18
+ "q17","Escalas de Motivacao","Autoeficácia para Aprendizado","Eu sei que poderei aprender o material para esta aula."
19
+ "q18","Escalas de Motivacao","Ansiedade em Testes","Fico tão nervoso durante uma prova que não consigo lembrar dos assuntos que aprendi."
20
+ "q19","Escalas de Motivacao","Ansiedade em Testes","Sinto uma sensação desconfortável e chateada quando faço uma prova."
21
+ "q20","Escalas de Motivacao","Ansiedade em Testes","Preocupo-me muito com testes."
22
+ "q21","Escalas de Motivacao","Ansiedade em Testes","Quando faço uma prova, penso em como estou mal."
23
+ "q22","Escalas de Motivacao","Ansiedade em Testes","Quando estudo para uma prova, tento lembrar o máximo de fatos que consigo."
24
+ "q23","Escalas de Estratégias de aprendizagem","Ensaio (memorização)","Quando faço a lição de casa, tento lembrar o que o professor disse em sala de aula para que eu possa responder as perguntas corretamente."
25
+ "q24","Escalas de Estratégias de aprendizagem","Ensaio (memorização)","Trabalho em exercícios práticos e respondo às perguntas do final do capítulo, mesmo quando não precise."
26
+ "q25","Escalas de Estratégias de aprendizagem","Ensaio (memorização)","Quando estudo para uma prova, pratico, repetindo os fatos importantes repetidamente para eu mesmo."
27
+ "q26","Escalas de Estratégias de aprendizagem","Ensaio (memorização)","Uso o que aprendi com as tarefas de casa antigas e o livro didático para fazer novas atribuições."
28
+ "q27","Escalas de Estratégias de aprendizagem","Ensaio (memorização)","Quando leio os materiais para esta aula, digo repetidamente as palavras para mim mesmo para que me ajude a lembrar."
29
+ "q28","Escalas de Estratégias de aprendizagem","Elaboração","Quando estudo para uma prova, tento reunir as informações da aula em um caderno."
30
+ "q29","Escalas de Estratégias de aprendizagem","Elaboração","Ao ler, tento conectar as coisas sobre as quais estou lendo com o que já conheço."
31
+ "q30","Escalas de Estratégias de aprendizagem","Organização","É difícil para mim decidir quais são as principais ideias no que leio."
32
+ "q31","Escalas de Estratégias de aprendizagem","Organização","Ao estudar, faço anotações para me lembrar do assunto que estudei."
33
+ "q32","Escalas de Estratégias de aprendizagem","Organização","Descrevo os capítulos do meu livro para me ajudar a estudar."
34
+ "q33","Escalas de Estratégias de aprendizagem","Pensamento Crítico","Quando estudo, coloco ideias importantes em minhas próprias palavras."
35
+ "q34","Escalas de Estratégias de aprendizagem","Autorregulação Metacognitiva","Faço perguntas para ter certeza de que conheço o material que tenho estudado."
36
+ "q35","Escalas de Estratégias de aprendizagem","Autorregulação Metacognitiva","Costumo achar que sei sobre o assunto da aula, mas não sei do que se trata. (Reversa)."
37
+ "q36","Escalas de Estratégias de aprendizagem","Autorregulação Metacognitiva","Acho que quando o professor está falando, penso em outras coisas e realmente não ouço o que ele está dizendo. (Reversa)."
38
+ "q37","Escalas de Estratégias de aprendizagem","Autorregulação Metacognitiva","Quando estou estudando um conteúdo, tento fazer com que tudo se encaixe."
39
+ "q38","Escalas de Estratégias de aprendizagem","Autorregulação Metacognitiva","Quando estou lendo, paro de vez em quando e repito o que li."
40
+ "q39","Escalas de Estratégias de aprendizagem","Tempo e Ambiente de Estudo","Antes de começar a estudar, penso nas coisas que precisarei fazer para aprender."
41
+ "q40","Escalas de Estratégias de aprendizagem","Administração de Esforços","Mesmo quando vou mal em uma prova, tento aprender com meus erros."
42
+ "q41","Escalas de Estratégias de aprendizagem","Administração de Esforços","Quando o trabalho é difícil, desisto ou estudo apenas as partes fáceis. (Reversa)."
43
+ "q42","Escalas de Estratégias de aprendizagem","Administração de Esforços","Eu sempre tento entender o que o professor está dizendo, mesmo que isso não faça sentido."
44
+ "q43","Escalas de Estratégias de aprendizagem","Administração de Esforços","Mesmo quando os materiais de estudo são monótonos e desinteressantes, continuo fazendo a tarefa até terminar."
45
+ "q44","Escalas de Estratégias de aprendizagem","Administração de Esforços","Trabalho duro para obter uma boa nota, mesmo quando não gosto de uma aula."
46
+
47
+
48
+
google/autenticacao.py ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from __future__ import print_function
2
+
3
+ from googleapiclient import discovery
4
+ from httplib2 import Http
5
+ from oauth2client import file, client, tools
6
+
7
+ SCOPES = [ 'https://www.googleapis.com/auth/classroom.courses',
8
+ 'https://www.googleapis.com/auth/drive.readonly.metadata',
9
+ 'https://www.googleapis.com/auth/classroom.announcements',
10
+ 'https://www.googleapis.com/auth/classroom.courses',
11
+ 'https://www.googleapis.com/auth/classroom.coursework.me',
12
+ 'https://www.googleapis.com/auth/classroom.coursework.students',
13
+ 'https://www.googleapis.com/auth/classroom.courseworkmaterials',
14
+ 'https://www.googleapis.com/auth/classroom.guardianlinks.students',
15
+ 'https://www.googleapis.com/auth/classroom.profile.emails',
16
+ 'https://www.googleapis.com/auth/classroom.profile.photos',
17
+ 'https://www.googleapis.com/auth/classroom.push-notifications',
18
+ 'https://www.googleapis.com/auth/classroom.rosters',
19
+ 'https://www.googleapis.com/auth/classroom.rosters.readonly',
20
+ 'https://www.googleapis.com/auth/classroom.topics']
21
+
22
+ store = file.Storage('token.json')
23
+ creds = store.get()
24
+ flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
25
+ creds = tools.run_flow(flow, store)
26
+
27
+ Classroom = discovery.build('classroom', 'v1', http=creds.authorize(Http()))
28
+
google/base_test.py ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright 2018 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ from __future__ import print_function
16
+
17
+ import sys
18
+ import unittest
19
+
20
+ import httplib2
21
+ from googleapiclient import errors
22
+ from googleapiclient.discovery import build
23
+ from oauth2client.client import GoogleCredentials
24
+
25
+ SCOPES = 'https://www.googleapis.com/auth/classroom.courses'
26
+
27
+
28
+ class BaseTest(unittest.TestCase):
29
+ @classmethod
30
+ def setUpClass(cls):
31
+ cls.credentials = cls.create_credentials()
32
+ http = cls.credentials.authorize(httplib2.Http())
33
+ cls.credentials.refresh(http)
34
+ cls.service = build('classroom', 'v1', http=http)
35
+ cls.stdout = sys.stdout
36
+ sys.stdout = None
37
+
38
+ @classmethod
39
+ def tearDownClass(cls):
40
+ # Restore STDOUT.
41
+ sys.stdout = cls.stdout
42
+
43
+ @classmethod
44
+ def create_credentials(cls):
45
+ cls.credentials = GoogleCredentials.get_application_default()
46
+ scope = ['https://www.googleapis.com/auth/drive']
47
+ return cls.credentials.create_scoped(scope)
48
+
49
+ def setUp(self):
50
+ self.courses_to_delete = []
51
+ print("Meow" + str(self.courses_to_delete))
52
+
53
+ def tearDown(self):
54
+ for course_id in self.courses_to_delete:
55
+ try:
56
+ self.service.courses().delete(id=course_id).execute()
57
+ except errors.HttpError:
58
+ print('Unable to delete file %s' % course_id)
59
+
60
+ def delete_course_on_cleanup(self, course_id):
61
+ self.courses_to_delete.append(course_id)
62
+
63
+
64
+ if __name__ == '__main__':
65
+ unittest.main()
google/classroom_create_coursework.py ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from __future__ import print_function
2
+
3
+ import google.auth
4
+ from googleapiclient.discovery import build
5
+ from googleapiclient.errors import HttpError
6
+ from oauth2client import file, client, tools
7
+
8
+ def classroom_create_coursework(course_id):
9
+
10
+ """
11
+ Creates the coursework the user has access to.
12
+ Load pre-authorized user credentials from the environment.
13
+ TODO(developer) - See https://developers.google.com/identity
14
+ for guides on implementing OAuth2 for the application.
15
+ """
16
+
17
+ SCOPES = 'https://www.googleapis.com/auth/classroom.courses'
18
+ store = file.Storage('storage.json')
19
+ creds = store.get()
20
+ flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
21
+ creds = tools.run_flow(flow, store)
22
+
23
+ # creds, _ = google.auth.default()
24
+ # pylint: disable=maybe-no-member
25
+
26
+ try:
27
+ service = build('classroom', 'v1', credentials=creds)
28
+ coursework = {
29
+ 'title': 'Ant colonies',
30
+ 'description': '''Read the article about ant colonies
31
+ and complete the quiz.''',
32
+ 'materials': [
33
+ {'link': {'url': 'http://example.com/ant-colonies'}},
34
+ {'link': {'url': 'http://example.com/ant-quiz'}}
35
+ ],
36
+ 'workType': 'ASSIGNMENT',
37
+ 'state': 'PUBLISHED',
38
+ }
39
+ coursework = service.courses().courseWork().create(
40
+ courseId=course_id, body=coursework).execute()
41
+ print(f"Assignment created with ID {coursework.get('id')}")
42
+ return coursework
43
+
44
+ except HttpError as error:
45
+ print(f"An error occurred: {error}")
46
+ return error
47
+
48
+
49
+ if __name__ == '__main__':
50
+ # Put the course_id of course whose coursework needs to be created,
51
+ # the user has access to.
52
+ classroom_create_coursework("617087903681")
google/drive_list.py ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from __future__ import print_function
2
+
3
+ from googleapiclient import discovery
4
+ from httplib2 import Http
5
+ from oauth2client import file, client, tools
6
+
7
+ SCOPES = 'https://www.googleapis.com/auth/drive.readonly.metadata'
8
+ store = file.Storage('storage.json')
9
+ creds = store.get()
10
+ if not creds or creds.invalid:
11
+ flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
12
+ creds = tools.run_flow(flow, store)
13
+
14
+ DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
15
+
16
+ files = DRIVE.files().list().execute().get('files', [])
17
+ for f in files:
18
+ print(f['name'], f['mimeType'])
google/get_course.py ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Copyright 2022 Google LLC
3
+
4
+ Licensed under the Apache License, Version 2.0 (the "License");
5
+ you may not use this file except in compliance with the License.
6
+ You may obtain a copy of the License at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS,
12
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ See the License for the specific language governing permissions and
14
+ limitations under the License.
15
+
16
+ """
17
+
18
+ # [START classroom_get_course]
19
+ from __future__ import print_function
20
+
21
+ import google.auth
22
+ from googleapiclient.discovery import build
23
+ from googleapiclient.errors import HttpError
24
+
25
+
26
+ def classroom_get_course(course_id):
27
+
28
+ """
29
+ Prints the name of the with specific course_id.
30
+ Load pre-authorized user credentials from the environment.
31
+ TODO(developer) - See https://developers.google.com/identity
32
+ for guides on implementing OAuth2 for the application.
33
+ """
34
+
35
+ creds, _ = google.auth.default()
36
+ # pylint: disable=maybe-no-member
37
+ course = None
38
+ try:
39
+ service = build('classroom', 'v1', credentials=creds)
40
+ course = service.courses().get(id=course_id).execute()
41
+ print(f"Course found : {course.get('name')}")
42
+ except HttpError as error:
43
+ print(f"An error occurred: {error}")
44
+ print(f"Course not found: {course_id}")
45
+ return error
46
+ return course
47
+
48
+
49
+ if __name__ == '__main__':
50
+ # Put the course_id of course whose information needs to be fetched.
51
+ classroom_get_course('course_id')
52
+
53
+ # [END classroom_get_courses]
google/modulo_consultar_respostas_atividade.py ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from __future__ import print_function
2
+
3
+ import google.auth
4
+ from googleapiclient.discovery import build
5
+ from googleapiclient.errors import HttpError
6
+
7
+ from google.auth.transport.requests import Request
8
+ from google.oauth2.credentials import Credentials
9
+ from google_auth_oauthlib.flow import InstalledAppFlow
10
+ from googleapiclient.discovery import build
11
+ from googleapiclient.errors import HttpError
12
+ import os.path
13
+
14
+ # If modifying these scopes, delete the file token.json.
15
+ SCOPES = [ 'https://www.googleapis.com/auth/classroom.courses',
16
+ 'https://www.googleapis.com/auth/drive.readonly.metadata',
17
+ 'https://www.googleapis.com/auth/classroom.announcements',
18
+ 'https://www.googleapis.com/auth/classroom.courses',
19
+ 'https://www.googleapis.com/auth/classroom.coursework.me',
20
+ 'https://www.googleapis.com/auth/classroom.coursework.students',
21
+ 'https://www.googleapis.com/auth/classroom.courseworkmaterials',
22
+ 'https://www.googleapis.com/auth/classroom.guardianlinks.students',
23
+ 'https://www.googleapis.com/auth/classroom.profile.emails',
24
+ 'https://www.googleapis.com/auth/classroom.profile.photos',
25
+ 'https://www.googleapis.com/auth/classroom.push-notifications',
26
+ 'https://www.googleapis.com/auth/classroom.rosters',
27
+ 'https://www.googleapis.com/auth/classroom.rosters.readonly',
28
+ 'https://www.googleapis.com/auth/classroom.topics']
29
+
30
+ def carregar_credenciais():
31
+ creds = None
32
+ # The file token.json stores the user's access and refresh tokens, and is
33
+ # created automatically when the authorization flow completes for the first
34
+ # time.
35
+ if os.path.exists('token.json'):
36
+ creds = Credentials.from_authorized_user_file('token.json', SCOPES)
37
+ # If there are no (valid) credentials available, let the user log in.
38
+ if not creds or not creds.valid:
39
+ if creds and creds.expired and creds.refresh_token:
40
+ creds.refresh(Request())
41
+ else:
42
+ flow = InstalledAppFlow.from_client_secrets_file(
43
+ 'credentials.json', SCOPES)
44
+ creds = flow.run_local_server(port=0)
45
+ # Save the credentials for the next run
46
+ with open('token.json', 'w') as token:
47
+ token.write(creds.to_json())
48
+ return creds
49
+
50
+
51
+ def classroom_list_submissions(creds, course_id, coursework_id):
52
+
53
+ submissions = []
54
+ page_token = None
55
+
56
+ try:
57
+ service = build('classroom', 'v1', credentials=creds)
58
+ while True:
59
+ coursework = service.courses().courseWork()
60
+ response = coursework.studentSubmissions().list(
61
+ pageToken=page_token,
62
+ courseId=course_id,
63
+ courseWorkId=coursework_id,
64
+ pageSize=10).execute()
65
+ submissions.extend(response.get('studentSubmissions', []))
66
+ page_token = response.get('nextPageToken', None)
67
+ if not page_token:
68
+ break
69
+
70
+ if not submissions:
71
+ print('No student submissions found.')
72
+
73
+ print('Student Submissions:')
74
+ for submission in submissions:
75
+ print(f"Submitted at:"
76
+ f"{(submission.get('id'), submission.get('creationTime'))}")
77
+
78
+ except HttpError as error:
79
+ print(f"An error occurred: {error}")
80
+ submissions = None
81
+ return submissions
82
+
83
+
84
+ if __name__ == '__main__':
85
+ classroom_list_submissions(carregar_credenciais(), 453686957652, 466086979658)
google/modulo_criar_atividade.py ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright 2018 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ # [START classroom_quickstart]
16
+ from __future__ import print_function
17
+
18
+ import os.path
19
+
20
+ from google.auth.transport.requests import Request
21
+ from google.oauth2.credentials import Credentials
22
+ from google_auth_oauthlib.flow import InstalledAppFlow
23
+ from googleapiclient.discovery import build
24
+ from googleapiclient.errors import HttpError
25
+
26
+ SCOPES = [ 'https://www.googleapis.com/auth/classroom.courses',
27
+ 'https://www.googleapis.com/auth/drive.readonly.metadata',
28
+ 'https://www.googleapis.com/auth/classroom.announcements',
29
+ 'https://www.googleapis.com/auth/classroom.courses',
30
+ 'https://www.googleapis.com/auth/classroom.coursework.me',
31
+ 'https://www.googleapis.com/auth/classroom.coursework.students',
32
+ 'https://www.googleapis.com/auth/classroom.courseworkmaterials',
33
+ 'https://www.googleapis.com/auth/classroom.guardianlinks.students',
34
+ 'https://www.googleapis.com/auth/classroom.profile.emails',
35
+ 'https://www.googleapis.com/auth/classroom.profile.photos',
36
+ 'https://www.googleapis.com/auth/classroom.push-notifications',
37
+ 'https://www.googleapis.com/auth/classroom.rosters',
38
+ 'https://www.googleapis.com/auth/classroom.rosters.readonly',
39
+ 'https://www.googleapis.com/auth/classroom.topics']
40
+
41
+ def carregar_credenciais():
42
+ creds = None
43
+ # The file token.json stores the user's access and refresh tokens, and is
44
+ # created automatically when the authorization flow completes for the first
45
+ # time.
46
+ if os.path.exists('token.json'):
47
+ creds = Credentials.from_authorized_user_file('token.json', SCOPES)
48
+ # If there are no (valid) credentials available, let the user log in.
49
+ if not creds or not creds.valid:
50
+ if creds and creds.expired and creds.refresh_token:
51
+ creds.refresh(Request())
52
+ else:
53
+ flow = InstalledAppFlow.from_client_secrets_file(
54
+ 'credentials.json', SCOPES)
55
+ creds = flow.run_local_server(port=0)
56
+ # Save the credentials for the next run
57
+ with open('token.json', 'w') as token:
58
+ token.write(creds.to_json())
59
+ return creds
60
+
61
+ def criar_atividade(creds, course_id):
62
+
63
+ try:
64
+ service = build('classroom', 'v1', credentials=creds)
65
+ coursework = {
66
+ 'title': 'Tarefa 3',
67
+ 'description': '''Tarefa 3.''',
68
+ 'materials': [
69
+ {'link': {'url': 'http://example.com/ant-colonies'}},
70
+ {'link': {'url': 'http://example.com/ant-quiz'}},
71
+ {'link': {'url': 'https://docs.google.com/forms/d/e/1FAIpQLSeUSDBh0czeWRazc4Ymw-bhKV5clhzQSBPnRU6z6NQiJSuzDg/viewform'}}
72
+ ],
73
+ 'workType': 'ASSIGNMENT',
74
+ 'state': 'PUBLISHED',
75
+ }
76
+ coursework = service.courses().courseWork().create(courseId=course_id, body=coursework).execute()
77
+ print(f"Assignment created with ID {coursework.get('id')}")
78
+
79
+ except HttpError as error:
80
+ print('An error occurred: %s' % error)
81
+
82
+
83
+ if __name__ == '__main__':
84
+ creds = carregar_credenciais()
85
+ criar_atividade(creds, "617087903681")
86
+
google/quickstart.py ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright 2018 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ # [START classroom_quickstart]
16
+ from __future__ import print_function
17
+
18
+ import os.path
19
+
20
+ from google.auth.transport.requests import Request
21
+ from google.oauth2.credentials import Credentials
22
+ from googleapiclient.discovery import build
23
+ from googleapiclient.errors import HttpError
24
+
25
+ # If modifying these scopes, delete the file token.json.
26
+ SCOPES = ['https://www.googleapis.com/auth/classroom.courses.readonly']
27
+
28
+
29
+ def main():
30
+ """Shows basic usage of the Classroom API.
31
+ Prints the names of the first 10 courses the user has access to.
32
+ """
33
+ creds = None
34
+ # The file token.json stores the user's access and refresh tokens, and is
35
+ # created automatically when the authorization flow completes for the first
36
+ # time.
37
+ if os.path.exists('token.json'):
38
+ creds = Credentials.from_authorized_user_file('token.json', SCOPES)
39
+ # If there are no (valid) credentials available, let the user log in.
40
+ if not creds or not creds.valid:
41
+ if creds and creds.expired and creds.refresh_token:
42
+ creds.refresh(Request())
43
+ else:
44
+ flow = InstalledAppFlow.from_client_secrets_file(
45
+ 'credentials.json', SCOPES)
46
+ creds = flow.run_local_server(port=0)
47
+ # Save the credentials for the next run
48
+ with open('token.json', 'w') as token:
49
+ token.write(creds.to_json())
50
+
51
+ try:
52
+ service = build('classroom', 'v1', credentials=creds)
53
+
54
+ # Call the Classroom API
55
+ results = service.courses().list(pageSize=10).execute()
56
+ courses = results.get('courses', [])
57
+
58
+ if not courses:
59
+ print('No courses found.')
60
+ return
61
+ # Prints the names of the first 10 courses.
62
+ print('Courses:')
63
+ for course in courses:
64
+ print(course['name'])
65
+
66
+ except HttpError as error:
67
+ print('An error occurred: %s' % error)
68
+
69
+
70
+ if __name__ == '__main__':
71
+ main()
72
+ # [END classroom_quickstart]
img/escalas1.jpg ADDED
img/escalas2.jpg ADDED
pages/02_Dashboard.py ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import numpy as np
3
+ import matplotlib.pyplot as plt
4
+
5
+ st.title("Dashboard da turma")
6
+ st.divider()
7
+
8
+ if "df_estudantes" not in st.session_state:
9
+ st.error("Volte para a tela principal faça login e carregue uma turma!")
10
+ else:
11
+
12
+ st.markdown('### Métricas da turma')
13
+ df_estudantes = st.session_state["df_estudantes"]
14
+ st.metric(label="Total de Alunos", value=len(df_estudantes))
15
+
16
+ #col1, col2, col3 = st.columns(3)
17
+ #category_names = ['Discodo totalmente', 'Discordo',
18
+ # 'indiferente', 'Concordo', 'Concordo totalmente']
19
+ # results = {
20
+ # 'Extroversão': [1, 0, 0, 0, 1],
21
+ # 'Amababilidade': [1, 0, 0, 0, 1],
22
+ # 'Conscienciosidade': [1, 0, 0, 0, 1],
23
+ # 'Estabilidade Emocional': [1, 0, 0, 0, 1],
24
+ # 'Abertura a experiencias': [1, 0, 0, 0, 1],
25
+ # }
26
+
27
+ # def survey(results, category_names):
28
+ # """
29
+ # Parameters
30
+ # ----------
31
+ # results : dict
32
+ # A mapping from question labels to a list of answers per category.
33
+ # It is assumed all lists contain the same number of entries and that
34
+ # it matches the length of *category_names*.
35
+ # category_names : list of str
36
+ # The category labels.
37
+ # """
38
+ # labels = list(results.keys())
39
+ # data = np.array(list(results.values()))
40
+ # data_cum = data.cumsum(axis=1)
41
+ # category_colors = plt.get_cmap('RdYlGn')(
42
+ # np.linspace(0.15, 0.85, data.shape[1]))
43
+
44
+ # fig, ax = plt.subplots(figsize=(9.2, 5))
45
+ # ax.invert_yaxis()
46
+ # ax.xaxis.set_visible(False)
47
+ # ax.set_xlim(0, np.sum(data, axis=1).max())
48
+
49
+ # for i, (colname, color) in enumerate(zip(category_names, category_colors)):
50
+ # widths = data[:, i]
51
+ # starts = data_cum[:, i] - widths
52
+ # ax.barh(labels, widths, left=starts, height=0.5,
53
+ # label=colname, color=color)
54
+ # xcenters = starts + widths / 2
55
+
56
+ # r, g, b, _ = color
57
+ # text_color = 'white' if r * g * b < 0.5 else 'darkgrey'
58
+ # for y, (x, c) in enumerate(zip(xcenters, widths)):
59
+ # ax.text(x, y, str(int(c)), ha='center', va='center',
60
+ # color=text_color)
61
+ # ax.legend(ncol=len(category_names), bbox_to_anchor=(0, 1),
62
+ # loc='lower left', fontsize='small')
63
+
64
+ # return fig, ax
65
+
66
+
67
+ # survey(results, category_names)
68
+ # #plt.show()
69
+
70
+ # st.pyplot(plt)
pages/03_Perfil.py ADDED
@@ -0,0 +1,584 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from googleapiclient.discovery import build
3
+ import numpy as np
4
+ import matplotlib.pyplot as plt
5
+ from google.oauth2.credentials import Credentials
6
+ import pandas as pd
7
+
8
+ st.title("Perfil dos alunos")
9
+ st.divider()
10
+
11
+ if "id_curso_selecionado" not in st.session_state:
12
+ st.error("Volte para a tela principal faça login e carregue uma turma!")
13
+ else:
14
+ limite = st.session_state["limite"]
15
+ id_curso_selecionado = st.session_state["id_curso_selecionado"]
16
+ df_estudantes = st.session_state["df_estudantes"]
17
+ aluno_selecionado = st.selectbox("Aluno", df_estudantes["nome"])
18
+ df_estudante_selecionado = df_estudantes[df_estudantes["nome"] == aluno_selecionado].iloc[0]
19
+ nome_estudante_selecionado = df_estudante_selecionado["nome"]
20
+ id_estudante_selecionado = df_estudante_selecionado["userId"]
21
+ email_estudante_selecionado = df_estudante_selecionado["email"]
22
+
23
+ autorregulacao, bigfive,dicas = st.tabs(["Autorregulação", "Bigfive", "Recomendação"])
24
+
25
+ with bigfive:
26
+ analise_big_five, grafico_big_five, dados_big_five = st.tabs(["Análise", "Gráfico", "Dados"])
27
+ with dados_big_five:
28
+ df_quest_reg_big_five = st.session_state["df_respostas_big_five"]
29
+ if len (df_quest_reg_big_five[df_quest_reg_big_five["Endereço de e-mail"] == email_estudante_selecionado]) > 0:
30
+ df_quest_reg_big_five_s = df_quest_reg_big_five[df_quest_reg_big_five["Endereço de e-mail"] == email_estudante_selecionado]
31
+ st.dataframe(df_quest_reg_big_five_s.T[2:],
32
+ column_config={"": "Pergunta", "3": "Resposta"})
33
+
34
+
35
+ else:
36
+ st.warning("Aluno ainda não respondeu ao questionário do Big Five.")
37
+ with grafico_big_five:
38
+ df_respostas_big_five = st.session_state["df_respostas_big_five"]
39
+ if len (df_respostas_big_five[df_respostas_big_five["Endereço de e-mail"] == email_estudante_selecionado]) > 0:
40
+ dfbf = df_respostas_big_five[df_respostas_big_five["Endereço de e-mail"] == email_estudante_selecionado].iloc[0]
41
+ extroversao = np.mean([dfbf.iloc[2], 6 - dfbf.iloc[7], dfbf.iloc[12], dfbf.iloc[17], 6 - dfbf.iloc[22], dfbf.iloc[27], 6 - dfbf.iloc[32], dfbf.iloc[37]])
42
+ amababilidade = np.mean([6 - dfbf.iloc[3], dfbf.iloc[8], 6 - dfbf.iloc[13], dfbf.iloc[18], dfbf.iloc[23], 6 - dfbf.iloc[28], dfbf.iloc[33], 6 - dfbf.iloc[38], dfbf.iloc[43]])
43
+ conscienciosidade = np.mean([dfbf.iloc[4], 6 - dfbf.iloc[9], dfbf.iloc[14], 6 - dfbf.iloc[19], 6 - dfbf.iloc[24], dfbf.iloc[29], dfbf.iloc[34], dfbf.iloc[39], 6 - dfbf.iloc[44]])
44
+ estabilidade_emocional = np.mean([6 - dfbf.iloc[5], dfbf.iloc[10], 6 - dfbf.iloc[15], 6 - dfbf.iloc[20], dfbf.iloc[25], 6 - dfbf.iloc[30], dfbf.iloc[35], 6- dfbf.iloc[40]])
45
+ abertura_a_experiencias = np.mean([dfbf.iloc[6], dfbf.iloc[11], dfbf.iloc[16], dfbf.iloc[21], dfbf.iloc[26], dfbf.iloc[31], 6- dfbf.iloc[36], dfbf.iloc[41], 6 - dfbf.iloc[42], dfbf.iloc[45]])
46
+ st.success("Perfil do Bigfive")
47
+ fig, ax = plt.subplots()
48
+ constructors = ["Extroversao", "Amababilidade", "Conscienciosidade", "Estabilidade Emocional", "Abertura a experiencias"]
49
+ counts = [extroversao, amababilidade, conscienciosidade,estabilidade_emocional, abertura_a_experiencias]
50
+ graf1 = ax.barh(constructors, counts, color='#909090')
51
+ ax.bar_label(graf1, fmt="%.01f", size=10, label_type="edge")
52
+ ax.set_xlabel('Resposta')
53
+ ax.set_xticks([1,2,3,4,5])
54
+ st.pyplot(plt)
55
+ else:
56
+ st.warning("Aluno ainda não respondeu ao questionário Big Five.")
57
+
58
+ with analise_big_five:
59
+ df_respostas_big_five = st.session_state["df_respostas_big_five"]
60
+ if len (df_respostas_big_five[df_respostas_big_five["Endereço de e-mail"] == email_estudante_selecionado]) > 0:
61
+ dfbf = df_respostas_big_five[df_respostas_big_five["Endereço de e-mail"] == email_estudante_selecionado].iloc[0]
62
+ extroversao = np.mean([dfbf.iloc[2], 6 - dfbf.iloc[7], dfbf.iloc[12], dfbf.iloc[17], 6 - dfbf.iloc[22], dfbf.iloc[27], 6 - dfbf.iloc[32], dfbf.iloc[37]])
63
+ amababilidade = np.mean([6 - dfbf.iloc[3], dfbf.iloc[8], 6 - dfbf.iloc[13], dfbf.iloc[18], dfbf.iloc[23], 6 - dfbf.iloc[28], dfbf.iloc[33], 6 - dfbf.iloc[38], dfbf.iloc[43]])
64
+ conscienciosidade = np.mean([dfbf.iloc[4], 6 - dfbf.iloc[9], dfbf.iloc[14], 6 - dfbf.iloc[19], 6 - dfbf.iloc[24], dfbf.iloc[29], dfbf.iloc[34], dfbf.iloc[39], 6 - dfbf.iloc[44]])
65
+ estabilidade_emocional = np.mean([6 - dfbf.iloc[5], dfbf.iloc[10], 6 - dfbf.iloc[15], 6 - dfbf.iloc[20], dfbf.iloc[25], 6 - dfbf.iloc[30], dfbf.iloc[35], 6- dfbf.iloc[40]])
66
+ abertura_a_experiencias = np.mean([dfbf.iloc[6], dfbf.iloc[11], dfbf.iloc[16], dfbf.iloc[21], dfbf.iloc[26], dfbf.iloc[31], 6- dfbf.iloc[36], dfbf.iloc[41], 6 - dfbf.iloc[42], dfbf.iloc[45]])
67
+ col1, col2, col3 = st.columns(3)
68
+ col4, col5, col6 = st.columns(3)
69
+
70
+ def get_slider_name_extroversao(v):
71
+ if v == 5:
72
+ return 'Extrovertido'
73
+ elif v == 4:
74
+ return 'Parcialmente Extrovertido'
75
+ elif v == 3:
76
+ return 'Neutro'
77
+ elif v == 2:
78
+ return 'Parcialmente Introvertido'
79
+ elif v == 1:
80
+ return 'Introvertido'
81
+
82
+ def get_slider_name_conscienciosidade(v):
83
+ if v == 5:
84
+ return 'Consciencioso'
85
+ elif v == 4:
86
+ return 'Parcialmente Consciencioso'
87
+ elif v == 3:
88
+ return 'Neutro'
89
+ elif v == 2:
90
+ return 'Parcialmente Desorganizado'
91
+ elif v == 1:
92
+ return 'Desorganizado'
93
+
94
+ def get_slider_name_abertura_experiencias(v):
95
+ if v == 5:
96
+ return 'Aberto a Exper.'
97
+ elif v == 4:
98
+ return 'Parcialmente Aberto a Exper.'
99
+ elif v == 3:
100
+ return 'Neutro'
101
+ elif v == 2:
102
+ return 'Parcialmente Convencional'
103
+ elif v == 1:
104
+ return 'Convencional'
105
+
106
+ def get_slider_name_amabilidade(v):
107
+ if v == 5:
108
+ return 'Amáveis'
109
+ elif v == 4:
110
+ return 'Parcialmente Amáveis'
111
+ elif v == 3:
112
+ return 'Neutro'
113
+ elif v == 2:
114
+ return 'Parcialmente Antagonista'
115
+ elif v == 1:
116
+ return 'Antagonista'
117
+
118
+ def get_slider_name_estabilidade_emocional(v):
119
+ if v == 5:
120
+ return 'Estável Emoc.'
121
+ elif v == 4:
122
+ return 'Parcialmente Estável Emoc.'
123
+ elif v == 3:
124
+ return 'Neutro'
125
+ elif v == 2:
126
+ return 'Parcialmente Instável Emoc.'
127
+ elif v == 1:
128
+ return 'Instável Emoc.'
129
+
130
+ st.write("### Extroversão")
131
+ col1b, col2b = st.columns(2)
132
+ with col1b:
133
+ st.write("""Porque é importante?
134
+ * Melhora habilidades interpessoais
135
+ * Maior dominância social
136
+ * Maior expressão emocional""")
137
+ with col2b:
138
+ st.write("""O que afeta?
139
+ * Desempenho melhor(trabalho em equipe)
140
+ * Liderança aumentada
141
+ * Maior satisfação na vida e no trabalho""")
142
+ st.select_slider(
143
+ label="Extroversao",
144
+ key="sextroversao",
145
+ options=['Introvertido', 'Parcialmente Introvertido', 'Neutro', 'Parcialmente Extrovertido', 'Extrovertido'],
146
+ value=(get_slider_name_extroversao(round(extroversao)),get_slider_name_extroversao(round(extroversao))),
147
+ #disabled=True,
148
+ label_visibility ="hidden"
149
+ )
150
+ col1b, col2b = st.columns(2)
151
+ with col1b:
152
+ st.write("Introvertido = (reservado, tímido, quieto, sóbrio)")
153
+ with col2b:
154
+ st.write("Extrovertido = (agregador, assertivo, sociável, falador, expansivo)")
155
+ st.divider()
156
+
157
+ st.write("### Amababilidade / Socialização")
158
+ col1b, col2b = st.columns(2)
159
+ with col1b:
160
+ st.write("""Porque é importante?
161
+ * Mais "amado"
162
+ * Menos contestador e mais conformado""")
163
+ with col2b:
164
+ st.write("""O que afeta?
165
+ * Melhora desempenho (trabalho em equipe)
166
+ * Níveis menores de desvios de comportamento no trabalho
167
+ """)
168
+ st.select_slider(
169
+ label="Ambabilidade",
170
+ key="samababilidade",
171
+ options=['Antagonista', 'Parcialmente Antagonista', 'Neutro', 'Parcialmente Amáveis', 'Amáveis'],
172
+ value=(get_slider_name_amabilidade(round(amababilidade)),get_slider_name_amabilidade(round(amababilidade))),
173
+ #disabled=True,
174
+ label_visibility ="hidden"
175
+ )
176
+ col1b, col2b = st.columns(2)
177
+ with col1b:
178
+ st.write("Antagonista = (frio, desagradável, confrontador, crítico, frio, inamistoso)")
179
+ with col2b:
180
+ st.write("Amáveis = (cooperativo, receptivo, confiável, solidário, gentil, grato)")
181
+ st.divider()
182
+
183
+ st.write("### Conscienciosidade / Realização")
184
+ col1b, col2b = st.columns(2)
185
+ with col1b:
186
+ st.write("""Porque é importante?
187
+ * Maior esforço e persistência
188
+ * Naus energia e disciplina
189
+ * Mais organizado e planejador""")
190
+ with col2b:
191
+ st.write("""O que afeta?
192
+ * Melhor desempenho
193
+ * Lidernaça aumentada
194
+ * Maior longevidade
195
+ """)
196
+ st.select_slider(
197
+ label="Conscienciosidade",
198
+ key="sconscienciosidade",
199
+ options=['Desorganizado', 'Parcialmente Desorganizado', 'Neutro', 'Parcialmente Consciencioso', 'Consciencioso'],
200
+ value=(get_slider_name_conscienciosidade(round(conscienciosidade)),get_slider_name_conscienciosidade(round(conscienciosidade))),
201
+ #disabled=True,
202
+ label_visibility ="hidden"
203
+ )
204
+ col1b, col2b = st.columns(2)
205
+ with col1b:
206
+ st.write("Desorganizado = (distraído, desorganizado, pouco confiável, descuidado, impulsivo)")
207
+ with col2b:
208
+ st.write("Consciencioso = (responsável, organizado, confiável, persistente, cuidadoso, disciplinado)")
209
+ st.divider()
210
+
211
+ st.write("### Estabilidade Emocional (Neuroticismo)")
212
+ col1b, col2b = st.columns(2)
213
+ with col1b:
214
+ st.write("""Porque é importante?
215
+ * Menos pensamentos e emoções negativos
216
+ * menor hipervigilância""")
217
+ with col2b:
218
+ st.write("""O que afeta?
219
+ * Maior satisfação pessoal e no trabalho
220
+ * Menores níveis de estresse
221
+ """)
222
+ st.select_slider(
223
+ label="Estabilidade Emocional",
224
+ key="sestabilidade_emocional",
225
+ options=['Instável Emoc.', 'Parcialmente Instável Emoc.', 'Neutro', 'Parcialmente Estável Emoc.', 'Estável Emoc.'],
226
+ value=(get_slider_name_estabilidade_emocional(round(estabilidade_emocional)), get_slider_name_estabilidade_emocional(round(estabilidade_emocional))),
227
+ #disabled=True,
228
+ label_visibility ="hidden"
229
+ )
230
+ col1b, col2b = st.columns(2)
231
+ with col1b:
232
+ st.write("Instável Emoc. = (nervoso, ansioso, deprimido, inseguro, tenso)")
233
+ with col2b:
234
+ st.write("Estável Emoc. = (calmo, autoconfiante, seguro, estável)")
235
+ st.divider()
236
+
237
+ st.write("### Abertura a experiências")
238
+ col1b, col2b = st.columns(2)
239
+ with col1b:
240
+ st.write("""Porque é importante?
241
+ * Aumento do nível de aprendizagem
242
+ * Mais criatividade
243
+ * Maior flexibilidade e autonomia""")
244
+ with col2b:
245
+ st.write("""O que afeta?
246
+ * Desempenho no treinamento
247
+ * Liderança aumentada
248
+ * Mais adaptável a mudanças
249
+ """)
250
+ st.select_slider(
251
+ label="Abertura",
252
+ key="sabertura_a_experiencias",
253
+ options=['Convencional', 'Parcialmente Convencional', 'Neutro', 'Parcialmente Aberto a Exper.', 'Aberto a Exper.'],
254
+ value=(get_slider_name_abertura_experiencias(round(abertura_a_experiencias)), get_slider_name_abertura_experiencias(round(abertura_a_experiencias))),
255
+ #disabled=True,
256
+ label_visibility ="hidden"
257
+ )
258
+ col1b, col2b = st.columns(2)
259
+ with col1b:
260
+ st.write("Convencional = (convencional, conservador, prefere coisas familiares, conformista, prático)")
261
+ with col2b:
262
+ st.write("Aberto a Exper. = (criativo, curioso, sensível artisiticamente, independente, imaginativo)")
263
+ else:
264
+ st.warning("Aluno ainda não respondeu ao questionário.")
265
+
266
+ with autorregulacao:
267
+ analise, grafico, dados = st.tabs(["Análise", "Gráfico", "Dados"])
268
+
269
+ with dados:
270
+ df_quest_reg = st.session_state["df_respostas"]
271
+ if len (df_quest_reg[df_quest_reg["Endereço de e-mail"] == email_estudante_selecionado]) > 0:
272
+ df_quest_reg_s = df_quest_reg[df_quest_reg["Endereço de e-mail"] == email_estudante_selecionado]
273
+ st.dataframe(df_quest_reg_s.T[2:], column_config={"": "Pergunta", "3": "Resposta"})
274
+ else:
275
+ st.warning("Aluno ainda não respondeu ao questionário.")
276
+
277
+ with analise:
278
+ df_quest_reg = st.session_state["df_respostas"]
279
+ if len (df_quest_reg[df_quest_reg["Endereço de e-mail"] == email_estudante_selecionado]) > 0:
280
+ dfreg = df_quest_reg[df_quest_reg["Endereço de e-mail"] == email_estudante_selecionado].iloc[0]
281
+ media_orientacao_metas_intrinsecas = np.mean([dfreg.iloc[2], dfreg.iloc[3]])
282
+ media_orientacao_metas_extrinsicas = np.mean([dfreg.iloc[4], dfreg.iloc[5]])
283
+ media_valorizacao_da_atividade = np.mean([dfreg.iloc[6], dfreg.iloc[7], dfreg.iloc[8], dfreg.iloc[9], dfreg.iloc[10], dfreg.iloc[11]])
284
+ controle_do_aprendizado = np.mean([dfreg.iloc[12], dfreg.iloc[13], dfreg.iloc[14]])
285
+ autoeficacia_para_aprendizado = np.mean([dfreg.iloc[15], dfreg.iloc[16], dfreg.iloc[17], dfreg.iloc[18]])
286
+ ansiedade_em_testes = np.mean([dfreg.iloc[19], dfreg.iloc[20], dfreg.iloc[21], dfreg.iloc[22], dfreg.iloc[23]])
287
+
288
+ st.success("Escalas de Motivação")
289
+ col1, col2, col3 = st.columns(3)
290
+ col4, col5, col6 = st.columns(3)
291
+
292
+ help_intrisica = """
293
+ A orientação a metas intrínsecas diz respeito ao grau em que o aluno percebe
294
+ estar participando de uma tarefa por razões como desafio, curiosidade e domínio.
295
+ """
296
+ col1.metric("Orientação a Metas Intrínsecas ", round(media_orientacao_metas_intrinsecas, 1), "-BAIXA" if (round(media_orientacao_metas_intrinsecas, 1) < limite) else "ALTA", help = help_intrisica)
297
+
298
+ help_extrinsica = """
299
+ A orientação extrínseca complementa a orientação intrínseca e diz respeito ao grau
300
+ em que o aluno percebe estar participando de uma tarefa por razões como notas, recompensas, desempenho, avaliação e competição.
301
+ """
302
+ col2.metric("Orientação a Metas Extrínsicas ", round(media_orientacao_metas_extrinsicas, 1), "-BAIXA" if (round(media_orientacao_metas_extrinsicas, 1) < limite) else "ALTA", help= help_extrinsica)
303
+
304
+ help_valorizacao = """
305
+ A valorização da atividade, difere da orientação a metas, pois ela refere-se à
306
+ avaliação do aluno sobre quão interessante, importante e útil é a atividade, enquanto a orientação
307
+ a metas associa-se aos motivos pelos quais o aluno está participando da atividade.
308
+ """
309
+ col3.metric("Valorização da Atividade ", round(media_valorizacao_da_atividade, 1), "-BAIXA" if (round(media_valorizacao_da_atividade, 1) < limite) else "ALTA", help = help_valorizacao)
310
+
311
+ help_controle = """
312
+ O controle do aprendizado, se refere às crenças dos alunos
313
+ de que seus esforços para aprender resultarão em resultados positivos, onde os resultados dependem do próprio esforço.
314
+ """
315
+ col4.metric("Controle do Aprendizado ", round(controle_do_aprendizado, 1), "-BAIXA" if (round(controle_do_aprendizado, 1) < limite) else "ALTA", help = help_controle)
316
+
317
+ help_expectativa = """
318
+ Os itens que compõem esta escala avaliam dois aspectos da expectativa, a
319
+ expectativa de sucesso e a autoeficácia. A expectativa de sucesso refere-se
320
+ às expectativas de desempenho e especificamente ao desempenho da atividade,
321
+ enquanto a autoeficácia é uma autoavaliação da capacidade de dominar uma tarefa.
322
+ Essa é uma medida da sua percepção quanto ao seu potencial de sucesso nas
323
+ disciplinas e da sua autoconfiança para entender o conteúdo da disciplina.
324
+ Uma pontuação alta significa que você acha que terá bom desempenho na disciplina
325
+ e está confiante que será capaz de dominar todo o conteúdo.
326
+ """
327
+ col5.metric("Expectativa de Sucess e Autoeficacia para Aprendizado ", round(autoeficacia_para_aprendizado,1), "-BAIXA" if (round(autoeficacia_para_aprendizado, 1) < limite) else "ALTA", help = help_expectativa)
328
+
329
+ help_ansiedade = """A ansiedade em testes possui dois componentes, o componente preocupação, que são os pensamentos negativos dos alunos que
330
+ atrapalham o desempenho, e o componente emocional, que se refere a aspectos de excitação afetiva e fisiológica da ansiedade.
331
+ A preocupação cognitiva e a preocupação com o desempenho são as maiores fontes de redução do desempenho, por isso,
332
+ o treinamento no uso de estratégias eficazes de aprendizado e nas habilidades para fazer testes deve ajudar a reduzir
333
+ o grau de ansiedade. Essa é uma medida do quanto você se preocupa com as avaliações e quão frequentemente você
334
+ se distrai ao realizar uma prova. Ao contrário das outras escalas, nessa escala, uma pontuação alta significa
335
+ que você fica ansioso em situações de teste."""
336
+ col6.metric("Ansiedade em testes ", round(ansiedade_em_testes, 1), "-BAIXA" if (round(ansiedade_em_testes, 1) < limite) else "ALTA", help=help_ansiedade)
337
+
338
+ st.divider()
339
+ st.success("Escalas de Estratégias de aprendizagem")
340
+ col7, col8, col9 = st.columns(3)
341
+ col10, col11, col12 = st.columns(3)
342
+ col13, col14, col15 = st.columns(3)
343
+
344
+ ensaio_memorizacao = np.mean([dfreg.iloc[24], dfreg.iloc[25], dfreg.iloc[26], dfreg.iloc[27], dfreg.iloc[28]])
345
+ elaboracao = np.mean([dfreg.iloc[29], dfreg.iloc[30]])
346
+ organizacao = np.mean([dfreg.iloc[31], dfreg.iloc[32], dfreg.iloc[33]])
347
+ pensamento_critico = np.mean([dfreg.iloc[34]])
348
+ autorregulacao_metacognitiva = np.mean([dfreg.iloc[35], dfreg.iloc[36], dfreg.iloc[37], dfreg.iloc[38], dfreg.iloc[39]])
349
+ tempo_e_ambiente_de_estudo = np.mean([dfreg.iloc[40]])
350
+ administracao_de_esforcos = np.mean([dfreg.iloc[41], dfreg.iloc[42], dfreg.iloc[43], dfreg.iloc[44], dfreg.iloc[45]])
351
+
352
+ help_ensaio = """
353
+ Esta escala mede o quanto você utiliza estratégias de estudo, como releitura
354
+ de anotações da aula e de textos sobre a matéria e decora listas com palavras-chave e conceitos.
355
+ Uma alta pontuação significa que você usa essas estratégias com frequência.
356
+ """
357
+ col7.metric("Ensaio memorização ", round(ensaio_memorizacao, 1), "-BAIXA" if (round(ensaio_memorizacao, 1) < limite) else "ALTA", help = help_ensaio)
358
+
359
+ help_elaboracao = """
360
+ Esta escala mede o quanto você tenta resumir ou parafrasear (colocar nas
361
+ suas próprias palavras) o que você lê em seus livros-texto e o quanto você tenta relacionar
362
+ esse material com o que já sabe ou aprendeu. Uma pontuação alta significa que você usa essas estratégias
363
+ com frequência. Essas estratégias normalmente têm melhores resultados do que a estratégia de decorar.
364
+ """
365
+ col8.metric("Elaboração ", round(elaboracao, 1), "-BAIXA" if (round(elaboracao, 1) < limite) else "ALTA", help = help_elaboracao)
366
+
367
+ help_organizacao = """
368
+ Esta escala se refere à sua capacidade de selecionar as ideias principais do que você lê,
369
+ assim como sua capacidade de organizar e reunir tudo que precisa aprender em determinada disciplina.
370
+ """
371
+ col9.metric("Organização ", round(organizacao, 1), "-BAIXA" if (round(organizacao, 1) < limite) else "ALTA", help = help_organizacao)
372
+
373
+ # está faltando
374
+ col10.metric("Pensamento crítico ", round(pensamento_critico, 1), "-BAIXA" if (round(pensamento_critico, 1) < limite) else "ALTA")
375
+
376
+ help_autorregulacao_meta = """
377
+ Esta é uma medida da frequência com que você pensa sobre o que está lendo
378
+ ou estudando quando realiza suas tarefas de estudo. Por exemplo, você monitora sua atenção
379
+ quando lê ou geralmente descobre que leu dez páginas de um livro e não se lembra de nada do que leu?
380
+ Você ajusta sua velocidade de leitura quando está lendo algo difícil, se comparado a ler jornal?
381
+ Uma pontuação alta significa que você tenta planejar seu trabalho e confere se entendeu a disciplina.
382
+ """
383
+ col11.metric("Autorregulacao Metacognitiva ", round(autorregulacao_metacognitiva, 1), "-BAIXA" if (round(autorregulacao_metacognitiva, 1) < limite) else "ALTA", help = help_autorregulacao_meta)
384
+
385
+ help_tempo = """
386
+ Essa escala mede quão bem você administra seu tempo e sua agenda, como
387
+ também seu uso de um ambiente de estudo. Uma pontuação alta significa que você possui um método
388
+ para administrar sua agenda e tenta estudar em um local onde você possa terminar suas tarefas de estudo.
389
+ """
390
+ col12.metric("Tempo e ambiente de estudo ", round(tempo_e_ambiente_de_estudo, 1), "-BAIXA" if (round(tempo_e_ambiente_de_estudo, 1) < limite) else "ALTA", help = help_tempo)
391
+
392
+ help_admesforcos = """
393
+ Esta escala se refere à sua vontade de fazer suas tarefas de estudo, mesmo
394
+ quando o trabalho é difícil. Uma pontuação alta significa que você se esforça bastante em seus estudos.
395
+ """
396
+ col13.metric("Administração de esforços ", round(administracao_de_esforcos,1), "-BAIXA" if (round(administracao_de_esforcos, 1) < limite) else "ALTA", help = help_admesforcos)
397
+ else:
398
+ st.warning("Aluno ainda não respondeu ao questionário.")
399
+
400
+ with grafico:
401
+ df_quest_reg = st.session_state["df_respostas"]
402
+ if len (df_quest_reg[df_quest_reg["Endereço de e-mail"] == email_estudante_selecionado]) > 0:
403
+ dfreg = df_quest_reg[df_quest_reg["Endereço de e-mail"] == email_estudante_selecionado].iloc[0]
404
+ media_orientacao_metas_intrinsecas = np.mean([dfreg.iloc[2], dfreg.iloc[3]])
405
+ media_orientacao_metas_extrinsicas = np.mean([dfreg.iloc[4], dfreg.iloc[5]])
406
+ media_valorizacao_da_atividade = np.mean([dfreg.iloc[6], dfreg.iloc[7], dfreg.iloc[8], dfreg.iloc[9], dfreg.iloc[10], dfreg.iloc[11]])
407
+ controle_do_aprendizado = np.mean([dfreg.iloc[12], dfreg.iloc[13], dfreg.iloc[14]])
408
+ autoeficacia_para_aprendizado = np.mean([dfreg.iloc[15], dfreg.iloc[16], dfreg.iloc[17], dfreg.iloc[18]])
409
+ ansiedade_em_testes = np.mean([dfreg.iloc[19], dfreg.iloc[20], dfreg.iloc[21], dfreg.iloc[22], dfreg.iloc[23]])
410
+ ensaio_memorizacao = np.mean([dfreg.iloc[24], dfreg.iloc[25], dfreg.iloc[26], dfreg.iloc[27], dfreg.iloc[28]])
411
+ elaboracao = np.mean([dfreg.iloc[29], dfreg.iloc[30]])
412
+ organizacao = np.mean([dfreg.iloc[31], dfreg.iloc[32], dfreg.iloc[33]])
413
+ pensamento_critico = np.mean([dfreg.iloc[34]])
414
+ autorregulacao_metacognitiva = np.mean([dfreg.iloc[35], dfreg.iloc[36], dfreg.iloc[37], dfreg.iloc[38], dfreg.iloc[39]])
415
+ tempo_e_ambiente_de_estudo = np.mean([dfreg.iloc[40]])
416
+ administracao_de_esforcos = np.mean([dfreg.iloc[41], dfreg.iloc[42], dfreg.iloc[43], dfreg.iloc[44], dfreg.iloc[45]])
417
+
418
+ st.success("Escalas de Motivação")
419
+ fig, ax = plt.subplots()
420
+ constructors = ["Orientação a metas intrinsecas", "Orientação a metas extrinsicas", "Valorização da atividade", "Controle doaprendizado",
421
+ "Autoeficacia para aprendizado", "Ansiedade em testes"]
422
+ counts = [media_orientacao_metas_intrinsecas, media_orientacao_metas_extrinsicas, media_valorizacao_da_atividade,controle_do_aprendizado, autoeficacia_para_aprendizado, ansiedade_em_testes]
423
+ graf1 = ax.barh(constructors, counts, color='#909090')
424
+ ax.bar_label(graf1, fmt="%.01f", size=10, label_type="edge")
425
+ ax.set_xlabel('Resposta')
426
+ ax.set_xticks([1,2,3,4,5,6,7])
427
+
428
+ st.pyplot(plt)
429
+ st.divider()
430
+ st.success("Escalas de Estratégias de aprendizagem")
431
+ fig, ax = plt.subplots()
432
+ constructors = ["Ensaio memorização","Elaboração","Organização","Pensamento crítico","Autorregulacao Metacognitiva","Tempo e ambiente de estudo","Administração de esforços"]
433
+ counts = [ensaio_memorizacao,elaboracao,organizacao,pensamento_critico,autorregulacao_metacognitiva,tempo_e_ambiente_de_estudo,administracao_de_esforcos]
434
+ graf1 = ax.barh(constructors, counts, color='#909090')
435
+ ax.bar_label(graf1, fmt="%.01f", size=10, label_type="edge")
436
+ ax.set_xlabel('Resposta')
437
+ ax.set_xticks([1,2,3,4,5,6,7])
438
+ st.pyplot(plt)
439
+ else:
440
+ st.warning("Aluno ainda não respondeu ao questionário.")
441
+ with dicas:
442
+ dicas_do_professor, dicas_automaticas = st.tabs(["Recomendação personalizada", "Recomendação automática"])
443
+ with dicas_do_professor:
444
+ st.success("Enviar uma recomendação personalizada para este aluno")
445
+ txt_titulo_dica_prof = st.text_input(label="Título", key="txt_titulo_dica_prof", value="Recomendação individual para {}".format(nome_estudante_selecionado))
446
+ txt_desc_dica_prof = st.text_area(height=180,
447
+ label="Descrição", key="txt_desc_dica_prof", value="""Prezado {}, percebemos que o seu desempenho foi satisfatório
448
+ para o tópico <nome do tópico>, contido no assunto <nome do assunto>, cujo valor de
449
+ rendimento foi igual a <coeficiente desempenho>, mas vimos que você não interagiu com
450
+ todos os recursos, sugerimos que interaja com os recursos <recursos não utilizados> para que
451
+ possa finalizar o módulo com aproveitamento apropriado, pois seu rendimento de interação
452
+ é <coeficiente interação>, abaixo do esperado que é 60%""".format(nome_estudante_selecionado))
453
+ btn_enviar_dica_professor = st.button("Enviar", key ="btndicaprofessor")
454
+
455
+ def enviar_dica_professor(student_id, titulo, descricao):
456
+ token = st.session_state['token']
457
+ classroom = build('classroom', 'v1', credentials=Credentials(token=token.get("access_token")))
458
+ dica = {
459
+ 'title': titulo,
460
+ 'description': descricao,
461
+ 'state': 'PUBLISHED',
462
+ "assigneeMode": "INDIVIDUAL_STUDENTS",
463
+ "individualStudentsOptions": { "studentIds": [student_id] }
464
+ }
465
+ dica_enviada = classroom.courses().courseWorkMaterials().create(courseId=id_curso_selecionado, body=dica).execute()
466
+ (f"Diva enviada para o sala de aula do estudante: {dica_enviada.get('id')}")
467
+
468
+ if btn_enviar_dica_professor:
469
+ enviar_dica_professor(id_estudante_selecionado, txt_titulo_dica_prof, txt_desc_dica_prof)
470
+
471
+ with dicas_automaticas:
472
+ st.success("Recomendações automáticas identificadas pela análise do perfil de autorregulação")
473
+
474
+ df_quest_reg = st.session_state["df_respostas"]
475
+ if len (df_quest_reg[df_quest_reg["Endereço de e-mail"] == email_estudante_selecionado]) > 0:
476
+
477
+ dfreg = df_quest_reg[df_quest_reg["Endereço de e-mail"] == email_estudante_selecionado].iloc[0]
478
+
479
+ media_orientacao_metas_intrinsecas = np.mean([dfreg.iloc[2], dfreg.iloc[3]])
480
+ media_orientacao_metas_extrinsicas = np.mean([dfreg.iloc[4], dfreg.iloc[5]])
481
+ media_valorizacao_da_atividade = np.mean([dfreg.iloc[6], dfreg.iloc[7], dfreg.iloc[8], dfreg.iloc[9], dfreg.iloc[10], dfreg.iloc[11]])
482
+ controle_do_aprendizado = np.mean([dfreg.iloc[12], dfreg.iloc[13], dfreg.iloc[14]])
483
+ autoeficacia_para_aprendizado = np.mean([dfreg.iloc[15], dfreg.iloc[16], dfreg.iloc[17], dfreg.iloc[18]])
484
+ ansiedade_em_testes = np.mean([dfreg.iloc[19], dfreg.iloc[20], dfreg.iloc[21], dfreg.iloc[22], dfreg.iloc[23]])
485
+ ensaio_memorizacao = np.mean([dfreg.iloc[24], dfreg.iloc[25], dfreg.iloc[26], dfreg.iloc[27], dfreg.iloc[28]])
486
+ elaboracao = np.mean([dfreg.iloc[29], dfreg.iloc[30]])
487
+ organizacao = np.mean([dfreg.iloc[31], dfreg.iloc[32], dfreg.iloc[33]])
488
+ pensamento_critico = np.mean([dfreg.iloc[34]])
489
+ autorregulacao_metacognitiva = np.mean([dfreg.iloc[35], dfreg.iloc[36], dfreg.iloc[37], dfreg.iloc[38], dfreg.iloc[39]])
490
+ tempo_e_ambiente_de_estudo = np.mean([dfreg.iloc[40]])
491
+ administracao_de_esforcos = np.mean([dfreg.iloc[41], dfreg.iloc[42], dfreg.iloc[43], dfreg.iloc[44], dfreg.iloc[45]])
492
+
493
+ df_dicas = st.session_state["df_dicas"]
494
+ option = st.selectbox(
495
+ 'Tipo Tarefa',
496
+ ('Simulado', 'Participação em Fórum'))
497
+ st.divider()
498
+ if (media_orientacao_metas_intrinsecas <= limite) or (media_orientacao_metas_extrinsicas <= limite) or (media_valorizacao_da_atividade <= limite) or (controle_do_aprendizado <= limite):
499
+ st.write("### Motivo: baixa capacidade de Orientação à metas intrínsecas")
500
+ st.text_input(key="rec1", value="Recomendação individual para {}".format(nome_estudante_selecionado), label="Título" )
501
+ st.write("Descrição")
502
+ for l in str(df_dicas["dicas"].iloc[0]).split(" / "):
503
+ st.success(l)
504
+ st.divider()
505
+ if autoeficacia_para_aprendizado <= limite:
506
+ st.write("### Motivo: baixa capacidade de autoeficácia no aprendizado")
507
+ st.text_input(key="rec2",value="Recomendação individual para {}".format(nome_estudante_selecionado), label="Título")
508
+ st.write("Descrição")
509
+ for l in str(df_dicas["dicas"].iloc[1]).split(" / "):
510
+ st.success(l)
511
+ st.divider()
512
+ if ansiedade_em_testes <= limite:
513
+ st.markdown("### Motivo: baixa ansiedade em testes")
514
+ st.text_input(key="rec3",value="Recomendação individual para {}".format(nome_estudante_selecionado), label="Título")
515
+ st.write("Descrição")
516
+ for l in str(df_dicas["dicas"].iloc[2]).split(" / "):
517
+ st.success(l)
518
+ st.divider()
519
+ if ensaio_memorizacao <= limite:
520
+ st.write("### Motivo: baixa memorização")
521
+ st.text_input(key="rec4",value="Recomendação individual para {}".format(nome_estudante_selecionado), label="Título")
522
+ st.write("Descrição")
523
+ for l in str(df_dicas["dicas"].iloc[3]).split(" / "):
524
+ st.success(l)
525
+ st.divider()
526
+ if elaboracao <= limite:
527
+ st.write("### Motivo: baixa elaboração")
528
+ st.text_input(key="rec5",value="Recomendação individual para {}".format(nome_estudante_selecionado), label="Título")
529
+ st.write("Descrição")
530
+ for l in str(df_dicas["dicas"].iloc[4]).split(" / "):
531
+ st.success(l)
532
+ st.divider()
533
+ if organizacao <= limite:
534
+ st.write("### Motivo: baixa organização")
535
+ st.text_input(key="rec6",value="Recomendação individual para {}".format(nome_estudante_selecionado), label="Título")
536
+ st.write("Descrição")
537
+ for l in str(df_dicas["dicas"].iloc[5]).split(" / "):
538
+ st.success(l)
539
+ st.divider()
540
+ #if pensamento_critico <= 3:
541
+ # st.write(df_dicas["dicas"].iloc[2])
542
+ if autorregulacao_metacognitiva <= limite:
543
+ st.write("### Motivo: baixa autorregulação metacognitiva")
544
+ st.text_input(key="rec7",value="Recomendação individual para {}".format(nome_estudante_selecionado), label="Título")
545
+ st.write("Descrição")
546
+ for l in str(df_dicas["dicas"].iloc[6]).split(" / "):
547
+ st.success(l)
548
+ st.divider()
549
+ if tempo_e_ambiente_de_estudo <= limite:
550
+ st.write("### Motivo: baixo tempo e ambiente de estudo")
551
+ st.text_input(key="rec8",value="Recomendação individual para {}".format(nome_estudante_selecionado), label="Título")
552
+ st.write("Descrição")
553
+ for l in str(df_dicas["dicas"].iloc[7]).split(" / "):
554
+ st.success(l)
555
+ st.divider()
556
+ if administracao_de_esforcos <= limite:
557
+ st.write("### Motivo: baixo administração de esforços")
558
+ st.text_input(key="rec9",value="Recomendação individual para {}".format(nome_estudante_selecionado), label="Título")
559
+ st.write("Descrição")
560
+ for l in str(df_dicas["dicas"].iloc[8]).split(" / "):
561
+ st.success(l)
562
+ st.divider()
563
+ btn_enviar_dica_automaticas = st.button("Enviar todas", key ="btndicaautomatica")
564
+ if btn_enviar_dica_automaticas:
565
+ if media_orientacao_metas_intrinsecas <= 4 or media_orientacao_metas_extrinsicas <= 3 or media_valorizacao_da_atividade <= 3 or controle_do_aprendizado <= 3:
566
+ enviar_dica_professor(id_estudante_selecionado, "Dica: " + df_dicas["constructo"].iloc[0], df_dicas["dicas"].iloc[0])
567
+ if autoeficacia_para_aprendizado <= 4:
568
+ enviar_dica_professor(id_estudante_selecionado, "Dica: " + df_dicas["constructo"].iloc[1], df_dicas["dicas"].iloc[1])
569
+ if ansiedade_em_testes <= 4:
570
+ enviar_dica_professor(id_estudante_selecionado, "Dica: " + df_dicas["constructo"].iloc[2], df_dicas["dicas"].iloc[2])
571
+ if ensaio_memorizacao <= 4:
572
+ enviar_dica_professor(id_estudante_selecionado, "Dica: " + df_dicas["constructo"].iloc[3], df_dicas["dicas"].iloc[3])
573
+ if elaboracao <= 4:
574
+ enviar_dica_professor(id_estudante_selecionado, "Dica: " + df_dicas["constructo"].iloc[4], df_dicas["dicas"].iloc[4])
575
+ if organizacao <= 4:
576
+ enviar_dica_professor(id_estudante_selecionado, "Dica: " + df_dicas["constructo"].iloc[5], df_dicas["dicas"].iloc[5])
577
+ if autorregulacao_metacognitiva <= 4:
578
+ enviar_dica_professor(id_estudante_selecionado, "Dica: " + df_dicas["constructo"].iloc[6], df_dicas["dicas"].iloc[6])
579
+ if tempo_e_ambiente_de_estudo <= 4:
580
+ enviar_dica_professor(id_estudante_selecionado, "Dica: " + df_dicas["constructo"].iloc[7], df_dicas["dicas"].iloc[7])
581
+ if administracao_de_esforcos <= 4:
582
+ enviar_dica_professor(id_estudante_selecionado, "Dica: " + df_dicas["constructo"].iloc[8], df_dicas["dicas"].iloc[8])
583
+ else:
584
+ st.warning("Aluno ainda não respondeu ao questionário.")
pages/04_Enviar_recomendacoes.py ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+
3
+ from google.oauth2.credentials import Credentials
4
+ from googleapiclient.discovery import build
5
+ from googleapiclient.discovery import build
6
+
7
+ st.title("Enviar recomendações personalizadas para todos os alunos")
8
+ st.divider()
9
+
10
+ if "df_estudantes" not in st.session_state:
11
+ st.error("Volte para a tela principal faça login e carregue uma turma!")
12
+ else:
13
+
14
+ df_estudantes = st.session_state["df_estudantes"]
15
+ id_curso_selecionado = st.session_state["id_curso_selecionado"]
16
+
17
+ st.write("Dados dos alunos")
18
+
19
+ st.dataframe(df_estudantes, hide_index=True,
20
+ column_config={"userId": "ID do usuário",
21
+ "nome": "Nome",
22
+ "email": "E-mail"} )
23
+
24
+ st.write("Dicas para todos os alunos")
25
+ txt_titulo_dica_prof = st.text_input("Título", key="txt_titulo_dica_prof")
26
+ txt_desc_dica_prof = st.text_area("Descrição", key="txt_desc_dica_prof")
27
+ btn_enviar_dica_professor_todos = st.button("Enviar", key ="btndicaprofessor")
28
+
29
+ def enviar_dica_professor(titulo, descricao):
30
+
31
+ token = st.session_state['token']
32
+ classroom = build('classroom', 'v1', credentials=Credentials(token=token.get("access_token")))
33
+
34
+ dica = {
35
+ 'title': titulo,
36
+ 'description': descricao,
37
+ 'state': 'PUBLISHED',
38
+ }
39
+
40
+ # Enviar mensagem
41
+ dica_enviada = classroom.courses().courseWorkMaterials().create(courseId=id_curso_selecionado, body=dica).execute()
42
+ (f"Diva enviada para todos os alunos do sala de aula: {dica_enviada.get('id')}")
43
+
44
+ if btn_enviar_dica_professor_todos:
45
+ enviar_dica_professor(txt_titulo_dica_prof, txt_desc_dica_prof)
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
pages/05_Listar_questionario.py ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ import streamlit as st
3
+
4
+ st.title("Lista das perguntas do questionário de autorregulação")
5
+ st.divider()
6
+
7
+ if "id_curso_selecionado" not in st.session_state:
8
+ st.error("Volte para a tela principal faça login e carregue uma turma!")
9
+ else:
10
+
11
+ df_mslq = pd.read_csv("datasets/mslq.csv", names=["id_questao","Tipo","Constructo","Questão"], header=0 , usecols=["Tipo","Constructo","Questão"])
12
+ st.dataframe(df_mslq, hide_index=True)
13
+
14
+
15
+
16
+
pages/06_Listar_recomendacoes.py ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+
4
+
5
+
6
+ st.title("Lista das recomendacões automáticas de autorregulação")
7
+ st.divider()
8
+
9
+ if "id_curso_selecionado" not in st.session_state:
10
+ st.error("Volte para a tela principal faça login e carregue uma turma!")
11
+ else:
12
+ df_dicas = pd.read_csv("datasets/dicas.csv", names=["ID", "Tipo", "Título", "Constructo", "Dicas"], header=0 , usecols=["Tipo", "Título", "Constructo", "Dicas"])
13
+ df_dicas
pages/07_Listar_cursos.py ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+
3
+ st.title("Lista dos cursos do sala de aula")
4
+ st.divider()
5
+
6
+ if "df_cursos" not in st.session_state:
7
+ st.error("Volte para a tela principal faça login e carregue uma turma!")
8
+ else:
9
+
10
+ df_cursos = st.session_state['df_cursos']
11
+ df_cursos
pages/08_Listar_alunos.py ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ from google.oauth2.credentials import Credentials
4
+ from googleapiclient.discovery import build
5
+
6
+
7
+ st.title(f"Lista dos alunos do sala de aula.")
8
+ st.divider()
9
+
10
+ if "id_curso_selecionado" not in st.session_state:
11
+ st.error("Volte para a tela principal faça login e carregue uma turma!")
12
+ else:
13
+
14
+ token = st.session_state['token']
15
+ classroom = build('classroom', 'v1', credentials=Credentials(token=token.get("access_token")))
16
+
17
+ id_curso_selecionado = st.session_state["id_curso_selecionado"]
18
+
19
+ st.write(f"Curso selecionado: {id_curso_selecionado}")
20
+
21
+ # carrregar estudantes daquele curso
22
+ results = classroom.courses().students().list(courseId=id_curso_selecionado).execute()
23
+ estudantes = results.get("students", [])
24
+ lista_estudante = list()
25
+ for estudante in estudantes:
26
+ lista_estudante.append([estudante['userId'], estudante["profile"]["name"]["fullName"], estudante["profile"]["emailAddress"]])
27
+
28
+ df_estudantes = pd.DataFrame(lista_estudante, columns=["userId", "nome", "email"])
29
+ st.session_state["df_estudantes"] = df_estudantes
30
+ df_estudantes
pages/09_Configuracoes.py ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+
3
+ st.title("Configurações")
4
+ st.divider()
5
+
6
+ if "id_curso_selecionado" not in st.session_state:
7
+ st.error("Volte para a tela principal faça login e carregue uma turma!")
8
+ else:
9
+
10
+ st.header("Questionários")
11
+ st.write("Questionário Autorregulação 1.2 - [link](https://docs.google.com/forms/d/e/1FAIpQLSdPd0MY4UEUj3nmPB0yWE5njMdxIVmaVF6WYMzis5MDeMsubw/viewform)")
12
+ st.write("Questionário BigFive 1.2 - [link](https://docs.google.com/forms/d/e/1FAIpQLSdClNlfFq6D-6OPI8T-qeRZGScNd2aog_Pdu_3yfQHVI8T-Pg/viewform)")
13
+ st.divider()
14
+
15
+ st.header("Documentação")
16
+
17
+ #st.write("Questionário Autorregulação 1.1 - [link](https://docs.google.com/forms/d/e/1FAIpQLSfGXe0yUZve0ecQBCoUU7W7rQr4XQ6B9jDW1cKpG6gJt6c5YA/viewform)")
18
+ #st.write("Questionário BigFive 1.1 - [link](https://docs.google.com/forms/d/e/1FAIpQLSfnb-IOWP2ZdXbdBcO4dAzmc_6sQt6--TxywxJUaIfK-K3RqA/viewform)")
19
+ #st.write("Questionário de autorregulação X.0 - [link](https://docs.google.com/forms/d/e/1FAIpQLSeCw4dC2bJnr69qf2HkvOpFAAumkYq1hHvmYAO-N0CMERYyKg/viewform)")
20
+
21
+ st.write("Big Five - [link](https://edisciplinas.usp.br/pluginfile.php/5081564/mod_resource/content/1/Exercicio%20de%20Avaliacao%20de%20Personalidade_Big%20Five_v%202018%2010%2022_v4.pdf)")
22
+ st.write("Autorregulação - [link](https://drive.google.com/file/d/1Y3daYu1N1GpK29tkF3L5zocDLFI57yZI/view?usp=drive_link)")
23
+ st.divider()
24
+
25
+ st.header("Parametrização do sistema")
26
+ valor = st.session_state["limite"]
27
+ limite = st.slider('Qual o limite da Autorregulação?', 0, 7, valor)
28
+ st.session_state["limite"] = limite
29
+
pages/10_Sobre.py ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+
3
+ st.title("Sobre o NEOAVA")
4
+
5
+ st.divider()
6
+
7
+ st.write("""
8
+ * Esse AVA apresenta o perfil de autorregulação e bigfive dos estudantes!
9
+ * Recomendações são geradas para o estudante de acordo com o perfil de autorregulação e bigfive!
10
+ * O momento de envio das dicas fica a cargo do professor!
11
+ * Prova de conceito para o Doutorado de Alana Viana Borges Neo (email: viana.alana@gmail.com)
12
+ * Este AVA é construído baseado no Livro [Estratégias para recomendações de técnicas de autorregulação da aprendizagem](https://www.amazon.com/Estrat%C3%A9gias-recomenda%C3%A7%C3%B5es-t%C3%A9cnicas-autorregula%C3%A7%C3%A3o-aprendizagem-ebook/dp/B0CJWVN1VW/ref=sr_1_10?crid=FZTC9AFISN9N&keywords=autorregula%C3%A7%C3%A3o&qid=1696803151&sprefix=autorregula%C3%A7%C3%A3o%2Caps%2C172&sr=8-10), Alana Neo, 1ª Edição, (2023)
13
+ * Para acesso é necessário autorização. Envie um email para viana.alana@gmail.com com a solicitação para efetuar login.
14
+ """)
15
+
16
+
17
+ st.divider()
18
+
19
+ st.write("""
20
+ * Vá em configuração e preenha o questionário!
21
+ * Depois, na opção "Alunos" visualize o seu perfil!
22
+ * Se for professor da turma do sala de aula vc consegue ver o perfil de Todos os alunos!
23
+ """)
requirements.txt ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ streamlit
2
+ matplotlib
3
+ pandas
4
+ google-auth
5
+ google-api-python-client
6
+ oauth2client
7
+ protobuf
8
+ httpx-oauth
9
+ python-dotenv
10
+ typing_extensions
11
+ streamlit_oauth
todo.md ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ # Arquivo TODO
2
+
3
+ ## TODO: Enviar dica para o aluno
4
+ ## TODO: Exibir as atividades do classrrom
5
+
6
+ ## Para um novo usuário é necessário: incluir no sala de aula, incluir no google cloud e dar permissão na planilha