class Datasets::Penguins

This dataset provides the same dataset as github.com/allisonhorst/palmerpenguins

Constants

Record

Public Class Methods

new() click to toggle source
Calls superclass method Datasets::Dataset::new
# File lib/datasets/penguins.rb, line 88
def initialize
  super
  @metadata.id = "palmerpenguins"
  @metadata.name = "palmerpenguins"
  @metadata.url = "https://allisonhorst.github.io/palmerpenguins/"
  @metadata.licenses = ["CC0"]
  @metadata.description = "A great dataset for data exploration & visualization, as an alternative to iris"
end

Public Instance Methods

each() { |convert_record(raw_record)| ... } click to toggle source
# File lib/datasets/penguins.rb, line 97
def each(&block)
  return to_enum(__method__) unless block_given?

  species_classes = [
    PenguinsRawData::Adelie,
    PenguinsRawData::Chinstrap,
    PenguinsRawData::Gentoo,
  ]

  species_classes.each do |species_class|
    species_class.new.each do |raw_record|
      yield convert_record(raw_record)
    end
  end
end

Private Instance Methods

cleanse_fields(raw_record) click to toggle source
# File lib/datasets/penguins.rb, line 117
        def cleanse_fields(raw_record)
  species = raw_record.species.split(' ')[0]
  flipper_length_mm = raw_record.flipper_length_mm&.to_i
  body_mass_g = raw_record.body_mass_g&.to_i
  sex = normalize_sex(raw_record.sex)
  year = raw_record.date_egg&.year

  [
    species,
    raw_record.island,
    raw_record.culmen_length_mm,
    raw_record.culmen_depth_mm,
    flipper_length_mm,
    body_mass_g,
    sex,
    year
  ]
end
convert_record(raw_record) click to toggle source
# File lib/datasets/penguins.rb, line 113
        def convert_record(raw_record)
  Record.new(*cleanse_fields(raw_record))
end
normalize_sex(val) click to toggle source
# File lib/datasets/penguins.rb, line 136
        def normalize_sex(val)
  val = val&.downcase
  case val
  when "female", "male", nil
    val
  else
    nil
  end
end