red_amber 0.1.4 → 0.1.5
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 +8 -8
- data/CHANGELOG.md +74 -7
- data/Gemfile +3 -0
- data/README.md +47 -13
- data/benchmark/csv_load_penguins.yml +15 -0
- data/benchmark/drop_nil.yml +11 -0
- data/doc/DataFrame.md +185 -35
- data/doc/Vector.md +132 -10
- data/doc/image/dataframe_model.png +0 -0
- data/doc/tdr.md +14 -11
- data/doc/tdr_ja.md +13 -10
- data/lib/red_amber/data_frame.rb +38 -23
- data/lib/red_amber/data_frame_displayable.rb +4 -3
- data/lib/red_amber/data_frame_helper.rb +8 -8
- data/lib/red_amber/data_frame_indexable.rb +38 -0
- data/lib/red_amber/data_frame_observation_operation.rb +13 -2
- data/lib/red_amber/data_frame_selectable.rb +14 -4
- data/lib/red_amber/vector.rb +28 -5
- data/lib/red_amber/vector_compensable.rb +68 -0
- data/lib/red_amber/vector_functions.rb +16 -13
- data/lib/red_amber/version.rb +1 -1
- data/lib/red_amber.rb +5 -0
- data/red_amber.gemspec +3 -6
- metadata +12 -9
- data/doc/image/TDR_operations.pdf +0 -0
@@ -42,7 +42,8 @@ module RedAmber
|
|
42
42
|
|
43
43
|
# [Unary element-wise]: vector.func => vector
|
44
44
|
unary_element_wise =
|
45
|
-
%i[abs atan bit_wise_not ceil cos floor is_finite
|
45
|
+
%i[abs array_sort_indices atan bit_wise_not ceil cos fill_null_backward fill_null_forward floor is_finite
|
46
|
+
is_inf is_nan is_null is_valid round round_to_multiple sign sin tan trunc unique]
|
46
47
|
unary_element_wise.each do |function|
|
47
48
|
define_method(function) do |opts: nil|
|
48
49
|
datum = exec_func_unary(function, options: opts)
|
@@ -55,6 +56,14 @@ module RedAmber
|
|
55
56
|
numeric? ? (is_nil | is_nan) : is_nil
|
56
57
|
end
|
57
58
|
|
59
|
+
alias_method :fill_nil_backward, :fill_null_backward
|
60
|
+
alias_method :fill_nil_forward, :fill_null_forward
|
61
|
+
|
62
|
+
alias_method :sort_indexes, :array_sort_indices
|
63
|
+
alias_method :sort_indices, :array_sort_indices
|
64
|
+
|
65
|
+
alias_method :uniq, :unique
|
66
|
+
|
58
67
|
# [Unary element-wise with operator]: vector.func => vector, op vector
|
59
68
|
unary_element_wise_op = {
|
60
69
|
invert: '!',
|
@@ -73,9 +82,6 @@ module RedAmber
|
|
73
82
|
end
|
74
83
|
alias_method :not, :invert
|
75
84
|
|
76
|
-
# option(s) required
|
77
|
-
# - round, round_to_multiple
|
78
|
-
|
79
85
|
# NaN support needed
|
80
86
|
# - acos asin ln log10 log1p log2
|
81
87
|
|
@@ -154,13 +160,10 @@ module RedAmber
|
|
154
160
|
alias_method :ne, :not_equal
|
155
161
|
|
156
162
|
# (array functions)
|
157
|
-
# array_filter,
|
158
|
-
# dictionary_encode,
|
159
|
-
# hash_count, hash_count_distinct, hash_distinct, hash_max, hash_mean, hash_min,
|
160
|
-
# hash_min_max, hash_product, hash_stddev, hash_sum, hash_tdigest, hash_variance,
|
163
|
+
# array_filter, array_take
|
164
|
+
# dictionary_encode,
|
161
165
|
# partition_nth_indices,
|
162
|
-
# quarter, quarters_between,
|
163
|
-
# value_counts
|
166
|
+
# quarter, quarters_between,
|
164
167
|
|
165
168
|
# (strings)
|
166
169
|
# ascii_capitalize, ascii_center, ascii_is_alnum, ascii_is_alpha, ascii_is_decimal,
|
@@ -195,10 +198,10 @@ module RedAmber
|
|
195
198
|
# choose, index_in, index_in_meta_binary, indices_nonzero
|
196
199
|
|
197
200
|
# (others)
|
198
|
-
# coalesce, drop_null,
|
201
|
+
# coalesce, drop_null,
|
199
202
|
# filter, is_in, is_in_meta_binary,
|
200
203
|
# list_element, list_flatten, list_parent_indices, list_value_length, make_struct,
|
201
|
-
# max_element_wise, min_element_wise, random,
|
204
|
+
# max_element_wise, min_element_wise, random, select_k_unstable,
|
202
205
|
# sort_indices, struct_field, take
|
203
206
|
|
204
207
|
private # =======
|
@@ -214,7 +217,7 @@ module RedAmber
|
|
214
217
|
when Arrow::Array, Arrow::ChunkedArray, Arrow::Scalar, Array, Numeric, String, TrueClass, FalseClass
|
215
218
|
find(function).execute([data, other], options)
|
216
219
|
else
|
217
|
-
raise
|
220
|
+
raise VectorArgumentError, "Operand is not supported: #{other.class}"
|
218
221
|
end
|
219
222
|
end
|
220
223
|
|
data/lib/red_amber/version.rb
CHANGED
data/lib/red_amber.rb
CHANGED
@@ -5,10 +5,12 @@ require 'rover-df'
|
|
5
5
|
|
6
6
|
require_relative 'red_amber/data_frame_displayable'
|
7
7
|
require_relative 'red_amber/data_frame_helper'
|
8
|
+
require_relative 'red_amber/data_frame_indexable'
|
8
9
|
require_relative 'red_amber/data_frame_selectable'
|
9
10
|
require_relative 'red_amber/data_frame_observation_operation'
|
10
11
|
require_relative 'red_amber/data_frame_variable_operation'
|
11
12
|
require_relative 'red_amber/data_frame'
|
13
|
+
require_relative 'red_amber/vector_compensable'
|
12
14
|
require_relative 'red_amber/vector_functions'
|
13
15
|
require_relative 'red_amber/vector'
|
14
16
|
require_relative 'red_amber/version'
|
@@ -18,4 +20,7 @@ module RedAmber
|
|
18
20
|
|
19
21
|
class DataFrameArgumentError < ArgumentError; end
|
20
22
|
class DataFrameTypeError < TypeError; end
|
23
|
+
|
24
|
+
class VectorArgumentError < ArgumentError; end
|
25
|
+
class VectorTypeError < TypeError; end
|
21
26
|
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 inspired by Rover-df and powered by Red Arrow.'
|
13
13
|
spec.homepage = 'https://github.com/heronshoes/red_amber'
|
14
14
|
spec.license = 'MIT'
|
15
15
|
spec.required_ruby_version = '>= 2.7'
|
@@ -30,14 +30,11 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
31
31
|
spec.require_paths = ['lib']
|
32
32
|
|
33
|
-
spec.add_dependency 'red-arrow', '>=
|
34
|
-
spec.add_dependency 'red-parquet', '>=
|
33
|
+
spec.add_dependency 'red-arrow', '>= 8.0.0'
|
34
|
+
spec.add_dependency 'red-parquet', '>= 8.0.0'
|
35
35
|
spec.add_dependency 'rover-df', '~> 0.3.0'
|
36
36
|
|
37
37
|
# Development dependency has gone to the Gemfile (rubygems/bundler#7237)
|
38
38
|
|
39
39
|
spec.metadata['rubygems_mfa_required'] = 'true'
|
40
|
-
|
41
|
-
# For more information and examples about making a new gem, check out our
|
42
|
-
# guide at: https://bundler.io/guides/creating_gem.html
|
43
40
|
end
|
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.1.
|
4
|
+
version: 0.1.5
|
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: 2022-
|
11
|
+
date: 2022-06-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: red-arrow
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 8.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:
|
26
|
+
version: 8.0.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: red-parquet
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 8.0.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 8.0.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rover-df
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,8 +52,8 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 0.3.0
|
55
|
-
description: RedAmber is a simple dataframe library
|
56
|
-
|
55
|
+
description: RedAmber is a simple dataframe library inspired by Rover-df and powered
|
56
|
+
by Red Arrow.
|
57
57
|
email:
|
58
58
|
- heronshoes877@gmail.com
|
59
59
|
executables: []
|
@@ -67,10 +67,11 @@ files:
|
|
67
67
|
- LICENSE
|
68
68
|
- README.md
|
69
69
|
- Rakefile
|
70
|
+
- benchmark/csv_load_penguins.yml
|
71
|
+
- benchmark/drop_nil.yml
|
70
72
|
- doc/CODE_OF_CONDUCT.md
|
71
73
|
- doc/DataFrame.md
|
72
74
|
- doc/Vector.md
|
73
|
-
- doc/image/TDR_operations.pdf
|
74
75
|
- doc/image/arrow_table_new.png
|
75
76
|
- doc/image/dataframe/assign.png
|
76
77
|
- doc/image/dataframe/drop.png
|
@@ -93,10 +94,12 @@ files:
|
|
93
94
|
- lib/red_amber/data_frame.rb
|
94
95
|
- lib/red_amber/data_frame_displayable.rb
|
95
96
|
- lib/red_amber/data_frame_helper.rb
|
97
|
+
- lib/red_amber/data_frame_indexable.rb
|
96
98
|
- lib/red_amber/data_frame_observation_operation.rb
|
97
99
|
- lib/red_amber/data_frame_selectable.rb
|
98
100
|
- lib/red_amber/data_frame_variable_operation.rb
|
99
101
|
- lib/red_amber/vector.rb
|
102
|
+
- lib/red_amber/vector_compensable.rb
|
100
103
|
- lib/red_amber/vector_functions.rb
|
101
104
|
- lib/red_amber/version.rb
|
102
105
|
- red_amber.gemspec
|
Binary file
|