SciRuby / daru

Gem VersionBuild StatusGitterOpen Source Helpers

Introduction

daru (Data Analysis in RUby) はデータの保存、解析、操作および可視化のための Ruby ライブラリです。

daru は、Daru::DataFrameDaru::Vector の2つのデータ構造を通して、主にデータを簡単かつ直感的に処理できるようにします。 MRI 2.5.1 と 2.7.1 でテスト済み。

daru plugin gems

  • daru-view

daru-view はウェブアプリケーション & IRubynotebook で簡単かつ対話的にプロッティングするためのものです。 これは Rails, Sinatra, Nanoc のような Ruby のウェブアプリケーションフレームワークで動作します。

daru-viewの強力な機能をまとめた記事/ブログです。

  • GSoC 2017 daru-view
  • GSoC 2018 Progress Report
  • HighCharts daru-view に関する公式ブログ記事
  • daru-io

このgemは Daru::DataFrame の多くの Import と Export メソッドをサポートして拡張しています。 このgemは、データ解析やWeb開発に携わるRubyistのために、あるフォーマット(例えばJSON)の入力を受けて別のフォーマット(例えばAvro)に変換する汎用変換ライブラリとして機能し、同時にdaruによるデータ解析を非常に簡単に始められるようにすることを目的としています。 SciRuby/blog/daru-io.

Features

  • データ構造:
    • Vector – 1次元ベクトル
    • DataFrame – データセットを操作し保存する2次元スプレッドシート的構造体です。 これは daru の主要なデータ構造です。
  • IRuby notebook, statsample, statsample-glm, statsample-timeseries と互換性があります。
  • Singly and hierarchically indexed data structures.
  • Flexible and intuitive API for manipulation and analysis of data.
  • Easy plotting, statistics and arithmetic.
  • Easy plotting, statistics and arithmetic.
  • Easy plotting, statistics and arithmetic.Easy plotting, statistics and arithtic.

  • 豊富なイテレーター。
  • NMatrix と GSL を使用した MRI での速度と空間の最適化。
  • データの分割、集約、グループ化が簡単。
  • データをすばやく要約するピボット・テーブルですばやく縮小。
  • Excel、 CSV、 SQL データベース、 ActiveRecord、プレーン テキスト ファイルからのデータのインポートとエクスポートが可能。

インストール

$ gem install daru

ノート

ほとんどの使用例に関するノート

  • ほとんどのdaru関数の概要
  • ベクターとDataFrameの基本作成
  • Daru:.DataForm の詳細使用方法(英語)Vector
  • Daru::DataFrame の詳細な使い方
  • Daru におけるデータの検索と結合
  • データのグループ化、分割、ピボット化
  • カテゴリデータの使い方

視覚化

  • Daru:.DataFrame による可視化
  • Daru:.DataFrame によるデータの可視化

  • Daru:DataFrame による視覚化
  • Daru:DataFrame の詳細な使い方
  • Daru:DataFrame によるデータの検索と結合 Daru:DataFrame による視覚化

  • Nyaplot
  • GnuplotRB
  • Vector plotting with Gruff
  • DataFrame plotting with Gruff

Notebooks on Time series

  • Basic Time Series
  • 時系列解析とプロット

インデックスに関するノート

  • Vectorにおけるインデックス
  • DataFrameにおけるインデックス

ケーススタディ

  • daruとstatsample-によるLogistic Regression Analysisglm
  • 最もよく聴かれたアーティストをLast.Liveから見つけてプロットする。fmデータセット
  • Analyzing baby names with daru
  • Example usage of Categorical Data
  • Example usage of Categorical Index

Blog Posts

  • Data Analysis in RUby.DATA DATA MATERIALS。 基本的なデータ操作とプロット
  • RUbyでデータ分析。 分割、ソート。 データの集計とデータ型
  • daruのデータの検索と結合
  • daruライブラリを使ったデータセット解析の紹介

時系列

  • daruの時系列解析
  • Date Daruのオフセット

Categorical Data

  • Categorical Index
  • Categorical Dataで可視化

Basic Usage

daru は主に2つのデータ構造を公開しています。 DataFrameVector です。 Vectorはラベル付き配列に相当する基本的な1次元構造で、一方DataFrameはdaruの主要なデータ構造で、データセットを操作したり保存するための2次元のスプレッドシート的構造です。

基本的なDataFrameの初期化。

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

init0

CSVファイルからデータを読み込む。

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

init1

データの基本操作

行を選ぶ。

data_frame.row

man0

列を選ぶ。

data_frame

man1

行の範囲。

data_frame.row

man2

最初の2行を選択します。

data_frame.first(2)

man3

最後の2行。

data_frame.last(2)

man4

新規列を追加する。

data_frame = 

man5

他の列のデータに基づいて新しい列を作成する

data_frame = data_frame - data_frame

man6

条件ベースの選択

それぞれのガロン販売数に基づいて国を選択する

他の列でデータを取得する

他の列でデータを取得する。 Arelによって定義されたものと同様の構文、すなわちwhere句を使用することによって使用します。

data_frame.where(data_frame.lt(300))

con0

ブーリアン演算の組み合わせを#whereメソッドに渡してもうまくいくはずです。

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

con1

プロッティング

Daru では nyaplot で対話的グラフのプロットができるようになっています。 #plot メソッドを使えば、簡単にプロットを作成することができます。 ここでは Y 軸に販売ガロン、X 軸にブランド名を棒グラフで表示しています。

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

nyaplot に加え、daru は gnuplotrb によるアウトボックスのプロットもサポートしています。

Contributing

Pick a feature from the Roadmap or the issue tracker or think of your own and send me a Pull Request!

詳細は CONTRIBUTING.

Acknowledgements

  • Google and the Ruby Science Foundation for the Google Summer of Code 2016 grant for speed enhancing and implementation of support for categorical dataを参照ください。 lokeshh、@zverok、@agisgaに感謝します。
  • Google and the Ruby Science Foundation for the Google Summer of Code 2015 grantに感謝し、daruのさらなる開発と他のruby gemsとの統合を行いました。
  • ユーザーデータを公開するためにlast.fmに感謝します。
  • ありがとうございます。

コメントする