red_amber 0.3.0 → 0.4.0
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/.rubocop.yml +39 -20
- data/.yardopts +2 -0
- data/CHANGELOG.md +113 -0
- data/Gemfile +1 -1
- data/LICENSE +1 -1
- data/README.md +25 -26
- data/benchmark/basic.yml +2 -2
- data/benchmark/combine.yml +2 -2
- data/benchmark/dataframe.yml +2 -2
- data/benchmark/group.yml +2 -2
- data/benchmark/reshape.yml +2 -2
- data/benchmark/vector.yml +3 -0
- 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 +429 -75
- data/lib/red_amber/data_frame_combinable.rb +516 -66
- data/lib/red_amber/data_frame_displayable.rb +244 -14
- data/lib/red_amber/data_frame_indexable.rb +121 -18
- 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 +622 -66
- data/lib/red_amber/data_frame_variable_operation.rb +446 -34
- data/lib/red_amber/group.rb +187 -22
- data/lib/red_amber/helper.rb +70 -10
- data/lib/red_amber/refinements.rb +12 -5
- data/lib/red_amber/subframes.rb +1066 -0
- data/lib/red_amber/vector.rb +385 -11
- data/lib/red_amber/vector_aggregation.rb +312 -0
- data/lib/red_amber/vector_binary_element_wise.rb +387 -0
- data/lib/red_amber/vector_selectable.rb +217 -12
- data/lib/red_amber/vector_unary_element_wise.rb +436 -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.0
|
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-02-25 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.2.33
|
132
137
|
signing_key:
|
133
138
|
specification_version: 4
|
134
139
|
summary: Simple dataframe library for Ruby
|
Binary file
|