Class: Charty::TableAdapters::PandasDataFrameAdapter

Inherits:
BaseAdapter
  • Object
show all
Extended by:
Forwardable
Includes:
Enumerable
Defined in:
lib/charty/table_adapters/pandas_adapter.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BaseAdapter

#==

Constructor Details

#initialize(data, columns: nil, index: nil) ⇒ PandasDataFrameAdapter

Returns a new instance of PandasDataFrameAdapter.



15
16
17
18
19
20
# File 'lib/charty/table_adapters/pandas_adapter.rb', line 15

def initialize(data, columns: nil, index: nil)
  @data = check_type(Pandas::DataFrame, data, :data)

  self.columns = columns unless columns.nil?
  self.index = index unless index.nil?
end

Instance Attribute Details

#dataObject (readonly)

Returns the value of attribute data.



22
23
24
# File 'lib/charty/table_adapters/pandas_adapter.rb', line 22

def data
  @data
end

Class Method Details

.supported?(data) ⇒ Boolean

Returns:



11
12
13
# File 'lib/charty/table_adapters/pandas_adapter.rb', line 11

def self.supported?(data)
  defined?(Pandas::DataFrame) && data.is_a?(Pandas::DataFrame)
end

Instance Method Details

#[](row, column) ⇒ Object



67
68
69
70
71
72
73
# File 'lib/charty/table_adapters/pandas_adapter.rb', line 67

def [](row, column)
  if row
    @data[column][row]
  else
    Vector.new(@data[column])
  end
end

#column_namesObject



54
55
56
# File 'lib/charty/table_adapters/pandas_adapter.rb', line 54

def column_names
  @data.columns.to_a
end

#columnsObject



24
25
26
# File 'lib/charty/table_adapters/pandas_adapter.rb', line 24

def columns
  PandasIndex.new(data.columns)
end

#columns=(new_columns) ⇒ Object



28
29
30
31
32
33
34
35
36
37
# File 'lib/charty/table_adapters/pandas_adapter.rb', line 28

def columns=(new_columns)
  case new_columns
  when PandasIndex
    data.columns = new_columns.values
  when Index
    data.columns = new_columns.to_a
  else
    data.columns = new_columns
  end
end

#compare_data_equality(other) ⇒ Object



58
59
60
61
62
63
64
65
# File 'lib/charty/table_adapters/pandas_adapter.rb', line 58

def compare_data_equality(other)
  case other
  when PandasDataFrameAdapter
    data.equals(other.data)
  else
    super
  end
end

#indexObject



39
40
41
# File 'lib/charty/table_adapters/pandas_adapter.rb', line 39

def index
  PandasIndex.new(data.index)
end

#index=(new_index) ⇒ Object



43
44
45
46
47
48
49
50
51
52
# File 'lib/charty/table_adapters/pandas_adapter.rb', line 43

def index=(new_index)
  case new_index
  when PandasIndex
    data.index = new_index.values
  when Index
    data.index = new_index.to_a
  else
    data.index = new_index
  end
end