Class: Datasets::Table
- Inherits:
-
Object
- Object
- Datasets::Table
- Includes:
- Enumerable
- Defined in:
- lib/datasets/table.rb
Defined Under Namespace
Classes: Record
Instance Attribute Summary collapse
-
#dataset ⇒ Object
readonly
Returns the value of attribute dataset.
Instance Method Summary collapse
- #[](name_or_index) ⇒ Object
- #column_names ⇒ Object
- #dictionary_encode(name) ⇒ Object
- #each_column(&block) ⇒ Object (also: #each)
- #each_record ⇒ Object
- #fetch_values(*keys) ⇒ Object
- #find_record(row) ⇒ Object
-
#initialize(dataset) ⇒ Table
constructor
A new instance of Table.
- #label_encode(name) ⇒ Object
- #n_columns ⇒ Object (also: #size, #length)
- #n_rows ⇒ Object
- #to_h ⇒ Object
Constructor Details
#initialize(dataset) ⇒ Table
Returns a new instance of Table.
46 47 48 49 |
# File 'lib/datasets/table.rb', line 46 def initialize(dataset) @dataset = dataset @dictionaries = {} end |
Instance Attribute Details
#dataset ⇒ Object (readonly)
Returns the value of attribute dataset.
45 46 47 |
# File 'lib/datasets/table.rb', line 45 def dataset @dataset end |
Instance Method Details
#[](name_or_index) ⇒ Object
86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/datasets/table.rb', line 86 def [](name_or_index) case name_or_index when Integer index = name_or_index columner_data.each_with_index do |(_name, values), i| return values if i == index end nil else name = name_or_index columner_data[normalize_name(name)] end end |
#column_names ⇒ Object
63 64 65 |
# File 'lib/datasets/table.rb', line 63 def column_names columner_data.keys end |
#dictionary_encode(name) ⇒ Object
100 101 102 |
# File 'lib/datasets/table.rb', line 100 def dictionary_encode(name) @dictionaries[normalize_name(name)] ||= Dictionary.new(self[name]) end |
#each_column(&block) ⇒ Object Also known as: each
67 68 69 |
# File 'lib/datasets/table.rb', line 67 def each_column(&block) columner_data.each(&block) end |
#each_record ⇒ Object
72 73 74 75 76 77 |
# File 'lib/datasets/table.rb', line 72 def each_record return to_enum(__method__) unless block_given? n_rows.times do |i| yield(Record.new(self, i)) end end |
#fetch_values(*keys) ⇒ Object
109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/datasets/table.rb', line 109 def fetch_values(*keys) data = columner_data keys.collect do |key| if data.key?(key) data[key] else raise build_key_error(key) unless block_given? yield(key) end end end |
#find_record(row) ⇒ Object
79 80 81 82 83 84 |
# File 'lib/datasets/table.rb', line 79 def find_record(row) row += n_rows if row < 0 return nil if row < 0 return nil if row >= n_rows Record.new(self, row) end |
#label_encode(name) ⇒ Object
104 105 106 107 |
# File 'lib/datasets/table.rb', line 104 def label_encode(name) dictionary = dictionary_encode(name) dictionary.encode(self[name]) end |
#n_columns ⇒ Object Also known as: size, length
51 52 53 |
# File 'lib/datasets/table.rb', line 51 def n_columns columner_data.size end |
#n_rows ⇒ Object
57 58 59 60 61 |
# File 'lib/datasets/table.rb', line 57 def n_rows first_column = columner_data.first return 0 if first_column.nil? first_column[1].size end |
#to_h ⇒ Object
121 122 123 124 125 126 127 128 129 130 |
# File 'lib/datasets/table.rb', line 121 def to_h columns = {} @dataset.each do |record| record.to_h.each do |name, value| values = (columns[name] ||= []) values << value end end columns end |