SciRuby / daru

Gem VersionBuild StatusGitterOpen Source Helpers

Úvod

daru (Data Analysis in RUby) je knihovna pro ukládání, analýzu, manipulaci a vizualizaci dat v Ruby.

daru umožňuje snadné a intuitivní zpracování dat převážně prostřednictvím 2 datových struktur:Daru::DataFrame a Daru::Vector. Napsáno v čistém jazyce Ruby funguje se všemi implementacemi Ruby. testováno s MRI 2.5.1 a 2.7.1.

daru plugin gems

  • daru-view

daru-view slouží ke snadnému a interaktivnímu vykreslování ve webové aplikaci & IRubynotebook. Může fungovat ve všech frameworcích webových aplikací v jazyce Ruby, jako jsou Rails, Sinatra, Nanoc a snad i v dalších.

Články/Blogy, které shrnují výkonné funkce daru-view:

  • GSoC 2017 daru-view
  • GSoC 2018 Progress Report
  • HighCharts Oficiální příspěvek na blogu týkající se daru-view
  • daru-io

Tento gem rozšiřuje podporu mnoha metod importu a exportu Daru::DataFrame. Tento gem má pomoci rubistům, kteří se zabývají analýzou dat nebo vývojem webu, tím, že slouží jako univerzální konverzní knihovna, která přijímá vstup v jednom formátu (řekněme JSON) a převádí jej do jiného formátu (řekněme Avro) a zároveň neuvěřitelně usnadňuje začátky analýzy dat pomocí daru. Více se lze dočíst v SciRuby/blog/daru-io.

Vlastnosti

  • Datové struktury:
    • Vector – Základní 1-D vektor.
    • DataFrame – Dvourozměrná struktura podobná tabulkovému procesoru pro manipulaci a ukládání datových sad. Je to základní datová struktura daru.
  • Kompatibilní s IRuby notebook, statsample, statsample-glm a statsample-timeseries.
  • Podpora časových řad.
  • Jednoduše a hierarchicky indexované datové struktury.
  • Pružné a intuitivní API pro manipulaci a analýzu dat.
  • Snadné vykreslování, statistiky a aritmetiku.
  • Dostatek iterátorů.
  • Volitelná optimalizace rychlosti a prostoru na MRI pomocí NMatrix a GSL.
  • Snadné rozdělování, agregace a seskupování dat.
  • Rychlá redukce dat pomocí pivotních tabulek pro rychlé shrnutí dat.
  • Import a export dat z a do Excelu, CSV, SQL databází, ActiveRecord a textových souborů.

Instalace

$ gem install daru

Zápisníky

Zápisníky k většině případů použití

  • Přehled většiny funkcí Daru
  • Základní tvorba vektorů a DataFrame
  • Podrobné použití Daru::Vektor
  • Podrobné použití Daru::DataFrame
  • Vyhledávání a kombinování dat v daru
  • Seskupování, rozdělování a otáčení dat
  • Použití kategorických dat

Vizualizace

  • Vizualizace dat pomocí Daru::DataFrame
  • Kreslení pomocí Nyaplot
  • Kreslení pomocí GnuplotRB
  • Kreslení vektorů pomocí Gruff
  • Kreslení datových rámců pomocí Gruff

Sešity o časových řadách

  • Základní časové řady
  • .

  • Analýza a vykreslování časových řad

Sešity o indexování

  • Indexování ve vektoru
  • Indexování v DataFrame

Případové studie

  • Logistická regresní analýza s daru a statsample-glm
  • Vyhledávání a vykreslování nejposlouchanějších umělců z a Last.fm dataset
  • Analýza jmen dětí pomocí daru
  • Příklad použití kategoriálních dat
  • Příklad použití kategoriálního indexu

Příspěvky na blogu

  • Analýza dat v RUby: Základní manipulace s daty a vykreslování
  • Analýza dat v RUby: Dělení, třídění, agregace dat a datové typy
  • Vyhledávání a kombinování dat v daru
  • Úvod do analýzy datových souborů pomocí knihovny daru

Časové řady

  • Analýza časových řad v daru
  • Data Offsety v daru

Kategoriální data

  • Kategoriální index
  • Kategoriální data
  • Vizualizace s kategoriálními daty

Základní použití

daru vystavuje dvě hlavní datové struktury: DataFrame a Vector. Vektor je základní 1-D struktura odpovídající označenému poli Array, zatímco DataFrame – primární datová struktura daru – je 2-D struktura podobná tabulkovému procesoru pro manipulaci a ukládání souborů dat.

Základní intitializace DataFrame.

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

init0

Načítání dat ze souborů CSV.

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

init1

Základní manipulace s daty

Výběr řádků.

data_frame.row

man0

Výběr sloupců.

data_frame

man1

Rozsah řádků.

data_frame.row

man2

První 2 řádky.

data_frame.first(2)

man3

Poslední 2 řádky.

data_frame.last(2)

man4

Přidání nového sloupce.

data_frame = 

man5

Vytvoření nového sloupce na základě údajů v jiných sloupcích.

data_frame = data_frame - data_frame

man6

Výběr na základě podmínky

Výběr zemí na základě počtu prodaných galonů v každé z nich. Používáme podobnou syntaxi, jakou definoval Arel, tj. pomocí klauzule where.

data_frame.where(data_frame.lt(300))

con0

Můžete do metody #where předat kombinaci logických operací a mělo by to fungovat dobře:

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

con1

Kreslení

Daru podporuje kreslení interaktivních grafů pomocí nyaplot. Pomocí metody #plot můžete snadno vytvořit graf. Zde vykreslujeme prodané litry na ose Y a název značky na ose X ve sloupcovém grafu.

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

Kromě nyaplotu podporuje daru také vykreslování z krabice pomocí gnuplotrb.

Dokumentace

Dokumenty najdete zde.

Přispívání

Vyberte si funkci z cestovní mapy nebo ze sledování problémů nebo si vymyslete vlastní a pošlete mi požadavek na vytažení (Pull Request)!

Podrobnosti najdete v části CONTRIBUTUTING.

Poděkování

  • Google a Ruby Science Foundation za grant Google Summer of Code 2016 na zvýšení rychlosti a implementaci podpory kategoriálních dat. Zvláštní poděkování patří @lokeshh, @zverok a @agisga za jejich úsilí.
  • Google a Ruby Science Foundation za grant Google Summer of Code 2015 na další rozvoj daru a jeho integraci s dalšími ruby gemy.
  • Děkujeme last.fm za zpřístupnění uživatelských dat veřejnosti.

.

Napsat komentář