From e6927370746d2023c607cf16e4a8c950382344f0 Mon Sep 17 00:00:00 2001 From: Blaine Date: Fri, 18 Sep 2020 22:38:27 -0700 Subject: [PATCH 1/3] CSV return --- Gemfile.lock | 38 ++++++++++++++++++++++++++ driver.rb | 9 +++++++ lib/csv_practice.rb | 34 +++++++++++++++++++++--- test/csv_practice_test.rb | 56 +++++++++++++++++++-------------------- 4 files changed, 106 insertions(+), 31 deletions(-) create mode 100644 Gemfile.lock create mode 100644 driver.rb diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..5202365 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,38 @@ +GEM + remote: https://rubygems.org/ + specs: + ansi (1.5.0) + awesome_print (1.8.0) + builder (3.2.4) + coderay (1.1.3) + method_source (1.0.0) + minitest (5.14.2) + minitest-reporters (1.4.2) + ansi + builder + minitest (>= 5.0) + ruby-progressbar + minitest-skip (0.0.3) + minitest (~> 5.0) + minitest-spec (0.0.2.1) + minitest (>= 3.0) + pry (0.13.1) + coderay (~> 1.1) + method_source (~> 1.0) + rake (13.0.1) + ruby-progressbar (1.10.1) + +PLATFORMS + ruby + +DEPENDENCIES + awesome_print + minitest + minitest-reporters + minitest-skip + minitest-spec + pry + rake + +BUNDLED WITH + 2.1.4 diff --git a/driver.rb b/driver.rb new file mode 100644 index 0000000..7943914 --- /dev/null +++ b/driver.rb @@ -0,0 +1,9 @@ +require_relative './lib/csv_practice' +require 'awesome_print' +OLYMPIC_DATA_FILENAME = 'data/athlete_events.csv' +olympic_athletes = get_all_olympic_athletes(OLYMPIC_DATA_FILENAME) +ap olympic_athletes + +# MEDAL_TOTALS_FILENAME = 'data/medal_totals.csv' +# team_medals = total_medals_per_team(MEDAL_TOTALS_FILENAME) +# ap team_medals \ No newline at end of file diff --git a/lib/csv_practice.rb b/lib/csv_practice.rb index 320d81e..0a70f9c 100644 --- a/lib/csv_practice.rb +++ b/lib/csv_practice.rb @@ -1,13 +1,41 @@ require 'csv' require 'awesome_print' -def get_all_olympic_athletes(filename) + +def get_all_olympic_athletes(filename) + rows = CSV.read(filename, headers: true) + required_fields = %w[ID Name Height Team Year City Sport Event Medal] + rows.map do |line| + # {"ID" => line["ID"]} + athlete = {} + required_fields.each do |field_name| + athlete[field_name] = line[field_name] + end + athlete + end end + def total_medals_per_team(olympic_data) +total_medals_hash = Hash.new[0] +medals_options = %w(Gold Silver Bronze) + olympic_data.map do |athlete| + if athlete["Medal"].include?(medals_options) + total_medals_hash = {athlete["Team"] = athlete["Medal"] += 1} + end + end end -def get_all_gold_medalists(olympic_data) -end + + + +# def get_all_gold_medalists(olympic_data) +# end + +# Random personal reminders/notes: +# return boots you. +# How does it know that its +# delete_if { |k, v| k == delete} +# # /Users/ada/Documents/ada_exercises/csv-practice/data/athlete_events.csv \ No newline at end of file diff --git a/test/csv_practice_test.rb b/test/csv_practice_test.rb index 34061f4..6b06630 100644 --- a/test/csv_practice_test.rb +++ b/test/csv_practice_test.rb @@ -92,33 +92,33 @@ end end - xdescribe 'get_all_gold_medalists' do - - it 'returns an array of gold medalists' do - # Arrange - data = get_all_olympic_athletes(OLYMPIC_DATA_FILENAME) - - # Act - all_gold_medalists = get_all_gold_medalists(data) - - # Assert - expect(all_gold_medalists).must_be_instance_of Array - all_gold_medalists.each do |medalist| - expect(medalist).must_be_instance_of Hash - expect(medalist['Medal']).must_equal "Gold" - end - end - - it 'has the correct number of gold medalists' do - # Arrange - data = get_all_olympic_athletes(OLYMPIC_DATA_FILENAME) - - # Act - all_gold_medalists = get_all_gold_medalists(data) - - # Assert - expect(all_gold_medalists.length).must_equal 2344 - end - end + # describe 'get_all_gold_medalists' do + # + # it 'returns an array of gold medalists' do + # # Arrange + # data = get_all_olympic_athletes(OLYMPIC_DATA_FILENAME) + # + # # Act + # all_gold_medalists = get_all_gold_medalists(data) + # + # # Assert + # expect(all_gold_medalists).must_be_instance_of Array + # all_gold_medalists.each do |medalist| + # expect(medalist).must_be_instance_of Hash + # expect(medalist['Medal']).must_equal "Gold" + # end + # end + # + # it 'has the correct number of gold medalists' do + # # Arrange + # data = get_all_olympic_athletes(OLYMPIC_DATA_FILENAME) + # + # # Act + # all_gold_medalists = get_all_gold_medalists(data) + # + # # Assert + # expect(all_gold_medalists.length).must_equal 2344 + # end + # end end From d4d197c6644751855e7a076fa11917d805267174 Mon Sep 17 00:00:00 2001 From: Blaine Date: Sat, 19 Sep 2020 11:35:56 -0700 Subject: [PATCH 2/3] First Total_medals/team complete --- driver.rb | 8 ++++---- lib/csv_practice.rb | 16 ++++++++++------ 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/driver.rb b/driver.rb index 7943914..e146cd3 100644 --- a/driver.rb +++ b/driver.rb @@ -2,8 +2,8 @@ require 'awesome_print' OLYMPIC_DATA_FILENAME = 'data/athlete_events.csv' olympic_athletes = get_all_olympic_athletes(OLYMPIC_DATA_FILENAME) -ap olympic_athletes -# MEDAL_TOTALS_FILENAME = 'data/medal_totals.csv' -# team_medals = total_medals_per_team(MEDAL_TOTALS_FILENAME) -# ap team_medals \ No newline at end of file + +MEDAL_TOTALS_FILENAME = 'data/medal_totals.csv' +team_medals = total_medals_per_team(olympic_athletes) +ap team_medals \ No newline at end of file diff --git a/lib/csv_practice.rb b/lib/csv_practice.rb index 0a70f9c..2f3eeac 100644 --- a/lib/csv_practice.rb +++ b/lib/csv_practice.rb @@ -18,14 +18,18 @@ def get_all_olympic_athletes(filename) def total_medals_per_team(olympic_data) - -total_medals_hash = Hash.new[0] -medals_options = %w(Gold Silver Bronze) - olympic_data.map do |athlete| - if athlete["Medal"].include?(medals_options) - total_medals_hash = {athlete["Team"] = athlete["Medal"] += 1} + total_medals_hash = {} + medals_options = %w(Gold Silver Bronze) + olympic_data.each do |athlete| + if medals_options.include?(athlete["Medal"]) + if total_medals_hash[athlete["Team"]] + total_medals_hash[athlete["Team"]] += 1 + else + total_medals_hash[athlete["Team"]] = 1 + end end end + return total_medals_hash end From 99ca522456151141101b062664c5fb59b892a689 Mon Sep 17 00:00:00 2001 From: Blaine Date: Sat, 19 Sep 2020 18:42:47 -0700 Subject: [PATCH 3/3] Practicing with method extraction - tall_ppl_per_country hash not a part of the assignment --- driver.rb | 9 ++++++--- lib/csv_practice.rb | 10 +++++++++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/driver.rb b/driver.rb index e146cd3..bdc20b7 100644 --- a/driver.rb +++ b/driver.rb @@ -2,8 +2,11 @@ require 'awesome_print' OLYMPIC_DATA_FILENAME = 'data/athlete_events.csv' olympic_athletes = get_all_olympic_athletes(OLYMPIC_DATA_FILENAME) +# ap olympic_athletes +# MEDAL_TOTALS_FILENAME = 'data/medal_totals.csv' +# team_medals = total_medals_per_team(olympic_athletes) +# ap team_medals -MEDAL_TOTALS_FILENAME = 'data/medal_totals.csv' -team_medals = total_medals_per_team(olympic_athletes) -ap team_medals \ No newline at end of file +tall_ppl = tall_ppl_per_country(olympic_athletes) +ap tall_ppl diff --git a/lib/csv_practice.rb b/lib/csv_practice.rb index 2f3eeac..5735b2d 100644 --- a/lib/csv_practice.rb +++ b/lib/csv_practice.rb @@ -33,7 +33,15 @@ def total_medals_per_team(olympic_data) end - +def tall_ppl_per_country(olympic_data) + tall_ppl_hash = Hash.new(0) + olympic_data.each do |athlete| + if athlete["Height"].to_i > 180 + tall_ppl_hash[athlete["Team"]] += 1 + end + end + ap tall_ppl_hash.sort_by { |key, value| value}.to_h +end # def get_all_gold_medalists(olympic_data) # end