SciRuby / daru

Gem VersionBuild StatusGitterOpen Source Helpers

Einführung

daru (Data Analysis in RUby) ist eine Bibliothek zur Speicherung, Analyse, Manipulation und Visualisierung von Daten in Ruby.

daru macht es einfach und intuitiv, Daten zu verarbeiten, vor allem durch 2 Datenstrukturen:Daru::DataFrame und Daru::Vector. Geschrieben in reinem Ruby funktioniert es mit allen Ruby-Implementierungen.

Getestet mit MRI 2.5.1 und 2.7.1.

daru plugin gems

  • daru-view

daru-view ist für einfaches und interaktives Plotten in der Webanwendung & IRubynotebook. Es kann in allen Ruby-Webanwendungs-Frameworks wie Rails, Sinatra, Nanoc und hoffentlich auch in anderen funktionieren.

Artikel/Blogs, die leistungsstarke Funktionen von daru-view zusammenfassen:

  • GSoC 2017 daru-view
  • GSoC 2018 Fortschrittsbericht
  • HighCharts Offizieller Blogbeitrag zu daru-view
  • daru-io

Dieses Gem erweitert die Unterstützung für viele Import- und Exportmethoden von Daru::DataFrame. Dieses Gem soll Rubyisten helfen, die sich mit Datenanalyse oder Webentwicklung beschäftigen, indem es als allgemeine Konvertierungsbibliothek dient, die Eingaben in einem Format (z.B. JSON) entgegennimmt und in ein anderes Format (z.B. Avro) konvertiert, während es gleichzeitig den Einstieg in die Datenanalyse mit daru unglaublich einfach macht. Man kann mehr in SciRuby/blog/daru-io lesen.

Features

  • Datenstrukturen:
    • Vektor – Ein grundlegender 1-D Vektor.
    • DataFrame – Eine 2-D Spreadsheet-ähnliche Struktur zur Manipulation und Speicherung von Datensätzen. Dies ist die primäre Datenstruktur von daru.
  • Kompatibel mit IRuby notebook, statsample, statsample-glm und statsample-timeseries.
  • Unterstützung für Zeitreihen.
  • Systematisch und hierarchisch indizierte Datenstrukturen.
  • Flexible und intuitive API zur Manipulation und Analyse von Daten.
  • Einfaches Plotten, Statistik und Arithmetik.
  • Vielfältige Iteratoren.
  • Optionale Geschwindigkeits- und Platzoptimierung auf MRI mit NMatrix und GSL.
  • Einfaches Aufteilen, Aggregieren und Gruppieren von Daten.
  • Schnelle Datenreduzierung mit Pivot-Tabellen für eine schnelle Datenzusammenfassung.
  • Importieren und Exportieren von Daten aus und nach Excel, CSV, SQL-Datenbanken, ActiveRecord und einfachen Textdateien.

Installation

$ gem install daru

Notebooks

Notebooks zu den meisten Anwendungsfällen

  • Überblick über die meisten Daru-Funktionen
  • Grundlegende Erstellung von Vektoren und DataFrame
  • Detaillierte Verwendung von Daru::Vector
  • Detaillierte Verwendung von Daru::DataFrame
  • Suchen und Kombinieren von Daten in Daru
  • Gruppieren, Aufteilen und Pivotieren von Daten
  • Verwendung von kategorischen Daten

Visualisierung

  • Visualisierung von Daten mit Daru::DataFrame
  • Darstellung mit Nyaplot
  • Darstellung mit GnuplotRB
  • Vektordarstellung mit Gruff
  • DataFrame-Darstellung mit Gruff

Notizbücher zu Zeitreihen

  • Grundlegende Zeitreihen
  • Zeitreihenanalyse und Plotten

Notizbücher zur Indizierung

  • Indizierung in Vector
  • Indizierung in DataFrame

Fallstudien

  • Logistische Regressionsanalyse mit daru und statsample-glm
  • Finden und Darstellen der meistgehörten Künstler aus einem Last.fm-Datensatz
  • Analyse von Babynamen mit daru
  • Beispiel für die Verwendung kategorischer Daten
  • Beispiel für die Verwendung eines kategorischen Index

Blog Posts

  • Datenanalyse in RUby: Grundlegende Datenmanipulation und Plotting
  • Datenanalyse in RUby: Aufteilen, Sortieren, Aggregieren von Daten und Datentypen
  • Finden und Kombinieren von Daten in daru
  • Einführung in die Analyse von Datensätzen mit der daru-Bibliothek

Zeitreihen

  • Analyse von Zeitreihen in daru
  • Datum Offsets in daru

Kategorische Daten

  • Kategorischer Index
  • Kategorische Daten
  • Visualisierung mit kategorischen Daten

Grundlegende Verwendung

daru stellt zwei wichtige Datenstrukturen zur Verfügung: DataFrame und Vector. Der Vektor ist eine grundlegende 1-D-Struktur, die einem beschrifteten Array entspricht, während DataFrame – darus primäre Datenstruktur – eine 2-D-Tabelle-ähnliche Struktur zur Manipulation und Speicherung von Datensätzen ist.

Basic DataFrame intitialization.

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

init0

Laden von Daten aus CSV-Dateien.

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

init1

Basic Data Manipulation

Auswahl von Zeilen.

data_frame.row

man0

Auswahl von Spalten.

data_frame

man1

Ein Bereich von Zeilen.

data_frame.row

man2

Die ersten 2 Zeilen.

data_frame.first(2)

man3

Die letzten 2 Zeilen.

data_frame.last(2)

man4

Hinzufügen einer neuen Spalte.

data_frame = 

man5

Erstellen einer neuen Spalte auf der Grundlage von Daten in anderen Spalten.

data_frame = data_frame - data_frame

man6

Bedingungsbasierte Auswahl

Auswahl von Ländern auf der Grundlage der Anzahl der in jedem Land verkauften Gallonen. Wir verwenden eine Syntax, die der von Arel definierten ähnelt, d. h. wir verwenden die Klausel where.

data_frame.where(data_frame.lt(300))

con0

Sie können eine Kombination von booleschen Operationen in die #where-Methode übergeben und es sollte gut funktionieren:

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

con1

Plotten

Daru unterstützt das Plotten von interaktiven Graphen mit nyaplot. Mit der Methode #plot können Sie ganz einfach ein Diagramm erstellen. Hier plotten wir die verkauften Gallonen auf der Y-Achse und den Namen der Marke auf der X-Achse in einem Balkendiagramm.

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

Neben nyaplot unterstützt daru auch das Plotten mit gnuplotrb.

Dokumentation

Docs finden Sie hier.

Beitragen

Wählen Sie ein Feature aus der Roadmap oder dem Issue Tracker oder denken Sie an ein eigenes und schicken Sie mir einen Pull Request!

Für Details siehe CONTRIBUTING.

Danksagung

  • Google und die Ruby Science Foundation für den Google Summer of Code 2016 Grant für Geschwindigkeitsverbesserungen und die Implementierung der Unterstützung für kategorische Daten. Besonderen Dank an @lokeshh, @zverok und @agisga für ihre Bemühungen.
  • Google und die Ruby Science Foundation für das Google Summer of Code 2015 Stipendium für die Weiterentwicklung von daru und die Integration mit anderen Ruby-Gems.
  • Danke an last.fm für die Bereitstellung von Nutzerdaten für die Öffentlichkeit.

Schreibe einen Kommentar