class Datasets::SeabornData

Constants

URL_FORMAT

Public Class Methods

new(name) click to toggle source
Calls superclass method Datasets::Dataset::new
# File lib/datasets/seaborn-data.rb, line 5
def initialize(name)
  super()
  @metadata.id = "seaborn-data-#{name}"
  @metadata.name = "SeabornData: #{name}"
  @metadata.url = URL_FORMAT % {name: name}

  @data_path = cache_dir_path + (name + ".csv")
  @name = name
end

Public Instance Methods

each() { |record| ... } click to toggle source
# File lib/datasets/seaborn-data.rb, line 15
def each(&block)
  return to_enum(__method__) unless block_given?

  download(@data_path, @metadata.url) unless @data_path.exist?
  CSV.open(@data_path, headers: :first_row, converters: :all) do |csv|
    csv.each do |row|
      record = prepare_record(row)
      yield record
    end
  end
end

Private Instance Methods

prepare_record(csv_row) click to toggle source
# File lib/datasets/seaborn-data.rb, line 28
def prepare_record(csv_row)
  record = csv_row.to_h
  record.transform_keys!(&:to_sym)

  # Perform the same preprocessing as seaborn's load_dataset function
  preprocessor = :"preprocess_#{@name}_record"
  __send__(preprocessor, record) if respond_to?(preprocessor, true)

  record
end
preprocess_flights_record(record) click to toggle source

The same preprocessing as seaborn.load_dataset

# File lib/datasets/seaborn-data.rb, line 40
def preprocess_flights_record(record)
  record[:month] &&= record[:month][0,3]
end
preprocess_penguins_record(record) click to toggle source

The same preprocessing as seaborn.load_dataset

# File lib/datasets/seaborn-data.rb, line 45
def preprocess_penguins_record(record)
  record[:sex] &&= record[:sex].capitalize
end