Skip to content

Commit

Permalink
(#145, #128) Adição de script de extração dos dados do PCBIO relacion…
Browse files Browse the repository at this point in the history
…ados a crédito de carbono e dados presentes no Sirene relacionados à Comunicação Nacional do Brasil sobre Emissões de GEE
  • Loading branch information
Victor-oss committed Oct 14, 2023
1 parent 16175f3 commit 26aa8ad
Show file tree
Hide file tree
Showing 14 changed files with 1,181 additions and 18 deletions.
3 changes: 2 additions & 1 deletion .github/workflows/atualiza_tabelas.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: run main.py

on:
schedule: [{cron: "0 15 * * 5"}] #agendamento
schedule: [{cron: "0 0 * * 1"}] #agendamento

jobs:
build:
Expand All @@ -18,6 +18,7 @@ jobs:
pip install requests==2.31.0
pip install pandas==2.0.2
pip install bs4==0.0.1
pip install openpyxl==3.1.2
- name: execute py script # run main.py
run: python 04_PipelineTCU/main.py
- name: commit files
Expand Down
2 changes: 1 addition & 1 deletion 04_PipelineTCU/benHandler.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ class BenHandler:
# def generateTable(self):
# Gera a tabela com os dados das matrizes consolidadas do BEN de 1970 até o ano mais atual


def __init__(self, file, path_final):
# Construtor da classe BenHandler.
# Args:
Expand All @@ -28,6 +27,7 @@ def drop_row_by_text(self, df, text):
# Args:
# df (DataFrame): Data Frame que armazena a linha que se deseja apagar
# text (str): texto que a linha a ser excluída contém
# Retorna: DataFrame
index_to_drop = df[df.iloc[:, 0].str.contains(text)].index
df.drop(index=index_to_drop, inplace=True)
return df
Expand Down
80 changes: 80 additions & 0 deletions 04_PipelineTCU/comunicacaoHandler.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
import math
import pandas as pd

class ComunicacaoHandler:
# Uma classe que lê o arquivo correspondente às emissões de Gases de Efeito Estufa (GEE) consolidadas da Comunicação Nacional do Brasil à Convenção-Quadro das Nações Unidas sobre Mudanças do Clima, transforma a tabela desejada, além de salvar o resultado em uma única tabela em arquivo csv com os dados das emissões de Gases de Efeito Estufa (GEE) consolidadas.

# Atributos:
# path (str): caminho até o arquivo de origem,
# path_final (str): caminho até a pasta ondes os arquivos serão salvos.

# Métodos:
# def drop_row_by_text(self, df, text):
# Exclui uma linha de um Data Frame com base no texto da sua primeira célula
# def transfColInt(self, df):
# Transforma todas as colunas do tipo float64 de um tabela para o tipo int 64 e retorna a tabela transformada
# def generateTable(self):
# Gera a tabela com os dados das emissões de Gases de Efeito Estufa (GEE) consolidadas.

def __init__(self, file, path_raiz, path_final):
# Construtor da classe BenHandler.
# Args:
# file (str): nome do arquivo de origem.
# path_raiz (str): caminho até o arquivo de origem.
# path_final (str): caminho até a pasta ondes os arquivos serão salvos.
self.path = path_raiz + file
self.path_final = path_final

def transfColInt(self, df):
# Transforma todas as colunas do tipo float64 de um tabela para o tipo int 64 e retorna a tabela transformada
#Args:
# df (DataFrame): DataFrame da tabela que será manipulada
# Retorna: DataFrame
for c in df.columns:
if df[c].dtype == 'float64':
df[c] = df[c].astype('int64')
return df

def drop_row_by_text(self, df, text):
# Exclui uma linha de um Data Frame com base no texto da sua primeira célula
# Args:
# df (DataFrame): Data Frame que armazena a linha que se deseja apagar
# text (str): texto que a linha a ser excluída contém
# Retorna: DataFrame
index_to_drop = df[df.iloc[:, 0].str.contains(text)].index
df.drop(index=index_to_drop, inplace=True)
return df

def generateTable(self):
# Gera a tabela com os dados das emissões de Gases de Efeito Estufa (GEE) consolidadas.
dict_file = pd.read_excel(self.path, sheet_name=None)
for k in dict_file.keys():
df = dict_file[k]
i = 0
while str(df.iloc[i,0]).find("GWP-1 (SAR)") == -1:
df.drop(index=df.iloc[i].name, inplace=True)
df_ano = df.iloc[1:2,:]
df_ano.dropna(axis=1, inplace=True)
for c in df_ano.columns:
if df_ano[c].dtype == 'float64':
df_ano[c] = df_ano[c].astype('int64')
df.dropna(inplace=True)
df = self.drop_row_by_text(df, 'TOTAL')
df.drop(index=df.iloc[-1].name, inplace=True)
df_tot = pd.DataFrame()
df_aux = df.iloc[:,0:1]
i = 0
tam = df_ano.columns.size
num_rows = len(df_aux)
df = df.iloc[:,1:]
df.iloc[:,:] = df.iloc[:,:].applymap(lambda x : math.floor(x) if (x*10 - int(x)*10) < 5 else math.ceil(x))
df = self.transfColInt(df)
while i < tam:
new_column_data = [df_ano.iloc[0, i]] * num_rows
df_aux['Ano'] = new_column_data
df_aux['Emissoes'] = df.iloc[:,0:1]
df = df.iloc[:,1:]
df_tot = pd.concat([df_tot, df_aux])
i += 1
cols = ["Setor", "Ano", "Emissoes"]
df_tot.to_csv(self.path_final + 'Comunicao.csv', header=cols, index=False)
Binary file added 04_PipelineTCU/constants/ComunicacaoNacional.xlsx
Binary file not shown.
131 changes: 131 additions & 0 deletions 04_PipelineTCU/constants/Comunicao.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
Setor,Ano,Emissoes
ENERGIA,1990,187
PROCESSOS INDUSTRIAIS,1990,52
AGROPECUÁRIA,1990,287
MUDANÇA DE USO DA TERRA E FLORESTAS (com remoção),1990,792
TRATAMENTO DE RESÍDUOS,1990,28
ENERGIA,1991,193
PROCESSOS INDUSTRIAIS,1991,59
AGROPECUÁRIA,1991,295
MUDANÇA DE USO DA TERRA E FLORESTAS (com remoção),1991,649
TRATAMENTO DE RESÍDUOS,1991,29
ENERGIA,1992,196
PROCESSOS INDUSTRIAIS,1992,57
AGROPECUÁRIA,1992,302
MUDANÇA DE USO DA TERRA E FLORESTAS (com remoção),1992,800
TRATAMENTO DE RESÍDUOS,1992,30
ENERGIA,1993,201
PROCESSOS INDUSTRIAIS,1993,62
AGROPECUÁRIA,1993,304
MUDANÇA DE USO DA TERRA E FLORESTAS (com remoção),1993,862
TRATAMENTO DE RESÍDUOS,1993,31
ENERGIA,1994,210
PROCESSOS INDUSTRIAIS,1994,62
AGROPECUÁRIA,1994,311
MUDANÇA DE USO DA TERRA E FLORESTAS (com remoção),1994,862
TRATAMENTO DE RESÍDUOS,1994,32
ENERGIA,1995,225
PROCESSOS INDUSTRIAIS,1995,65
AGROPECUÁRIA,1995,317
MUDANÇA DE USO DA TERRA E FLORESTAS (com remoção),1995,1931
TRATAMENTO DE RESÍDUOS,1995,33
ENERGIA,1996,242
PROCESSOS INDUSTRIAIS,1996,67
AGROPECUÁRIA,1996,303
MUDANÇA DE USO DA TERRA E FLORESTAS (com remoção),1996,1259
TRATAMENTO DE RESÍDUOS,1996,34
ENERGIA,1997,257
PROCESSOS INDUSTRIAIS,1997,68
AGROPECUÁRIA,1997,310
MUDANÇA DE USO DA TERRA E FLORESTAS (com remoção),1997,956
TRATAMENTO DE RESÍDUOS,1997,36
ENERGIA,1998,267
PROCESSOS INDUSTRIAIS,1998,71
AGROPECUÁRIA,1998,314
MUDANÇA DE USO DA TERRA E FLORESTAS (com remoção),1998,1212
TRATAMENTO DE RESÍDUOS,1998,37
ENERGIA,1999,279
PROCESSOS INDUSTRIAIS,1999,71
AGROPECUÁRIA,1999,318
MUDANÇA DE USO DA TERRA E FLORESTAS (com remoção),1999,1204
TRATAMENTO DE RESÍDUOS,1999,39
ENERGIA,2000,286
PROCESSOS INDUSTRIAIS,2000,74
AGROPECUÁRIA,2000,328
MUDANÇA DE USO DA TERRA E FLORESTAS (com remoção),2000,1266
TRATAMENTO DE RESÍDUOS,2000,40
ENERGIA,2001,297
PROCESSOS INDUSTRIAIS,2001,70
AGROPECUÁRIA,2001,340
MUDANÇA DE USO DA TERRA E FLORESTAS (com remoção),2001,1261
TRATAMENTO DE RESÍDUOS,2001,41
ENERGIA,2002,295
PROCESSOS INDUSTRIAIS,2002,74
AGROPECUÁRIA,2002,352
MUDANÇA DE USO DA TERRA E FLORESTAS (com remoção),2002,1478
TRATAMENTO DE RESÍDUOS,2002,43
ENERGIA,2003,290
PROCESSOS INDUSTRIAIS,2003,75
AGROPECUÁRIA,2003,373
MUDANÇA DE USO DA TERRA E FLORESTAS (com remoção),2003,2438
TRATAMENTO DE RESÍDUOS,2003,44
ENERGIA,2004,306
PROCESSOS INDUSTRIAIS,2004,80
AGROPECUÁRIA,2004,386
MUDANÇA DE USO DA TERRA E FLORESTAS (com remoção),2004,2636
TRATAMENTO DE RESÍDUOS,2004,45
ENERGIA,2005,316
PROCESSOS INDUSTRIAIS,2005,78
AGROPECUÁRIA,2005,392
MUDANÇA DE USO DA TERRA E FLORESTAS (com remoção),2005,1905
TRATAMENTO DE RESÍDUOS,2005,47
ENERGIA,2006,320
PROCESSOS INDUSTRIAIS,2006,80
AGROPECUÁRIA,2006,392
MUDANÇA DE USO DA TERRA E FLORESTAS (com remoção),2006,1486
TRATAMENTO DE RESÍDUOS,2006,48
ENERGIA,2007,334
PROCESSOS INDUSTRIAIS,2007,79
AGROPECUÁRIA,2007,384
MUDANÇA DE USO DA TERRA E FLORESTAS (com remoção),2007,1273
TRATAMENTO DE RESÍDUOS,2007,49
ENERGIA,2008,353
PROCESSOS INDUSTRIAIS,2008,82
AGROPECUÁRIA,2008,390
MUDANÇA DE USO DA TERRA E FLORESTAS (com remoção),2008,1377
TRATAMENTO DE RESÍDUOS,2008,50
ENERGIA,2009,342
PROCESSOS INDUSTRIAIS,2009,73
AGROPECUÁRIA,2009,396
MUDANÇA DE USO DA TERRA E FLORESTAS (com remoção),2009,421
TRATAMENTO DE RESÍDUOS,2009,51
ENERGIA,2010,375
PROCESSOS INDUSTRIAIS,2010,90
AGROPECUÁRIA,2010,407
MUDANÇA DE USO DA TERRA E FLORESTAS (com remoção),2010,349
TRATAMENTO DE RESÍDUOS,2010,53
ENERGIA,2011,389
PROCESSOS INDUSTRIAIS,2011,96
AGROPECUÁRIA,2011,419
MUDANÇA DE USO DA TERRA E FLORESTAS (com remoção),2011,283
TRATAMENTO DE RESÍDUOS,2011,56
ENERGIA,2012,422
PROCESSOS INDUSTRIAIS,2012,97
AGROPECUÁRIA,2012,415
MUDANÇA DE USO DA TERRA E FLORESTAS (com remoção),2012,252
TRATAMENTO DE RESÍDUOS,2012,57
ENERGIA,2013,452
PROCESSOS INDUSTRIAIS,2013,98
AGROPECUÁRIA,2013,421
MUDANÇA DE USO DA TERRA E FLORESTAS (com remoção),2013,391
TRATAMENTO DE RESÍDUOS,2013,61
ENERGIA,2014,475
PROCESSOS INDUSTRIAIS,2014,97
AGROPECUÁRIA,2014,426
MUDANÇA DE USO DA TERRA E FLORESTAS (com remoção),2014,234
TRATAMENTO DE RESÍDUOS,2014,62
ENERGIA,2015,449
PROCESSOS INDUSTRIAIS,2015,95
AGROPECUÁRIA,2015,429
MUDANÇA DE USO DA TERRA E FLORESTAS (com remoção),2015,332
TRATAMENTO DE RESÍDUOS,2015,63
Binary file added 04_PipelineTCU/constants/PCBIO.xlsx
Binary file not shown.
Loading

0 comments on commit 26aa8ad

Please sign in to comment.