Created
March 9, 2020 11:26
-
-
Save p-freire/39d6ab51f45acda13f53442b56526424 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #------------------------------------------------------------------------------------------------------- | |
| # Código feito para consolidar as informações dos extratos | |
| # mensais do CEI (provisionados). A ideia é salvar informações apenas | |
| # relacionadas ao ano de 2020, pois os de 2019 foram creditados em algum momento do ano. | |
| # Para rodar o script: | |
| # 1) Baixe todos os extratos do ano e coloque na mesma pasta que estiver esse script. | |
| # 2) Rode o script na pasta. | |
| # 3) Verifique a saída no arquivo chamado "cei_consolidado_prov.csv", que vai estar dentro da mesma pasta. | |
| # | |
| # Autor: Paulo Freire | |
| # Data: 2020-03-08 | |
| #------------------------------------------------------------------------------------------------------- | |
| import pandas as pd | |
| import os | |
| import fnmatch | |
| import re | |
| # Remove colunas desnecessárias | |
| def read_clean_dataframe(file, idx): | |
| df = pd.read_excel(file, header = idx_to_read) | |
| cols_to_drop = [x for x in df.columns if fnmatch.fnmatch(x, "*Unnamed*")] | |
| return df.drop(columns = cols_to_drop).dropna(axis = 0).dropna(axis = 1) | |
| files = [] | |
| for file in sorted(os.listdir(os.getcwd())): | |
| if file.endswith(".xls"): | |
| files.append(file) | |
| # Cria primeiro dataframe, que vai servir de base para os outros | |
| df = pd.read_excel(files[0]) | |
| for col in df.columns: | |
| aux = df.loc[df[col] == "PROVENTOS EM DINHEIRO - PROVISIONADOS"] | |
| if aux.shape[0]: | |
| idx_to_read = aux.index[0] + 2 | |
| df = read_clean_dataframe(files[0], idx_to_read) | |
| # Repete o racional, iterando para o resto da lista | |
| for file in files[1:]: | |
| df_tmp = pd.read_excel(file) | |
| for col in df_tmp.columns: | |
| aux = df_tmp.loc[df_tmp[col] == "PROVENTOS EM DINHEIRO - PROVISIONADOS"] | |
| if aux.shape[0]: | |
| idx_to_read = aux.index[0] + 2 | |
| # Faz o concat com o dataframe de base | |
| df_tmp = read_clean_dataframe(file, idx_to_read) | |
| df = pd.concat([df, df_tmp]) | |
| df = df.reset_index(drop = True) | |
| # Cria o padrão de ano para pegar somente: | |
| # 1) Lançamentos em 2020; | |
| # 2) Lançamentos sem previsão. | |
| pattern = "[0-9]{4}" | |
| df["Previsão de Pagamento"] = df["Previsão de Pagamento"].astype(str) | |
| aux = [re.search(pattern, x).group() if re.search(pattern, x) else "0" for x in df["Previsão de Pagamento"]] | |
| df["Ano"] = aux | |
| # Pega somente ocorrências de interesse e salva o arquivo | |
| df_prov_ano_seguinte = df.loc[(df["Ano"] == "2020") | (df["Ano"] == "0")] | |
| df_prov_ano_seguinte.groupby(["Ativo", "Especif.", "Previsão de Pagamento"])["Valor"].sum().reset_index().to_csv("cei_consolidado_prov.csv", index = False, encoding = "utf-8-sig") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment