• Stars
    star
    115
  • Rank 295,235 (Top 6 %)
  • Language
    Ruby
  • License
    MIT License
  • Created about 8 years ago
  • Updated almost 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Enumerable::Statistics

Build Status

Enumerable::Statistics provides some methods to calculate statistical summary in arrays and enumerables.

Installation

Add this line to your application's Gemfile:

gem 'enumerable-statistics'

And then execute:

$ bundle

Or install it yourself as:

$ gem install enumerable-statistics

Usage

You should load this library by the following line in your script at first.

require 'enumerable/statistics'

The following methods are supplied by this library:

  • Array#mean, Enumerable#mean
    • Calculates a mean of values in an array or an enumerable
  • Array#variance, Enumerable#variance
    • Calculates a variance of values in an array or an enumerable
  • Array#stdev, Enumerable#stdev
    • Calculates a standard deviation of values in an array or an enumerable
  • Array#mean_variance, Enumerable#mean_variance
    • Calculates a mean and a variance simultaneously
  • Array#mean_stdev, Enumerable#mean_stdev
    • Calculates a mean and a standard deviation simultaneously
  • Array#median
    • Calculates a median of values in an array
  • Array#percentile(q)
    • Calculates a percentile or percentiles of values in an array
  • Array#value_counts, Enumerable#value_counts, and Hash#value_counts
    • Count how many items for each value in the container
  • Array#histogram
    • Calculate histogram of the values in the array

Moreover, for Ruby < 2.4, Array#sum and Enumerable#sum are provided.

All methods scan a collection once to calculate statistics and preserve precision as possible.

Performance

$ bundle exec rake bench
# sum
Warming up --------------------------------------
              inject     1.545k i/100ms
               while     2.342k i/100ms
                 sum    11.009k i/100ms
Calculating -------------------------------------
              inject     15.016k (± 9.6%) i/s -     75.705k in   5.098723s
               while     22.238k (±16.2%) i/s -    107.732k in   5.068156s
                 sum    112.992k (± 6.9%) i/s -    572.468k in   5.091868s
# mean
Warming up --------------------------------------
              inject     1.578k i/100ms
               while     2.057k i/100ms
                mean     9.855k i/100ms
Calculating -------------------------------------
              inject     15.347k (± 8.6%) i/s -     77.322k in   5.076009s
               while     21.669k (±14.5%) i/s -    106.964k in   5.074312s
                mean    108.861k (± 8.9%) i/s -    542.025k in   5.021786s
# variance
Warming up --------------------------------------
              inject   586.000  i/100ms
               while   826.000  i/100ms
            variance     8.475k i/100ms
Calculating -------------------------------------
              inject      6.187k (± 6.7%) i/s -     31.058k in   5.043418s
               while      8.597k (± 7.4%) i/s -     42.952k in   5.024587s
            variance     84.702k (± 8.5%) i/s -    423.750k in   5.039936s

Development

After checking out the repo, run bin/setup to install dependencies. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/mrkn/enumerable-statistics.

More Repositories

1

pycall.rb

Calling Python functions from the Ruby language
C
1,015
star
2

pandas.rb

Pandas wrapper for Ruby
Ruby
117
star
3

matplotlib.rb

matplotlib wrapper for Ruby
Ruby
87
star
4

mxnet.rb

MXNet binding for Ruby
Ruby
48
star
5

numpy.rb

Numpy wrapper for Ruby
Ruby
38
star
6

ruby-julia

Julia on Ruby
Julia
21
star
7

vim-cruby

CRuby syntax for Vim.
Vim Script
19
star
8

Rubyistokei-app

Rubyistokei on your Mac
Objective-C
17
star
9

mrkn256.vim

A color scheme for vim available on 88- and 256-color xterm.
Vim Script
16
star
10

tf-waifu2x

Python
14
star
11

webdb_deep_learning

WEB+DB PRESS Vol.89 特集2のサンプルコード群
Python
11
star
12

ar-with-arrow-poc

ActiveRecord with Arrow PoC
Ruby
10
star
13

SFMT

SIMD-oriented Fast Mersenne Twister
C
10
star
14

chainer-waifu2x

Yet another waifu2x implementation by using chainer
Python
9
star
15

IMF

🎨 Image Manipulation Framework for Ruby
Ruby
9
star
16

scikit-learn.rb

scikit-learn wrapper for Ruby
Ruby
8
star
17

ruby-measure

A library to handle measurement numbers for Ruby
Ruby
8
star
18

num_buffer

NumBuffer -- Numerical buffer
C
7
star
19

daru-td

Interactive data analysis with Daru and Treasure Data.
Ruby
6
star
20

kernel_let

Kernel#let for block-local vairables
Ruby
6
star
21

ruby-hijack

hijack method definition
C
5
star
22

chainer-srcnn

SRCNN implementation using Chainer
Python
5
star
23

bugs-viewer-rk2017

bugs.ruby-lang.org viewer for the demonstration in RubyKaigi 2017
Ruby
5
star
24

typical_colors

Extracting typical colors from images
Jupyter Notebook
4
star
25

iterm2-mirror

My forked version and the original mirror of iTerm2.
Objective-C
4
star
26

config

configuration files
Vim Script
4
star
27

pdfdiv

An utility for dividing each page in PDF files.
4
star
28

nadoka

nadoka
Ruby
3
star
29

ruby-odbc

Extension library to use ODBC data sources from Ruby.
C
3
star
30

chatbot

Ruby
3
star
31

active_support_alias_class_method

A supplementary library of activesupport to provide alias_class_method and alias_class_method_chain.
Ruby
3
star
32

aquaskk

Mirror of AquaSKK
C
3
star
33

ruby10

Ruby 1.0 for Mac OS X based on ftp://ftp.ruby-lang.org/pub/ruby/1.0/ruby-1.0-971225.tar.gz
C
3
star
34

mecaby

Mecaby is an Ruby extension library to use MeCab.
C
3
star
35

screen

GNU screen mirror and my modification
C
3
star
36

movabletype

Copy of the Movable Type Open Source
Perl
3
star
37

sugoi-haskell-learning

Haskell
3
star
38

dotfiles

dotfiles
Ruby
3
star
39

tddbc_sapporo_2011.09.24

Ruby
2
star
40

infinity

Infinite objects for any Comparable objects.
2
star
41

WipeYourMac

Wipe your mac.
Objective-C
2
star
42

mecab-ruby-generator

mecab-ruby.gem generator
Ruby
2
star
43

qwik-formatter

Text formatter extracted from qwik
Ruby
2
star
44

lua

lua mirror
C
2
star
45

rubydoc

bootstrap for git svn clone http://jp.rubyist.net/svn/rurema/doctree/trunk
PHP
2
star
46

graph_layout_viewer

Visualizing and exporting layouted graph structure
2
star
47

W2vUtils.jl

Word2vec utilities for Julia
Julia
2
star
48

ruby-gnome2-samples

Ruby-GNOME2 samples
2
star
49

som-practice

practice for self-organizing map
Objective-C
2
star
50

irc-say-bot

Say bot for IRC
2
star
51

manage_download_dir

download directory management scripts
Ruby
2
star
52

sandbox

mrkn's sandbox
TeX
2
star
53

ruby-css

CSS Parser Library for Ruby
2
star
54

numo-sparse

Numo::Sparse
Ruby
2
star
55

streamlit-julia-call

An extension for Streamlit that makes it available to call Julia from Streamlit applications
Python
2
star
56

photo_scan

Photo scanner application for windows image aquisition
C++
2
star
57

letter_stamp_mail_delivery

Mail delivery method to save delivered mails with filenames that allows us to easily recognize the location at which mails are delivered.
Ruby
2
star
58

boost-framework

Boost framework for Mac OS X and iPhone OS
2
star
59

image-file

A library for handing image files on Ruby.
C
1
star
60

redash_rails_demo

A demonstration project to integrate Rails app and re:dash
Ruby
1
star
61

diary

mrkn diary
Ruby
1
star
62

ruby-mnist

Ruby
1
star
63

racuda

Ruby Adapted CUDA
Ruby
1
star
64

googledrive_sample

Samples of GoogleDrive
Ruby
1
star
65

comprehension

You can write `->(i, j) { i*j }.comprehension(1..9, 1..9)`
Ruby
1
star
66

talk-rubykaigi-takeout-2021

Talk material at RubyKaigi Takeout 2021
Jupyter Notebook
1
star
67

zoom-mic-control-from-alfred

You can control Zoom's mic mute/unmute state from Alfred
1
star