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
Chargez des données à partir de fichiers CSV.
df = Daru::DataFrame.from_csv('TradeoffData.csv')
Manipulation de données de base
Sélectionnez des lignes.
data_frame.row
Sélectionnez des colonnes.
data_frame
Une plage de lignes.
data_frame.row
Les 2 premières lignes.
data_frame.first(2)
Les 2 dernières lignes.
data_frame.last(2)
Ajouter une nouvelle colonne.
data_frame =
Création d’une nouvelle colonne basée sur les données d’autres colonnes.
data_frame = data_frame - data_frame
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))
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)) ))
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
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.