daru 0.0.2.1 → 0.0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/Gemfile.lock +1 -1
- data/README.md +10 -1
- data/lib/daru/dataframe.rb +40 -6
- data/lib/version.rb +1 -1
- data/spec/mri/dataframe_spec.rb +19 -7
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6266fb09be80748530baa8b92aface148f47bac6
|
4
|
+
data.tar.gz: 37f2301d6b3fed23b15e11c5608892935befb04e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa67c4506dea445619c1cf79270c5194cd189da302705b8d0dcad6689b3c3717f08bc11ce15af9670c7245fc746b3ce8feb0e82ea22c69aa06bf8da15003f947
|
7
|
+
data.tar.gz: 17d35384cf2daf28eca33aef370789edf7854da821094207e3eda9732933889ce23a44777e9aa451e62c732048a472d74378affb97e1a193cfe235426d83428e
|
data/.gitignore
ADDED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -31,7 +31,8 @@ Then switch to MRI, do a normal `bundle install` followed by `rspec` for testing
|
|
31
31
|
|
32
32
|
## Roadmap
|
33
33
|
|
34
|
-
*
|
34
|
+
* Print dataframe in same order as fields.
|
35
|
+
* Return rows in same order as that of fields.
|
35
36
|
* Automate testing for both MRI and JRuby.
|
36
37
|
* Enable creation of DataFrame by only specifying an NMatrix/MDArray in initialize. Vector naming happens automatically (alphabetic) or is specified in an Array.
|
37
38
|
* Add support for missing values in vectors.
|
@@ -43,3 +44,11 @@ Then switch to MRI, do a normal `bundle install` followed by `rspec` for testing
|
|
43
44
|
- Creation of correlation, covariance matrices
|
44
45
|
- Verification of data in a vector
|
45
46
|
- Basic vector statistics - mean, median, variance, etc.
|
47
|
+
* Add indexing on vectors.
|
48
|
+
- Creation of vector by supplying an index-value hash.
|
49
|
+
- Auto generation of real numbered indices for any vector.
|
50
|
+
- Ability to separately specify index for each element of a vector.
|
51
|
+
- Runtime alteration of index.
|
52
|
+
* Indexing on DataFrame.
|
53
|
+
* Vector arithmetic - elementwise addition, subtraction, multiplication, division.
|
54
|
+
* Transpose a dataframe.
|
data/lib/daru/dataframe.rb
CHANGED
@@ -66,8 +66,24 @@ module Daru
|
|
66
66
|
|
67
67
|
# end
|
68
68
|
|
69
|
-
def [](name)
|
70
|
-
|
69
|
+
def [](*name)
|
70
|
+
unless name[1]
|
71
|
+
return column(name[0])
|
72
|
+
end
|
73
|
+
|
74
|
+
h = {}
|
75
|
+
req_fields = @fields & name
|
76
|
+
|
77
|
+
req_fields.each do |f|
|
78
|
+
h[f] = @vectors[f]
|
79
|
+
end
|
80
|
+
|
81
|
+
DataFrame.new h, req_fields, @name
|
82
|
+
end
|
83
|
+
|
84
|
+
def ==(other)
|
85
|
+
@name == other.name and @vectors == other.vectors and
|
86
|
+
@size == other.size and @fields == other.fields
|
71
87
|
end
|
72
88
|
|
73
89
|
def []=(name, vector)
|
@@ -90,21 +106,35 @@ module Daru
|
|
90
106
|
end
|
91
107
|
|
92
108
|
def each_row
|
93
|
-
0.upto(@size) do |index|
|
109
|
+
0.upto(@size-1) do |index|
|
94
110
|
yield row(index)
|
95
111
|
end
|
112
|
+
|
113
|
+
self
|
96
114
|
end
|
97
115
|
|
98
116
|
def each_row_with_index
|
99
|
-
0.upto(@size) do |index|
|
117
|
+
0.upto(@size-1) do |index|
|
100
118
|
yield row(index), index
|
101
119
|
end
|
120
|
+
|
121
|
+
self
|
102
122
|
end
|
103
123
|
|
104
124
|
def each_column
|
105
|
-
@
|
106
|
-
yield
|
125
|
+
@fields.each do |field|
|
126
|
+
yield @vectors[field]
|
107
127
|
end
|
128
|
+
|
129
|
+
self
|
130
|
+
end
|
131
|
+
|
132
|
+
def each_column_with_name
|
133
|
+
@fields.each do |field|
|
134
|
+
yield @vectors[field], field
|
135
|
+
end
|
136
|
+
|
137
|
+
self
|
108
138
|
end
|
109
139
|
|
110
140
|
def insert_vector name, vector
|
@@ -127,6 +157,10 @@ module Daru
|
|
127
157
|
def to_html(threshold=15)
|
128
158
|
html = '<table>'
|
129
159
|
|
160
|
+
html += '<tr>'
|
161
|
+
@fields.each { |f| html.concat('<td>' + f.to_s + '</td>') }
|
162
|
+
html += '</tr>'
|
163
|
+
|
130
164
|
self.each_row_with_index do |row, index|
|
131
165
|
break if index > threshold and index <= @size
|
132
166
|
html += '<tr>'
|
data/lib/version.rb
CHANGED
data/spec/mri/dataframe_spec.rb
CHANGED
@@ -5,7 +5,8 @@ describe Daru::DataFrame do
|
|
5
5
|
|
6
6
|
before :each do
|
7
7
|
@df = Daru::DataFrame.new({a: Daru::Vector.new(1..3),
|
8
|
-
b: (50..52).daru_vector, b_bad: ['Jesse', 'Walter', 'Hank'].daru_vector}
|
8
|
+
b: (50..52).daru_vector, b_bad: ['Jesse', 'Walter', 'Hank'].daru_vector},
|
9
|
+
[:b_bad, :a, :b], :muddler)
|
9
10
|
|
10
11
|
@vector = Daru::Vector.new 1..3, :a
|
11
12
|
end
|
@@ -35,14 +36,18 @@ describe Daru::DataFrame do
|
|
35
36
|
it "returns a row" do
|
36
37
|
r = @df.row 0
|
37
38
|
|
38
|
-
expect(r).to eq([1,50
|
39
|
+
expect(r).to eq(['Jesse',1,50])
|
39
40
|
end
|
40
41
|
|
41
|
-
it "iterates over columns" do
|
42
|
-
|
42
|
+
it "iterates over columns in the specified order" do
|
43
|
+
cols = []
|
44
|
+
df = @df.each_column do |col|
|
43
45
|
expect(col.is_a?(Daru::Vector)).to be(true)
|
44
|
-
|
46
|
+
cols << col.name
|
45
47
|
end
|
48
|
+
|
49
|
+
expect(cols).to eq([:b_bad, :a, :b])
|
50
|
+
expect(df).to eq(@df)
|
46
51
|
end
|
47
52
|
|
48
53
|
it "iterates over rows" do
|
@@ -52,7 +57,7 @@ describe Daru::DataFrame do
|
|
52
57
|
end
|
53
58
|
|
54
59
|
it "shows column fields" do
|
55
|
-
expect(@df.fields).to eq([:
|
60
|
+
expect(@df.fields).to eq([:b_bad, :a, :b])
|
56
61
|
end
|
57
62
|
|
58
63
|
it "inserts a new vector" do
|
@@ -62,7 +67,7 @@ describe Daru::DataFrame do
|
|
62
67
|
end
|
63
68
|
|
64
69
|
it "inserts a new row" do
|
65
|
-
@df.insert_row [6,6
|
70
|
+
@df.insert_row ["Fred",6, 6]
|
66
71
|
|
67
72
|
expect(@df.a.vector) .to eq([1,2,3,6])
|
68
73
|
expect(@df.b.vector) .to eq([50,51,52,6])
|
@@ -78,6 +83,13 @@ describe Daru::DataFrame do
|
|
78
83
|
|
79
84
|
expect(@df.fields.include? :a).to be(false)
|
80
85
|
end
|
86
|
+
|
87
|
+
it "returns a DataFrame of requested fields" do
|
88
|
+
req = @df = Daru::DataFrame.new({a: Daru::Vector.new(1..3),
|
89
|
+
b: (50..52).daru_vector}, [:a, :b], :muddler)
|
90
|
+
|
91
|
+
expect(@df[:a, :b]).to eq(req)
|
92
|
+
end
|
81
93
|
end
|
82
94
|
|
83
95
|
context "DataFrame loads from files" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: daru
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.2.
|
4
|
+
version: 0.0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sameer Deshmukh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-10-
|
11
|
+
date: 2014-10-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -61,6 +61,7 @@ executables: []
|
|
61
61
|
extensions: []
|
62
62
|
extra_rdoc_files: []
|
63
63
|
files:
|
64
|
+
- ".gitignore"
|
64
65
|
- ".rspec"
|
65
66
|
- ".travis.yml"
|
66
67
|
- Gemfile
|