Introduzione
daru (Data Analysis in RUby) è una libreria per la memorizzazione, analisi, manipolazione e visualizzazione di dati in Ruby.
daru rende facile e intuitivo elaborare i dati in modo predominante attraverso 2 strutture dati: Daru::DataFrame
e Daru::Vector
. Scritto in puro Ruby funziona con tutte le implementazioni di Ruby.Testato con MRI 2.5.1 e 2.7.1.
daru plugin gems
- daru-view
daru-view è per il tracciamento facile e interattivo nell’applicazione web & IRubynotebook. Può funzionare in qualsiasi framework di applicazioni web Ruby come Rails, Sinatra, Nanoc e si spera anche in altri.
Articoli/Blog, che riassumono le potenti caratteristiche di daru-view:
- GSoC 2017 daru-view
- GSoC 2018 Progress Report
- HighCharts Official blog post regarding daru-view
- daru-io
Questa gemma estende il supporto per molti metodi Import ed Export di Daru::DataFrame
. Questa gemma ha lo scopo di aiutare i rubyisti che si occupano di analisi dei dati o di sviluppo web, fungendo da libreria di conversione generale che prende l’input in un formato (ad esempio, JSON) e lo converte in un altro formato (ad esempio, Avro), rendendo anche incredibilmente facile iniziare l’analisi dei dati con daru. Si può leggere di più in SciRuby/blog/daru-io.
Caratteristiche
- Strutture dati:
- Vettore – Un vettore 1-D di base.
- DataFrame – Una struttura 2-D simile a un foglio di calcolo per manipolare e memorizzare insiemi di dati. Questa è la struttura dati primaria di daru.
- Compatibile con IRuby notebook, statsample, statsample-glm e statsample-timeseries.
- Supporto per serie temporali.
- Strutture dati indicizzate in modo semplice e gerarchico.
- Apipi flessibile e intuitiva per la manipolazione e l’analisi dei dati.
- Facile tracciare, statistiche e aritmetica.
- Pieno numero di iteratori.
- Ottimizzazione opzionale della velocità e dello spazio su RM con NMatrix e GSL.
- Facile suddivisione, aggregazione e raggruppamento dei dati.
- Riduzione rapida dei dati con tabelle pivot per una rapida sintesi dei dati.
- Importazione ed esportazione dei dati da e verso Excel, CSV, database SQL, ActiveRecord e file di testo semplice.
Installazione
$ gem install daru
Quaderni
Quaderni sulla maggior parte dei casi d’uso
- Panoramica della maggior parte delle funzioni Daru
- Creazione base di Vettori e DataFrame
- Uso dettagliato di Daru::Vector
- Uso dettagliato di Daru::DataFrame
- Ricerca e combinazione di dati in Daru
- Raggruppamento, divisione e rotazione di dati
- Uso di dati categorici
Visualizzazione
- Visualizzazione di dati con Daru::DataFrame
- Ploting usando Nyaplot
- Ploting usando GnuplotRB
- Ploting vettoriale con Gruff
- DataFrame con Gruff
Quaderni sulle serie temporali
- Serie temporali di base
- Analisi delle serie temporali e tracciatura
Appunti sull’indicizzazione
- Indicizzazione in vettore
- Indicizzazione in DataFrame
Casi di studio
- Analisi della regressione logistica con daru e statsample-glm
- Trovare e tracciare gli artisti più ascoltati da un set di dati Last.fm
- Analisi dei nomi dei bambini con daru
- Uso di esempio dei dati categorici
- Uso di esempio dell’indice categorico
Blog Posts
- Analisi dei dati in RUby: Manipolazione dei dati e plottaggio di base
- Analisi dei dati in RUby: Suddivisione, ordinamento, aggregazione di dati e tipi di dati
- Ricerca e combinazione di dati in daru
- Introduzione all’analisi di serie di dati con la libreria daru
Serie temporali
- Analisi di serie temporali in daru
- Data Offset in Daru
Dati categorici
- Indice categorico
- Dati categorici
- Visualizzazione con dati categorici
Uso di base
daru espone due strutture dati principali: DataFrame
e Vector
. Il Vector è una struttura di base 1-D corrispondente a un Array etichettato, mentre il DataFrame
– la struttura dati principale di daru – è una struttura 2-D simile a un foglio di calcolo per manipolare e memorizzare insiemi di dati.
Inizializzazione di base di DataFrame.
data_frame = Daru::DataFrame.new( { 'Beer' => , 'Gallons sold' => }, index: )data_frame
Caricamento dati da file CSV.
df = Daru::DataFrame.from_csv('TradeoffData.csv')
Manipolazione dati di base
Selezione righe.
data_frame.row
Selezione colonne.
data_frame
Un intervallo di righe.
data_frame.row
Le prime 2 righe.
data_frame.first(2)
Le ultime 2 righe.
data_frame.last(2)
Aggiungere una nuova colonna.
data_frame =
Creazione di una nuova colonna basata sui dati di altre colonne.
data_frame = data_frame - data_frame
Selezione basata su condizioni
Selezione dei paesi basata sul numero di galloni venduti in ognuno. Usiamo una sintassi simile a quella definita da Arel, cioè usando la clausola where
.
data_frame.where(data_frame.lt(300))
Puoi passare una combinazione di operazioni booleane nel metodo #where
e dovrebbe funzionare bene:
data_frame.where( data_frame .in() .and( data_frame.gt(520).or(data_frame.lt(250)) ))
Ploting
Daru supporta il plottaggio di grafici interattivi con nyaplot. Potete facilmente creare un grafico con il metodo #plot
. Qui tracciamo i litri venduti sull’asse Y e il nome della marca sull’asse X in un grafico a barre.
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
Oltre a nyaplot, daru supporta anche il tracciamento out of the box con gnuplotrb.
Documentazione
I documenti possono essere trovati qui.
Contribuire
Prendi una caratteristica dalla Roadmap o dal tracker dei problemi o pensa alla tua e mandami una Pull Request!
Per i dettagli vedi CONTRIBUIRE.
Ringraziamenti
- Google e la Ruby Science Foundation per la sovvenzione Google Summer of Code 2016 per i miglioramenti della velocità e l’implementazione del supporto ai dati categorici. Un ringraziamento speciale a @lokeshh, @zverok e @agisga per i loro sforzi.
- Google e la Ruby Science Foundation per la sovvenzione Google Summer of Code 2015 per sviluppare ulteriormente daru e integrarlo con altre gemme ruby.
- Grazie last.fm per aver reso i dati degli utenti accessibili al pubblico.