Uma nova maneira de ler dados externos

Há cerca de 2 anos atrás postei uma pergunta no StackOverflow (caso não conheça, leia esta postagem nossa) perguntando como podia fazer para ler grandes bancos de dados, de cerca de 600mb - esse era meu primeiro contato com bancos grandes, provenientes do Censo Escolar. Das duas respostas dadas na época, a que mais me agradou usava o pacote sqldf, que utiliza SQL para fazer a leitura e manipulação de fontes externas de dados.

Há pouco mais de 1 mês um usuário postou uma nova resposta à pergunta, utilizando o pacote readr. O pacote é um dos muitos pacotes criados/mantidos por Hadley Wickham - que criou, além desse e do ggplot2, mais de 50 pacotes para o R - o que significa que vale a pena dedicarmos um tempo para estudarmos o pacote.

O pacote possui sua própria versão dos comandos read.delim() (e, de quebra, read.table(), read.csv() e read.csv2()) e read.fwf() - para arquivos de largura fixa (fixed width formated), com sintaxes e nomes praticamente idênticas aos do pacote base - basta trocar o . por _ na função. Além do ganho de velocidade frente à outros pacotes disponíveis (link - note que há referência a mais um pacote do Hadley, o stringi), vale a pena destacar dois pontos : 1) ele possui uma progressbar (não funciona muito bem no Windows, mas está la!); 2) nos arquivos de largura fixa é possível ler somente as variáveis de interesse, e não todo o banco.

E você, utiliza outro pacote do Hadley, ou conhece algum pacote que valha a pena 'perder tempo' estudando? Tem sugestão de outros pacotes que merecem uma postagem? Deixe seu comentário!

2 comentários:

  1. Oi Rodrigo. Que bom que voce achou util a resposta :) Eu conheci o pacote readr ha pouco tempo, entao tenho tentando divulgar um pouco, dai a resposta no SO. Aproveitei e compartilhei no github um script para download dos dados do censo demografico 2010 usando o readr. https://github.com/rafapereirabr/Brazilian_Census_2010

    ResponderExcluir
  2. Olá! Cheguei no seu site por ao fazer uma busca sobre como baixar os dados referentes a CAGED e RAIS e em seguida vim ler esse seu post, então resolvi postar este comentário por dois motivos. Primeiro para parabenizar os conteúdos, e segundo, para perguntar se você conhece o projeto pandas, é um projeto muito interessante que funciona juntamente com outras bibliotecas que tem foco científico, o "frontend" é em python mas todo o backend é construído em C e R e é muito poderoso. Esses dias precisei carregar um arquivo do portal da transparência que tem por volta de 1,5 GB e foi muito tranquilo, não só o carregamento foi rápido como as extrações de dados e plotagens. Obviamente que para trabalhar com arquivos desse tamanho é preciso ter muita memória RAM.

    Se você tiver interesse, existe um livro que é do criador da ferramentas, python for data analysis.

    E outra coisa interessante, você pode fazer todo o trabalho via navegador, por uma ferramenta chamada IPython notebook, que permite usar no mesmo arquivo, Latex, markdown além de código python.

    Espero que a dica seja útil.

    Abraço!

    ResponderExcluir