Inleiding
daru (Data Analysis in RUby) is een bibliotheek voor opslag, analyse, manipulatie en visualisatie van gegevens in Ruby.
daru maakt het gemakkelijk en intuïtief om gegevens overwegend te verwerken door middel van 2 gegevensstructuren:Daru::DataFrame
en Daru::Vector
. Geschreven in pure Ruby werkt met alle Ruby implementaties.Getest met MRI 2.5.1 en 2.7.1.
daru plugin gems
- daru-view
daru-view is voor eenvoudig en interactief plotten in webapplicatie & IRubynotebook. Het kan werken in alle Ruby web applicatie frameworks zoals Rails, Sinatra, Nanoc en hopelijk ook in andere.
Artikels/Blogs, die de krachtige eigenschappen van daru-view samenvatten:
- GSoC 2017 daru-view
- GSoC 2018 Progress Report
- HighCharts Official blog post regarding daru-view
- daru-io
Deze gem breidt ondersteuning uit voor veel Import en Export methoden van Daru::DataFrame
. Deze gem is bedoeld om Ruby-gebruikers te helpen die zich bezighouden met data-analyse of webontwikkeling, door te dienen als een conversiebibliotheek voor algemene doeleinden die invoer in een bepaald formaat (bijvoorbeeld JSON) neemt en converteert naar een ander formaat (bijvoorbeeld Avro), terwijl het ook ongelooflijk eenvoudig wordt om aan de slag te gaan met het analyseren van gegevens met daru. Men kan meer lezen in SciRuby/blog/daru-io.
Features
- Gegevensstructuren:
- Vector – Een basis 1-D vector.
- DataFrame – Een 2-D spreadsheet-achtige structuur voor het manipuleren en opslaan van datasets. Dit is daru’s primaire gegevensstructuur.
- Compatibel met IRuby notebook, statsample, statsample-glm en statsample-timeseries.
- Ondersteuning voor tijdreeksen.
- Slimme en hiërarchisch geïndexeerde datastructuren.
- Flexibele en intuïtieve API voor manipulatie en analyse van data.
- Eenvoudig plotten, statistiek en rekenen.
- Veel iterators.
- Optimalisatie van snelheid en ruimte op MRI met NMatrix en GSL.
- Eenvoudig splitsen, aggregeren en groeperen van gegevens.
- Snel gegevens verkleinen met draaitabellen voor een snelle samenvatting van gegevens.
- Import en export van gegevens van en naar Excel, CSV, SQL Databases, ActiveRecord en platte tekst bestanden.
Installatie
$ gem install daru
Notities
Notities over de meeste use-cases
- Overzicht van de meeste daru-functies
- Basiscreatie van Vectoren en DataFrame
- Gedetailleerd gebruik van Daru::Vector
- Gedetailleerd gebruik van Daru::DataFrame
- Gegevens zoeken en combineren in daru
- Gegroepeerde, opgesplitste en geplitste gegevens
- Gebruik van categorische gegevens
Visualisatie
- Visualisatie van gegevens met Daru::DataFrame
- Plotten met Nyaplot
- Plotten met GnuplotRB
- Vector plotten met Gruff
- DataFrame plotten met Gruff
Notitieboekjes over Tijdreeksen
- Basis Tijdreeksen
- Tijdreeksanalyse en plotten
Notities over Indexeren
- Indexeren in Vector
- Indexeren in DataFrame
Case Studies
- Logistische Regressie Analyse met daru en statsample-glm
- Het vinden en uitzetten van de meest beluisterde artiesten uit een Last.fm dataset
- Analyseren van babynamen met daru
- Voorbeeldgebruik van Categorical Data
- Voorbeeldgebruik van Categorical Index
Blog Posts
- Gegevensanalyse in RUby: Basisgegevensmanipulatie en plotten
- Gegevensanalyse in RUby: Splitsen, sorteren, aggregeren van gegevens en gegevenstypen
- Vinden en combineren van gegevens in daru
- Inleiding tot het analyseren van datasets met daru bibliotheek
Tijdreeksen
- Analyse van tijdreeksen in daru
- Datum Offsets in daru
Categorische Gegevens
- Categorische Index
- Categorische Gegevens
- Visualisatie met Categorische Gegevens
Basisgebruik
daru stelt twee belangrijke gegevensstructuren bloot: DataFrame
en Vector
. De Vector is een basis 1-D structuur die overeenkomt met een gelabelde Array, terwijl de DataFrame
– daru’s primaire datastructuur – een 2-D spreadsheet-achtige structuur is voor het manipuleren en opslaan van datasets.
Basic DataFrame intitialisatie.
data_frame = Daru::DataFrame.new( { 'Beer' => , 'Gallons sold' => }, index: )data_frame
Laden van gegevens uit CSV-bestanden.
df = Daru::DataFrame.from_csv('TradeoffData.csv')
Basisgegevensmanipulatie
Selecteren van rijen.
data_frame.row
Selecteren van kolommen.
data_frame
Een bereik van rijen.
data_frame.row
De eerste 2 rijen.
data_frame.first(2)
De laatste 2 rijen.
data_frame.last(2)
Een nieuwe kolom toevoegen.
data_frame =
Een nieuwe kolom maken op basis van gegevens in andere kolommen.
data_frame = data_frame - data_frame
Selectie op basis van voorwaarden
Landen selecteren op basis van het aantal verkochte liters in elk land. We gebruiken een syntaxis die vergelijkbaar is met die van Arel, d.w.z. door de where
-clausule te gebruiken.
data_frame.where(data_frame.lt(300))
U kunt een combinatie van booleaanse bewerkingen doorgeven aan de methode #where
en het zou prima moeten werken:
data_frame.where( data_frame .in() .and( data_frame.gt(520).or(data_frame.lt(250)) ))
Plotten
Daru ondersteunt het plotten van interactieve grafieken met nyaplot. U kunt eenvoudig een plot maken met de methode #plot
. Hier plotten we de verkochte gallons op de Y-as en de naam van het merk op de X-as in een staafdiagram.
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
Naast nyaplot, ondersteunt daru ook plotten out of the box met gnuplotrb.
Documentatie
Docs kunnen hier worden gevonden.
Bijdragen
Kies een functie uit de Roadmap of de issue tracker of bedenk je eigen functie en stuur me een Pull Request!
Voor details zie Bijdragen.
Erkenningen
- Google en de Ruby Science Foundation voor de Google Summer of Code 2016 grant voor snelheidsverbeteringen en implementatie van ondersteuning voor categorische data. Speciale dank aan @lokeshh, @zverok en @agisga voor hun inspanningen.
- Google en de Ruby Science Foundation voor de Google Summer of Code 2015 grant voor het verder ontwikkelen van daru en het integreren met andere ruby gems.
- Dank je last.fm voor het toegankelijk maken van gebruikersgegevens voor het publiek.