SciRuby / daru

Gem VersionBuild StatusGitterOpen Source Helpers

Introduktion

daru (Data Analysis in RUby) er et bibliotek til lagring, analyse, manipulation og visualisering af data i Ruby.

daru gør det nemt og intuitivt at behandle data fortrinsvis gennem 2 datastrukturer:Daru::DataFrame og Daru::Vector. Skrevet i ren Ruby virker med alle ruby-implementationer. testet med MRI 2.5.1 og 2.7.1.

daru plugin gems

  • daru-view

daru-view er til nem og interaktiv plotting i webapplikation & IRubynotebook. Det kan fungere i alle Ruby-webapplikationsrammer som Rails, Sinatra, Nanoc og forhåbentlig også i andre.

Artikler/Blogs, der opsummerer kraftfulde funktioner i daru-view:

  • GSoC 2017 daru-view
  • GSoC 2018 Progress Report
  • HighCharts Officielt blogindlæg vedrørende daru-view
  • daru-io

Denne perle udvider understøttelsen af mange import- og eksportmetoder i Daru::DataFrame. Denne gem er beregnet til at hjælpe Rubyister, der beskæftiger sig med dataanalyse eller webudvikling, ved at fungere som et generelt konverteringsbibliotek, der tager input i ét format (f.eks. JSON) og konverterer det i et andet format (f.eks. Avro) og samtidig gør det utrolig nemt at komme i gang med at analysere data med daru. Man kan læse mere i SciRuby/blog/daru-io.

Funktioner

  • Datastrukturer:
    • Vector – En grundlæggende 1-D vektor.
    • DataFrame – En 2-D regnearkslignende struktur til manipulation og lagring af datasæt. Dette er darus primære datastruktur.
  • Kompatibel med IRuby notebook, statsample, statsample-glm og statsample-timeseries.
  • Support for tidsserier.
  • Svært og hierarkisk indekserede datastrukturer.
  • Fleksibel og intuitiv API til manipulation og analyse af data.
  • Nemt at plotte, lave statistik og aritmetik.
  • Fyldige iteratorer.
  • Optionel hastigheds- og pladsoptimering på MRI med NMatrix og GSL.
  • Nemt at opdele, aggregere og gruppere data.
  • Hurtigt at reducere data med pivottabeller til hurtig dataoversigt.
  • Import og eksport af data fra og til Excel, CSV, SQL-databaser, ActiveRecord og almindelige tekstfiler.

Installation

$ gem install daru

Notesbøger

Notesbøger om de fleste brugssituationer

  • Overblik over de fleste daru-funktioner
  • Basisoprettelse af vektorer og DataFrame
  • Detaljeretableret brug af Daru::Vector
  • Detaljeret brug af Daru::DataFrame
  • Søgning og kombination af data i daru
  • Gruppering, opsplitning og drejning af data
  • Brug af kategoriske data

Visualisering

  • Visualisering af data med Daru::DataFrame
  • Plotting ved hjælp af Nyaplot
  • Plotting ved hjælp af GnuplotRB
  • Vektorplotting med Gruff
  • DataFrame-plotting med Gruff

Notesbøger om tidsserier

  • Grundlæggende tidsserier
  • Tidsanalyse af tidsserier og plotning

Notesbøger om indeksering

  • Indeksering i Vector
  • Indeksering i DataFrame

Casestudier

  • Logistisk regressionsanalyse med daru og statsample-glm
  • Finding and Plotting most heard artists from a Last.fm datasæt
  • Analyse af babynavne med daru
  • Eksempel på brug af kategoriske data
  • Eksempel på brug af kategorisk indeks

Blogindlæg

  • Dataanalyse i RUby: Grundlæggende datamanipulation og plotning
  • Dataanalyse i RUby: Opdeling, sortering, aggregering af data og datatyper
  • Finding og kombination af data i daru
  • Indledning til analyse af datasæt med daru-biblioteket

Tidsserier

  • Analyse af tidsserier i daru
  • Dato Offsets i daru

Kategoriske data

  • Kategorisk indeks
  • Kategoriske data
  • Visualisering med kategoriske data

Grundlæggende brug

daru eksponerer to vigtige datastrukturer: DataFrame og Vector. Vector er en grundlæggende 1-D struktur, der svarer til et mærket Array, mens DataFrame – darus primære datastruktur – er en 2-D regnearkslignende struktur til manipulation og lagring af datasæt.

Basisk DataFrame intimetialisering.

data_frame = Daru::DataFrame.new( { 'Beer' => , 'Gallons sold' => }, index: )data_frame

init0

Indlæsning af data fra CSV-filer.

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

init1

Grundlæggende datamanipulation

Vælgelse af rækker.

data_frame.row

man0

Vælgelse af kolonner.

data_frame

man1

En række af rækker.

data_frame.row

man2

De 2 første rækker.

data_frame.first(2)

man3

De 2 sidste rækker.

data_frame.last(2)

man4

Føjning af en ny kolonne.

data_frame = 

man5

Opretning af en ny kolonne baseret på data i andre kolonner.

data_frame = data_frame - data_frame

man6

Valg baseret på betingelser

Valg af lande baseret på antallet af solgte galloner i hvert land. Vi anvender en syntaks, der svarer til den, der er defineret af Arel, dvs. ved at anvende where-klausulen.

data_frame.where(data_frame.lt(300))

con0

Du kan sende en kombination af boolske operationer ind i #where-metoden, og det skulle fungere fint:

data_frame.where( data_frame .in() .and( data_frame.gt(520).or(data_frame.lt(250)) ))

con1

Plotting

Daru understøtter plotning af interaktive grafer med nyaplot. Du kan nemt oprette et plot med #plot-metoden. Her plotter vi de solgte galloner på Y-aksen og navnet på mærket på X-aksen i et søjlediagram.

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

Foruden nyaplot understøtter daru også plotting out of the box med gnuplotrb.

Dokumentation

Dokumentation kan du finde her.

Bidrage

Pluk en funktion fra køreplanen eller issue tracker eller tænk på din egen og send mig en Pull Request!

For detaljer se CONTRIBUTING.

Anerkendelser

  • Google og Ruby Science Foundation for Google Summer of Code 2016-bevillingen til hastighedsforbedringer og implementering af understøttelse af kategoriske data. Særlig tak til @lokeshh, @zverok og @agisga for deres indsats.
  • Google og Ruby Science Foundation for Google Summer of Code 2015-tilskuddet til videreudvikling af daru og integration af det med andre ruby-perler.
  • Tak last.fm for at gøre brugerdata tilgængelige for offentligheden.

Skriv en kommentar