Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Erro ao extrair dados rodando para a receita. #16

Closed
GabrielTrettel opened this issue Oct 17, 2020 · 4 comments
Closed

Erro ao extrair dados rodando para a receita. #16

GabrielTrettel opened this issue Oct 17, 2020 · 4 comments

Comments

@GabrielTrettel
Copy link

@turicas, executando o python tse.py receita --years=2014,2016 obtive um erro referente às colunas dos dados terem valores diferentes que as do schema. Erro em detalhe:

PrestacaoContasReceitas 2014
  Downloading... file has already been downloaded.
  Extracting...: 0it [00:00, ?it/s]
Traceback (most recent call last):
  File "tse.py", line 213, in <module>
    extract_data(
  File "tse.py", line 52, in extract_data
    writer.writerow(row)
  File "/usr/lib/python3.8/csv.py", line 154, in writerow
    return self.writer.writerow(self._dict_to_list(rowdict))
  File "/usr/lib/python3.8/csv.py", line 149, in _dict_to_list
    raise ValueError("dict contains fields not in fieldnames: "
ValueError: dict contains fields not in fieldnames: 'codigo_unidade_eleitoral', 'sigla_unidade_federativa_doador', 'numero_candidatura', 'receita', 'nome', 'doador', 'numero_sequencial', 'eleicao', 'doador_originario_receita_federal', 'sigla_unidade_eleitoral', 'codigo_unidade_eleitoral_doador', 'sigla_unidade_federativa', 'doador_receita_federal', 'numero_candidatura_doadora', 'ano', 'sigla_unidade_eleitoral_doador', 'unidade_eleitoral', 'cargo', 'orgao', 'partido', 'partido_doador', 'doador_originario', 'unidade_eleitoral_doador', 'administrador', 'cpf'

Eu reparei que no issue #15 o terceiro check-box tem o campo atualizar schema/receita.csv. Esta tarefa de atualizar o schema que está causando este erro?

De qualquer maneira, como medida paliativa, eu modifiquei a função extract_data do tse.py para filtrar as colunas de cada row para sobrar apenas as list(extractor.schema.keys()) itens do dicionário. Aparentemente o problema foi resolvido e como eu só preciso das colunas que já estão no schema, acho que esta tudo certo. Subi a modificação nesse fork e se você julgar que a alteração é relevante para o projeto, posso mandar o PR.

No mais, excelente trabalho com esses programas que capturam os dados públicos das eleições e dos socios, estão me ajudando muito.

@turicas
Copy link
Owner

turicas commented Oct 21, 2020

@GabrielTrettel ainda estou trabalhando nesses dados, acabei fazendo o merge de um branch muito grande para facilitar parte do processo de adaptar o script para 2020. Os dados de candidatura e bens declarados já estão corretos (inclusive o schema) e verificados, agora estou no processo de checagem e correção das outras tabelas (é exatamente a tarefa da issue #15).
Fiz rapidamente a correção do schema/receita.csv baseado no headers/receita-final.csv (commit 121b79f, já está no branch master), por favor, verifique se isso resolve.

@GabrielTrettel
Copy link
Author

@turicas, muito bom, dei uma olhada no commit e tentei rodar aqui. Infelizmente ainda ocorre um erro, e eu creio que seja pelo mesmo motivo de antes, mas com campos diferentes.

❯ python tse.py receita --years=2016
PrestacaoContasReceitas 2016
  Downloading... file has already been downloaded.
  Extracting...: 0it [00:00, ?it/s]
Traceback (most recent call last):
  File "tse.py", line 209, in <module>
    extract_data(
  File "tse.py", line 48, in extract_data
    writer.writerow(row)
  File "/usr/lib/python3.8/csv.py", line 154, in writerow
    return self.writer.writerow(self._dict_to_list(rowdict))
  File "/usr/lib/python3.8/csv.py", line 149, in _dict_to_list
    raise ValueError("dict contains fields not in fieldnames: "
ValueError: dict contains fields not in fieldnames: 'ano_eleicao', 'codigo_ue'

Agora uma outra pergunta um pouco fora do assunto desse issue, mas que surgiu durante o desenvolvimento do projeto: Os dados relacionados com doação de campanha são os que estão na tabela receita?

@turicas
Copy link
Owner

turicas commented Oct 21, 2020

@turicas, muito bom, dei uma olhada no commit e tentei rodar aqui. Infelizmente ainda ocorre um erro, e eu creio que seja pelo mesmo motivo de antes, mas com campos diferentes.

Subi o commit 458a03d com mais algumas correções. Por favor, rode novamente e feche a issue caso esteja resolvido, ok?

Agora uma outra pergunta um pouco fora do assunto desse issue, mas que surgiu durante o desenvolvimento do projeto: Os dados relacionados com doação de campanha são os que estão na tabela receita?

Sim.

@GabrielTrettel
Copy link
Author

Funcionou perfeitamente. Muito obrigado pela ajuda rápida e pelo projeto super útil e relevante <3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants