module Rover
Constants
- VERSION
Public Class Methods
parse_csv(str, types: nil, **options)
click to toggle source
# File lib/rover.rb, line 17 def parse_csv(str, types: nil, **options) require "csv" csv_to_df(CSV.parse(str, **csv_options(options)), types: types, headers: options[:headers]) end
read_csv(path, types: nil, **options)
click to toggle source
# File lib/rover.rb, line 12 def read_csv(path, types: nil, **options) require "csv" csv_to_df(CSV.read(path, **csv_options(options)), types: types, headers: options[:headers]) end
Private Class Methods
csv_options(options)
click to toggle source
TODO use date converter
# File lib/rover.rb, line 25 def csv_options(options) options = {headers: true, converters: :numeric}.merge(options) raise ArgumentError, "Must specify headers" unless options[:headers] options end
csv_to_df(table, types: nil, headers: nil)
click to toggle source
# File lib/rover.rb, line 31 def csv_to_df(table, types: nil, headers: nil) if headers && headers.size < table.headers.size raise ArgumentError, "Expected #{table.headers.size} headers, got #{headers.size}" end table.by_col! data = {} table.each do |k, v| data[k] = v end DataFrame.new(data, types: types) end