SciRuby / daru

Gem VersionBuild StatusGitterOpen Source Helpers

Introduction

daru (Data Analysis in RUby) est une bibliothèque pour le stockage, l’analyse, la manipulation et la visualisation de données en Ruby.

daru rend facile et intuitif le traitement des données principalement à travers 2 structures de données:Daru::DataFrame et Daru::Vector. Écrit en Ruby pur fonctionne avec toutes les implémentations ruby.Testé avec MRI 2.5.1 et 2.7.1.

daru plugin gems

  • daru-view

daru-view est pour le traçage facile et interactif dans l’application web & IRubynotebook. Il peut fonctionner dans tous les frameworks d’application web Ruby comme Rails, Sinatra, Nanoc et, espérons-le, dans d’autres aussi.

Articles/Blogs, qui résument les fonctionnalités puissantes de daru-view :

  • GSoC 2017 daru-view
  • GSoC 2018 Progress Report
  • HighCharts Official blog post regarding daru-view
  • daru-io

Cette gem étend le support de nombreuses méthodes d’importation et d’exportation de Daru::DataFrame. Cette gemme est destinée à aider les Rubyistes qui sont dans l’analyse de données ou le développement Web, en servant de bibliothèque de conversion à usage général qui prend l’entrée dans un format (disons, JSON) et le convertit dans un autre format (disons, Avro) tout en rendant incroyablement facile de commencer à analyser des données avec daru. On peut en lire plus dans SciRuby/blog/daru-io.

Fonctionnalités

  • Structures de données :
    • Vecteur – Un vecteur 1-D de base.
    • DataFrame – Une structure 2-D de type feuille de calcul pour manipuler et stocker des ensembles de données. C’est la structure de données principale de daru.
  • Compatible avec IRuby notebook, statsample, statsample-glm et statsample-timeseries.
  • Support des séries temporelles.
  • Structures de données indexées de manière simple et hiérarchique.
  • Application de programmation flexible et intuitive pour la manipulation et l’analyse des données.
  • Traçage, statistiques et arithmétique faciles.
  • Des itérateurs abondants.
  • Option d’optimisation de la vitesse et de l’espace sur l’IRM avec NMatrix et GSL.
  • Fractionnement, agrégation et regroupement faciles des données.
  • Réduction rapide des données avec des tableaux croisés dynamiques pour un résumé rapide des données.
  • Importer et exporter des données depuis et vers Excel, CSV, bases de données SQL, ActiveRecord et des fichiers de texte brut.

Installation

$ gem install daru

Notebooks

Notebooks sur la plupart des cas d’utilisation

  • Overview de la plupart des fonctions daru
  • Création basique de vecteurs et de DataFrame
  • Utilisation détaillée de Daru: :Vector
  • Utilisation détaillée de Daru::DataFrame
  • Recherche et combinaison de données dans Daru
  • Groupement, division et pivotement de données
  • Utilisation de données catégorielles

Visualisation

  • Visualisation de données avec Daru: :DataFrame
  • Traçage à l’aide de Nyaplot
  • Traçage à l’aide de GnuplotRB
  • Traçage vectoriel avec Gruff
  • Traçage de DataFrame avec Gruff

Cahiers de notes sur les séries temporelles

  • Séries temporelles de base
  • .

  • Analyse et tracé de séries temporelles

Cahiers de notes sur l’indexation

  • Indexation en vecteur
  • Indexation en DataFrame

Études de cas

  • Analyse de régression logistique avec daru et statsample-.glm
  • Trouver et tracer les artistes les plus écoutés à partir d’un ensemble de données Last.fm
  • Analyse de noms de bébés avec daru
  • Exemple d’utilisation de données catégorielles
  • Exemple d’utilisation d’un index catégorique

Articles de blog

  • Analyse de données dans RUby : Manipulation de données de base et traçage
  • Analyse de données dans RUby : Fractionnement, tri, agrégation de données et types de données
  • Trouver et combiner des données dans daru
  • Introduction à l’analyse d’ensembles de données avec la bibliothèque daru

Séries temporelles

  • Analyse de séries temporelles dans daru
  • Date. Offsets dans Daru

Données catégorielles

  • Index catégorique
  • Données catégorielles
  • Visualisation avec des données catégorielles

Utilisation de base

daru expose deux structures de données majeures : DataFrame et Vector. Le Vector est une structure 1-D de base correspondant à un Array étiqueté, tandis que le DataFrame – la structure de données principale de daru – est une structure 2-D de type tableur pour manipuler et stocker des ensembles de données.

Initialisation de base de DataFrame.

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

init0

Chargez des données à partir de fichiers CSV.

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

init1

Manipulation de données de base

Sélectionnez des lignes.

data_frame.row

man0

Sélectionnez des colonnes.

data_frame

man1

Une plage de lignes.

data_frame.row

man2

Les 2 premières lignes.

data_frame.first(2)

man3

Les 2 dernières lignes.

data_frame.last(2)

man4

Ajouter une nouvelle colonne.

data_frame = 

man5

Création d’une nouvelle colonne basée sur les données d’autres colonnes.

data_frame = data_frame - data_frame

man6

Sélection par condition

Sélection de pays en fonction du nombre de gallons vendus dans chacun. Nous utilisons une syntaxe similaire à celle définie par Arel, c’est-à-dire en utilisant la clause where.

data_frame.where(data_frame.lt(300))

con0

Vous pouvez passer une combinaison d’opérations booléennes dans la méthode #where et cela devrait fonctionner correctement :

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

con1

Plotting

Daru prend en charge le tracé de graphiques interactifs avec nyaplot. Vous pouvez facilement créer un tracé avec la méthode #plot. Ici, nous traçons les gallons vendus sur l’axe des Y et le nom de la marque sur l’axe des X dans un graphique à barres.

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

En plus de nyaplot, daru supporte également le traçage hors de la boîte avec gnuplotrb.

Documentation

Les docs peuvent être trouvées ici.

Contribuer

Prenez une fonctionnalité de la feuille de route ou du traqueur de problèmes ou pensez à la vôtre et envoyez-moi une demande de Pull !

Pour les détails, voir CONTRIBUTION.

Remerciements

  • Google et la Ruby Science Foundation pour la subvention Google Summer of Code 2016 pour les améliorations de vitesse et la mise en œuvre du support des données catégorielles. Remerciements particuliers à @lokeshh, @zverok et @agisga pour leurs efforts.
  • Google et la Ruby Science Foundation pour la subvention Google Summer of Code 2015 pour poursuivre le développement de daru et l’intégrer à d’autres gemmes ruby.
  • Merci last.fm pour avoir rendu les données des utilisateurs accessibles au public.

Laisser un commentaire