Busca de Pedidos e Respostas - Download de dados
Baixando dados realizados pela Lei de Acesso à Informação (LAI) de Pedidos e Recursos/Reclamações.
Nesse notebook (baixe aqui) vamos apresentar como podemos, utilizando a linguagem de programação python, baixar de forma mais automática dos dados da lai de pedidos e recursos/reclamações.
Para baixar os arquivos, você pode instalar o anaconda (https://www.anaconda.com/) que instala o python e diversos outros pacotes. Copie os conteúdos das células abaixo em um arquivo .py ou em um Jupyter Notebook (https://docs.jupyter.org/pt_BR/latest/running.html).
Para instalar um pacote do python, você pode usar o comando pip (pip install nome_do_pacote).
Crie também as pastas csvs_rel, csvs_txts, dados, zips_lai_rel e zip_lai_txts
-- CAMPOS: PEDIDOS
- IdPedido - inteiro: identificador único do pedido (não mostrado no sistema);
- ProtocoloPedido - texto(17): número do protocolo do pedido;
- Esfera - texto(30): esfera do órgão destinatário do pedido;
- UF - texto(2): Sigla da UF do pedido quando não federal;
- Municipio - texto(200): Nome do município do pedido quando não federal;
- OrgaoDestinatario - texto(250): nome do órgão destinatário do pedido;
- Situacao - texto(200): descrição da situação do pedido;
- DataRegistro - Data DD/MM/AAAA: data de abertura do pedido;
- PrazoAtendimento - Data DD/MM/AAAA: data limite para atendimento ao pedido;
- FoiProrrogado - texto(3) "Sim" ou "Não" : informa se houve prorrogação do prazo do pedido;
- FoiReencaminhado - texto(3) "Sim" ou "Não": informa se o pedido foi reencaminhado;
- FormaResposta - texto(200): tipo de resposta escolhida pelo solicitante na abertura do pedido;
- OrigemSolicitacao - texto(50): informa se o pedido foi aberto em um Balcão SIC ou pela Internet;
- IdSolicitante - inteiro: identificador único do solicitante (não mostrado no sistema);
- AssuntoPedido - texto(200) : assunto do pedido atribuído pel SIC;
- SubAssuntoPedido - texto(200) : subassunto do pedido atribuída pelo SIC;
- Tag - texto(1024): as tags são marcadores no pedido para realizar classificações que não estão em assuntos/ subassuntos;
- DataResposta - Data DD/MM/AAAA : data da resposta ao pedido (campo em branco para pedidos que ainda estejam na situação "Em Tramitação");
- Decisao - texto(100) : tipo resposta dada ao pedido (campo em branco para pedidos que ainda estejam na situação "Em Tramitação");
- EspecificacaoDecisao - texto(200): subtipo da resposta dada ao pedido (campo em branco para pedidos que ainda estejam na situação "Em Tramitação");
-- CAMPOS: RECURSOS
- IdRecurso - inteiro: identificador único do recurso (não mostrado no sistema);
- IdRecursoPrecedente - inteiro: identificador único do recurso que precedeu este (não mostrado no sistema e em branco no caso de Recursos de 1ª Instância e Reclamações);
- IdPedido - inteiro: identificador único do pedido ao qual o recurso pertence (não mostrado no sistema);
- IdSolicitante - inteiro: identificador único do solicitante (não mostrado no sistema);
- ProtocoloPedido - texto(17): número do protocolo do pedido ao qual o recurso pertence;
- Esfera - texto(30): descrição da esfera do recurso;
- UF - texto(2): Sigla da UF do recurso quando não federal;
- Municipio - texto(200): Nome do município do recurso quando não federal;
- OrgaoDestinatario - texto(250): nome do órgão destinatário do recurso;
- Instancia - texto(80): descrição da instância do recurso;
- Situacao - texto(80): descrição da situação do recurso;
- DataRegistro - Data DD/MM/AAAA: data de abertura do recurso;
- PrazoAtendimento - Data DD/MM/AAAA: data limite para atendimento ao recurso;
- OrigemSolicitacao - texto(50): informa se o recurso foi aberto em um Balcão SIC ou pela Internet;
- TipoRecurso - texto(80): motivo de abertura do recurso;
- DataResposta - Data DD/MM/AAAA: data da resposta ao recurso (campo em branco para recursos que ainda estejam na situação "Em Tramitação");
- TipoResposta - texto(80): tipo resposta dada ao recurso (campo em branco para recursos que ainda estejam na situação "Em Tramitação");
-- CAMPOS: SOLICITANTES
- IdSolicitante - inteiro: identificador único do solicitante (não mostrado no sistema);
- TipoDemandante - texto(15): Pessoa Fìsica ou Pessoa Jurídica;
- DataNascimento - Data DD/MM/AAAA: data de nascimento do solicitante;
- Genero - texto(13) : Masculino, Feminino ou Outro(em branco para pessoa jurídica);
- Escolaridade - texto(200): Escolaridade do solicitante (em branco para pessoa jurídica);
- Profissao - texto(200): Profissão do solicitante (em branco para pessoa jurídica);
- TipoPessoaJuridica - texto(200): tipo de Pessoa Jurídica do solicitante (em branco para pessoa física)
- Pais - texto(200): país de residência do solicitante;
- UF - texto(2): UF de residência do solicitante;
- Municipio - texto(200): Município de residência do solicitante;
import requests
from datetime import date
import shutil
import os
import time
import zipfile
import pandas as pd
import re
header_pedidos = ['IdPedido',
'ProtocoloPedido',
'Esfera',
'UF',
'Municipio',
'OrgaoDestinatario',
'Situacao',
'DataRegistro',
'PrazoAtendimento',
'FoiProrrogado',
'FoiReencaminhado',
'FormaResposta',
'OrigemSolicitacao',
'IdSolicitante',
'AssuntoPedido',
'SubAssuntoPedido',
'Tag',
'DataResposta',
'Decisao',
'EspecificacaoDecisao']
header_recursos = ['IdRecurso',
'IdRecursoPrecedente',
'IdPedido',
'IdSolicitante',
'ProtocoloPedido',
'Esfera',
'UF',
'Municipio',
'OrgaoDestinatario',
'Instancia',
'Situacao',
'DataRegistro',
'PrazoAtendimento',
'OrigemSolicitacao',
'TipoRecurso',
'DataResposta',
'TipoResposta']
header_solicitante = ['IdSolicitante',
'TipoDemandante',
'DataNascimento',
'Genero',
'Escolaridade',
'Profissao',
'TipoPessoaJuridica',
'Pais',
'UF',
'Municipio']
ANO_INICIO=2012
PREFIXO_ACESSO = "Pedidos"
PREFIXO_RECURSO = "Recursos_Reclamacoes"
NOME_ARQUIVO_BASE = "{prefixo}_{formato_arquivo}_{ano}.zip"
URL_BASE = "https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR/{nome_arquivo}"
NOME_ARQUIVO_FILTRADO = 'Arquivos_{formato_arquivo}_{ano}.zip'
URL_FILTRADOS = "https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR_Filtrado/{nome_arquivo}"
def busca_lai_por_anos(anos, tipo_dados='acesso', localizacao='./', formato_arquivo='csv'):
"""
anos: Lista de anos para download.
tipo_dados: Se o arquivo é de acesso ou recurso
localizacao: Onde salvar os arquivos
formato_arquivo: formatos xml|csv
"""
if tipo_dados.lower() == "acesso":
prefix = PREFIXO_ACESSO
else:
prefix = PREFIXO_RECURSO
for year in anos:
nome_arquivo = NOME_ARQUIVO_BASE.format(prefixo=prefix, formato_arquivo=formato_arquivo, ano=str(year))
url = URL_BASE.format(nome_arquivo=nome_arquivo)
try:
response = requests.get(url, stream=True)
with open(os.path.join(localizacao, nome_arquivo), 'wb') as out_file:
shutil.copyfileobj(response.raw, out_file)
print(f"Arquivo {nome_arquivo} baixado de {url}")
except Exception as e:
print(e)
print(f"Error baixando arquivo {nome_arquivo} da url {url}")
time.sleep(2)
def unzip_arquivos(de='zips', diretorio_destino='csvs'):
#https://stackoverflow.com/questions/3451111/unzipping-files-in-python
pattern = re.compile(".*\.zip")
files = os.listdir(de)
for file in files:
if os.path.isfile(os.path.join(de, file)) and pattern.match(file.lower()) != None:
arquivo = os.path.join(de, file)
with zipfile.ZipFile(arquivo,"r") as arquivo_zip:
print(f'descompactando {arquivo}')
arquivo_zip.extractall(diretorio_destino)
def busca_textos_por_anos(anos, localizacao='./', formato_arquivo='csv'):
"""
anos: Lista de anos para download.
localizacao: Onde salvar os arquivos
formato_arquivo: formatos xml|csv
"""
for year in anos:
nome_arquivo = NOME_ARQUIVO_FILTRADO.format(formato_arquivo=formato_arquivo, ano=str(year))
url = URL_FILTRADOS.format(nome_arquivo=nome_arquivo)
try:
response = requests.get(url, stream=True)
with open(os.path.join(localizacao, nome_arquivo), 'wb') as out_file:
shutil.copyfileobj(response.raw, out_file)
print(f"Arquivo {nome_arquivo} baixado de {url}")
except Exception as e:
print(e)
print(f"Error baixando arquivo {nome_arquivo} da url {url}")
time.sleep(2)
class Pedidos:
@staticmethod
def carrega_arquivos_csv_df(diretorio, header_pedidos, parse_dates=None):
pattern = re.compile(".*\_pedidos\_.*\.csv")
df = pd.DataFrame()
files = os.listdir(diretorio)
if parse_dates is None:
parse_dates=['DataRegistro', 'PrazoAtendimento', 'DataResposta']
for file in files:
if os.path.isfile(os.path.join(diretorio, file)) and pattern.match(file.lower()) != None:
print(f"Carregando {file}")
df = pd.concat([df, pd.read_csv(os.path.join(diretorio, file), names=header_pedidos, sep=';', encoding='utf-16', parse_dates=parse_dates, dayfirst=True, engine='c', low_memory=False)], axis=0)
print(f'Carregado, memória utilizada após carga: {round(df.memory_usage(deep=True).sum()/(1024*1024), 2)}MB')
return df
@staticmethod
def carrega_arquivos_xml_df(diretorio, header_pedidos, parse_dates):
pattern = re.compile(".*\_pedidos\_.*\.xml")
df = pd.DataFrame()
files = os.listdir(diretorio)
for file in files:
if os.path.isfile(os.path.join(diretorio, file)) and pattern.match(file.lower()) != None:
print(f"Carregando {file}")
df = pd.concat([df, pd.read_xml(os.path.join(diretorio, file), names=header_pedidos, encoding='utf-16', parse_dates=parse_dates, dayfirst=True, engine='c', low_memory=False)])
print(f'Carregado, memória utilizada após carga: {round(df.memory_usage(deep=True).sum()/(1024*1024), 2)}MB')
return df
class Recursos:
@staticmethod
def carrega_arquivos_csv_df(diretorio, header_recursos, parse_dates=None):
pattern = re.compile(".*\_recursos\_.*\.csv")
df = pd.DataFrame()
files = os.listdir(diretorio)
if parse_dates is None:
parse_dates=['DataRegistro', 'PrazoAtendimento', 'DataResposta']
for file in files:
if os.path.isfile(os.path.join(diretorio, file)) and pattern.match(file.lower()) != None:
print(f"Carregando {file}")
df = pd.concat([df, pd.read_csv(os.path.join(diretorio, file), names=header_recursos, sep=';', encoding='utf-16', parse_dates=parse_dates, dayfirst=True, engine='c', low_memory=False)], axis=0)
print(f'Carregado, memória utilizada após carga: {round(df.memory_usage(deep=True).sum()/(1024*1024), 2)}MB')
return df
@staticmethod
def carrega_arquivos_xml_df(diretorio, header_recursos, parse_dates):
pattern = re.compile(".*\_recursos\_.*\.xml")
df = pd.DataFrame()
files = os.listdir(diretorio)
for file in files:
if os.path.isfile(os.path.join(diretorio, file)) and pattern.match(file.lower()) != None:
print(f"Carregando {file}")
df = pd.concat([df, pd.read_xml(os.path.join(diretorio, file), names=header_recursos, encoding='utf-16', parse_dates=parse_dates, dayfirst=True, engine='c', low_memory=False)])
print(f'Carregado, memória utilizada após carga: {round(df.memory_usage(deep=True).sum()/(1024*1024), 2)}MB')
return df
class Solicitantes:
@staticmethod
def carrega_arquivos_csv_df(diretorio, header_solicitante, parse_dates=None):
pattern = re.compile(".*\_solicitantes\_.*\.csv")
df = pd.DataFrame()
files = os.listdir(diretorio)
if parse_dates is None:
parse_dates=['DataNascimento']
for file in files:
if os.path.isfile(os.path.join(diretorio, file)) and pattern.match(file.lower()) != None:
print(f"Carregando {file}")
df = pd.concat([df, pd.read_csv(os.path.join(diretorio, file), names=header_solicitante, sep=';', encoding='utf-16', parse_dates=parse_dates, dayfirst=True, engine='c', low_memory=False)], axis=0)
print(f'Carregado, memória utilizada após carga: {round(df.memory_usage(deep=True).sum()/(1024*1024), 2)}MB')
return df
@staticmethod
def carrega_arquivos_xml_df(diretorio, header_solicitante, parse_dates):
pattern = re.compile(".*\_solicitantes\_.*\.xml")
df = pd.DataFrame()
files = os.listdir(diretorio)
for file in files:
if os.path.isfile(os.path.join(diretorio, file)) and pattern.match(file.lower()) != None:
print(f"Carregando {file}")
df = pd.concat([df, pd.read_xml(os.path.join(diretorio, file), names=header_solicitante, encoding='utf-16', parse_dates=parse_dates, dayfirst=True, engine='c', low_memory=False)])
print(f'Carregado, memória utilizada após carga: {round(df.memory_usage(deep=True).sum()/(1024*1024), 2)}MB')
return df
anos = range(ANO_INICIO, int(date.today().strftime("%Y"))+1)
list(anos)
[2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023]
busca_lai_por_anos(anos, 'acesso', 'zips_lai_rel', 'csv')
Arquivo Pedidos_csv_2012.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR/Pedidos_csv_2012.zip Arquivo Pedidos_csv_2013.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR/Pedidos_csv_2013.zip Arquivo Pedidos_csv_2014.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR/Pedidos_csv_2014.zip Arquivo Pedidos_csv_2015.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR/Pedidos_csv_2015.zip Arquivo Pedidos_csv_2016.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR/Pedidos_csv_2016.zip Arquivo Pedidos_csv_2017.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR/Pedidos_csv_2017.zip Arquivo Pedidos_csv_2018.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR/Pedidos_csv_2018.zip Arquivo Pedidos_csv_2019.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR/Pedidos_csv_2019.zip Arquivo Pedidos_csv_2020.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR/Pedidos_csv_2020.zip Arquivo Pedidos_csv_2021.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR/Pedidos_csv_2021.zip Arquivo Pedidos_csv_2022.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR/Pedidos_csv_2022.zip Arquivo Pedidos_csv_2023.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR/Pedidos_csv_2023.zip
busca_lai_por_anos(anos, 'recurso', 'zips_lai_rel', 'csv')
Arquivo Recursos_Reclamacoes_csv_2012.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR/Recursos_Reclamacoes_csv_2012.zip Arquivo Recursos_Reclamacoes_csv_2013.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR/Recursos_Reclamacoes_csv_2013.zip Arquivo Recursos_Reclamacoes_csv_2014.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR/Recursos_Reclamacoes_csv_2014.zip Arquivo Recursos_Reclamacoes_csv_2015.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR/Recursos_Reclamacoes_csv_2015.zip Arquivo Recursos_Reclamacoes_csv_2016.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR/Recursos_Reclamacoes_csv_2016.zip Arquivo Recursos_Reclamacoes_csv_2017.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR/Recursos_Reclamacoes_csv_2017.zip Arquivo Recursos_Reclamacoes_csv_2018.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR/Recursos_Reclamacoes_csv_2018.zip Arquivo Recursos_Reclamacoes_csv_2019.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR/Recursos_Reclamacoes_csv_2019.zip Arquivo Recursos_Reclamacoes_csv_2020.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR/Recursos_Reclamacoes_csv_2020.zip Arquivo Recursos_Reclamacoes_csv_2021.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR/Recursos_Reclamacoes_csv_2021.zip Arquivo Recursos_Reclamacoes_csv_2022.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR/Recursos_Reclamacoes_csv_2022.zip Arquivo Recursos_Reclamacoes_csv_2023.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR/Recursos_Reclamacoes_csv_2023.zip
unzip_arquivos(de='zips_lai_rel', diretorio_destino='csvs_rel')
descompactando zips_lai_rel/Pedidos_csv_2012.zip descompactando zips_lai_rel/Pedidos_csv_2013.zip descompactando zips_lai_rel/Pedidos_csv_2014.zip descompactando zips_lai_rel/Pedidos_csv_2015.zip descompactando zips_lai_rel/Pedidos_csv_2016.zip descompactando zips_lai_rel/Pedidos_csv_2017.zip descompactando zips_lai_rel/Pedidos_csv_2018.zip descompactando zips_lai_rel/Pedidos_csv_2019.zip descompactando zips_lai_rel/Pedidos_csv_2020.zip descompactando zips_lai_rel/Pedidos_csv_2021.zip descompactando zips_lai_rel/Pedidos_csv_2022.zip descompactando zips_lai_rel/Pedidos_csv_2023.zip descompactando zips_lai_rel/Recursos_Reclamacoes_csv_2012.zip descompactando zips_lai_rel/Recursos_Reclamacoes_csv_2013.zip descompactando zips_lai_rel/Recursos_Reclamacoes_csv_2014.zip descompactando zips_lai_rel/Recursos_Reclamacoes_csv_2015.zip descompactando zips_lai_rel/Recursos_Reclamacoes_csv_2016.zip descompactando zips_lai_rel/Recursos_Reclamacoes_csv_2017.zip descompactando zips_lai_rel/Recursos_Reclamacoes_csv_2018.zip descompactando zips_lai_rel/Recursos_Reclamacoes_csv_2019.zip descompactando zips_lai_rel/Recursos_Reclamacoes_csv_2020.zip descompactando zips_lai_rel/Recursos_Reclamacoes_csv_2021.zip descompactando zips_lai_rel/Recursos_Reclamacoes_csv_2022.zip descompactando zips_lai_rel/Recursos_Reclamacoes_csv_2023.zip
%%time
df = Pedidos.carrega_arquivos_csv_df('csvs_rel', header_pedidos=header_pedidos)
Carregando 20230802_Pedidos_csv_2012.csv Carregado, memória utilizada após carga: 83.06MB Carregando 20230802_Pedidos_csv_2013.csv Carregado, memória utilizada após carga: 213.31MB Carregando 20230802_Pedidos_csv_2014.csv Carregado, memória utilizada após carga: 347.59MB Carregando 20230802_Pedidos_csv_2015.csv Carregado, memória utilizada após carga: 499.84MB Carregando 20230802_Pedidos_csv_2016.csv Carregado, memória utilizada após carga: 665.31MB Carregando 20230802_Pedidos_csv_2017.csv Carregado, memória utilizada após carga: 844.65MB Carregando 20230802_Pedidos_csv_2018.csv Carregado, memória utilizada após carga: 1034.16MB Carregando 20230802_Pedidos_csv_2019.csv Carregado, memória utilizada após carga: 1225.93MB Carregando 20230802_Pedidos_csv_2020.csv Carregado, memória utilizada após carga: 1454.23MB Carregando 20230802_Pedidos_csv_2021.csv Carregado, memória utilizada após carga: 1637.87MB Carregando 20230802_Pedidos_csv_2022.csv Carregado, memória utilizada após carga: 1814.37MB Carregando 20230802_Pedidos_csv_2023.csv Carregado, memória utilizada após carga: 1942.68MB CPU times: user 31.4 s, sys: 1.55 s, total: 33 s Wall time: 33 s
df.to_pickle('dados/pedidos_relatorio.pkl')
df.to_csv('dados/pedidos_relatorio.csv', index=False)
%%time
df = Recursos.carrega_arquivos_csv_df('csvs_rel', header_recursos=header_recursos)
Carregando 20230802_Recursos_Reclamacoes_csv_2012.csv Carregado, memória utilizada após carga: 5.56MB Carregando 20230802_Recursos_Reclamacoes_csv_2013.csv Carregado, memória utilizada após carga: 17.77MB Carregando 20230802_Recursos_Reclamacoes_csv_2014.csv Carregado, memória utilizada após carga: 29.94MB Carregando 20230802_Recursos_Reclamacoes_csv_2015.csv Carregado, memória utilizada após carga: 44.95MB Carregando 20230802_Recursos_Reclamacoes_csv_2016.csv Carregado, memória utilizada após carga: 64.01MB Carregando 20230802_Recursos_Reclamacoes_csv_2017.csv Carregado, memória utilizada após carga: 89.02MB Carregando 20230802_Recursos_Reclamacoes_csv_2018.csv Carregado, memória utilizada após carga: 112.07MB Carregando 20230802_Recursos_Reclamacoes_csv_2019.csv Carregado, memória utilizada após carga: 134.54MB Carregando 20230802_Recursos_Reclamacoes_csv_2020.csv Carregado, memória utilizada após carga: 157.67MB Carregando 20230802_Recursos_Reclamacoes_csv_2021.csv Carregado, memória utilizada após carga: 177.77MB Carregando 20230802_Recursos_Reclamacoes_csv_2022.csv Carregado, memória utilizada após carga: 195.87MB Carregando 20230802_Recursos_Reclamacoes_csv_2023.csv Carregado, memória utilizada após carga: 211.6MB CPU times: user 3.57 s, sys: 128 ms, total: 3.7 s Wall time: 4.1 s
df.to_pickle('dados/recursos_relatorio.pkl')
df.to_csv('dados/recursos_relatorio.csv', index=False)
Arquivos com textos de pedidos
No menu localizado no final da página existe um link para a Busca de Pedidos e Respostas. Nesse link pode-se encontrar a opção de download de dados.
-- CAMPOS: PEDIDOS
- IdPedido - inteiro: identificador único do pedido (não mostrado no sistema);
- ProtocoloPedido - texto(17): número do protocolo do pedido;
- Esfera - texto(30): esfera do órgão destinatário do pedido;
- OrgaoDestinatario - texto(250): nome do órgão destinatário do pedido;
- Situacao - texto(200): descrição da situação do pedido;
- DataRegistro - Data DD/MM/AAAA: data de abertura do pedido;
- ResumoSolicitacao - texto(255): resumo do pedido;
- DetalhamentoSolicitacao - texto(2048): detalhamento do pedido;
- PrazoAtendimento - Data DD/MM/AAAA: data limite para atendimento ao pedido;
- FoiProrrogado - texto(3) "Sim" ou "Não" : informa se houve prorrogação do prazo do pedido;
- FoiReencaminhado - texto(3) "Sim" ou "Não": informa se o pedido foi reencaminhado;
- FormaResposta - texto(200): tipo de resposta escolhida pelo solicitante na abertura do pedido;
- OrigemSolicitacao - texto(50): informa se o pedido foi aberto em um Balcão SIC ou pela Internet;
- IdSolicitante - inteiro: identificador único do solicitante (não mostrado no sistema);
- AssuntoPedido - texto(200) : assunto do pedido atribuído pel SIC;
- SubAssuntoPedido - texto(200) : subassunto do pedido atribuída pelo SIC;
- Tag - texto(1024): as tags são marcadores no pedido para realizar classificações que não estão em assuntos/ subassuntos;
- DataResposta - Data DD/MM/AAAA: data da resposta ao pedido (campo em branco para pedidos que ainda estejam na situação "Em Tramitação");
- Resposta - texto(8000): resposta ao pedido;
- Decisao - texto(100) : tipo resposta dada ao pedido (campo em branco para pedidos que ainda estejam na situação "Em Tramitação");
- EspecificacaoDecisao - texto(200): subtipo da resposta dada ao pedido (campo em branco para pedidos que ainda estejam na situação "Em Tramitação");
-- CAMPOS: RECURSOS
- IdRecurso - inteiro: identificador único do recurso (não mostrado no sistema);
- IdRecursoPrecedente - inteiro: identificador único do recurso que precedeu este (não mostrado no sistema e em branco no caso de Recursos de 1ª Instância e Reclamações);
- DescRecurso - texto(8000): descrição do recurso;
- IdPedido - inteiro: identificador único do pedido ao qual o recurso pertence (não mostrado no sistema);
- IdSolicitante - inteiro: identificador único do solicitante (não mostrado no sistema);
- ProtocoloPedido - texto(17): número do protocolo do pedido ao qual o recurso pertence;
- OrgaoDestinatario - texto(250): nome do órgão destinatário do recurso;
- Instancia - texto(80): descrição da instância do recurso;
- Situacao - texto(80): descrição da situação do recurso;
- DataRegistro - Data DD/MM/AAAA: data de abertura do recurso;
- PrazoAtendimento - Data DD/MM/AAAA: data limite para atendimento ao recurso;
- OrigemSolicitacao - texto(50): informa se o recurso foi aberto em um Balcão SIC ou pela Internet;
- TipoRecurso - texto(80): motivo de abertura do recurso;
- DataResposta - Data DD/MM/AAAA: data da resposta ao recurso (campo em branco para recursos que ainda estejam na situação "Em Tramitação");
- RespostaRecurso - texto(8000): resposta ao recurso;
- TipoResposta - texto(80): tipo resposta dada ao recurso (campo em branco para recursos que ainda estejam na situação "Em Tramitação");
-- CAMPOS: SOLICITANTES
- IdSolicitante - inteiro: identificador único do solicitante (não mostrado no sistema);
- TipoDemandante - texto(15): Pessoa Fìsica ou Pessoa Jurídica;
- DataNascimento - Data DD/MM/AAAA: data de nascimento do solicitante;
- Genero - texto(13) : Masculino, Feminino ou Outro(em branco para pessoa jurídica);
- Escolaridade - texto(200): Escolaridade do solicitante (em branco para pessoa jurídica);
- Profissao - texto(200): Profissão do solicitante (em branco para pessoa jurídica);
- TipoPessoaJuridica - texto(200): tipo de Pessoa Jurídica do solicitante (em branco para pessoa física)
- Pais - texto(200): país de residência do solicitante;
- UF - texto(2): UF de residência do solicitante;
- Municipio - texto(200): Município de residência do solicitante;
pedido_header_txts = ['IdPedido',
'ProtocoloPedido',
'Esfera',
'OrgaoDestinatario',
'Situacao',
'DataRegistro',
'ResumoSolicitacao',
'DetalhamentoSolicitacao',
'PrazoAtendimento',
'FoiProrrogado',
'FoiReencaminhado',
'FormaResposta',
'OrigemSolicitacao',
'IdSolicitante',
'AssuntoPedido',
'SubAssuntoPedido',
'Tag',
'DataResposta',
'Resposta',
'Decisao',
'EspecificacaoDecisao']
recurso_header_txts = ['IdRecurso',
'IdRecursoPrecedente',
'DescRecurso',
'IdPedido',
'IdSolicitante',
'ProtocoloPedido',
'OrgaoDestinatario',
'Instancia',
'Situacao',
'DataRegistro',
'PrazoAtendimento',
'OrigemSolicitacao',
'TipoRecurso',
'DataResposta',
'RespostaRecurso',
'TipoResposta']
solicitante_header_txts = ['IdSolicitante',
'TipoDemandante',
'DataNascimento',
'Genero',
'Escolaridade',
'Profissao',
'TipoPessoaJuridica',
'Pais',
'UF',
'Municipio']
anos = range(2015, int(date.today().strftime("%Y"))+1)
list(anos)
[2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023]
busca_textos_por_anos(anos, localizacao='zips_lai_txts', formato_arquivo='csv')
Arquivo Arquivos_csv_2015.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR_Filtrado/Arquivos_csv_2015.zip Arquivo Arquivos_csv_2016.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR_Filtrado/Arquivos_csv_2016.zip Arquivo Arquivos_csv_2017.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR_Filtrado/Arquivos_csv_2017.zip Arquivo Arquivos_csv_2018.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR_Filtrado/Arquivos_csv_2018.zip Arquivo Arquivos_csv_2019.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR_Filtrado/Arquivos_csv_2019.zip Arquivo Arquivos_csv_2020.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR_Filtrado/Arquivos_csv_2020.zip Arquivo Arquivos_csv_2021.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR_Filtrado/Arquivos_csv_2021.zip Arquivo Arquivos_csv_2022.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR_Filtrado/Arquivos_csv_2022.zip Arquivo Arquivos_csv_2023.zip baixado de https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR_Filtrado/Arquivos_csv_2023.zip
unzip_arquivos(de='zips_lai_txts', diretorio_destino='csvs_txts')
descompactando zips_lai_txts/Arquivos_csv_2015.zip descompactando zips_lai_txts/Arquivos_csv_2016.zip descompactando zips_lai_txts/Arquivos_csv_2017.zip descompactando zips_lai_txts/Arquivos_csv_2018.zip descompactando zips_lai_txts/Arquivos_csv_2019.zip descompactando zips_lai_txts/Arquivos_csv_2020.zip descompactando zips_lai_txts/Arquivos_csv_2021.zip descompactando zips_lai_txts/Arquivos_csv_2022.zip descompactando zips_lai_txts/Arquivos_csv_2023.zip
%%time
df = Pedidos.carrega_arquivos_csv_df('csvs_txts', header_pedidos=pedido_header_txts)
Carregando 20230802_Pedidos_csv_2015.csv Carregado, memória utilizada após carga: 243.56MB Carregando 20230802_Pedidos_csv_2016.csv Carregado, memória utilizada após carga: 524.58MB Carregando 20230802_Pedidos_csv_2017.csv Carregado, memória utilizada após carga: 822.08MB Carregando 20230802_Pedidos_csv_2018.csv Carregado, memória utilizada após carga: 1139.8MB Carregando 20230802_Pedidos_csv_2019.csv Carregado, memória utilizada após carga: 1487.75MB Carregando 20230802_Pedidos_csv_2020.csv Carregado, memória utilizada após carga: 1946.87MB Carregando 20230802_Pedidos_csv_2021.csv Carregado, memória utilizada após carga: 2274.87MB Carregando 20230802_Pedidos_csv_2022.csv Carregado, memória utilizada após carga: 2554.66MB Carregando 20230802_Pedidos_csv_2023.csv Carregado, memória utilizada após carga: 2767.98MB CPU times: user 40.4 s, sys: 7.4 s, total: 47.8 s Wall time: 1min 2s
df.to_pickle('dados/pedidos_textos.pkl')
df.to_csv('dados/pedidos_textos.csv', index=False)
%%time
df = Recursos.carrega_arquivos_csv_df('csvs_txts', header_recursos=recurso_header_txts)
Carregando 20230802_Recursos_csv_2015.csv Carregado, memória utilizada após carga: 31.39MB Carregando 20230802_Recursos_csv_2016.csv Carregado, memória utilizada após carga: 69.56MB Carregando 20230802_Recursos_csv_2017.csv Carregado, memória utilizada após carga: 113.4MB Carregando 20230802_Recursos_csv_2018.csv Carregado, memória utilizada após carga: 158.95MB Carregando 20230802_Recursos_csv_2019.csv Carregado, memória utilizada após carga: 209.97MB Carregando 20230802_Recursos_csv_2020.csv Carregado, memória utilizada após carga: 265.67MB Carregando 20230802_Recursos_csv_2021.csv Carregado, memória utilizada após carga: 310.93MB Carregando 20230802_Recursos_csv_2022.csv Carregado, memória utilizada após carga: 348.8MB Carregando 20230802_Recursos_csv_2023.csv Carregado, memória utilizada após carga: 385.19MB CPU times: user 5.23 s, sys: 747 ms, total: 5.97 s Wall time: 8.25 s
df.to_pickle('dados/recursos_texto.pkl')
df.to_csv('dados/recursos_texto.csv', index=False)
%%time
df = Solicitantes.carrega_arquivos_csv_df('csvs_txts', header_solicitante=solicitante_header_txts)
CPU times: user 90.5 ms, sys: 97 ms, total: 188 ms Wall time: 186 ms
df.to_csv('dados/solicitantes_texto.csv', index=False)
df.to_pickle('dados/solicitantes_texto.pkl')