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
Indlæsning af data fra CSV-filer.
df = Daru::DataFrame.from_csv('TradeoffData.csv')
Grundlæggende datamanipulation
Vælgelse af rækker.
data_frame.row
Vælgelse af kolonner.
data_frame
En række af rækker.
data_frame.row
De 2 første rækker.
data_frame.first(2)
De 2 sidste rækker.
data_frame.last(2)
Føjning af en ny kolonne.
data_frame =
Opretning af en ny kolonne baseret på data i andre kolonner.
data_frame = data_frame - data_frame
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))
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)) ))
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
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.