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
Laden von Daten aus CSV-Dateien.
df = Daru::DataFrame.from_csv('TradeoffData.csv')
Basic Data Manipulation
Auswahl von Zeilen.
data_frame.row
Auswahl von Spalten.
data_frame
Ein Bereich von Zeilen.
data_frame.row
Die ersten 2 Zeilen.
data_frame.first(2)
Die letzten 2 Zeilen.
data_frame.last(2)
Hinzufügen einer neuen Spalte.
data_frame =
Erstellen einer neuen Spalte auf der Grundlage von Daten in anderen Spalten.
data_frame = data_frame - data_frame
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))
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)) ))
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
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.