-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #587 from basedosdados/br_rf_arrecadacao
[dados]br_rf_arrecadacao
- Loading branch information
Showing
5 changed files
with
463 additions
and
0 deletions.
There are no files selected for viewing
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
{{ | ||
config( | ||
schema="br_rf_arrecadacao", | ||
alias="uf", | ||
materialized="table", | ||
partition_by={ | ||
"field": "ano", | ||
"data_type": "int64", | ||
"range": {"start": 2000, "end": 2024, "interval": 1}, | ||
}, | ||
cluster_by=["mes"], | ||
) | ||
}} | ||
|
||
select | ||
safe_cast(ano as int64) ano, | ||
safe_cast(mes as int64) mes, | ||
safe_cast(sigla_uf as string) sigla_uf, | ||
safe_cast(imposto_importacao as float64) imposto_importacao, | ||
safe_cast(imposto_exportacao as float64) imposto_exportacao, | ||
safe_cast(ipi_fumo as float64) ipi_fumo, | ||
safe_cast(ipi_bebidas as float64) ipi_bebidas, | ||
safe_cast(ipi_automoveis as float64) ipi_automoveis, | ||
safe_cast(ipi_importacoes as float64) ipi_importacoes, | ||
safe_cast(ipi_outros as float64) ipi_outros, | ||
safe_cast(irpf as float64) irpf, | ||
safe_cast(irpj_entidades_financeiras as float64) irpj_entidades_financeiras, | ||
safe_cast(irpj_demais_empresas as float64) irpj_demais_empresas, | ||
safe_cast(irrf_rendimentos_trabalho as float64) irrf_rendimentos_trabalho, | ||
safe_cast(irrf_rendimentos_capital as float64) irrf_rendimentos_capital, | ||
safe_cast(irrf_remessas_exterior as float64) irrf_remessas_exterior, | ||
safe_cast(irrf_outros_rendimentos as float64) irrf_outros_rendimentos, | ||
safe_cast(iof as float64) iof, | ||
safe_cast(itr as float64) itr, | ||
safe_cast(ipmf as float64) ipmf, | ||
safe_cast(cpmf as float64) cpmf, | ||
safe_cast(cofins as float64) cofins, | ||
safe_cast(cofins_financeiras as float64) cofins_entidades_financeiras, | ||
safe_cast(cofins_demais_empresas as float64) cofins_demais_empresas, | ||
safe_cast(pis_pasep as float64) pis_pasep, | ||
safe_cast( | ||
pis_pasep_entidades_financeiras as float64 | ||
) pis_pasep_entidades_financeiras, | ||
safe_cast(pis_pasep_demais_empresas as float64) pis_pasep_demais_empresas, | ||
safe_cast(csll as float64) csll, | ||
safe_cast(csll_financeiras as float64) csll_entidades_financeiras, | ||
safe_cast(csll_demais_empresas as float64) csll_demais_empresas, | ||
safe_cast( | ||
cide_combustiveis_parcela_nao_dedutivel as float64 | ||
) cide_combustiveis_parcela_nao_dedutivel, | ||
safe_cast(cide_combustiveis as float64) cide_combustiveis, | ||
safe_cast(cpsss_1 as float64) cpsss_1, | ||
safe_cast(cpsss_2 as float64) cpsss_2, | ||
safe_cast(contribuicoes_fundaf as float64) contribuicao_fundaf, | ||
safe_cast(refis as float64) refis, | ||
safe_cast(paes as float64) paes, | ||
safe_cast(retencoes_fonte as float64) retencoes_fonte, | ||
safe_cast(pagamento_unificado as float64) pagamento_unificado, | ||
safe_cast(outras_receitas_ as float64) outras_receitas_rfb, | ||
safe_cast(demais_receitas as float64) demais_receitas, | ||
safe_cast(receita_previdenciaria as float64) receita_previdenciaria, | ||
safe_cast(receita_previdenciaria_propria as float64) receita_previdenciaria_propria, | ||
safe_cast(receita_previdenciaria_demais as float64) receita_previdenciaria_demais, | ||
safe_cast(receitas_outros_orgaos as float64) receitas_outros_orgaos, | ||
from `basedosdados-dev.br_rf_arrecadacao_staging.uf` as t |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,120 @@ | ||
import os | ||
import numpy as np | ||
import pandas as pd | ||
|
||
file_directory = os.path.dirname(__file__) | ||
|
||
def read_data(): | ||
data_directory = os.path.join(file_directory, '../input/arrecadacao-estado.csv') | ||
return pd.read_csv(data_directory, sep=';') | ||
|
||
def removeEmptyRows(df): | ||
return df.dropna(axis=0, how='all') | ||
|
||
def rename_columns(df): | ||
name_dict = { | ||
'Ano':'ano', | ||
'Mês':'mes', | ||
'UF':'sigla_uf', | ||
'IMPOSTO SOBRE IMPORTAÇÃO':'imposto_importacao', | ||
'IMPOSTO SOBRE EXPORTAÇÃO':'imposto_exportacao', | ||
'IPI - FUMO':'ipi_fumo', | ||
'IPI - BEBIDAS':'ipi_bebidas', | ||
'IPI - AUTOMÓVEIS':'ipi_automoveis', | ||
'IPI - VINCULADO À IMPORTACAO':'ipi_importacoes', | ||
'IPI - OUTROS':'ipi_outros', | ||
'IRPF':'irpf', | ||
'IRPJ - ENTIDADES FINANCEIRAS':'irpj_entidades_financeiras', | ||
'IRPJ - DEMAIS EMPRESAS':'irpj_demais_empresas', | ||
'IRRF - RENDIMENTOS DO TRABALHO':'irrf_rendimentos_trabalho', | ||
'IRRF - RENDIMENTOS DO CAPITAL':'irrf_rendimentos_capital', | ||
'IRRF - REMESSAS P/ EXTERIOR':'irrf_remessas_exterior', | ||
'IRRF - OUTROS RENDIMENTOS':'irrf_outros_rendimentos', | ||
'IMPOSTO S/ OPERAÇÕES FINANCEIRAS':'iof', | ||
'IMPOSTO TERRITORIAL RURAL':'itr', | ||
'IMPOSTO PROVIS.S/ MOVIMENT. FINANC. - IPMF':'ipmf', | ||
'CPMF':'cpmf', | ||
'COFINS':'cofins', | ||
'COFINS - FINANCEIRAS':'cofins_financeiras', | ||
'COFINS - DEMAIS':'cofins_demais_empresas', | ||
'CONTRIBUIÇÃO PARA O PIS/PASEP':'pis_pasep', | ||
'CONTRIBUIÇÃO PARA O PIS/PASEP - FINANCEIRAS':'pis_pasep_entidades_financeiras', | ||
'CONTRIBUIÇÃO PARA O PIS/PASEP - DEMAIS':'pis_pasep_demais_empresas', | ||
'CSLL':'csll', | ||
'CSLL - FINANCEIRAS':'csll_financeiras', | ||
'CSLL - DEMAIS':'csll_demais_empresas', | ||
'CIDE-COMBUSTÍVEIS (parc. não dedutível)': 'cide_combustiveis_parcela_nao_dedutivel', | ||
'CIDE-COMBUSTÍVEIS':'cide_combustiveis', | ||
'CONTRIBUIÇÃO PLANO SEG. SOC. SERVIDORES':'cpsss_1', | ||
'CPSSS - Contrib. p/ o Plano de Segurid. Social Serv. Público':'cpsss_2', | ||
'CONTRIBUICÕES PARA FUNDAF':'contribuicoes_fundaf', | ||
'REFIS':'refis', | ||
'PAES':'paes', | ||
'RETENÇÃO NA FONTE - LEI 10.833, Art. 30':'retencoes_fonte', | ||
'PAGAMENTO UNIFICADO':'pagamento_unificado', | ||
'OUTRAS RECEITAS ADMINISTRADAS':'outras_receitas_', | ||
'DEMAIS RECEITAS':'demais_receitas', | ||
'RECEITA PREVIDENCIÁRIA':'receita_previdenciaria', | ||
'RECEITA PREVIDENCIÁRIA - PRÓPRIA':'receita_previdenciaria_propria', | ||
'RECEITA PREVIDENCIÁRIA - DEMAIS':'receita_previdenciaria_demais', | ||
'ADMINISTRADAS POR OUTROS ÓRGÃOS':'receitas_outros_orgaos' | ||
} | ||
|
||
return df.rename(columns=name_dict) | ||
|
||
def replace_commas(value): | ||
string_value = str(value) | ||
num_commas = string_value.count(',') | ||
if num_commas == 1: | ||
return string_value.replace(',','.') | ||
elif num_commas > 1: | ||
return string_value.replace(',','',num_commas-1).replace(',','.') | ||
else: | ||
return string_value | ||
|
||
def remove_dots(value): | ||
string_value = str(value) | ||
num_dots = string_value.count('.') | ||
if num_dots > 1: | ||
return string_value.replace('.','',num_dots-1) | ||
else: | ||
return string_value | ||
|
||
def get_month_number(month_column): | ||
month_numbers = { | ||
'Janeiro': '1', | ||
'Fevereiro': '2', | ||
'Março': '3', | ||
'Abril': '4', | ||
'Maio': '5', | ||
'Junho': '6', | ||
'Julho': '7', | ||
'Agosto': '8', | ||
'Setembro': '9', | ||
'Outubro': '10', | ||
'Novembro': '11', | ||
'Dezembro':'12' | ||
} | ||
return month_column.replace(month_numbers).astype('int') | ||
|
||
def change_types(df): | ||
df['ano'] = df['ano'].astype('int') | ||
df['mes'] = get_month_number(df['mes']) | ||
df['sigla_uf'] = df['sigla_uf'].astype('string') | ||
|
||
#All remaining columns are monetary values | ||
for col in df.columns[3:]: | ||
df[col] = df[col].apply(replace_commas).apply(remove_dots).astype('float') | ||
|
||
return df | ||
|
||
def save_data(df): | ||
data_directory = os.path.join(file_directory, '../output/br_rf_arrecadacao') | ||
df.to_parquet(data_directory, partition_cols=['ano','mes']) | ||
|
||
if __name__ == '__main__': | ||
df = read_data() | ||
df = removeEmptyRows(df) | ||
df = rename_columns(df) | ||
df = change_types(df) | ||
save_data(df) |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
import requests | ||
|
||
def download_data(url, file_path): | ||
response = requests.get(url) | ||
with open(file_path, 'w') as file: | ||
file.write(response.content.decode('latin1')) | ||
|
||
if __name__ == "__main__": | ||
url = "https://www.gov.br/receitafederal/dados/arrecadacao-estado.csv" | ||
file_path = f"input/arrecadacao-estado.csv" | ||
download_data(url, file_path) |
Oops, something went wrong.