SciRuby / daru

Versão GemBuild StatusGitterAjudantes de Fonte Aberta

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

init0

Carregar dados de arquivos CSV.

df = Daru::DataFrame.from_csv('TradeoffData.csv')

init1

Manipulação de dados básicos

Selecionar linhas.

data_frame.row

man0

Selecionar colunas.

data_frame

man1

Uma gama de linhas.

data_frame.row

man2

As 2 primeiras linhas.

data_frame.first(2)

man3

As 2 últimas linhas.

data_frame.last(2)

man4

Adicionar uma nova coluna.

data_frame = 

man5

Criar uma nova coluna baseada em dados de outras colunas.

data_frame = data_frame - data_frame

man6

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.

data_frame.where(data_frame.lt(300))

con0

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)) ))

con1

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

>

plot0

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.

Deixe um comentário