Skip to content

Instantly share code, notes, and snippets.

@p-freire
Last active March 7, 2020 01:44
Show Gist options
  • Save p-freire/d7314b74c5db9d0e4b3256cd29f70377 to your computer and use it in GitHub Desktop.
Save p-freire/d7314b74c5db9d0e4b3256cd29f70377 to your computer and use it in GitHub Desktop.
#-------------------------------------------------------------------------------------------------------
# Código feito para consolidar as informações dos extratos
# mensais do CEI. 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.csv", que vai estar dentro da mesma pasta.
#
# Autor: Paulo Freire
# Data: 2020-03-05
#-------------------------------------------------------------------------------------------------------
import pandas as pd
import os
import fnmatch
# 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)
# Pega os arquivos dos extratos mensais
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 - CREDITADOS"]
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 - CREDITADOS"]
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])
# Salva arquivo
df.groupby(["Ativo", "Especif."]).sum().reset_index().rename(columns = {"Creditado No Mês" : "Total recebido"}).to_csv("cei_consolidado.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