Awesome
<img src="header.png" align="center">[RubyNLP | RubyML | RubyInterop]
Awesome Data Science with Ruby
Links and Resources for Data Processing and Analysis in Ruby
Data Science is a new "sexy" buzzword without specific meaning but often used to substitute Statistics, Scientific Computing, Text and Data Mining and Visualization, Machine Learning, Data Processing and Warehousing as well as Retrieval Algorithms of any kind.
This curated list comprises awesome tutorials, libraries, information sources about various Data Science applications using the Ruby programming language.
A lot of useful resources on this list come from the development by The Ruby Science Foundation, our contributors and our own day to day work on various data intensive applications. Read why this list is awesome.
:sparkles: Every contribution is welcome! Add links through pull requests or create an issue to start a discussion.
Follow us on Twitter
and please spread the word using the #RubyDataScience
hash tag!
Contents
<!-- toc -->- Ruby vs. Python vs. Julia vs. R
- Standing on the shoulders of giants
- Data Manipulation
- Distributed Computing
- Data Structures
- Data sets
- Statistics
- Numeric and Symbolic Computation
- Visualization
- Interactive Computing
- Input and Output
- Provisioning Infrastructure
- Machine Learning
- Articles, Posts, Talks, and Presentations
- Related resources
- Wait but why?
- License
Ruby vs. Python vs. Julia vs. R
Ruby | Python | Julia | R |
---|---|---|---|
Daru / Rover | Pandas | ||
NArray | NumPy |
Standing on the shoulders of giants
Ruby is (for now) not a Data Science centric language with a very large established library. Leveraging libraries from R, Python, and Julia helps Ruby to solve your tasks!
<!--- TODO: Add the talk by @mrkn --->- pycall — Bridge into the Python world.
- rserve-client — Ruby connector for Rserve, R's binary server.
Data Manipulation
- kiba — lightweight Ruby ETL (Extract-Transform-Load) framework.
- jongleur — Workflow manager using DAG definitions to execute ETL tasks.
Distributed Computing
- ruby-spark — Ruby Interface to Apache Spark 1.x.x.
- jruby-spark — JRuby based bindings for Apache Spark.
Data Structures
- daru — Data Frame and Vector structures with comprehensive manipulating and visualization methods.
- Rover — Data Frame and Vector structures with comprehensive manipulating and visualization methods.
- numo-narray — n-dimensional Numerical Array for Ruby.
- nmatrix — dense and sparse linear algebra library for Ruby via SciRuby.
- kdtree — blazingly fast native 2d k-d tree.
- mdarray —
Array structure for
JRuby
. - spreadsheet — manipulation library for MS Excel spreadsheets.
- networkx — Ruby based NetworkX clone that handles various usecases of the Graph Data Structure.
- cumo — CUDA-aware numerical Array library with NArray similar interface.
Data sets
- rdatasets — Data sets available in R via Rdatasets.
- red-datasets — Growing collection of publicly available data sets such as CIFAR-10, Iris, MNIST etc.
Statistics
- rb-gsl — Ruby interface to the GNU Scientific Library. <sup>[dep: GLS]</sup>
- simple_stats —
Enumerable
patches for descriptive statistics. - enumerable-statistics —
fast implementation of descriptive statistics for the
Enumerable
module. - statsample — basic and advanced statistics for Ruby. <sup>[dep: GLS]</sup>
- statsample-glm —
extension of
statsample
by Generalized Linear Models. - statsample-bivariate-extension —
extension of
statsample
by Bivariate Correlations. - statsample-timeseries —
extension of
statsample
by Time Series estimators. - pca — Principal Component Analysis (PCA) in Ruby.
- descriptive-statistics —
descriptive extensions for the
Enumerable
module or standalone usage. - distribution — probabilistic distributions and descriptive measures for them.
- statistics2 — Normal, Chi-square, t- and F- probability distributions for Ruby.
- fast_statistics — fast computation of descriptive statistics (min, max, mean, median, 1st and 3rd quartiles, population standard deviation) for a multivariate dataset.
Numeric and Symbolic Computation
- numo-linalg — linear algebraic operations for NArray.
- numo-gsl — Math and Statistics for NArray using GSL.<sup>[dep: GSL]</sup>
- symengine — Symbolic Computation with SymEngine.
- numo-ffte — Fast Fourier Transformation for NArray using the FFTE package.<sup>[FFTE]</sup>
Visualization
Comprehensive tools for Data Visualization.
- matplotlib — Ruby based wrapper around matplotlib. <sup>[dep: matplotlib]</sup>
- mathematical — PNG and MathML renderings for your equations.
- daru-view — daru-view is interactive plotting gem for web application (any Ruby web application framework like Rails/Sinatra/Nanoc/Hanami) & IRuby notebook. It is a plugin gem for daru.
- daru-plotly — Plotly based visualization for Daru.
- benchmark-plot
- Vega — Vega and Vega-lite based visualization for Rover.
- Gruff — graphing library built on top of rmagick.
- Rubyplot — graphing library built on top of GR.
- Nyaplotjs
- nyaplot
- gnuplotrb
- ruby-graphviz <sup>[dep: Graphviz]</sup>
- gnuplot <sup>[dep: gnuplot]</sup>
- https://github.com/zuhao/plotrb
- https://github.com/brasten/scruffy
- https://github.com/zverok/worldize
- https://github.com/masa16/ruby-mathgl
- numo-gnuplot — gnuplot interface for the Numo package.
- chartkick — Create beautiful JavaScript charts with one line of Ruby.
- iruby-chartkick — Use chartkick within IRuby-backed jupyter notebooks
- ruby-gr — Ruby interface to GR, a framework for visualisation applications. <sup>[dep: GR]</sup>
Interactive Computing
- iruby — Ruby kernel for Jupyter.
- iruby-rails — Integration library for IRuby and Rails.
- jupyter_on_rails — Another integration library for IRuby and Rails.
Input and Output
General formats
- https://github.com/fiksu/rcsv
- ox — Optimized for speed XML parser and object marshaller.
- oj — High-speed JSON parser.
- Markdown
- Nokogiri
- CSV
Database Adapters
- pg
- Mongo
- MySQL
Domain specific formats
- BibTeX
- inih — fast C based INI parser for Ruby.
- bolognese — conversion tool for citation formats like BibTeX, RIS, or Crossref XML.
Provisioning Infrastructure
- https://github.com/mrkn/gpu-instance
- https://github.com/mrkn/computing_node
- https://github.com/k1LoW/awspec
Machine Learning
Please look at our extensive Awesome ML with Ruby list.
Articles, Posts, Talks, and Presentations
- 2019
- Parallelising ETL workflows with the Jongleur gem by Fred Heath <sup>[post]</sup>
- 2018
- 2017
- Progress of Ruby-Numo: Numerical Computing for Ruby by Masahiro Tanaka <sup>[slides]</sup>
- Chartkick: data visualization made easy with Ruby by Govind Unnikrishnan <sup>[post]</sup>
- Development of Data Science Ecosystem for Ruby by Kenta Murata <sup>[slides | video | page]</sup>
- 2016
- Scientific Computation and Data Visualization with Ruby by Sameer Deshmukh <sup>[slides | video]</sup>
- 2015
- 2014
- 2013
- Seeing the Big Picture: Quick and Dirty Data Visualization with Ruby by Aja Hammerly <sup>[video | slides | code]</sup>
- 2012
- 2011
- 2010
- NArray and scientific computing with Ruby by Masahiro Tanaka <sup>[video | slides]</sup>
Community
- https://gitter.im/red-data-tools/en
- https://gitter.im/red-data-tools/ja
- http://ruby-data.org/
- https://twitter.com/RubyData
- https://discourse.ruby-data.org/
Related resources
- Awesome Data Science with Python
- <a name="imagemagic"></a> ImageMagick
- <a name="gsl"></a> GSL
- <a name="ffte"></a> FFTE
- <a name="symengine"></a> SymEngine
- Awesome Big Data - awesome curated list on all around Big Data.
- Awesome Spark — awesome list on Apache Spark goodies.
Wait but why?
There are a lot of software lists with tools related to the Data Science. There are a couple of lists with Ruby related projects. There are no lists of only working and tested software with documented scope. We'll try to make one!
What is awesome? Awesome are documented, maintained and focused tools.
Can something turn not awesome at a point? Yes! Abandoned projects with broken dependencies aren't awesome any more! They leave this list.
License
Awesome Data Science with Ruby
by Andrei Beliankou and
Contributors.
To the extent possible under law, the person who associated CC0 with
Awesome Data Science with Ruby
has waived all copyright and related or neighboring rights
to Awesome Data Science with Ruby
.
You should have received a copy of the CC0 legalcode along with this work. If not, see https://creativecommons.org/publicdomain/zero/1.0/.
<!--- Links --->