SciRuby / daru

Gem VersionBuild StatusGitterOpen Source Helpers

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

init0

Ladda in data från CSV-filer.

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

init1

Grundläggande datamanipulering

Väljning av rader.

data_frame.row

man0

Väljning av kolumner.

data_frame

man1

Ett intervall av rader.

data_frame.row

man2

De två första raderna.

data_frame.first(2)

man3

De två sista raderna.

data_frame.last(2)

man4

Hintillsättning av en ny kolumn.

data_frame = 

man5

Skapa en ny kolumn baserat på data i andra kolumner.

data_frame = data_frame - data_frame

man6

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

con0

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

con1

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

plot0

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.

Lämna en kommentar