red_amber 0.3.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +56 -22
- data/.yardopts +2 -0
- data/CHANGELOG.md +178 -0
- data/Gemfile +1 -1
- data/LICENSE +1 -1
- data/README.md +29 -30
- data/benchmark/basic.yml +7 -7
- data/benchmark/combine.yml +3 -3
- data/benchmark/dataframe.yml +15 -9
- data/benchmark/group.yml +6 -6
- data/benchmark/reshape.yml +6 -6
- data/benchmark/vector.yml +6 -3
- data/doc/DataFrame.md +32 -12
- data/doc/DataFrame_Comparison.md +65 -0
- data/doc/SubFrames.md +11 -0
- data/doc/Vector.md +207 -1
- data/doc/yard-templates/default/fulldoc/html/css/common.css +6 -0
- data/lib/red_amber/data_frame.rb +454 -85
- data/lib/red_amber/data_frame_combinable.rb +609 -115
- data/lib/red_amber/data_frame_displayable.rb +313 -34
- data/lib/red_amber/data_frame_indexable.rb +122 -19
- data/lib/red_amber/data_frame_loadsave.rb +78 -10
- data/lib/red_amber/data_frame_reshaping.rb +184 -14
- data/lib/red_amber/data_frame_selectable.rb +623 -70
- data/lib/red_amber/data_frame_variable_operation.rb +452 -35
- data/lib/red_amber/group.rb +186 -22
- data/lib/red_amber/helper.rb +74 -14
- data/lib/red_amber/refinements.rb +26 -6
- data/lib/red_amber/subframes.rb +1101 -0
- data/lib/red_amber/vector.rb +362 -11
- data/lib/red_amber/vector_aggregation.rb +312 -0
- data/lib/red_amber/vector_binary_element_wise.rb +506 -0
- data/lib/red_amber/vector_selectable.rb +265 -23
- data/lib/red_amber/vector_unary_element_wise.rb +529 -0
- data/lib/red_amber/vector_updatable.rb +278 -34
- data/lib/red_amber/version.rb +2 -1
- data/lib/red_amber.rb +13 -1
- data/red_amber.gemspec +2 -2
- metadata +13 -8
- data/doc/image/dataframe/reshaping_DataFrames.png +0 -0
- data/lib/red_amber/vector_functions.rb +0 -242
@@ -4,17 +4,114 @@
|
|
4
4
|
# reference: https://arrow.apache.org/docs/cpp/compute.html
|
5
5
|
|
6
6
|
module RedAmber
|
7
|
-
#
|
7
|
+
# Mix-in for class Vector
|
8
8
|
# Functions to make up some data (especially missing) for new data.
|
9
9
|
module VectorUpdatable
|
10
10
|
# Add properties to Arrow::Array and Arrow::ChunkedArray
|
11
11
|
using RefineArrayLike
|
12
12
|
|
13
|
-
# Replace data
|
14
|
-
#
|
15
|
-
#
|
16
|
-
#
|
17
|
-
#
|
13
|
+
# Replace data in self by position specifier and replacer.
|
14
|
+
#
|
15
|
+
# - Scalar value may be broadcasted.
|
16
|
+
# - Returned value type may be automatically up-casted by replacer.
|
17
|
+
#
|
18
|
+
# @overload replace(booleans, replacer_by_scalar)
|
19
|
+
# Replace the value where true in boolean specifier to scalar replacer.
|
20
|
+
#
|
21
|
+
# @param booleans [Array, Vector, Arrow::Array]
|
22
|
+
# boolean position specifier to specify the position to be replaced by true.
|
23
|
+
# @param replacer_by_scalar [Scalar]
|
24
|
+
# new data to replace for.
|
25
|
+
# @return [Vector]
|
26
|
+
# a new replaced Vector.
|
27
|
+
# If specifier has no true, returns self.
|
28
|
+
# @example Replace with boolean specifier and scalar replacer
|
29
|
+
# Vector.new([1, 2, 3]).replace([true, false, true], 0)
|
30
|
+
#
|
31
|
+
# # =>
|
32
|
+
# #<RedAmber::Vector(:uint8, size=3):0x000000000001ee10>
|
33
|
+
# [0, 2, 0]
|
34
|
+
#
|
35
|
+
# @example Type of result is up-casted by replacer.
|
36
|
+
# ector.new([1, 2, 3]).replace([true, false, true], -1.0)
|
37
|
+
#
|
38
|
+
# # =>
|
39
|
+
# #<RedAmber::Vector(:double, size=3):0x0000000000025d78>
|
40
|
+
# [-1.0, 2.0, -1.0]
|
41
|
+
#
|
42
|
+
# @example Position of nil in booleans is replaced with nil
|
43
|
+
# Vector.new([1, 2, 3]).replace([true, false, nil], -1)
|
44
|
+
#
|
45
|
+
# # =>
|
46
|
+
# #<RedAmber::Vector(:int8, size=3):0x00000000000304d0>
|
47
|
+
# [-1, 2, nil]
|
48
|
+
#
|
49
|
+
# @example Replace 'NA' to nil
|
50
|
+
# vector = Vector.new(['A', 'B', 'NA'])
|
51
|
+
# vector.replace(vector == 'NA', nil)
|
52
|
+
#
|
53
|
+
# # =>
|
54
|
+
# #<RedAmber::Vector(:string, size=3):0x000000000000f8ac>
|
55
|
+
# ["A", "B", nil]
|
56
|
+
#
|
57
|
+
# @overload replace(indices, replacer_by_scalar)
|
58
|
+
# Replace the value at the index specifier to scalar replacer.
|
59
|
+
#
|
60
|
+
# @param indices [Array, Vector, Arrow::Array]
|
61
|
+
# index specifier to specify the position to be replaced.
|
62
|
+
# @param replacer_by_scalar [Scalar]
|
63
|
+
# new data to replace for.
|
64
|
+
# @return [Vector]
|
65
|
+
# a new replaced Vector.
|
66
|
+
# If specifier is empty, returns self.
|
67
|
+
# @example Replace with index specifier and scalar replacer
|
68
|
+
# Vector.new([1, 2, 3]).replace([0, 2], 0)
|
69
|
+
#
|
70
|
+
# # =>
|
71
|
+
# #<RedAmber::Vector(:uint8, size=3):0x000000000000c15c>
|
72
|
+
# [0, 2, 0]
|
73
|
+
#
|
74
|
+
# @overload replace(booleans, replacer_array)
|
75
|
+
# Replace the value where true in boolean specifier to replacer array.
|
76
|
+
#
|
77
|
+
# @param booleans [Array, Vector, Arrow::Array]
|
78
|
+
# boolean position specifier to specify the position to be replaced by true.
|
79
|
+
# @param replacer_array [Vector, Array, Arrow::Array]
|
80
|
+
# new data to replace for.
|
81
|
+
# The number of true in booleans must be equal to the length of replacer array.
|
82
|
+
# @return [Vector]
|
83
|
+
# a new replaced Vector.
|
84
|
+
# If specifier has no true, returns self.
|
85
|
+
# @example Replace with boolean specifier and replacer array
|
86
|
+
# vector = Vector.new([1, 2, 3])
|
87
|
+
# booleans = [true, false, true]
|
88
|
+
# replacer = [4, 5]
|
89
|
+
# vector.replace(booleans, replacer)
|
90
|
+
#
|
91
|
+
# # =>
|
92
|
+
# #<RedAmber::Vector(:uint8, size=3):0x000000000001ee10>
|
93
|
+
# [4, 2, 5]
|
94
|
+
#
|
95
|
+
# @overload replace(indices, replacer_array)
|
96
|
+
# Replace the value at the index specifier to replacer array.
|
97
|
+
#
|
98
|
+
# @param indices [Array, Vector, Arrow::Array]
|
99
|
+
# index specifier to specify the position to be replaced.
|
100
|
+
# @param replacer_array [Vector, Array, Arrow::Array]
|
101
|
+
# new data to replace for.
|
102
|
+
# The length of index specifier must be equal to the length of replacer array.
|
103
|
+
# @return [Vector]
|
104
|
+
# a new replaced Vector.
|
105
|
+
# If specifier is empty, returns self.
|
106
|
+
# @example Replace with index specifier and replacer array
|
107
|
+
# vector = Vector.new([1, 2, 3])
|
108
|
+
# indices = [0, 2]
|
109
|
+
# replacer = [4, 5]
|
110
|
+
# vector.replace(indices, replacer)
|
111
|
+
#
|
112
|
+
# # =>
|
113
|
+
# #<RedAmber::Vector(:uint8, size=3):0x000000000001ee10>
|
114
|
+
# [4, 2, 5]
|
18
115
|
#
|
19
116
|
def replace(specifier, replacer)
|
20
117
|
vector = Vector.new(parse_args(Array(specifier), size))
|
@@ -37,7 +134,7 @@ module RedAmber
|
|
37
134
|
in nil | [nil]
|
38
135
|
return replace_to_nil(booleans.data)
|
39
136
|
in Arrow::Array
|
40
|
-
|
137
|
+
replacer
|
41
138
|
in Vector
|
42
139
|
replacer.data
|
43
140
|
in Array
|
@@ -52,10 +149,59 @@ module RedAmber
|
|
52
149
|
replace_with(booleans.data, replacer_array)
|
53
150
|
end
|
54
151
|
|
55
|
-
#
|
56
|
-
#
|
57
|
-
|
58
|
-
#
|
152
|
+
# Choose values based on self.
|
153
|
+
#
|
154
|
+
# [Ternary element-wise function] Returns a Vector.
|
155
|
+
# - Self must be a boolean Vector.
|
156
|
+
# - `true_choice`, `false_choice` must be of the same type scalar / array / Vector.
|
157
|
+
# - `nil` values in self will be promoted to the output.
|
158
|
+
#
|
159
|
+
# @overload if_else(true_choise, false_choise)
|
160
|
+
# replace with a scalar.
|
161
|
+
#
|
162
|
+
# @param true_choice [scalar]
|
163
|
+
# a value to be replaced with true.
|
164
|
+
# @param false_choice [scalar]
|
165
|
+
# a value to be replaced with false.
|
166
|
+
# @return [Vector]
|
167
|
+
# replaced result.
|
168
|
+
# @example Replace with scalar choices
|
169
|
+
# Vector.new(true, true, false, nil, false).if_else(1, 2)
|
170
|
+
#
|
171
|
+
# # =>
|
172
|
+
# #<RedAmber::Vector(:uint8, size=5):0x000000000000c198>
|
173
|
+
# [1, 1, 2, nil, 2]
|
174
|
+
#
|
175
|
+
# @overload if_else(true_choise, false_choise)
|
176
|
+
# replace with a scalar.
|
177
|
+
#
|
178
|
+
# @param true_choice [Vector, Array, Arrow::Array]
|
179
|
+
# values to be replaced with true.
|
180
|
+
# The size of true_choice must be same as self.
|
181
|
+
# @param false_choice [Vector, Array, Arrow::Array]
|
182
|
+
# values to be replaced with false.
|
183
|
+
# The size of false_choice must be same as self.
|
184
|
+
# @return [Vector]
|
185
|
+
# replaced result.
|
186
|
+
# @example Replace with Array choices
|
187
|
+
# boolean_vector = Vector.new(true, true, false, nil, false)
|
188
|
+
# true_choise = Vector.new([1.1, 2.2, 3.3, 4.4, 5.5])
|
189
|
+
# false_choise = -true_choise
|
190
|
+
# boolean_vector.if_else(true_choise, false_choise)
|
191
|
+
#
|
192
|
+
# # =>
|
193
|
+
# #<RedAmber::Vector(:double, size=5):0x000000000000cd28>
|
194
|
+
# [1.1, 2.2, -3.3, nil, -5.5]
|
195
|
+
#
|
196
|
+
# @example Normalize negative indices to positive ones
|
197
|
+
# indices = Vector.new([1, -1, 3, -4])
|
198
|
+
# array_size = 10
|
199
|
+
# normalized_indices = (indices < 0).if_else(indices + array_size, indices)
|
200
|
+
#
|
201
|
+
# # =>
|
202
|
+
# #<RedAmber::Vector(:int16, size=4):0x000000000000f85c>
|
203
|
+
# [1, 9, 3, 6]
|
204
|
+
#
|
59
205
|
def if_else(true_choice, false_choice)
|
60
206
|
true_choice = true_choice.data if true_choice.is_a? Vector
|
61
207
|
false_choice = false_choice.data if false_choice.is_a? Vector
|
@@ -65,21 +211,58 @@ module RedAmber
|
|
65
211
|
Vector.create(datum.value)
|
66
212
|
end
|
67
213
|
|
68
|
-
# same behavior as Ruby's invert
|
214
|
+
# Another #invert which is same behavior as Ruby's invert.
|
215
|
+
#
|
69
216
|
# ![true, false, nil] #=> [false, true, true]
|
217
|
+
# @return [Vector]
|
218
|
+
# follows Ruby's BasicObject#!'s behavior.
|
219
|
+
# @example
|
220
|
+
# vector = Vector.new([true, true, false, nil])
|
221
|
+
#
|
222
|
+
# # =>
|
223
|
+
# #<RedAmber::Vector(:boolean, size=4):0x000000000000fa8c>
|
224
|
+
# [true, true, false, nil]
|
225
|
+
#
|
226
|
+
# # nil is converted to nil by Vector#invert.
|
227
|
+
# vector.invert
|
228
|
+
# # or
|
229
|
+
# !vector
|
230
|
+
#
|
231
|
+
# #<RedAmber::Vector(:boolean, size=4):0x000000000000faa0>
|
232
|
+
# [false, false, true, nil]
|
233
|
+
#
|
234
|
+
# # On the other hand,
|
235
|
+
# # Vector#primitive_invert follows Ruby's BasicObject#!'s behavior.
|
236
|
+
# vector.primitive_invert
|
237
|
+
#
|
238
|
+
# # =>
|
239
|
+
# #<RedAmber::Vector(:boolean, size=4):0x000000000000fab4>
|
240
|
+
# [false, false, true, true]
|
241
|
+
#
|
70
242
|
def primitive_invert
|
71
243
|
raise VectorTypeError, "Not a boolean Vector: #{self}" unless boolean?
|
72
244
|
|
73
245
|
is_nil.if_else(false, self).invert
|
74
246
|
end
|
75
247
|
|
248
|
+
# Shift elements in self.
|
249
|
+
#
|
250
|
+
# @param amount [Integer]
|
251
|
+
# amount of shift. Positive value will shift right, negative will shift left.
|
252
|
+
# @param fill [Object]
|
253
|
+
# complementary element to fill the new seat.
|
254
|
+
# @return [Vector]
|
255
|
+
# shifted Vector.
|
256
|
+
#
|
76
257
|
def shift(amount = 1, fill: nil)
|
77
|
-
raise VectorArgumentError, 'Shift amount is too large' if amount.abs
|
258
|
+
raise VectorArgumentError, 'Shift amount is too large' if amount.abs >= size
|
78
259
|
|
79
260
|
if amount.positive?
|
80
|
-
|
261
|
+
filler = [fill] * amount
|
262
|
+
Vector.new(filler.concat(Array(self[0...-amount])))
|
81
263
|
elsif amount.negative?
|
82
|
-
|
264
|
+
filler = [fill] * -amount
|
265
|
+
Vector.new(Array(self[-amount...]).concat(filler))
|
83
266
|
else # amount == 0
|
84
267
|
self
|
85
268
|
end
|
@@ -87,13 +270,18 @@ module RedAmber
|
|
87
270
|
|
88
271
|
# Split string Vector and returns Array of columns.
|
89
272
|
#
|
90
|
-
# @param sep [nil, String, Regexp]
|
91
|
-
#
|
92
|
-
#
|
93
|
-
#
|
94
|
-
#
|
95
|
-
#
|
96
|
-
# @
|
273
|
+
# @param sep [nil, String, Regexp]
|
274
|
+
# separator.
|
275
|
+
# If separator is nil (or no argeument given),
|
276
|
+
# the column will be splitted by Arrow's split function
|
277
|
+
# using any ASCII whitespace.
|
278
|
+
# Otherwise, sep will passed to String#split.
|
279
|
+
# @param limit [Integer]
|
280
|
+
# maximum number to limit separation. Passed to String#split.
|
281
|
+
# @return [Array<Vector>]
|
282
|
+
# an Array of Vectors.
|
283
|
+
# @note nil will separated as nil's at same row.
|
284
|
+
# ex) `nil => [nil, nil]`
|
97
285
|
#
|
98
286
|
def split_to_columns(sep = nil, limit = 0)
|
99
287
|
l = split(sep, limit)
|
@@ -102,20 +290,25 @@ module RedAmber
|
|
102
290
|
|
103
291
|
# Split string Vector and flatten into rows.
|
104
292
|
#
|
105
|
-
# @param sep [nil, String, Regexp]
|
106
|
-
#
|
107
|
-
#
|
108
|
-
#
|
109
|
-
#
|
110
|
-
#
|
111
|
-
# @
|
293
|
+
# @param sep [nil, String, Regexp]
|
294
|
+
# separater.
|
295
|
+
# If separator is nil (or no argeument given),
|
296
|
+
# the column will be splitted by Arrow's split function
|
297
|
+
# using any ASCII whitespace.
|
298
|
+
# Otherwise, sep will passed to String#split.
|
299
|
+
# @param limit [Integer]
|
300
|
+
# maximum number to limit separation. Passed to String#split.
|
301
|
+
# @return [Vector]
|
302
|
+
# a flatten Vector.
|
303
|
+
# @note nil will separated as nil's at same row.
|
304
|
+
# ex) `nil => [nil, nil]`
|
112
305
|
#
|
113
306
|
def split_to_rows(sep = nil, limit = 0)
|
114
307
|
l = split(sep, limit)
|
115
308
|
l.list_flatten
|
116
309
|
end
|
117
310
|
|
118
|
-
#
|
311
|
+
# Return element size Array for list Vector.
|
119
312
|
#
|
120
313
|
# @api private
|
121
314
|
#
|
@@ -179,8 +372,10 @@ module RedAmber
|
|
179
372
|
#
|
180
373
|
# @param other [String, Vector]
|
181
374
|
# merger from right. It will be broadcasted if it is a scalar String.
|
182
|
-
# @param sep [String]
|
183
|
-
#
|
375
|
+
# @param sep [String]
|
376
|
+
# separator.
|
377
|
+
# @return [Vector]
|
378
|
+
# merged Vector
|
184
379
|
#
|
185
380
|
def merge(other, sep: ' ')
|
186
381
|
if empty? || !string?
|
@@ -207,6 +402,53 @@ module RedAmber
|
|
207
402
|
Vector.create(datum.value)
|
208
403
|
end
|
209
404
|
|
405
|
+
# Concatenate other array-like to self.
|
406
|
+
#
|
407
|
+
# @param other [Vector, Array, Arrow::Array, Arrow::ChunkedArray]
|
408
|
+
# other array-like to concatenate.
|
409
|
+
# @return [Vector]
|
410
|
+
# concatenated Vector.
|
411
|
+
# @example Concatenate to string
|
412
|
+
# string_vector
|
413
|
+
#
|
414
|
+
# # =>
|
415
|
+
# #<RedAmber::Vector(:string, size=2):0x00000000000037b4>
|
416
|
+
# ["A", "B"]
|
417
|
+
#
|
418
|
+
# string_vector.concatenate([1, 2])
|
419
|
+
#
|
420
|
+
# # =>
|
421
|
+
# #<RedAmber::Vector(:string, size=4):0x0000000000003818>
|
422
|
+
# ["A", "B", "1", "2"]
|
423
|
+
#
|
424
|
+
# @example Concatenate to integer
|
425
|
+
# integer_vector
|
426
|
+
#
|
427
|
+
# # =>
|
428
|
+
# #<RedAmber::Vector(:uint8, size=2):0x000000000000382c>
|
429
|
+
# [1, 2]
|
430
|
+
#
|
431
|
+
# integer_vector.concatenate(["A", "B"])
|
432
|
+
# # =>
|
433
|
+
# #<RedAmber::Vector(:uint8, size=4):0x0000000000003840>
|
434
|
+
# [1, 2, 65, 66]
|
435
|
+
#
|
436
|
+
# @since 0.4.0
|
437
|
+
#
|
438
|
+
def concatenate(other)
|
439
|
+
concatenated_array =
|
440
|
+
case other
|
441
|
+
when Vector
|
442
|
+
data + other.data
|
443
|
+
when Arrow::ChunkedArray
|
444
|
+
data + other.pack
|
445
|
+
else
|
446
|
+
data + other
|
447
|
+
end
|
448
|
+
Vector.create(concatenated_array)
|
449
|
+
end
|
450
|
+
alias_method :concat, :concatenate
|
451
|
+
|
210
452
|
private
|
211
453
|
|
212
454
|
# Replace elements selected with a boolean mask
|
@@ -222,7 +464,8 @@ module RedAmber
|
|
222
464
|
# - `replacer.size` must be equal to `mask.count(true)`.
|
223
465
|
# - Types of self and replacer must be same
|
224
466
|
#
|
225
|
-
# @return [Vector]
|
467
|
+
# @return [Vector]
|
468
|
+
# replaced vector.
|
226
469
|
# Type of returned Vector is upcasted if needed.
|
227
470
|
#
|
228
471
|
def replace_with(boolean_mask, replacer)
|
@@ -241,7 +484,8 @@ module RedAmber
|
|
241
484
|
# Boolean mask which indicates the position to be replaced.
|
242
485
|
# - Position with true will be replaced by nil
|
243
486
|
# - Position with nil will remain as nil.
|
244
|
-
# @return [Vector]
|
487
|
+
# @return [Vector]
|
488
|
+
# replaced vector.
|
245
489
|
#
|
246
490
|
def replace_to_nil(boolean_mask)
|
247
491
|
nil_array = data.class.new([nil] * size) # Casted nil Array
|
data/lib/red_amber/version.rb
CHANGED
data/lib/red_amber.rb
CHANGED
@@ -14,20 +14,32 @@ require_relative 'red_amber/data_frame_selectable'
|
|
14
14
|
require_relative 'red_amber/data_frame_variable_operation'
|
15
15
|
require_relative 'red_amber/data_frame'
|
16
16
|
require_relative 'red_amber/group'
|
17
|
-
require_relative 'red_amber/
|
17
|
+
require_relative 'red_amber/subframes'
|
18
|
+
require_relative 'red_amber/vector_aggregation'
|
19
|
+
require_relative 'red_amber/vector_binary_element_wise'
|
20
|
+
require_relative 'red_amber/vector_unary_element_wise'
|
18
21
|
require_relative 'red_amber/vector_updatable'
|
19
22
|
require_relative 'red_amber/vector_selectable'
|
20
23
|
require_relative 'red_amber/vector'
|
21
24
|
require_relative 'red_amber/version'
|
22
25
|
|
23
26
|
module RedAmber
|
27
|
+
# Generic error
|
24
28
|
class Error < StandardError; end
|
25
29
|
|
30
|
+
# Argument error in DataFrame
|
26
31
|
class DataFrameArgumentError < ArgumentError; end
|
32
|
+
# Data type error in DataFrame
|
27
33
|
class DataFrameTypeError < TypeError; end
|
28
34
|
|
35
|
+
# Argument error in Vector
|
29
36
|
class VectorArgumentError < ArgumentError; end
|
37
|
+
# Data type error in DataFrame
|
30
38
|
class VectorTypeError < TypeError; end
|
31
39
|
|
40
|
+
# Argument error in Group
|
32
41
|
class GroupArgumentError < ArgumentError; end
|
42
|
+
|
43
|
+
# Argument error in SubFrames
|
44
|
+
class SubFramesArgumentError < ArgumentError; end
|
33
45
|
end
|
data/red_amber.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.email = ['heronshoes877@gmail.com']
|
10
10
|
|
11
11
|
spec.summary = 'Simple dataframe library for Ruby'
|
12
|
-
spec.description = 'RedAmber is a simple dataframe library' \
|
12
|
+
spec.description = 'RedAmber is a simple dataframe library ' \
|
13
13
|
'inspired by Rover-df and powered by Red Arrow.'
|
14
14
|
spec.homepage = 'https://github.com/heronshoes/red_amber'
|
15
15
|
spec.license = 'MIT'
|
@@ -31,7 +31,7 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
32
32
|
spec.require_paths = ['lib']
|
33
33
|
|
34
|
-
spec.add_dependency 'red-arrow', '~>
|
34
|
+
spec.add_dependency 'red-arrow', '~> 11.0.0'
|
35
35
|
|
36
36
|
# Development dependency has gone to the Gemfile (rubygems/bundler#7237)
|
37
37
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: red_amber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hirokazu SUZUKI (heronshoes)
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: red-arrow
|
@@ -16,15 +16,15 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 11.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
27
|
-
description: RedAmber is a simple dataframe
|
26
|
+
version: 11.0.0
|
27
|
+
description: RedAmber is a simple dataframe library inspired by Rover-df and powered
|
28
28
|
by Red Arrow.
|
29
29
|
email:
|
30
30
|
- heronshoes877@gmail.com
|
@@ -54,6 +54,8 @@ files:
|
|
54
54
|
- benchmark/vector.yml
|
55
55
|
- doc/CODE_OF_CONDUCT.md
|
56
56
|
- doc/DataFrame.md
|
57
|
+
- doc/DataFrame_Comparison.md
|
58
|
+
- doc/SubFrames.md
|
57
59
|
- doc/Vector.md
|
58
60
|
- doc/image/arrow_table_new.png
|
59
61
|
- doc/image/basic_verbs.png
|
@@ -66,7 +68,6 @@ files:
|
|
66
68
|
- doc/image/dataframe/remove.png
|
67
69
|
- doc/image/dataframe/rename.png
|
68
70
|
- doc/image/dataframe/rename_operation.png
|
69
|
-
- doc/image/dataframe/reshaping_DataFrames.png
|
70
71
|
- doc/image/dataframe/set_and_bind.png
|
71
72
|
- doc/image/dataframe/slice.png
|
72
73
|
- doc/image/dataframe/slice_operation.png
|
@@ -85,6 +86,7 @@ files:
|
|
85
86
|
- doc/image/vector/unary_element_wise.png
|
86
87
|
- doc/tdr.md
|
87
88
|
- doc/tdr_ja.md
|
89
|
+
- doc/yard-templates/default/fulldoc/html/css/common.css
|
88
90
|
- lib/red-amber.rb
|
89
91
|
- lib/red_amber.rb
|
90
92
|
- lib/red_amber/data_frame.rb
|
@@ -98,9 +100,12 @@ files:
|
|
98
100
|
- lib/red_amber/group.rb
|
99
101
|
- lib/red_amber/helper.rb
|
100
102
|
- lib/red_amber/refinements.rb
|
103
|
+
- lib/red_amber/subframes.rb
|
101
104
|
- lib/red_amber/vector.rb
|
102
|
-
- lib/red_amber/
|
105
|
+
- lib/red_amber/vector_aggregation.rb
|
106
|
+
- lib/red_amber/vector_binary_element_wise.rb
|
103
107
|
- lib/red_amber/vector_selectable.rb
|
108
|
+
- lib/red_amber/vector_unary_element_wise.rb
|
104
109
|
- lib/red_amber/vector_updatable.rb
|
105
110
|
- lib/red_amber/version.rb
|
106
111
|
- red_amber.gemspec
|
@@ -128,7 +133,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
128
133
|
- !ruby/object:Gem::Version
|
129
134
|
version: '0'
|
130
135
|
requirements: []
|
131
|
-
rubygems_version: 3.
|
136
|
+
rubygems_version: 3.4.1
|
132
137
|
signing_key:
|
133
138
|
specification_version: 4
|
134
139
|
summary: Simple dataframe library for Ruby
|
Binary file
|