Class: Charty::VectorAdapters::DaruVectorAdapter
- Inherits:
-
BaseAdapter
- Object
- BaseAdapter
- Charty::VectorAdapters::DaruVectorAdapter
- Defined in:
- lib/charty/vector_adapters/daru_adapter.rb
Instance Attribute Summary
Attributes inherited from BaseAdapter
Class Method Summary collapse
Instance Method Summary collapse
- #[](key) ⇒ Object
- #boolean? ⇒ Boolean
- #categories ⇒ Object
- #compare_data_equality(other) ⇒ Object
- #drop_na ⇒ Object
- #eq(val) ⇒ Object
- #first_nonnil ⇒ Object
- #group_by(grouper) ⇒ Object
- #index ⇒ Object
- #index=(new_index) ⇒ Object
-
#initialize(data) ⇒ DaruVectorAdapter
constructor
A new instance of DaruVectorAdapter.
- #notnull ⇒ Object
- #percentile(q) ⇒ Object
- #stdev(population: false) ⇒ Object
- #unique_values ⇒ Object
- #values_at(*indices) ⇒ Object
- #where(mask) ⇒ Object
- #where_in_array(mask) ⇒ Object
Methods inherited from BaseAdapter
Constructor Details
#initialize(data) ⇒ DaruVectorAdapter
Returns a new instance of DaruVectorAdapter.
10 11 12 |
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 10 def initialize(data) @data = check_data(data) end |
Class Method Details
.supported?(data) ⇒ Boolean
6 7 8 |
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 6 def self.supported?(data) defined?(Daru::Vector) && data.is_a?(Daru::Vector) end |
Instance Method Details
#[](key) ⇒ Object
46 47 48 49 50 51 52 53 |
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 46 def [](key) case key when Charty::Vector where(key) else data[key] end end |
#boolean? ⇒ Boolean
84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 84 def boolean? case when numeric?, categorical? false else case first_nonnil when true, false true else false end end end |
#categories ⇒ Object
101 102 103 |
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 101 def categories data.categories.compact if categorical? end |
#compare_data_equality(other) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 33 def compare_data_equality(other) case other when DaruVectorAdapter data == other.data when ArrayAdapter data.to_a == other.data when NArrayAdapter, NMatrixAdapter, NumpyAdapter, PandasSeriesAdapter other.compare_data_equality(self) else data == other.data.to_a end end |
#drop_na ⇒ Object
132 133 134 135 |
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 132 def drop_na values = data.reject {|x| Util.missing?(x) } Charty::Vector.new(Daru::Vector.new(values)) end |
#eq(val) ⇒ Object
137 138 139 140 141 |
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 137 def eq(val) Charty::Vector.new(data.eq(val).to_a, index: data.index.to_a, name: name) end |
#first_nonnil ⇒ Object
80 81 82 |
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 80 def first_nonnil data.drop_while(&:nil?).first end |
#group_by(grouper) ⇒ Object
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 109 def group_by(grouper) case grouper when Daru::Vector if grouper.category? # TODO: A categorical Daru::Vector cannot perform group_by well grouper = Daru::Vector.new(grouper.to_a) end groups = grouper.group_by.groups groups.map { |g, indices| [g.first, Charty::Vector.new(data[*indices])] }.to_h when Charty::Vector case grouper.data when Daru::Vector return group_by(grouper.data) else return group_by(Daru::Vector.new(grouper.to_a)) end else return group_by(Charty::Vector.new(grouper)) end end |
#index ⇒ Object
16 17 18 |
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 16 def index DaruIndex.new(data.index) end |
#index=(new_index) ⇒ Object
20 21 22 23 24 25 26 27 28 29 |
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 20 def index=(new_index) case new_index when DaruIndex data.index = new_index.values when Index data.index = new_index.to_a else data.index = new_index end end |
#notnull ⇒ Object
143 144 145 146 |
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 143 def notnull notnull_data = data.map {|x| ! Util.missing?(x) } Charty::Vector.new(notnull_data, index: data.index.to_a, name: name) end |
#percentile(q) ⇒ Object
158 159 160 |
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 158 def percentile(q) data.linear_percentile(q) end |
#stdev(population: false) ⇒ Object
150 151 152 153 154 155 156 |
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 150 def stdev(population: false) if population data.standard_deviation_sample else data.standard_deviation_population end end |
#unique_values ⇒ Object
105 106 107 |
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 105 def unique_values data.uniq.to_a end |
#values_at(*indices) ⇒ Object
57 58 59 |
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 57 def values_at(*indices) indices.map {|i| data.at(i) } end |
#where(mask) ⇒ Object
61 62 63 64 |
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 61 def where(mask) masked_data, masked_index = where_in_array(mask) Charty::Vector.new(Daru::Vector.new(masked_data, index: masked_index), name: name) end |
#where_in_array(mask) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/charty/vector_adapters/daru_adapter.rb', line 66 def where_in_array(mask) mask = check_mask_vector(mask) masked_data = [] masked_index = [] mask.each_with_index do |f, i| case f when true, 1 masked_data << data[i] masked_index << data.index.key(i) end end return masked_data, masked_index end |