Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Libertando dados públicos com ferramentas livres

389 views

Published on

Slides da palestra ministrada durante o Fórum Goiano de Software Livre, em 19 de novembro de 2016, Goiânia/GO.

Slides em HTML: http://turicas.info/slides/rows/fgsl/
Contatos:
- https://twitter.com/turicas
- https://youtube.com/c/PythonicCafe

Published in: Software
  • Be the first to comment

Libertando dados públicos com ferramentas livres

  1. 1. Libertando Dados Públicos com Ferramentas Livres Turicas aka Álvaro Justen Fórum Goiano de Software Livre 2016 19 de novembro de 2016 - Goiânia/GO
  2. 2. Turicas, prazer! =) Sigam-me os bons: { , , , , } /turicas twitter github youtube slideshare instagram alvaro@CursoDeArduino.com.br turicas.info
  3. 3. bit.ly/rows-fgsl
  4. 4. Software Livre
  5. 5. Python
  6. 6. Arduino
  7. 7. cursodearduino.com.br
  8. 8. pythonquito.tk
  9. 9. pythonic.cafe (preenche o formulário lá!) youtube.com/c/PythonicCafe
  10. 10. generonumero.media
  11. 11. escoladedados.org
  12. 12. E vocês?Quem trabalhacom conversão de dados? Scraping, datascience, ... Quem conhece/usaPython?
  13. 13. Nômade Digital
  14. 14. A Jornada Existem softwares livres paraautomatizar várias etapas da jornada.
  15. 15. Dados Presos
  16. 16. Dado aberto, porém não acessível
  17. 17. O Que Eu Já Fiz (manualmente)
  18. 18. O Que Eu Quero (semi-automaticamente)
  19. 19. O Que Tenho Que Fazer (mas não queria ter que fazer)
  20. 20. Obtendo...
  21. 21. Veri cando...
  22. 22. Limpando...
  23. 23. Automatizar tudo que for chato
  24. 24. Problema Especí co Dados Tabulares Colunas (nome e tipo) Registros (valores)
  25. 25. Dados Tabulares Formatos Possíveis CSV HTML ("table") JSON ODS SQLite XLS XLSX ...
  26. 26. Exemplo: CSV
  27. 27. csv em Python import csv reader = csv.DictReader(open('tesouro-direto.csv')) # TODO: identificar dialecto CSV for row in reader: print row # todo es string =/ # TODO: crear conversión de datetime # TODO: crear conversión de date # TODO: crear conversión decimal # TODO: crear conversión percent
  28. 28. JSON
  29. 29. json em Python import json reader = json.load(open('tesouro-direto.csv')) for row in reader: print row # nem todo convertido =/ # TODO: crear conversión de datetime # TODO: crear conversión de date # TODO: crear conversión decimal # TODO: crear conversión percent
  30. 30. XLS
  31. 31. xls em Python + xlrd pip install xlrd import xlrd filename = 'tesouro-direto.xls' book = xlrd.open_workbook(filename, formatting_info=True) sheet = book.sheet_by_index(0) NUMERO_DE_COLUNAS = 7 # WTF? header = [sheet.cell(0, col).value for col in range(NUMERO_DE_COLUNAS NUMERO_DE_LINEAS = 19 # WTF? data = [[sheet.cell(row, col).value for col in range(NUMERO_DE_COLUNAS for row in range(1, NUMERO_DE_LINEAS + 1)] for row_data in data: row = dict(zip(header, row_data)) print row # TODO: crear conversión de date y datetime # TODO: crear conversión de decimal # TODO: crear conversión de percent
  32. 32. Resultado...{u'preco_compra': 0.0, u'timestamp': 42314.73819444444, u'vencimento'
  33. 33. Que porraé essa? ..., u'timestamp': 42314.73819444444, ...
  34. 34. Vida Real..."Me mandaram o CSV, mas veio sem o cabeçalho" "Esse campo não estábatendo" "Porque tem tanto NULL?" ...
  35. 35. Problemas Formatos não possuem as mesmas funcionalidades Faltacontrole de qualidade nahorade publicar os dados Bibliotecas paracadaformato são muito diferentes
  36. 36. Resultado: Perda de tempo em uma atividade que não é seu objetivo
  37. 37. rows to the rescue! pip install rows # Python Package Index apt-get install rows # Debian dnf install rows # Fedora github.com/turicas/rows
  38. 38. rows BibliotecaPython Command-Line Interface Plugins: CSV JSON HTML (+ XPath) TXT XLS XLSX SQLite ODS Parquet (+ outros em desenvolvimento)
  39. 39. csv com Python + rows import rows table1 = rows.import_from_csv('tesouro-direto.csv') for row in table1: print row
  40. 40. Row(timestamp=datetime.datetime(2015, 11, 6, 17, 43), titulo=u'Tesouro IPCA+ com Juros Semestrais 2017 (NTNB)', vencimento=datetime.date(2017, 5, 15), taxa_compra=Decimal('0.0702'), taxa_venda=Decimal('0.063'), preco_compra=0.0, preco_venda=2792.97) # namedtuple #FTW o/
  41. 41. xls com Python + rows import rows table2 = rows.import_from_xls('tesouro-direto.xls') for row in table2: print row
  42. 42. html com Python + rows import rows table3 = rows.import_from_html('tesouro-direto.html') for row in table3: print row
  43. 43. import rows
  44. 44. rows: Funcionalidades Interface única(não importao formato) Escrever é tão fácilquanto ler (pythonic way) Vários plugins CLI Conversão automática de dados Eujá z os testes
  45. 45. Command-Line Interface print: mostraatabelaem formato texto convert: converte entre os formatos suportados sum: agregatabelas join: cruzadados query: SQL!
  46. 46. Live coding (CLI)
  47. 47. Alguns Casos de Uso CLI: Download, conversão e limpeza Análises preliminares Biblioteca: Conversão e limpeza(exemplo: Interlegis) Conversão e análise (exemplos: sci , sl_talks)
  48. 48. github.com/turicas/rows
  49. 49. Curso de Python Online e Gratuito! pythonic.cafe
  50. 50. ?
  51. 51. Obrigado! (: Turicas aka Álvaro Justen { , , , , } /turicas twitter github youtube slideshare instagram alvaro@CursoDeArduino.com.br turicas.info bit.ly/rows-fgsl

×