2016 Olympics medal count acquisition

In this notebook, we acquire the current medal count from the web.

1. List of sports


In [1]:
from bs4 import BeautifulSoup
import urllib
r = urllib.urlopen('http://www.bbc.com/sport/olympics/rio-2016/medals/sports').read()
soup = BeautifulSoup(r,"lxml")

sports_span = soup.findAll("span",{"class","medals-table-by-sport__sport-name"})
sports_names = []
sports_names_format = []
for s in sports_span:
    sports_names_format.append(str(s))
    sports_names.append(str(s).lower().replace(" ","-")[48:-7])
print sports_names


['archery', 'athletics', 'badminton', 'basketball', 'boxing', 'canoeing', 'cycling', 'diving', 'equestrian', 'fencing', 'football', 'golf', 'gymnastics', 'handball', 'hockey', 'judo', 'modern-pentathlon', 'rowing', 'rugby-sevens', 'sailing', 'shooting', 'swimming', 'synchronised-swimming', 'table-tennis', 'taekwondo', 'tennis', 'triathlon', 'volleyball', 'water-polo', 'weightlifting', 'wrestling']

2. HTMLs for each sport's medal table


In [2]:
# Save html for each sport
htmls = {}
for s in sports_names:
    htmls[s] = urllib.urlopen('http://www.bbc.com/sport/olympics/rio-2016/medals/sports/'+s+'#'+s).read()

In [3]:
# Find table html for each sport
thtmls = {}
for s in sports_names:
    soupsp = BeautifulSoup(htmls[s],"lxml")
    thtmls[s] = soupsp.findAll("table",{"class","medals-table-by-sport__countries_table"})

3. Scrape medals for each country and sport


In [4]:
# For every sport, scrape medal data
import re
medal_names = ['gold','silver','bronze']
medals = {}
sports_countries = {}
all_countries_format = []
for s in sports_names:
    print s
    medals[s] = {}
    h = str(thtmls[s])
    if not thtmls[s]:
        print 'no medals yet'
    else:
        # Find countries of interest
        pattern = r"<abbr class=\"abbr-on medium-abbr-off\" title=\""
        pmatch = re.finditer(pattern, h)
        countries = []
        for i,match in enumerate(pmatch):
            country = h[int(match.end()):int(match.end())+200].rsplit('"')[0]
            all_countries_format.append(country)
            countries.append(country.lower().replace(" ","-"))
        sports_countries[s] = countries
        for c in sports_countries[s]:
            if c == 'great-britain-&amp;-n.-ireland':
                ci1 = 'great-britain-and-northern-ireland'
                medals[s][c] = {}
                for m in medal_names:
                    pattern = r"<abbr class=\"abbr-on medium-abbr-off\" title=\".{,800}" + m + ".{,150}" + ci1 + "\">"
                    gendermatch = re.finditer(pattern, h)
                    for i,match in enumerate(gendermatch):
                        medals[s][c][m] = int(h[int(match.end()):int(match.end())+3])
            else:
                ci = c
                medals[s][ci] = {}
                for m in medal_names:
                    pattern = r"<abbr class=\"abbr-on medium-abbr-off\" title=\".{,500}" + m + ".{,150}" + ci + "\">"
                    gendermatch = re.finditer(pattern, h)
                    for i,match in enumerate(gendermatch):
                        medals[s][ci][m] = int(h[int(match.end()):int(match.end())+3])
        print medals[s]


archery
{'chinese-taipei': {'bronze': 1, 'silver': 0, 'gold': 0}, 'australia': {'bronze': 1, 'silver': 0, 'gold': 0}, 'france': {'bronze': 0, 'silver': 1, 'gold': 0}, 'south-korea': {'bronze': 1, 'silver': 0, 'gold': 4}, 'germany': {'bronze': 0, 'silver': 1, 'gold': 0}, 'united-states': {'bronze': 1, 'silver': 1, 'gold': 0}, 'russia': {'bronze': 0, 'silver': 1, 'gold': 0}}
athletics
{'jamaica': {'bronze': 2, 'silver': 3, 'gold': 6}, 'japan': {'bronze': 1, 'silver': 1, 'gold': 0}, 'turkey': {'bronze': 1, 'silver': 0, 'gold': 0}, 'mexico': {'bronze': 0, 'silver': 1, 'gold': 0}, 'czech-republic': {'bronze': 1, 'silver': 0, 'gold': 0}, 'serbia': {'bronze': 1, 'silver': 0, 'gold': 0}, 'belarus': {'bronze': 0, 'silver': 1, 'gold': 0}, 'hungary': {'bronze': 1, 'silver': 0, 'gold': 0}, 'colombia': {'bronze': 0, 'silver': 0, 'gold': 1}, 'greece': {'bronze': 0, 'silver': 0, 'gold': 1}, 'burundi': {'bronze': 0, 'silver': 1, 'gold': 0}, 'kenya': {'bronze': 1, 'silver': 6, 'gold': 6}, 'tajikistan': {'bronze': 0, 'silver': 0, 'gold': 1}, 'canada': {'bronze': 4, 'silver': 1, 'gold': 1}, 'qatar': {'bronze': 0, 'silver': 1, 'gold': 0}, 'trinidad-and-tobago': {'bronze': 1, 'silver': 0, 'gold': 0}, 'france': {'bronze': 3, 'silver': 3, 'gold': 0}, 'bahamas': {'bronze': 1, 'silver': 0, 'gold': 1}, 'ethiopia': {'bronze': 5, 'silver': 2, 'gold': 1}, 'slovakia': {'bronze': 0, 'silver': 0, 'gold': 1}, 'venezuela': {'bronze': 0, 'silver': 1, 'gold': 0}, 'bahrain': {'bronze': 0, 'silver': 1, 'gold': 1}, 'brazil': {'bronze': 0, 'silver': 0, 'gold': 1}, 'australia': {'bronze': 1, 'silver': 1, 'gold': 0}, 'algeria': {'bronze': 0, 'silver': 2, 'gold': 0}, 'cuba': {'bronze': 1, 'silver': 0, 'gold': 0}, 'china': {'bronze': 2, 'silver': 2, 'gold': 2}, 'grenada': {'bronze': 0, 'silver': 1, 'gold': 0}, 'belgium': {'bronze': 0, 'silver': 0, 'gold': 1}, 'kazakhstan': {'bronze': 1, 'silver': 0, 'gold': 0}, 'new-zealand': {'bronze': 3, 'silver': 1, 'gold': 0}, 'spain': {'bronze': 0, 'silver': 1, 'gold': 1}, 'ukraine': {'bronze': 1, 'silver': 0, 'gold': 0}, 'south-africa': {'bronze': 0, 'silver': 2, 'gold': 2}, 'netherlands': {'bronze': 0, 'silver': 1, 'gold': 0}, 'denmark': {'bronze': 0, 'silver': 1, 'gold': 0}, 'great-britain-&amp;-n.-ireland': {'bronze': 4, 'silver': 1, 'gold': 2}, 'croatia': {'bronze': 1, 'silver': 0, 'gold': 2}, 'united-states': {'bronze': 9, 'silver': 10, 'gold': 13}, 'germany': {'bronze': 1, 'silver': 0, 'gold': 2}, 'poland': {'bronze': 1, 'silver': 1, 'gold': 1}, 'bulgaria': {'bronze': 0, 'silver': 1, 'gold': 0}}
badminton
{'south-korea': {'bronze': 1, 'silver': 0, 'gold': 0}, 'denmark': {'bronze': 1, 'silver': 1, 'gold': 0}, 'great-britain-&amp;-n.-ireland': {'bronze': 1, 'silver': 0, 'gold': 0}, 'indonesia': {'bronze': 0, 'silver': 0, 'gold': 1}, 'india': {'bronze': 0, 'silver': 1, 'gold': 0}, 'malaysia': {'bronze': 0, 'silver': 3, 'gold': 0}, 'china': {'bronze': 1, 'silver': 0, 'gold': 2}, 'japan': {'bronze': 1, 'silver': 0, 'gold': 1}, 'spain': {'bronze': 0, 'silver': 0, 'gold': 1}}
basketball
{'serbia': {'bronze': 1, 'silver': 1, 'gold': 0}, 'united-states': {'bronze': 0, 'silver': 0, 'gold': 2}, 'spain': {'bronze': 1, 'silver': 1, 'gold': 0}}
boxing
{'brazil': {'bronze': 0, 'silver': 0, 'gold': 1}, 'netherlands': {'bronze': 0, 'silver': 1, 'gold': 0}, 'mexico': {'bronze': 1, 'silver': 0, 'gold': 0}, 'germany': {'bronze': 1, 'silver': 0, 'gold': 0}, 'cuba': {'bronze': 3, 'silver': 0, 'gold': 3}, 'venezuela': {'bronze': 1, 'silver': 0, 'gold': 0}, 'great-britain-&amp;-n.-ireland': {'bronze': 1, 'silver': 1, 'gold': 1}, 'finland': {'bronze': 1, 'silver': 0, 'gold': 0}, 'azerbaijan': {'bronze': 1, 'silver': 1, 'gold': 0}, 'mongolia': {'bronze': 1, 'silver': 0, 'gold': 0}, 'france': {'bronze': 2, 'silver': 2, 'gold': 2}, 'uzbekistan': {'bronze': 2, 'silver': 2, 'gold': 3}, 'morocco': {'bronze': 1, 'silver': 0, 'gold': 0}, 'china': {'bronze': 3, 'silver': 1, 'gold': 0}, 'united-states': {'bronze': 1, 'silver': 1, 'gold': 1}, 'colombia': {'bronze': 1, 'silver': 1, 'gold': 0}, 'croatia': {'bronze': 1, 'silver': 0, 'gold': 0}, 'kazakhstan': {'bronze': 2, 'silver': 2, 'gold': 1}, 'russia': {'bronze': 3, 'silver': 1, 'gold': 1}}
canoeing
{'ukraine': {'bronze': 1, 'silver': 0, 'gold': 1}, 'brazil': {'bronze': 1, 'silver': 2, 'gold': 0}, 'australia': {'bronze': 2, 'silver': 0, 'gold': 0}, 'japan': {'bronze': 1, 'silver': 0, 'gold': 0}, 'russia': {'bronze': 1, 'silver': 0, 'gold': 0}, 'denmark': {'bronze': 0, 'silver': 1, 'gold': 0}, 'great-britain-&amp;-n.-ireland': {'bronze': 0, 'silver': 2, 'gold': 2}, 'serbia': {'bronze': 0, 'silver': 1, 'gold': 0}, 'azerbaijan': {'bronze': 1, 'silver': 1, 'gold': 0}, 'france': {'bronze': 1, 'silver': 1, 'gold': 1}, 'slovenia': {'bronze': 0, 'silver': 1, 'gold': 0}, 'belarus': {'bronze': 1, 'silver': 0, 'gold': 0}, 'poland': {'bronze': 1, 'silver': 1, 'gold': 0}, 'germany': {'bronze': 1, 'silver': 2, 'gold': 4}, 'slovakia': {'bronze': 0, 'silver': 2, 'gold': 1}, 'czech-republic': {'bronze': 2, 'silver': 1, 'gold': 0}, 'hungary': {'bronze': 0, 'silver': 0, 'gold': 3}, 'moldova': {'bronze': 1, 'silver': 0, 'gold': 0}, 'new-zealand': {'bronze': 1, 'silver': 1, 'gold': 1}, 'spain': {'bronze': 1, 'silver': 0, 'gold': 3}, 'lithuania': {'bronze': 1, 'silver': 0, 'gold': 0}}
cycling
{'canada': {'bronze': 2, 'silver': 0, 'gold': 0}, 'poland': {'bronze': 1, 'silver': 1, 'gold': 0}, 'netherlands': {'bronze': 1, 'silver': 3, 'gold': 2}, 'italy': {'bronze': 1, 'silver': 0, 'gold': 1}, 'malaysia': {'bronze': 1, 'silver': 0, 'gold': 0}, 'czech-republic': {'bronze': 0, 'silver': 1, 'gold': 0}, 'denmark': {'bronze': 2, 'silver': 1, 'gold': 0}, 'great-britain-&amp;-n.-ireland': {'bronze': 2, 'silver': 4, 'gold': 6}, 'new-zealand': {'bronze': 0, 'silver': 1, 'gold': 0}, 'belgium': {'bronze': 1, 'silver': 0, 'gold': 1}, 'sweden': {'bronze': 0, 'silver': 1, 'gold': 1}, 'australia': {'bronze': 1, 'silver': 1, 'gold': 0}, 'germany': {'bronze': 1, 'silver': 0, 'gold': 1}, 'united-states': {'bronze': 0, 'silver': 3, 'gold': 2}, 'colombia': {'bronze': 1, 'silver': 0, 'gold': 1}, 'switzerland': {'bronze': 0, 'silver': 0, 'gold': 2}, 'china': {'bronze': 0, 'silver': 0, 'gold': 1}, 'france': {'bronze': 1, 'silver': 0, 'gold': 0}, 'venezuela': {'bronze': 1, 'silver': 0, 'gold': 0}, 'russia': {'bronze': 1, 'silver': 2, 'gold': 0}, 'spain': {'bronze': 1, 'silver': 0, 'gold': 0}}
diving
{'canada': {'bronze': 2, 'silver': 0, 'gold': 0}, 'australia': {'bronze': 1, 'silver': 0, 'gold': 0}, 'italy': {'bronze': 1, 'silver': 1, 'gold': 0}, 'mexico': {'bronze': 0, 'silver': 1, 'gold': 0}, 'great-britain-&amp;-n.-ireland': {'bronze': 1, 'silver': 1, 'gold': 1}, 'malaysia': {'bronze': 0, 'silver': 1, 'gold': 0}, 'china': {'bronze': 1, 'silver': 2, 'gold': 7}, 'united-states': {'bronze': 1, 'silver': 2, 'gold': 0}, 'germany': {'bronze': 1, 'silver': 0, 'gold': 0}}
equestrian
{'canada': {'bronze': 1, 'silver': 0, 'gold': 0}, 'australia': {'bronze': 1, 'silver': 0, 'gold': 0}, 'great-britain-&amp;-n.-ireland': {'bronze': 0, 'silver': 1, 'gold': 2}, 'france': {'bronze': 0, 'silver': 1, 'gold': 2}, 'sweden': {'bronze': 0, 'silver': 1, 'gold': 0}, 'germany': {'bronze': 2, 'silver': 2, 'gold': 2}, 'united-states': {'bronze': 2, 'silver': 1, 'gold': 0}}
fencing
{'ukraine': {'bronze': 1, 'silver': 1, 'gold': 0}, 'romania': {'bronze': 0, 'silver': 0, 'gold': 1}, 'italy': {'bronze': 0, 'silver': 3, 'gold': 1}, 'tunisia': {'bronze': 1, 'silver': 0, 'gold': 0}, 'france': {'bronze': 1, 'silver': 1, 'gold': 1}, 'south-korea': {'bronze': 1, 'silver': 0, 'gold': 1}, 'china': {'bronze': 1, 'silver': 1, 'gold': 0}, 'united-states': {'bronze': 2, 'silver': 2, 'gold': 0}, 'hungary': {'bronze': 1, 'silver': 1, 'gold': 2}, 'russia': {'bronze': 2, 'silver': 1, 'gold': 4}}
football
{'brazil': {'bronze': 0, 'silver': 0, 'gold': 1}, 'canada': {'bronze': 1, 'silver': 0, 'gold': 0}, 'sweden': {'bronze': 0, 'silver': 1, 'gold': 0}, 'germany': {'bronze': 0, 'silver': 1, 'gold': 1}, 'nigeria': {'bronze': 1, 'silver': 0, 'gold': 0}}
golf
{'great-britain-&amp;-n.-ireland': {'bronze': 0, 'silver': 0, 'gold': 1}, 'south-korea': {'bronze': 0, 'silver': 0, 'gold': 1}, 'sweden': {'bronze': 0, 'silver': 1, 'gold': 0}, 'china': {'bronze': 1, 'silver': 0, 'gold': 0}, 'united-states': {'bronze': 1, 'silver': 0, 'gold': 0}, 'new-zealand': {'bronze': 0, 'silver': 1, 'gold': 0}}
gymnastics
{'ukraine': {'bronze': 1, 'silver': 1, 'gold': 1}, 'canada': {'bronze': 0, 'silver': 0, 'gold': 1}, 'belarus': {'bronze': 0, 'silver': 0, 'gold': 1}, 'china': {'bronze': 4, 'silver': 1, 'gold': 0}, 'great-britain-&amp;-n.-ireland': {'bronze': 3, 'silver': 2, 'gold': 2}, 'brazil': {'bronze': 1, 'silver': 2, 'gold': 0}, 'netherlands': {'bronze': 0, 'silver': 0, 'gold': 1}, 'germany': {'bronze': 1, 'silver': 0, 'gold': 1}, 'united-states': {'bronze': 2, 'silver': 6, 'gold': 4}, 'greece': {'bronze': 0, 'silver': 0, 'gold': 1}, 'switzerland': {'bronze': 1, 'silver': 0, 'gold': 0}, 'japan': {'bronze': 1, 'silver': 0, 'gold': 2}, 'bulgaria': {'bronze': 1, 'silver': 0, 'gold': 0}, 'russia': {'bronze': 3, 'silver': 5, 'gold': 3}, 'spain': {'bronze': 0, 'silver': 1, 'gold': 0}, 'north-korea': {'bronze': 0, 'silver': 0, 'gold': 1}}
handball
{'denmark': {'bronze': 0, 'silver': 0, 'gold': 1}, 'germany': {'bronze': 1, 'silver': 0, 'gold': 0}, 'russia': {'bronze': 0, 'silver': 0, 'gold': 1}, 'norway': {'bronze': 1, 'silver': 0, 'gold': 0}, 'france': {'bronze': 0, 'silver': 2, 'gold': 0}}
hockey
{'belgium': {'bronze': 0, 'silver': 1, 'gold': 0}, 'argentina': {'bronze': 0, 'silver': 0, 'gold': 1}, 'netherlands': {'bronze': 0, 'silver': 1, 'gold': 0}, 'germany': {'bronze': 2, 'silver': 0, 'gold': 0}, 'great-britain-&amp;-n.-ireland': {'bronze': 0, 'silver': 0, 'gold': 1}}
judo
{'portugal': {'bronze': 1, 'silver': 0, 'gold': 0}, 'kosovo': {'bronze': 0, 'silver': 0, 'gold': 1}, 'azerbaijan': {'bronze': 0, 'silver': 2, 'gold': 0}, 'uzbekistan': {'bronze': 2, 'silver': 0, 'gold': 0}, 'belgium': {'bronze': 1, 'silver': 0, 'gold': 0}, 'colombia': {'bronze': 0, 'silver': 1, 'gold': 0}, 'japan': {'bronze': 8, 'silver': 1, 'gold': 3}, 'brazil': {'bronze': 2, 'silver': 0, 'gold': 1}, 'italy': {'bronze': 0, 'silver': 1, 'gold': 1}, 'mongolia': {'bronze': 0, 'silver': 1, 'gold': 0}, 'france': {'bronze': 1, 'silver': 2, 'gold': 2}, 'argentina': {'bronze': 0, 'silver': 0, 'gold': 1}, 'israel': {'bronze': 2, 'silver': 0, 'gold': 0}, 'cuba': {'bronze': 0, 'silver': 1, 'gold': 0}, 'slovenia': {'bronze': 1, 'silver': 0, 'gold': 1}, 'netherlands': {'bronze': 1, 'silver': 0, 'gold': 0}, 'china': {'bronze': 2, 'silver': 0, 'gold': 0}, 'czech-republic': {'bronze': 0, 'silver': 0, 'gold': 1}, 'kazakhstan': {'bronze': 1, 'silver': 1, 'gold': 0}, 'georgia': {'bronze': 1, 'silver': 1, 'gold': 0}, 'south-korea': {'bronze': 1, 'silver': 2, 'gold': 0}, 'great-britain-&amp;-n.-ireland': {'bronze': 1, 'silver': 0, 'gold': 0}, 'united-states': {'bronze': 0, 'silver': 1, 'gold': 1}, 'germany': {'bronze': 1, 'silver': 0, 'gold': 0}, 'russia': {'bronze': 1, 'silver': 0, 'gold': 2}, 'united-arab-emirates': {'bronze': 1, 'silver': 0, 'gold': 0}}
modern-pentathlon
{'ukraine': {'bronze': 0, 'silver': 1, 'gold': 0}, 'australia': {'bronze': 0, 'silver': 0, 'gold': 1}, 'mexico': {'bronze': 1, 'silver': 0, 'gold': 0}, 'poland': {'bronze': 1, 'silver': 0, 'gold': 0}, 'france': {'bronze': 0, 'silver': 1, 'gold': 0}, 'russia': {'bronze': 0, 'silver': 0, 'gold': 1}}
rowing
{'canada': {'bronze': 0, 'silver': 1, 'gold': 0}, 'poland': {'bronze': 1, 'silver': 0, 'gold': 1}, 'south-africa': {'bronze': 0, 'silver': 1, 'gold': 0}, 'netherlands': {'bronze': 1, 'silver': 1, 'gold': 1}, 'china': {'bronze': 2, 'silver': 0, 'gold': 0}, 'estonia': {'bronze': 1, 'silver': 0, 'gold': 0}, 'czech-republic': {'bronze': 1, 'silver': 0, 'gold': 0}, 'denmark': {'bronze': 1, 'silver': 1, 'gold': 0}, 'great-britain-&amp;-n.-ireland': {'bronze': 0, 'silver': 2, 'gold': 3}, 'italy': {'bronze': 2, 'silver': 0, 'gold': 0}, 'lithuania': {'bronze': 1, 'silver': 1, 'gold': 0}, 'romania': {'bronze': 1, 'silver': 0, 'gold': 0}, 'france': {'bronze': 1, 'silver': 0, 'gold': 1}, 'australia': {'bronze': 0, 'silver': 2, 'gold': 1}, 'croatia': {'bronze': 0, 'silver': 1, 'gold': 1}, 'united-states': {'bronze': 0, 'silver': 1, 'gold': 1}, 'ireland': {'bronze': 0, 'silver': 1, 'gold': 0}, 'switzerland': {'bronze': 0, 'silver': 0, 'gold': 1}, 'germany': {'bronze': 0, 'silver': 1, 'gold': 2}, 'norway': {'bronze': 2, 'silver': 0, 'gold': 0}, 'new-zealand': {'bronze': 0, 'silver': 1, 'gold': 2}}
rugby-sevens
{'canada': {'bronze': 1, 'silver': 0, 'gold': 0}, 'south-africa': {'bronze': 1, 'silver': 0, 'gold': 0}, 'australia': {'bronze': 0, 'silver': 0, 'gold': 1}, 'great-britain-&amp;-n.-ireland': {'bronze': 0, 'silver': 1, 'gold': 0}, 'fiji': {'bronze': 0, 'silver': 0, 'gold': 1}, 'new-zealand': {'bronze': 0, 'silver': 1, 'gold': 0}}
sailing
{'brazil': {'bronze': 0, 'silver': 0, 'gold': 1}, 'australia': {'bronze': 0, 'silver': 3, 'gold': 1}, 'russia': {'bronze': 1, 'silver': 0, 'gold': 0}, 'denmark': {'bronze': 2, 'silver': 0, 'gold': 0}, 'great-britain-&amp;-n.-ireland': {'bronze': 0, 'silver': 1, 'gold': 2}, 'france': {'bronze': 2, 'silver': 0, 'gold': 1}, 'slovenia': {'bronze': 0, 'silver': 1, 'gold': 0}, 'austria': {'bronze': 1, 'silver': 0, 'gold': 0}, 'netherlands': {'bronze': 0, 'silver': 0, 'gold': 2}, 'croatia': {'bronze': 0, 'silver': 1, 'gold': 1}, 'united-states': {'bronze': 1, 'silver': 0, 'gold': 0}, 'ireland': {'bronze': 0, 'silver': 1, 'gold': 0}, 'greece': {'bronze': 1, 'silver': 0, 'gold': 0}, 'china': {'bronze': 0, 'silver': 1, 'gold': 0}, 'argentina': {'bronze': 0, 'silver': 0, 'gold': 1}, 'germany': {'bronze': 1, 'silver': 0, 'gold': 0}, 'new-zealand': {'bronze': 1, 'silver': 2, 'gold': 1}}
shooting
{'brazil': {'bronze': 0, 'silver': 1, 'gold': 0}, 'croatia': {'bronze': 0, 'silver': 0, 'gold': 1}, 'great-britain-&amp;-n.-ireland': {'bronze': 2, 'silver': 0, 'gold': 0}, 'australia': {'bronze': 0, 'silver': 0, 'gold': 1}, 'italy': {'bronze': 0, 'silver': 3, 'gold': 4}, 'new-zealand': {'bronze': 0, 'silver': 1, 'gold': 0}, 'ukraine': {'bronze': 0, 'silver': 1, 'gold': 0}, 'russia': {'bronze': 2, 'silver': 2, 'gold': 0}, 'south-korea': {'bronze': 0, 'silver': 1, 'gold': 1}, 'sweden': {'bronze': 0, 'silver': 1, 'gold': 0}, 'vietnam': {'bronze': 0, 'silver': 1, 'gold': 1}, 'germany': {'bronze': 0, 'silver': 1, 'gold': 3}, 'united-states': {'bronze': 2, 'silver': 0, 'gold': 1}, 'greece': {'bronze': 1, 'silver': 0, 'gold': 1}, 'switzerland': {'bronze': 1, 'silver': 0, 'gold': 0}, 'china': {'bronze': 4, 'silver': 2, 'gold': 1}, 'france': {'bronze': 1, 'silver': 1, 'gold': 0}, 'independent-olympic-athletes': {'bronze': 1, 'silver': 0, 'gold': 1}, 'north-korea': {'bronze': 1, 'silver': 0, 'gold': 0}}
swimming
{'canada': {'bronze': 4, 'silver': 1, 'gold': 1}, 'brazil': {'bronze': 1, 'silver': 0, 'gold': 0}, 'south-africa': {'bronze': 0, 'silver': 3, 'gold': 0}, 'netherlands': {'bronze': 0, 'silver': 0, 'gold': 2}, 'italy': {'bronze': 2, 'silver': 1, 'gold': 1}, 'singapore': {'bronze': 0, 'silver': 0, 'gold': 1}, 'denmark': {'bronze': 1, 'silver': 0, 'gold': 1}, 'great-britain-&amp;-n.-ireland': {'bronze': 0, 'silver': 5, 'gold': 1}, 'greece': {'bronze': 0, 'silver': 1, 'gold': 0}, 'france': {'bronze': 1, 'silver': 2, 'gold': 0}, 'sweden': {'bronze': 1, 'silver': 1, 'gold': 1}, 'australia': {'bronze': 3, 'silver': 4, 'gold': 3}, 'china': {'bronze': 3, 'silver': 2, 'gold': 1}, 'united-states': {'bronze': 9, 'silver': 8, 'gold': 16}, 'japan': {'bronze': 3, 'silver': 2, 'gold': 2}, 'belgium': {'bronze': 0, 'silver': 1, 'gold': 0}, 'hungary': {'bronze': 2, 'silver': 2, 'gold': 3}, 'belarus': {'bronze': 1, 'silver': 0, 'gold': 0}, 'kazakhstan': {'bronze': 0, 'silver': 0, 'gold': 1}, 'russia': {'bronze': 2, 'silver': 2, 'gold': 0}, 'spain': {'bronze': 1, 'silver': 0, 'gold': 1}}
synchronised-swimming
{'japan': {'bronze': 2, 'silver': 0, 'gold': 0}, 'china': {'bronze': 0, 'silver': 2, 'gold': 0}, 'russia': {'bronze': 0, 'silver': 0, 'gold': 2}}
table-tennis
{'japan': {'bronze': 2, 'silver': 1, 'gold': 0}, 'china': {'bronze': 0, 'silver': 2, 'gold': 4}, 'germany': {'bronze': 1, 'silver': 1, 'gold': 0}, 'north-korea': {'bronze': 1, 'silver': 0, 'gold': 0}}
taekwondo
{'brazil': {'bronze': 1, 'silver': 0, 'gold': 0}, 'turkey': {'bronze': 1, 'silver': 0, 'gold': 0}, 'dominican-republic': {'bronze': 1, 'silver': 0, 'gold': 0}, 'iran': {'bronze': 1, 'silver': 0, 'gold': 0}, 'mexico': {'bronze': 0, 'silver': 1, 'gold': 0}, 'egypt': {'bronze': 1, 'silver': 0, 'gold': 0}, 'ivory-coast': {'bronze': 1, 'silver': 0, 'gold': 1}, 'great-britain-&amp;-n.-ireland': {'bronze': 1, 'silver': 1, 'gold': 1}, 'serbia': {'bronze': 0, 'silver': 1, 'gold': 0}, 'azerbaijan': {'bronze': 2, 'silver': 0, 'gold': 1}, 'france': {'bronze': 0, 'silver': 1, 'gold': 0}, 'south-korea': {'bronze': 3, 'silver': 0, 'gold': 2}, 'jordan': {'bronze': 0, 'silver': 0, 'gold': 1}, 'united-states': {'bronze': 1, 'silver': 0, 'gold': 0}, 'tunisia': {'bronze': 1, 'silver': 0, 'gold': 0}, 'thailand': {'bronze': 1, 'silver': 1, 'gold': 0}, 'china': {'bronze': 0, 'silver': 0, 'gold': 2}, 'niger': {'bronze': 0, 'silver': 1, 'gold': 0}, 'russia': {'bronze': 0, 'silver': 1, 'gold': 0}, 'spain': {'bronze': 1, 'silver': 1, 'gold': 0}}
tennis
{'romania': {'bronze': 0, 'silver': 1, 'gold': 0}, 'great-britain-&amp;-n.-ireland': {'bronze': 0, 'silver': 0, 'gold': 1}, 'puerto-rico': {'bronze': 0, 'silver': 0, 'gold': 1}, 'germany': {'bronze': 0, 'silver': 1, 'gold': 0}, 'united-states': {'bronze': 1, 'silver': 1, 'gold': 1}, 'japan': {'bronze': 1, 'silver': 0, 'gold': 0}, 'switzerland': {'bronze': 0, 'silver': 1, 'gold': 0}, 'czech-republic': {'bronze': 3, 'silver': 0, 'gold': 0}, 'argentina': {'bronze': 0, 'silver': 1, 'gold': 0}, 'russia': {'bronze': 0, 'silver': 0, 'gold': 1}, 'spain': {'bronze': 0, 'silver': 0, 'gold': 1}}
triathlon
{'switzerland': {'bronze': 0, 'silver': 1, 'gold': 0}, 'south-africa': {'bronze': 1, 'silver': 0, 'gold': 0}, 'great-britain-&amp;-n.-ireland': {'bronze': 1, 'silver': 1, 'gold': 1}, 'united-states': {'bronze': 0, 'silver': 0, 'gold': 1}}
volleyball
{'brazil': {'bronze': 0, 'silver': 1, 'gold': 2}, 'netherlands': {'bronze': 1, 'silver': 0, 'gold': 0}, 'italy': {'bronze': 0, 'silver': 2, 'gold': 0}, 'serbia': {'bronze': 0, 'silver': 1, 'gold': 0}, 'germany': {'bronze': 0, 'silver': 0, 'gold': 1}, 'united-states': {'bronze': 3, 'silver': 0, 'gold': 0}, 'china': {'bronze': 0, 'silver': 0, 'gold': 1}}
water-polo
{'italy': {'bronze': 1, 'silver': 1, 'gold': 0}, 'croatia': {'bronze': 0, 'silver': 1, 'gold': 0}, 'serbia': {'bronze': 0, 'silver': 0, 'gold': 1}, 'united-states': {'bronze': 0, 'silver': 0, 'gold': 1}, 'russia': {'bronze': 1, 'silver': 0, 'gold': 0}}
weightlifting
{'chinese-taipei': {'bronze': 1, 'silver': 0, 'gold': 1}, 'turkey': {'bronze': 0, 'silver': 1, 'gold': 0}, 'romania': {'bronze': 1, 'silver': 0, 'gold': 0}, 'georgia': {'bronze': 1, 'silver': 0, 'gold': 1}, 'iran': {'bronze': 0, 'silver': 0, 'gold': 2}, 'armenia': {'bronze': 0, 'silver': 2, 'gold': 0}, 'egypt': {'bronze': 2, 'silver': 0, 'gold': 0}, 'philippines': {'bronze': 0, 'silver': 1, 'gold': 0}, 'indonesia': {'bronze': 0, 'silver': 2, 'gold': 0}, 'lithuania': {'bronze': 1, 'silver': 0, 'gold': 0}, 'uzbekistan': {'bronze': 0, 'silver': 0, 'gold': 1}, 'south-korea': {'bronze': 1, 'silver': 0, 'gold': 0}, 'belarus': {'bronze': 0, 'silver': 2, 'gold': 0}, 'china': {'bronze': 0, 'silver': 2, 'gold': 5}, 'united-states': {'bronze': 1, 'silver': 0, 'gold': 0}, 'colombia': {'bronze': 1, 'silver': 0, 'gold': 1}, 'japan': {'bronze': 1, 'silver': 0, 'gold': 0}, 'thailand': {'bronze': 1, 'silver': 1, 'gold': 2}, 'kazakhstan': {'bronze': 3, 'silver': 1, 'gold': 1}, 'spain': {'bronze': 1, 'silver': 0, 'gold': 0}, 'north-korea': {'bronze': 0, 'silver': 3, 'gold': 1}}
wrestling
{'romania': {'bronze': 1, 'silver': 0, 'gold': 0}, 'tunisia': {'bronze': 1, 'silver': 0, 'gold': 0}, 'serbia': {'bronze': 0, 'silver': 0, 'gold': 1}, 'azerbaijan': {'bronze': 6, 'silver': 3, 'gold': 0}, 'uzbekistan': {'bronze': 3, 'silver': 0, 'gold': 0}, 'japan': {'bronze': 0, 'silver': 3, 'gold': 4}, 'turkey': {'bronze': 2, 'silver': 2, 'gold': 1}, 'italy': {'bronze': 1, 'silver': 0, 'gold': 0}, 'norway': {'bronze': 1, 'silver': 0, 'gold': 0}, 'canada': {'bronze': 0, 'silver': 0, 'gold': 1}, 'belarus': {'bronze': 2, 'silver': 1, 'gold': 0}, 'iran': {'bronze': 3, 'silver': 1, 'gold': 1}, 'cuba': {'bronze': 0, 'silver': 1, 'gold': 2}, 'india': {'bronze': 1, 'silver': 0, 'gold': 0}, 'south-korea': {'bronze': 1, 'silver': 0, 'gold': 0}, 'germany': {'bronze': 1, 'silver': 0, 'gold': 0}, 'armenia': {'bronze': 0, 'silver': 1, 'gold': 1}, 'kazakhstan': {'bronze': 2, 'silver': 1, 'gold': 0}, 'ukraine': {'bronze': 0, 'silver': 1, 'gold': 0}, 'georgia': {'bronze': 2, 'silver': 0, 'gold': 1}, 'denmark': {'bronze': 0, 'silver': 1, 'gold': 0}, 'poland': {'bronze': 1, 'silver': 0, 'gold': 0}, 'sweden': {'bronze': 2, 'silver': 0, 'gold': 0}, 'united-states': {'bronze': 1, 'silver': 0, 'gold': 2}, 'china': {'bronze': 2, 'silver': 0, 'gold': 0}, 'russia': {'bronze': 2, 'silver': 3, 'gold': 4}, 'bulgaria': {'bronze': 1, 'silver': 0, 'gold': 0}}

Create dataframe of medals


In [5]:
import numpy as np
all_countries_format = list(np.unique(all_countries_format))
all_countries_format.remove('Great Britain &amp; N. Ireland')
all_countries_format.append('Great Britain')
all_countries_format_list = list(np.unique(all_countries_format))

In [6]:
import pandas as pd

# Create an empty dataframe
columns = ['country','sport','medal','N']
df = pd.DataFrame(columns=columns)

# Identify all countries with at least 1 medal
countries_list = list(set(reduce(lambda x,y: x+y,sports_countries.values())))
countries_list = sorted(countries_list)
# Fill dataframe
for s in sports_names:
    if thtmls[s]:
        for i,c in enumerate(countries_list):
            ci = all_countries_format_list[i]
            for m in medal_names:
                if c in sports_countries[s]:
                    rowtemp = [ci, s, m, medals[s][c][m]]
                else:
                    rowtemp = [ci, s, m, 0]
                dftemp = pd.DataFrame([rowtemp], columns=columns)
                df =df.append(dftemp)

Save dataframe


In [7]:
df.to_csv('now_medals.csv')