Introduktion
daru (Data Analysis in RUby) är ett bibliotek för lagring, analys, manipulation och visualisering av data i Ruby.
daru gör det enkelt och intuitivt att bearbeta data främst genom 2 datastrukturer:Daru::DataFrame
och Daru::Vector
. Skrivet i ren Ruby fungerar med alla rubyimplementationer.Testad med MRI 2.5.1 och 2.7.1.
daru plugin gems
- daru-view
daru-view är för enkel och interaktiv plottning i webbapplikation & IRubynotebook. Den kan fungera i alla ramverk för Ruby-webbprogram som Rails, Sinatra, Nanoc och förhoppningsvis även i andra ramverk.
Artiklar/Bloggar, som sammanfattar kraftfulla funktioner i daru-view:
- GSoC 2017 daru-view
- GSoC 2018 Progress Report
- HighCharts Officiellt blogginlägg om daru-view
- daru-io
Denna pärla utökar stödet för många import- och exportmetoder i Daru::DataFrame
. Denna gem är tänkt att hjälpa Rubyister som sysslar med dataanalys eller webbutveckling, genom att fungera som ett allmänt konverteringsbibliotek som tar inmatning i ett format (till exempel JSON) och konverterar det till ett annat format (till exempel Avro) samtidigt som den gör det otroligt enkelt att komma igång med att analysera data med daru. Man kan läsa mer i SciRuby/blog/daru-io.
Funktioner
- Datastrukturer:
- Vektor – En grundläggande 1-D-vektor.
- DataFrame – En 2-D-struktur som liknar ett kalkylblad för att manipulera och lagra datamängder. Detta är darus primära datastruktur.
- Kompatibel med IRuby notebook, statsample, statsample-glm och statsample-timeseries.
- Stöd för tidsserier.
- Skickligt och hierarkiskt indexerade datastrukturer.
- Flexibelt och intuitivt API för hantering och analys av data.
- Enklare plottning, statistik och aritmetik.
- Väldiga iteratorer.
- Optionell optimering av hastighet och utrymme på MRI med NMatrix och GSL.
- Enklare uppdelning, aggregering och gruppering av data.
- Snabbt reducering av data med pivottabeller för snabb sammanfattning av data.
- Importera och exportera data från och till Excel, CSV, SQL-databaser, ActiveRecord och vanliga textfiler.
Installation
$ gem install daru
Anteckningsböcker
Anteckningsböcker om de flesta användningsområden
- Översikt över de flesta daru-funktioner
- Grundläggande skapande av vektorer och DataFrame
- Detaljriktad användning av Daru::Vector
- Detaljerad användning av Daru::DataFrame
- Söka och kombinera data i daru
- Gruppera, dela och vrida data
- Användning av kategoriska data
Visualisering
- Visualisering av data med Daru::DataFrame
- Plottning med Nyaplot
- Plottning med GnuplotRB
- Vektorplottning med Gruff
- DataFrame-plottning med Gruff
Anteckningsböcker om tidsserier
- Grundläggande tidsserier
- Tidsserieanalys och plottning
Anteckningsböcker om indexering
- Indexering i Vector
- Indexering i DataFrame
Fallstudier
- Logistisk regressionsanalys med daru och statsample-glm
- Hitta och plotta de mest hörda artisterna från en sista.fm dataset
- Analysera babynamn med daru
- Exempel på användning av kategoriska data
- Exempel på användning av kategoriskt index
Blogginlägg
- Dataanalys i RUby: Grundläggande datahantering och plottning
- Dataanalys i RUby: Uppdelning, sortering, aggregera data och datatyper
- Söka och kombinera data i daru
- Introduktion till analys av datamängder med daru-biblioteket
Tidsserier
- Analys av tidsserier i daru
- Datum Offsets i daru
Kategoriska data
- Kategoriskt index
- Kategoriska data
- Visualisering med kategoriska data
Grundläggande användning
daru exponerar två viktiga datastrukturer: DataFrame
och Vector
. Vector är en grundläggande 1-D struktur som motsvarar en märkt Array, medan DataFrame
– darus primära datastruktur – är en 2-D kalkylbladliknande struktur för att manipulera och lagra datamängder.
Basic DataFrame intimetialization.
data_frame = Daru::DataFrame.new( { 'Beer' => , 'Gallons sold' => }, index: )data_frame
Ladda in data från CSV-filer.
df = Daru::DataFrame.from_csv('TradeoffData.csv')
Grundläggande datamanipulering
Väljning av rader.
data_frame.row
Väljning av kolumner.
data_frame
Ett intervall av rader.
data_frame.row
De två första raderna.
data_frame.first(2)
De två sista raderna.
data_frame.last(2)
Hintillsättning av en ny kolumn.
data_frame =
Skapa en ny kolumn baserat på data i andra kolumner.
data_frame = data_frame - data_frame
Konditionsbaserat urval
Väljning av länder baserat på antalet sålda liter i varje land. Vi använder en syntax som liknar den som definieras av Arel, dvs. genom att använda where
-klausulen.
data_frame.where(data_frame.lt(300))
Du kan skicka en kombination av boolska operationer till #where
-metoden och det bör fungera bra:
data_frame.where( data_frame .in() .and( data_frame.gt(520).or(data_frame.lt(250)) ))
Plotting
Daru har stöd för plottning av interaktiva grafer med nyaplot. Du kan enkelt skapa en plott med metoden #plot
. Här plottar vi de sålda gallonerna på Y-axeln och varumärkets namn på X-axeln i ett stapeldiagram.
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
Förutom nyaplot har daru även stöd för plottning med gnuplotrb.
Dokumentation
Dokumentation hittar du här.
Bidra till
Plocka en funktion från färdplanen eller problemspåraren eller tänk ut en egen och skicka mig en Pull Request!
För detaljer se CONTRIBUTING.
Acknowledgements
- Google och Ruby Science Foundation för Google Summer of Code 2016-bidraget för hastighetsförbättringar och implementering av stöd för kategoriska data. Särskilt tack till @lokeshh, @zverok och @agisga för deras insatser.
- Google och Ruby Science Foundation för Google Summer of Code 2015-stipendiet för att vidareutveckla daru och integrera den med andra ruby gems.
- Tack last.fm för att ni gör användardata tillgängliga för allmänheten.