def carrega_voluntarios() -> pd.DataFrame: """Carrega as informações dos voluntários do CPM, tanto Teachers quanto EAS;. Returns: pandas.DataFrame: Relação de Voluntários. """ teachers = f.load_df_from_sheet(v.ALOCACAO, v.ABA_TEACHERS) eas = f.load_df_from_sheet(v.ALOCACAO, v.ABA_EAS) return teachers.append(eas)
def carrega_alocacao() -> dict: """Carrega as planilhas de alocação de voluntários e retorna como um DataFrame Returns: dict: pandas.DataFrame -- Alocacação Consolidada das Turmas """ aloc = {} for turma, planilha in zip(v.TURMAS, v.FEEDBACKS): print(f"Carregando Alocação: {turma}") aloc[turma] = f.load_df_from_sheet(planilha, v.ABA_ALOC) print("Carregando Alocação: EA") aloc["EA"] = f.load_df_from_sheet(v.ALOCACAO, v.ABA_ALOC_EAS) alocacao = pd.DataFrame(columns=v.COLS_ALOCACAO) for k, df in aloc.items(): # print("Processing: ", k) dict_aloc = {} for _, line in df.iterrows(): dict_aloc["Aula"] = line.Aula dict_aloc["Data"] = line.Data dict_aloc["Turma"] = k for nome in line[3:]: if nome: dict_aloc["Nome"] = nome alocacao = alocacao.append(dict_aloc, ignore_index=True) alocacao["Data"] = alocacao["Data"].dropna().apply(transform_date) alocacao.sort_values(by=["Data", "Turma"], inplace=True) alocacao = alocacao.drop(axis=1, columns=["Turma"]) return alocacao
# Every time we change a module they are reload before executing # %reload_ext autoreload # %autoreload 2 AULA = '7' # - # ### Carrega a alocação # Itera todas as planilhas de feedback, carrega a aba de alocação e formata de maneira tabular alocacao = agenda.carrega_alocacao().dropna(subset=["Nome", "Aula"]) alocacao.head() # Este método `.dropna(subset=["Nome", "Aula"])` ignora as linhas com a aula ou nome vazios # ### Lê a agenda para verificar em qual linha termina agenda_joao = functions.load_df_from_sheet(ALOCACAO, "Agenda").dropna(subset=["Nome"]) agenda_joao.tail() agenda_joao.shape linha_vazia = agenda_joao.shape[0] + 2 # ### Filtra a alocação somente para a aula atual alocacao = alocacao[alocacao["Aula"] == AULA] functions.salva_aba_no_drive(alocacao, ALOCACAO, "Agenda", row=linha_vazia)
# Every time we change a module they are reload before executing # %reload_ext autoreload # %autoreload 2 # - path listas = f.carrega_listas() turmas = f.load_turmas() notas = f.carrega_notas() notas alunos = f.load_df_from_sheet("J23_Alunos_Consolidado", "Alunos_2019_1S") listas[["Total_Homework"]] notas = ["Desistência", "Evasão"] for col in notas: df = listas[[col]] col_index = alunos.columns.get_loc(col) + 4 f.atualizar_coluna_df(df, "J23_Alunos_Consolidado", "Alunos_2019_1S", row=2, col=col_index) def atualizar_coluna_df(df: pd.DataFrame, sheet: Union[str, gspread.Spreadsheet], aba: str, row: int, col: int): salva_aba_no_drive(df, plan, , aba, row, col)
sheets = f.load_workbooks_from_drive() sheets # + exp = "'\"&turma&\"'" value = fr'=query(IMPORTRANGE(link_alunos, range_alunos), "select Col2,Col3,Col4,Col6,Col9,Col10,Col11,Col12,Col13,Col14, Col15 where Col1 = {exp}")' for name, sh in turmas.items(): print(name) wb = f.load_wb_from_sheet(sh.title, "Info_Students") wb.update_cell(1, 1, value) # - alocação = f.load_df_from_sheet(ALOCACAO, "Agenda", col_names=COLS_AGENDA + ["Presente"]) alocação.head() listas = f.carrega_listas() listas.head() listas = listas[listas.Evasão == "Não"] listas = listas[listas.Desistência == ""] listas = listas[listas.Obs == ""] listas.head() # ## Define Aula a ser verificada e Filtra Lista de Presença