Introdução
daru (Data Analysis in RUby) é uma biblioteca para armazenamento, análise, manipulação e visualização de dados em Ruby.
daru torna fácil e intuitivo o processamento de dados predominantemente através de 2 estruturas de dados:Daru::DataFrame
e Daru::Vector
. Escrito em Ruby puro funciona com todas as implementações Ruby. Testado com MRI 2.5.1 e 2.7.1.
>
gems de plugin daru
- daru-view
daru-view é para fácil e interativo plotting em aplicação web & IRubynotebook. Ele pode funcionar em qualquer framework de aplicação web Ruby como Rails, Sinatra, Nanoc e, esperançosamente, em outros também.
Artigos/Blogs, que resumem poderosos recursos do daru-view:
- GSoC 2017 daru-view
- GSoC 2018 Progress Report
- HighCharts post oficial do blog sobre daru-view
- daru-io
Esta gem estende o suporte para muitos métodos de Importação e Exportação de Daru::DataFrame
. Esta gema destina-se a ajudar os Rubyists que estão em Análise de Dados ou Desenvolvimento Web, servindo como uma biblioteca de conversão de propósito geral que recebe entrada em um formato (digamos, JSON) e a converte em outro formato (digamos, Avro) ao mesmo tempo em que também torna incrivelmente fácil começar a analisar dados com o daru. Pode-se ler mais em SciRuby/blog/daru-io.
Features
- Estruturas de dados:
- Vector – Um vector 1-D básico.
- DataFrame – Uma estrutura semelhante a uma folha de cálculo 2-D para manipulação e armazenamento de conjuntos de dados. Esta é a estrutura de dados primária do Daru.
- Compatível com notebook IRuby, statsample, statsample-glm e statsample-timeseries.
- Suporte para séries temporais.
- Estruturas de dados indexados de forma contínua e hierárquica.
- Flexível e intuitiva API para manipulação e análise de dados.
- Plotagem fácil, estatística e aritmética.
- Iteradores abundantes.
- Optimização opcional de velocidade e espaço em MRI com NMatrix e GSL.
- Divisão, agregação e agrupamento fácil de dados.
- Diminuição rápida de dados com tabelas pivot para resumo rápido de dados.
- Importar e exportar dados de e para Excel, CSV, bancos de dados SQL, ActiveRecord e arquivos de texto simples.
>
Instalação
$ gem install daru
Notebooks
Notebooks na maioria dos casos de uso
- Visão geral da maioria das funções daru
- Criação Básica de Vetores e DataFrame
- Utilização Detalhada de Daru::Vector
- Utilização detalhada de Daru::DataFrame
- Procura e combinação de dados em daru
- Agrupamento, divisão e dados pivotantes
- Utilização de dados categóricos
Visualização
- Visualização de dados com Daru::DataFrame
- Plotagem usando Nyaplot
- Plotagem usando GnuplotRB
- Plotagem vectorial com Gruff
- Plotagem DataFrame com Gruff
Cadernos sobre séries temporais
- Séries temporais básicas
- Análise e Plotagem de Séries Temporais
Cadernos de Notas sobre Indexação
- Indexação em Vector
- Indexação em DataFrame
Estudos de Casos
- Análise de Regressão Lógica com Daru e Statsample-glm
- Pilotar e encontrar os artistas mais ouvidos de um Último.fm dataset
- Nomes de bebês analizadores com daru
- Exemplo uso de dados categóricos
- Exemplo uso de índice categórico
Blog Posts
- Análise de dados em RUby: Manipulação de dados básicos e plotagem
- Análise de dados em RUby: Dividindo, ordenando, agregação de dados e tipos de dados
- Encontrar e combinar dados em daru
- Introdução à análise de conjuntos de dados com a biblioteca daru
Séries temporais
- Análise de séries temporais em daru
- Data Compensações em Daru
Dados Categóricos
- Índice Categórico
- Dados Categóricos
- Visualização com Dados Categóricos
Utilização Básica
daru expõe duas estruturas de dados principais: DataFrame
e Vector
. O Vector é uma estrutura básica 1-D correspondente a uma Matriz etiquetada, enquanto que a DataFrame
– estrutura de dados primários do Daru – é uma estrutura tipo planilha 2-D para manipulação e armazenamento de conjuntos de dados.
Basic DataFrame intitialization.
data_frame = Daru::DataFrame.new( { 'Beer' => , 'Gallons sold' => }, index: )data_frame
Carregar dados de arquivos CSV.
df = Daru::DataFrame.from_csv('TradeoffData.csv')
Manipulação de dados básicos
Selecionar linhas.
data_frame.row
Selecionar colunas.
Uma gama de linhas.
data_frame.row
As 2 primeiras linhas.
data_frame.first(2)
As 2 últimas linhas.
data_frame.last(2)
Adicionar uma nova coluna.
data_frame =
Criar uma nova coluna baseada em dados de outras colunas.
data_frame = data_frame - data_frame
Selecção baseada na condição
Selecção dos países com base no número de galões vendidos em cada um. Usamos uma sintaxe semelhante à definida por Arel, ou seja, usando a cláusula where
.
Pode passar uma combinação de operações booleanas para o método #where
e deve funcionar bem:
data_frame.where( data_frame .in() .and( data_frame.gt(520).or(data_frame.lt(250)) ))
Plotting
Daru suporta plotting de gráficos interativos com nyaplot. Você pode facilmente criar um gráfico com o método #plot
. Aqui plotamos os galões vendidos no eixo Y e o nome da marca no eixo X em um gráfico de barras.
data_frame.plot type: :bar, x: 'Beer', y: 'Gallons sold' do |plot, diagram| plot.x_label "Beer" plot.y_label "Gallons Sold" plot.yrange plot.width 500 plot.height 400end
>
Além de nyaplot, daru também suporta plotting out of the box com gnuplotrb.
Documentação
Docs podem ser encontrados aqui.
Contribuindo
Escolha um recurso do Roadmap ou do rastreador de problemas ou pense no seu próprio e me envie um Pull Request!
Para detalhes veja CONTRIBUTING.
Agradecimentos
- Google e a Fundação Ruby Science para o Google Summer of Code 2016 grant para melhorias de velocidade e implementação de suporte para dados categóricos. Agradecimentos especiais a @lokeshh, @zverok e @agisga pelos seus esforços.
- Google e a Fundação Ruby Science Foundation para o Google Summer of Code 2015 grant for further developing daru and integrating it with other ruby gems.
- Thank you last.fm for making user data accessible to the public.