{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# And the Oscar Goes to...\n", "\n", "
\n", "\n", "
\n", "\n", "
\n", "\n", "" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "\n", "import gc\n", "import json, re\n", "import unicodedata\n", "import random, math\n", "from pattern import web\n", "from HTMLParser import HTMLParser\n", "import requests\n", "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "pd.set_option('display.width', 500)\n", "pd.set_option('display.max_columns', 30)\n", "\n", "# set some nicer defaults for matplotlib\n", "from matplotlib import rcParams\n", "\n", "api_key = 'sdat77wpkdnuyvb9bqhz2y5v' #nicks api key for rotten tomatoes\n", "\n", "#these colors come from colorbrewer2.org. Each is an RGB triplet\n", "dark2_colors = [(0.10588235294117647, 0.6196078431372549, 0.4666666666666667),\n", " (0.8509803921568627, 0.37254901960784315, 0.00784313725490196),\n", " (0.4588235294117647, 0.4392156862745098, 0.7019607843137254),\n", " (0.9058823529411765, 0.1607843137254902, 0.5411764705882353),\n", " (0.4, 0.6509803921568628, 0.11764705882352941),\n", " (0.9019607843137255, 0.6705882352941176, 0.00784313725490196),\n", " (0.6509803921568628, 0.4627450980392157, 0.11372549019607843),\n", " (0.4, 0.4, 0.4)]\n", "\n", "rcParams['figure.figsize'] = (10, 6)\n", "rcParams['figure.dpi'] = 150\n", "rcParams['axes.color_cycle'] = dark2_colors\n", "rcParams['lines.linewidth'] = 2\n", "rcParams['axes.grid'] = False\n", "rcParams['axes.facecolor'] = 'white'\n", "rcParams['font.size'] = 14\n", "rcParams['patch.edgecolor'] = 'none'\n", "\n", "def remove_border(axes=None, top=False, right=False, left=True, bottom=True):\n", " \"\"\"\n", " Minimize chartjunk by stripping out unnecesary plot borders and axis ticks\n", " \n", " The top/right/left/bottom keywords toggle whether the corresponding plot border is drawn\n", " \"\"\"\n", " ax = axes or plt.gca()\n", " ax.spines['top'].set_visible(top)\n", " ax.spines['right'].set_visible(right)\n", " ax.spines['left'].set_visible(left)\n", " ax.spines['bottom'].set_visible(bottom)\n", " \n", " #turn off all ticks\n", " ax.yaxis.set_ticks_position('none')\n", " ax.xaxis.set_ticks_position('none')\n", " \n", " #now re-enable visibles\n", " if top:\n", " ax.xaxis.tick_top()\n", " if bottom:\n", " ax.xaxis.tick_bottom()\n", " if left:\n", " ax.yaxis.tick_left()\n", " if right:\n", " ax.yaxis.tick_right()\n", " \n", "def histogram_style():\n", " remove_border(left=False)\n", " plt.grid(False)\n", " plt.grid(axis='y', color='w', linestyle='-', lw=1)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 106 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Getting the Oscar Data**\n", "We are pulling the Oscar Award and Nomination data from [IMDB](http://www.imdb.com/oscars/). From this we construct a dictionary with the following format:\n", "
\n",
      "Oscars: {\n",
      "    Year: {\n",
      "        Award: {\n",
      "            Winner: (name,id)\n",
      "            Nominations: [(name,id)]\n",
      "        }\n",
      "    }\n",
      "}\n",
      "
" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\"\"\"\n", "EXAMPLE OF USAGE:\n", "allDataEver = get_all_years()\n", "allDataEver = repair_dict(oscarArray, allDataEver)\n", "print allDataEver[2013]['Best Cinematography']\n", "print get_by_award_all_years('Best Picture', allDataEver) \n", "print get_by_year(1952)\n", "\n", "#official oscar titles\n", "#note Best Picture instead of Best Achievement in Picture etc. \n", "#note that not all oscars exist for every year, i.e. best black and white \n", "\n", "oscarArray = ['Best Picture', 'Best Actor in a Leading Role', \n", "'Best Actress in a Leading Role', 'Best Actor in a Supporting Role', \n", "'Best Actress in a Supporting Role', 'Best Actor in a Supporting Role', \n", "'Best Director', 'Best Assistant Director', 'Best Writing, Screenplay Written Directly for the Screen', \n", "'Best Writing, Screenplay Based on Material from Another Medium', 'Best Cinematography', \n", "'Best Art Direction-Set Decoration', 'Best Costume Design', 'Best Sound', 'Best Film Editing', \n", "'Best Sound Editing','Best Effects, Visual Effects', 'Best Makeup', 'Best Music, Original Song', \n", "'Best Music, Original Score', 'Best Short Film, Animated', 'Best Short Film, Live Action', 'Best Documentary, Short Subjects', \n", "'Best Documentary, Features', 'Best Foreign Language Film']\n", "\"\"\"\n", "\n", "# HELPER FUNCTIONS\n", "\n", "from pattern.web import URL, DOM, plaintext, strip_between\n", "from pattern.web import NODE, TEXT, COMMENT, ELEMENT, DOCUMENT\n", "\n", "# get rid of accents etc.\n", "def fixWeirdChars(phrase):\n", " HexEncode = ['E9','E1','E0','B7']\n", " matchObj = re.search(r'&#x..', phrase)\n", " if matchObj:\n", " accentedHex = matchObj.group()\n", " HexPart = accentedHex.split('x')[1]\n", " if(HexPart in HexEncode):\n", " phrase = re.sub((accentedHex+';'), 'e', phrase)\n", " else:\n", " Hexy = \"0x\" + HexPart\n", " Num = int(Hexy, 16)\n", " Char = chr(Num)\n", " phrase = re.sub((accentedHex+';'), Char, phrase)\n", "\n", " matchAgain = re.search(r'&#x..', phrase)\n", " return fixWeirdChars(phrase)\n", " return phrase\n", "\n", "\n", "def clean_unicode(s):\n", "\ts = str(s)\n", "\ts.encode('ascii','ignore')\n", "\ts = fixWeirdChars(s)\n", " \treturn str(s)\n", "\n", "# repair dictionary names\n", "def repair_dict(dictionary):\n", "\tfor year in dictionary:\n", "\t\tfor award in dictionary[year]:\n", "\t\t\tif(award == 'Best Motion Picture of the Year'):\n", "\t\t\t\tdictionary[year]['Best Picture'] = dictionary[year]['Best Motion Picture of the Year']\n", "\t\t\t\tdel dictionary[year]['Best Motion Picture of the Year']\n", "\n", "\t\t\tif(award == 'Best Performance by an Actor in a Leading Role'):\n", "\t\t\t\tdictionary[year]['Best Actor in a Leading Role'] = dictionary[year]['Best Performance by an Actor in a Leading Role']\n", "\t\t\t\tdel dictionary[year]['Best Performance by an Actor in a Leading Role']\n", "\n", "\t\t\tif(award == 'Best Performance by an Actress in a Leading Role'):\n", "\t\t\t\tdictionary[year]['Best Actress in a Leading Role'] = dictionary[year]['Best Performance by an Actress in a Leading Role']\n", "\t\t\t\tdel dictionary[year]['Best Performance by an Actress in a Leading Role']\n", "\n", "\t\t\tif(award == 'Best Performance by an Actress in a Supporting Role'):\n", "\t\t\t\tdictionary[year]['Best Actress in a Supporting Role'] = dictionary[year]['Best Performance by an Actress in a Supporting Role']\n", "\t\t\t\tdel dictionary[year]['Best Performance by an Actress in a Supporting Role']\n", "\n", "\t\t\tif(award == 'Best Performance by an Actor in a Supporting Role'):\n", "\t\t\t\tdictionary[year]['Best Actor in a Supporting Role'] = dictionary[year]['Best Performance by an Actor in a Supporting Role']\n", "\t\t\t\tdel dictionary[year]['Best Performance by an Actor in a Supporting Role']\n", "\n", "\t\t\tif(award == 'Best Writing, Original Screenplay'):\n", "\t\t\t\tdictionary[year]['Best Writing, Screenplay Written Directly for the Screen'] = dictionary[year]['Best Writing, Original Screenplay']\n", "\t\t\t\tdel dictionary[year]['Best Writing, Original Screenplay']\n", "\n", "\t\t\tif(award == 'Best Writing, Adapted Screenplay'):\n", "\t\t\t\tdictionary[year]['Best Writing, Screenplay Based on Material from Another Medium'] = dictionary[year]['Best Writing, Adapted Screenplay']\n", "\t\t\t\tdel dictionary[year]['Best Writing, Adapted Screenplay']\n", "\n", "\t\t\tif(award == 'Best Foreign Language Film of the Year'):\n", "\t\t\t\tnewAwardName = award\n", "\t\t\t\tnewAwardName = re.sub(' of the Year', '', newAwardName)\n", "\t\t\t\tdictionary[year][newAwardName] = dictionary[year][award]\n", "\t\t\t\tdel dictionary[year][award]\n", "\n", "\t\t\t# check to see if it includes best achievement\n", "\t\t\tif('Best Achievement' in award):\n", "\t\t\t\tif(award == 'Best Achievement in Directing'):\n", "\t\t\t\t\tdictionary[year]['Best Director'] = dictionary[year]['Best Achievement in Directing']\n", "\t\t\t\t\tdel dictionary[year]['Best Achievement in Directing']\n", "\t\t\t\telse:\n", "\t\t\t\t\tnewAwardName = award\n", "\t\t\t\t\tif('Mixing' in award):\n", "\t\t\t\t\t\tnewAwardName = re.sub(' Mixing', '', newAwardName)\n", "\n", "\t\t\t\t\tif(' and Hairstyling' in award):\n", "\t\t\t\t\t\tnewAwardName = re.sub(' and Hairstyling', '', newAwardName)\n", "\n", "\t\t\t\t\tif('Music Written for Motion Pictures, Original Song' or 'Music Written for Motion Pictures, Original Score' in award):\n", "\t\t\t\t\t\tnewAwardName = re.sub(' Written for Motion Pictures', '', newAwardName)\n", "\n", "\n", "\t\t\t\t\tnewAwardName = re.sub(' Achievement in', '', newAwardName)\n", "\n", "\t\t\t\t\tif 'Visual Effects' in newAwardName:\n", "\t\t\t\t\t\t#add comma\n", "\t\t\t\t\t\tnewAwardName = 'Best Effects, Visual Effects' \n", "\n", "\t\t\t\t\tdictionary[year][newAwardName] = dictionary[year][award]\n", "\t\t\t\t\tdel dictionary[year][award]\n", "\t\t\t\t\t\n", "\treturn dictionary\n", "\n", "# END OF HELPER FUNCTIONS\n", "\n", "\n", "\"\"\"\n", "Gets the movie titles for all Oscars for a given year. i.e. get_by_year(2012)\n", "Function\n", "--------\n", "get_by_year\n", "\n", "Input int year\n", "\n", "Outputs a dict of the format:\n", "'Award':\n", "\t'nominees': ['a', 'b', 'c', 'd'] \n", "\t'winner': 'f'\n", "\n", "\"\"\"\n", "def get_by_year(year):\n", "\n", " url = URL(\"http://www.imdb.com/event/ev0000003/\" + str(year))\n", " dom = DOM(url.download(cached=True))\n", " \n", " dictAll = {}\n", " \n", " awards = dom.by_class('award')\n", " awardTitles = awards[0].by_tag('h2')\n", " awardList = []\n", " for award in awardTitles:\n", " awardList.append(award.content)\n", "\n", " prize = awards[0].by_tag('blockquote')\n", " for index, title in enumerate(prize[1:25]):\n", " winner = title.by_tag('strong')[0].by_tag('a')[0].content\n", " winner_id = str(title.by_tag('strong')[0].by_tag('a')[0].attrs['href'][-8:-1])\n", " \n", " nomineeList = []\n", " for each in title.by_tag('strong')[1::]:\n", " name = each.by_tag('a')[0].content\n", " id = str(each.by_tag('a')[0].attrs['href'][-8:-1])\n", " nomineeList.append((clean_unicode(name),id))\n", " \n", " winnersAndNominees = {}\n", " winnersAndNominees['winner'] = (clean_unicode(winner),winner_id)\n", " winnersAndNominees['nominees'] = nomineeList\n", " dictAll[awardList[index]] = winnersAndNominees\n", " return dictAll\n", "\n", "\n", "\n", "\"\"\"\n", "Gets the movie titles for all Oscars for all years between 1935 and 2013.\n", "Function\n", "--------\n", "get_all_years()\n", "\n", "\n", "Outputs a dict of dicts the format:\n", "'Year':\n", "\t'Award':\n", "\t\t'nominees': ['a', 'b', 'c', 'd'] \n", "\t\t'winner': 'f'\n", "\"\"\"\n", "\n", "def get_all_years():\n", "\thugeDict = {} #lol\n", "\tfor year in range(2003, 2014):\n", "\t\thugeDict[year] = get_by_year(str(year))\n", "\treturn hugeDict\n", "\n", "\n", "\n", "'''\n", "Gets all data for every year for a specific oscar\n", "Function\n", "------\n", "get_by_award_all_years(oscar, dictionary)\n", "\n", "Outputs a dict of the format\n", "'Year':\n", "\t'nominees': ['a', 'b', 'c', 'd'] \n", "\t'winner': 'f'\n", " \n", "'''\n", "def get_by_award_all_years(oscar, dictionary):\n", "\tyearDict = {}\n", "\tfor year in dictionary:\n", "\t\tif oscar in dictionary[year].keys():\n", "\t\t\tyearDict[year] = dictionary[year][oscar]\n", "\treturn yearDict" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 89 }, { "cell_type": "code", "collapsed": false, "input": [ "# oscars = get_all_years();\n", "# oscars = repair_dict(oscars)\n", "# f = open(\"data/oscars.json\",\"w+\")\n", "# json.dump(oscars,f)\n", "# f.close()\n", "\n", "# load an existing dictionary\n", "f = open(\"data/oscars.json\",\"rb\")\n", "oscars = json.load(f)\n", "f.close()\n", "print oscars" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "{u'2003': {u'Best Actor in a Supporting Role': {u'nominees': [[u'Catch Me If You Can', u'0264464'], [u'Chicago', u'0299658'], [u'The Hours', u'0274558'], [u'Road to Perdition', u'0257044']], u'winner': [u'Adaptation.', u'0268126']}, u'Best Documentary, Features': {u'nominees': [[u'Daughter from Danang', u'0303281'], [u'Winged Migration', u'0301727'], [u'Prisoner of Paradise', u'0316013'], [u'Spellbound', u'0334405']], u'winner': [u'Bowling for Columbine', u'0310793']}, u'Best Writing, Screenplay Written Directly for the Screen': {u'nominees': [[u'Far from Heaven', u'0297884'], [u'Gangs of New York', u'0217505'], [u'My Big Fat Greek Wedding', u'0259446'], [u'Y Tu Mame Tambien', u'0245574']], u'winner': [u'Talk to Her', u'0287467']}, u'Best Foreign Language Film': {u'nominees': [[u'The Crime of Father Amaro', u'0313196'], [u'The Man Without a Past', u'0311519'], [u'Hero', u'0299977'], [u'Zus & zo', u'0245157']], u'winner': [u'Nowhere in Africa', u'0161860']}, u'Best Short Film, Live Action': {u'nominees': [[u'Gridlock', u'0281850'], [u'Dog', u'0303350'], [u\"I'll Wait for the Next One...\", u'0325638'], [u'Johnny Flynton', u'0329245']], u'winner': [u'Der er en yndig mand', u'0340071']}, u'Best Music, Original Song': {u'nominees': [[u'Chicago', u'0299658'], [u'Frida', u'0120679'], [u'Gangs of New York', u'0217505'], [u'The Wild Thornberrys Movie', u'0282120']], u'winner': [u'8 Mile', u'0298203']}, u'Best Music, Original Score': {u'nominees': [[u'Catch Me If You Can', u'0264464'], [u'Far from Heaven', u'0297884'], [u'The Hours', u'0274558'], [u'Road to Perdition', u'0257044']], u'winner': [u'Frida', u'0120679']}, u'Best Art Direction-Set Decoration': {u'nominees': [[u'Frida', u'0120679'], [u'Gangs of New York', u'0217505'], [u'The Lord of the Rings: The Two Towers', u'0167261'], [u'Road to Perdition', u'0257044']], u'winner': [u'Chicago', u'0299658']}, u'Best Costume Design': {u'nominees': [[u'Frida', u'0120679'], [u'Gangs of New York', u'0217505'], [u'The Hours', u'0274558'], [u'The Pianist', u'0253474']], u'winner': [u'Chicago', u'0299658']}, u'Best Short Film, Animated': {u'nominees': [[u'The Cathedral', u'0351167'], [u\"Mike's New Car\", u'0323250'], [u'Mount Head', u'0351382'], [u'Rocks', u'0330801']], u'winner': [u'The Chubbchubbs!', u'0331218']}, u'Best Makeup': {u'nominees': [[u'The Time Machine', u'0268695']], u'winner': [u'Frida', u'0120679']}, u'Best Film Editing': {u'nominees': [[u'Gangs of New York', u'0217505'], [u'The Hours', u'0274558'], [u'The Lord of the Rings: The Two Towers', u'0167261'], [u'The Pianist', u'0253474']], u'winner': [u'Chicago', u'0299658']}, u'Best Animated Feature': {u'nominees': [[u'Lilo & Stitch', u'0275847'], [u'Treasure Planet', u'0133240'], [u'Ice Age', u'0268380'], [u'Spirit: Stallion of the Cimarron', u'0166813']], u'winner': [u'Spirited Away', u'0245429']}, u'Best Writing, Screenplay Based on Material from Another Medium': {u'nominees': [[u'About a Boy', u'0276751'], [u'Adaptation.', u'0268126'], [u'Chicago', u'0299658'], [u'The Hours', u'0274558']], u'winner': [u'The Pianist', u'0253474']}, u'Best Sound Editing': {u'nominees': [[u'Minority Report', u'0181689'], [u'Road to Perdition', u'0257044']], u'winner': [u'The Lord of the Rings: The Two Towers', u'0167261']}, u'Best Actress in a Supporting Role': {u'nominees': [[u'About Schmidt', u'0257360'], [u'Adaptation.', u'0268126'], [u'Chicago', u'0299658'], [u'The Hours', u'0274558']], u'winner': [u'Chicago', u'0299658']}, u'Best Cinematography': {u'nominees': [[u'Chicago', u'0299658'], [u'Far from Heaven', u'0297884'], [u'Gangs of New York', u'0217505'], [u'The Pianist', u'0253474']], u'winner': [u'Road to Perdition', u'0257044']}, u'Best Documentary, Short Subjects': {u'nominees': [[u'The Collector of Bedford Street', u'0325193'], [u'Mighty Times: The Legacy of Rosa Parks', u'0353737'], [u\"Why Can't We Be a Family Again?\", u'0344563']], u'winner': [u'Twin Towers', u'0344503']}, u'Best Sound': {u'nominees': [[u'Gangs of New York', u'0217505'], [u'The Lord of the Rings: The Two Towers', u'0167261'], [u'Road to Perdition', u'0257044'], [u'Spider-Man', u'0145487']], u'winner': [u'Chicago', u'0299658']}, u'Best Director': {u'nominees': [[u'Chicago', u'0299658'], [u'Gangs of New York', u'0217505'], [u'Talk to Her', u'0287467'], [u'The Hours', u'0274558']], u'winner': [u'The Pianist', u'0253474']}, u'Best Actor in a Leading Role': {u'nominees': [[u'About Schmidt', u'0257360'], [u'Adaptation.', u'0268126'], [u'Gangs of New York', u'0217505'], [u'The Quiet American', u'0258068']], u'winner': [u'The Pianist', u'0253474']}, u'Best Picture': {u'nominees': [[u'Gangs of New York', u'0217505'], [u'The Hours', u'0274558'], [u'The Lord of the Rings: The Two Towers', u'0167261'], [u'The Pianist', u'0253474']], u'winner': [u'Chicago', u'0299658']}, u'Best Actress in a Leading Role': {u'nominees': [[u'Chicago', u'0299658'], [u'Far from Heaven', u'0297884'], [u'Frida', u'0120679'], [u'Unfaithful', u'0250797']], u'winner': [u'The Hours', u'0274558']}, u'Best Visual Effects': {u'nominees': [[u'Spider-Man', u'0145487'], [u'Star Wars: Episode II - Attack of the Clones', u'0121765']], u'winner': [u'The Lord of the Rings: The Two Towers', u'0167261']}}, u'2006': {u'Best Actor in a Supporting Role': {u'nominees': [[u'Brokeback Mountain', u'0388795'], [u'Cinderella Man', u'0352248'], [u'Crash', u'0375679'], [u'A History of Violence', u'0399146']], u'winner': [u'Syriana', u'0365737']}, u'Best Documentary, Features': {u'nominees': [[u\"Darwin's Nightmare\", u'0424024'], [u'Enron: The Smartest Guys in the Room', u'1016268'], [u'Murderball', u'0436613'], [u'Street Fight', u'0457496']], u'winner': [u'March of the Penguins', u'0428803']}, u'Best Writing, Screenplay Written Directly for the Screen': {u'nominees': [[u'Good Night, and Good Luck.', u'0433383'], [u'Match Point', u'0416320'], [u'The Squid and the Whale', u'0367089'], [u'Syriana', u'0365737']], u'winner': [u'Crash', u'0375679']}, u'Best Foreign Language Film': {u'nominees': [[u\"Don't Tell\", u'0443446'], [u'Joyeux Noel', u'0424205'], [u'Paradise Now', u'0445620'], [u'Sophie Scholl: The Final Days', u'0426578']], u'winner': [u'Tsotsi', u'0468565']}, u'Best Film Editing': {u'nominees': [[u'Cinderella Man', u'0352248'], [u'The Constant Gardener', u'0387131'], [u'Munich', u'0408306'], [u'Walk the Line', u'0358273']], u'winner': [u'Crash', u'0375679']}, u'Best Art Direction': {u'nominees': [[u'Good Night, and Good Luck.', u'0433383'], [u'Harry Potter and the Goblet of Fire', u'0330373'], [u'King Kong', u'0360717'], [u'Pride & Prejudice', u'0414387']], u'winner': [u'Memoirs of a Geisha', u'0397535']}, u'Best Short Film, Live Action': {u'nominees': [[u'The Runaway', u'0452139'], [u'Cashback', u'0409799'], [u'Our Time Is Up', u'0427617'], [u'The Last Farm', u'0461847']], u'winner': [u'Six Shooter', u'0425458']}, u'Best Music, Original Song': {u'nominees': [[u'Crash', u'0375679'], [u'Transamerica', u'0407265']], u'winner': [u'Hustle & Flow', u'0410097']}, u'Best Music, Original Score': {u'nominees': [[u'The Constant Gardener', u'0387131'], [u'Memoirs of a Geisha', u'0397535'], [u'Munich', u'0408306'], [u'Pride & Prejudice', u'0414387']], u'winner': [u'Brokeback Mountain', u'0388795']}, u'Best Short Film, Animated': {u'nominees': [[u'9', u'0443424'], [u'Badgered', u'0455912'], [u'The Mysterious Geographic Explorations of Jasper Morello', u'0469146'], [u'One Man Band', u'0479113']], u'winner': [u'The Moon and the Son: An Imagined Conversation', u'0449619']}, u'Best Makeup': {u'nominees': [[u'Cinderella Man', u'0352248'], [u'Star Wars: Episode III - Revenge of the Sith', u'0121766']], u'winner': [u'The Chronicles of Narnia: The Lion, the Witch and the Wardrobe', u'0363771']}, u'Best Costume Design': {u'nominees': [[u'Charlie and the Chocolate Factory', u'0367594'], [u'Mrs Henderson Presents', u'0413015'], [u'Pride & Prejudice', u'0414387'], [u'Walk the Line', u'0358273']], u'winner': [u'Memoirs of a Geisha', u'0397535']}, u'Best Writing, Screenplay Based on Material from Another Medium': {u'nominees': [[u'Capote', u'0379725'], [u'The Constant Gardener', u'0387131'], [u'A History of Violence', u'0399146'], [u'Munich', u'0408306']], u'winner': [u'Brokeback Mountain', u'0388795']}, u'Best Sound Editing': {u'nominees': [[u'Memoirs of a Geisha', u'0397535'], [u'War of the Worlds', u'0407304']], u'winner': [u'King Kong', u'0360717']}, u'Best Actress in a Supporting Role': {u'nominees': [[u'Brokeback Mountain', u'0388795'], [u'Capote', u'0379725'], [u'Junebug', u'0418773'], [u'North Country', u'0395972']], u'winner': [u'The Constant Gardener', u'0387131']}, u'Best Cinematography': {u'nominees': [[u'Batman Begins', u'0372784'], [u'Brokeback Mountain', u'0388795'], [u'Good Night, and Good Luck.', u'0433383'], [u'The New World', u'0402399']], u'winner': [u'Memoirs of a Geisha', u'0397535']}, u'Best Documentary, Short Subjects': {u'nominees': [[u'God Sleeps in Rwanda', u'0480247'], [u'The Death of Kevin Carter: Casualty of the Bang Bang Club', u'0439676'], [u'The Mushroom Club', u'0762119']], u'winner': [u'A Note of Triumph: The Golden Age of Norman Corwin', u'0491795']}, u'Best Sound': {u'nominees': [[u'The Chronicles of Narnia: The Lion, the Witch and the Wardrobe', u'0363771'], [u'Memoirs of a Geisha', u'0397535'], [u'Walk the Line', u'0358273'], [u'War of the Worlds', u'0407304']], u'winner': [u'King Kong', u'0360717']}, u'Best Director': {u'nominees': [[u'Capote', u'0379725'], [u'Crash', u'0375679'], [u'Good Night, and Good Luck.', u'0433383'], [u'Munich', u'0408306']], u'winner': [u'Brokeback Mountain', u'0388795']}, u'Best Actor in a Leading Role': {u'nominees': [[u'Brokeback Mountain', u'0388795'], [u'Good Night, and Good Luck.', u'0433383'], [u'Hustle & Flow', u'0410097'], [u'Walk the Line', u'0358273']], u'winner': [u'Capote', u'0379725']}, u'Best Picture': {u'nominees': [[u'Brokeback Mountain', u'0388795'], [u'Capote', u'0379725'], [u'Good Night, and Good Luck.', u'0433383'], [u'Munich', u'0408306']], u'winner': [u'Crash', u'0375679']}, u'Best Actress in a Leading Role': {u'nominees': [[u'Mrs Henderson Presents', u'0413015'], [u'North Country', u'0395972'], [u'Pride & Prejudice', u'0414387'], [u'Transamerica', u'0407265']], u'winner': [u'Walk the Line', u'0358273']}, u'Best Effects, Visual Effects': {u'nominees': [[u'The Chronicles of Narnia: The Lion, the Witch and the Wardrobe', u'0363771'], [u'War of the Worlds', u'0407304']], u'winner': [u'King Kong', u'0360717']}, u'Best Animated Feature Film of the Year': {u'nominees': [[u'Corpse Bride', u'0121164'], [u\"Howl's Moving Castle\", u'0347149']], u'winner': [u'The Curse of the Were-Rabbit', u'0312004']}}, u'2007': {u'Best Actor in a Supporting Role': {u'nominees': [[u'Blood Diamond', u'0450259'], [u'The Departed', u'0407887'], [u'Dreamgirls', u'0443489'], [u'Little Children', u'0404203']], u'winner': [u'Little Miss Sunshine', u'0449059']}, u'Best Documentary, Features': {u'nominees': [[u'P.O.V.', u'0795174'], [u'Deliver Us from Evil', u'0814075'], [u'Iraq in Fragments', u'0492466'], [u'Jesus Camp', u'0486358']], u'winner': [u'An Inconvenient Truth', u'0497116']}, u'Best Writing, Screenplay Written Directly for the Screen': {u'nominees': [[u'Babel', u'0449467'], [u\"Pan's Labyrinth\", u'0457430'], [u'Letters from Iwo Jima', u'0498380'], [u'The Queen', u'0436697']], u'winner': [u'Little Miss Sunshine', u'0449059']}, u'Best Foreign Language Film': {u'nominees': [[u'After the Wedding', u'0457655'], [u'Days of Glory', u'0444182'], [u\"Pan's Labyrinth\", u'0457430'], [u'Water', u'0240200']], u'winner': [u'The Lives of Others', u'0405094']}, u'Best Film Editing': {u'nominees': [[u'Babel', u'0449467'], [u'Blood Diamond', u'0450259'], [u'Children of Men', u'0206634'], [u'United 93', u'0475276']], u'winner': [u'The Departed', u'0407887']}, u'Best Art Direction': {u'nominees': [[u'Dreamgirls', u'0443489'], [u'The Good Shepherd', u'0343737'], [u\"Pirates of the Caribbean: Dead Man's Chest\", u'0383574'], [u'The Prestige', u'0482571']], u'winner': [u\"Pan's Labyrinth\", u'0457430']}, u'Best Short Film, Live Action': {u'nominees': [[u'Binta and the Great Idea', u'0442001'], [u'Helmer & Son', u'0955271'], [u'The Saviour', u'0467485'], [u'One Too Many', u'0460616']], u'winner': [u'West Bank Story', u'0438575']}, u'Best Music, Original Song': {u'nominees': [[u'Cars', u'0317219'], [u'Dreamgirls', u'0443489'], [u'Dreamgirls', u'0443489'], [u'Dreamgirls', u'0443489']], u'winner': [u'An Inconvenient Truth', u'0497116']}, u'Best Music, Original Score': {u'nominees': [[u'The Good German', u'0452624'], [u\"Pan's Labyrinth\", u'0457430'], [u'Notes on a Scandal', u'0465551'], [u'The Queen', u'0436697']], u'winner': [u'Babel', u'0449467']}, u'Best Short Film, Animated': {u'nominees': [[u'Lifted', u'0945571'], [u'The Little Matchgirl', u'0816562'], [u'Maestro', u'0951144'], [u'No Time for Nuts', u'0902999']], u'winner': [u'The Danish Poet', u'0933357']}, u'Best Makeup': {u'nominees': [[u'Apocalypto', u'0472043'], [u'Click', u'0389860']], u'winner': [u\"Pan's Labyrinth\", u'0457430']}, u'Best Costume Design': {u'nominees': [[u'The Devil Wears Prada', u'0458352'], [u'Dreamgirls', u'0443489'], [u'Curse of the Golden Flower', u'0473444'], [u'The Queen', u'0436697']], u'winner': [u'Marie Antoinette', u'0422720']}, u'Best Writing, Screenplay Based on Material from Another Medium': {u'nominees': [[u'Borat: Cultural Learnings of America for Make Benefit Glorious Nation of Kazakhstan', u'0443453'], [u'Children of Men', u'0206634'], [u'Little Children', u'0404203'], [u'Notes on a Scandal', u'0465551']], u'winner': [u'The Departed', u'0407887']}, u'Best Sound Editing': {u'nominees': [[u'Apocalypto', u'0472043'], [u'Blood Diamond', u'0450259'], [u'Flags of Our Fathers', u'0418689'], [u\"Pirates of the Caribbean: Dead Man's Chest\", u'0383574']], u'winner': [u'Letters from Iwo Jima', u'0498380']}, u'Best Actress in a Supporting Role': {u'nominees': [[u'Babel', u'0449467'], [u'Babel', u'0449467'], [u'Little Miss Sunshine', u'0449059'], [u'Notes on a Scandal', u'0465551']], u'winner': [u'Dreamgirls', u'0443489']}, u'Best Cinematography': {u'nominees': [[u'The Black Dahlia', u'0387877'], [u'Children of Men', u'0206634'], [u'The Illusionist', u'0443543'], [u'The Prestige', u'0482571']], u'winner': [u\"Pan's Labyrinth\", u'0457430']}, u'Best Documentary, Short Subjects': {u'nominees': [[u'Recycled Life', u'0859631'], [u'Rehearsing a Dream', u'0982919'], [u'Two Hands: The Leon Fleisher Story', u'0951151']], u'winner': [u'The Blood of Yingzhou District', u'0859595']}, u'Best Sound': {u'nominees': [[u'Apocalypto', u'0472043'], [u'Blood Diamond', u'0450259'], [u'Flags of Our Fathers', u'0418689'], [u\"Pirates of the Caribbean: Dead Man's Chest\", u'0383574']], u'winner': [u'Dreamgirls', u'0443489']}, u'Best Director': {u'nominees': [[u'Babel', u'0449467'], [u'Letters from Iwo Jima', u'0498380'], [u'The Queen', u'0436697'], [u'United 93', u'0475276']], u'winner': [u'The Departed', u'0407887']}, u'Best Actor in a Leading Role': {u'nominees': [[u'Blood Diamond', u'0450259'], [u'Half Nelson', u'0468489'], [u'The Pursuit of Happyness', u'0454921'], [u'Venus', u'0489327']], u'winner': [u'The Last King of Scotland', u'0455590']}, u'Best Picture': {u'nominees': [[u'Babel', u'0449467'], [u'Letters from Iwo Jima', u'0498380'], [u'Little Miss Sunshine', u'0449059'], [u'The Queen', u'0436697']], u'winner': [u'The Departed', u'0407887']}, u'Best Actress in a Leading Role': {u'nominees': [[u'The Devil Wears Prada', u'0458352'], [u'Little Children', u'0404203'], [u'Notes on a Scandal', u'0465551'], [u'Volver', u'0441909']], u'winner': [u'The Queen', u'0436697']}, u'Best Effects, Visual Effects': {u'nominees': [[u'Poseidon', u'0409182'], [u'Superman Returns', u'0348150']], u'winner': [u\"Pirates of the Caribbean: Dead Man's Chest\", u'0383574']}, u'Best Animated Feature Film of the Year': {u'nominees': [[u'Cars', u'0317219'], [u'Monster House', u'0385880']], u'winner': [u'Happy Feet', u'0366548']}}, u'2004': {u'Best Actor in a Supporting Role': {u'nominees': [[u'21 Grams', u'0315733'], [u'The Cooler', u'0318374'], [u'In America', u'0298845'], [u'The Last Samurai', u'0325710']], u'winner': [u'Mystic River', u'0327056']}, u'Best Documentary, Features': {u'nominees': [[u'Cuban Rafters', u'0321376'], [u'Capturing the Friedmans', u'0342172'], [u'My Architect', u'0373175'], [u'The Weather Underground', u'0343168']], u'winner': [u'The Fog of War: Eleven Lessons from the Life of Robert S. McNamara', u'0317910']}, u'Best Writing, Screenplay Written Directly for the Screen': {u'nominees': [[u'Dirty Pretty Things', u'0301199'], [u'Finding Nemo', u'0266543'], [u'In America', u'0298845'], [u'The Barbarian Invasions', u'0338135']], u'winner': [u'Lost in Translation', u'0335266']}, u'Best Foreign Language Film': {u'nominees': [[u'Evil', u'0338309'], [u'The Twilight Samurai', u'0351817'], [u'Twin Sisters', u'0322674'], [u'Zelary', u'0288330']], u'winner': [u'The Barbarian Invasions', u'0338135']}, u'Best Short Film, Live Action': {u'nominees': [[u'(A)Torzija', u'0350476'], [u'Most', u'0345672'], [u'The Red Jacket', u'0323844'], [u'Squash', u'0341588']], u'winner': [u'Two Soldiers', u'0304858']}, u'Best Music, Original Song': {u'nominees': [[u'Cold Mountain', u'0159365'], [u'Cold Mountain', u'0159365'], [u'A Mighty Wind', u'0310281'], [u'The Triplets of Belleville', u'0286244']], u'winner': [u'The Lord of the Rings: The Return of the King', u'0167260']}, u'Best Music, Original Score': {u'nominees': [[u'Big Fish', u'0319061'], [u'Cold Mountain', u'0159365'], [u'Finding Nemo', u'0266543'], [u'House of Sand and Fog', u'0315983']], u'winner': [u'The Lord of the Rings: The Return of the King', u'0167260']}, u'Best Art Direction-Set Decoration': {u'nominees': [[u'Girl with a Pearl Earring', u'0335119'], [u'The Last Samurai', u'0325710'], [u'Master and Commander: The Far Side of the World', u'0311113'], [u'Seabiscuit', u'0329575']], u'winner': [u'The Lord of the Rings: The Return of the King', u'0167260']}, u'Best Short Film, Animated': {u'nominees': [[u\"Boundin'\", u'0395479'], [u'Destino', u'0377770'], [u'Gone Nutty', u'0342965'], [u'Nibbles', u'0392542']], u'winner': [u'Harvie Krumpet', u'0382734']}, u'Best Makeup': {u'nominees': [[u'Master and Commander: The Far Side of the World', u'0311113'], [u'Pirates of the Caribbean: The Curse of the Black Pearl', u'0325980']], u'winner': [u'The Lord of the Rings: The Return of the King', u'0167260']}, u'Best Costume Design': {u'nominees': [[u'Girl with a Pearl Earring', u'0335119'], [u'The Last Samurai', u'0325710'], [u'Master and Commander: The Far Side of the World', u'0311113'], [u'Seabiscuit', u'0329575']], u'winner': [u'The Lord of the Rings: The Return of the King', u'0167260']}, u'Best Animated Feature': {u'nominees': [[u'Brother Bear', u'0328880'], [u'The Triplets of Belleville', u'0286244']], u'winner': [u'Finding Nemo', u'0266543']}, u'Best Writing, Screenplay Based on Material from Another Medium': {u'nominees': [[u'American Splendor', u'0305206'], [u'City of God', u'0317248'], [u'Mystic River', u'0327056'], [u'Seabiscuit', u'0329575']], u'winner': [u'The Lord of the Rings: The Return of the King', u'0167260']}, u'Best Sound Editing': {u'nominees': [[u'Finding Nemo', u'0266543'], [u'Pirates of the Caribbean: The Curse of the Black Pearl', u'0325980']], u'winner': [u'Master and Commander: The Far Side of the World', u'0311113']}, u'Best Actress in a Supporting Role': {u'nominees': [[u'House of Sand and Fog', u'0315983'], [u'Mystic River', u'0327056'], [u'Pieces of April', u'0311648'], [u'Thirteen', u'0328538']], u'winner': [u'Cold Mountain', u'0159365']}, u'Best Sound Mixing': {u'nominees': [[u'The Last Samurai', u'0325710'], [u'Master and Commander: The Far Side of the World', u'0311113'], [u'Pirates of the Caribbean: The Curse of the Black Pearl', u'0325980'], [u'Seabiscuit', u'0329575']], u'winner': [u'The Lord of the Rings: The Return of the King', u'0167260']}, u'Best Cinematography': {u'nominees': [[u'City of God', u'0317248'], [u'Cold Mountain', u'0159365'], [u'Girl with a Pearl Earring', u'0335119'], [u'Seabiscuit', u'0329575']], u'winner': [u'Master and Commander: The Far Side of the World', u'0311113']}, u'Best Documentary, Short Subjects': {u'nominees': [[u'Asylum', u'0363445'], [u'Ferry Tales', u'0363607']], u'winner': [u'Chernobyl Heart', u'0396959']}, u'Best Film Editing': {u'nominees': [[u'City of God', u'0317248'], [u'Cold Mountain', u'0159365'], [u'Master and Commander: The Far Side of the World', u'0311113'], [u'Seabiscuit', u'0329575']], u'winner': [u'The Lord of the Rings: The Return of the King', u'0167260']}, u'Best Director': {u'nominees': [[u'City of God', u'0317248'], [u'Lost in Translation', u'0335266'], [u'Master and Commander: The Far Side of the World', u'0311113'], [u'Mystic River', u'0327056']], u'winner': [u'The Lord of the Rings: The Return of the King', u'0167260']}, u'Best Actor in a Leading Role': {u'nominees': [[u'Cold Mountain', u'0159365'], [u'House of Sand and Fog', u'0315983'], [u'Lost in Translation', u'0335266'], [u'Pirates of the Caribbean: The Curse of the Black Pearl', u'0325980']], u'winner': [u'Mystic River', u'0327056']}, u'Best Picture': {u'nominees': [[u'Lost in Translation', u'0335266'], [u'Master and Commander: The Far Side of the World', u'0311113'], [u'Mystic River', u'0327056'], [u'Seabiscuit', u'0329575']], u'winner': [u'The Lord of the Rings: The Return of the King', u'0167260']}, u'Best Actress in a Leading Role': {u'nominees': [[u'Whale Rider', u'0298228'], [u\"Something's Gotta Give\", u'0337741'], [u'In America', u'0298845'], [u'21 Grams', u'0315733']], u'winner': [u'Monster', u'0340855']}, u'Best Visual Effects': {u'nominees': [[u'Master and Commander: The Far Side of the World', u'0311113'], [u'Pirates of the Caribbean: The Curse of the Black Pearl', u'0325980']], u'winner': [u'The Lord of the Rings: The Return of the King', u'0167260']}}, u'2005': {u'Best Actor in a Supporting Role': {u'nominees': [[u'The Aviator', u'0338751'], [u'Closer', u'0376541'], [u'Collateral', u'0369339'], [u'Sideways', u'0375063']], u'winner': [u'Million Dollar Baby', u'0405159']}, u'Best Documentary, Features': {u'nominees': [[u'The Story of the Weeping Camel', u'0373861'], [u'Super Size Me', u'0390521'], [u'Tupac: Resurrection', u'0343121'], [u'Twist of Faith', u'0436857']], u'winner': [u\"Born Into Brothels: Calcutta's Red Light Kids\", u'0388789']}, u'Best Writing, Screenplay Written Directly for the Screen': {u'nominees': [[u'The Aviator', u'0338751'], [u'Hotel Rwanda', u'0395169'], [u'The Incredibles', u'0317705'], [u'Vera Drake', u'0383694']], u'winner': [u'Eternal Sunshine of the Spotless Mind', u'0338013']}, u'Best Foreign Language Film': {u'nominees': [[u'The Chorus', u'0372824'], [u'As It Is in Heaven', u'0382330'], [u'Downfall', u'0363163'], [u'Yesterday', u'0419279']], u'winner': [u'The Sea Inside', u'0369702']}, u'Best Film Editing': {u'nominees': [[u'Collateral', u'0369339'], [u'Finding Neverland', u'0308644'], [u'Million Dollar Baby', u'0405159'], [u'Ray', u'0350258']], u'winner': [u'The Aviator', u'0338751']}, u'Best Art Direction': {u'nominees': [[u'Finding Neverland', u'0308644'], [u\"Lemony Snicket's A Series of Unfortunate Events\", u'0339291'], [u'The Phantom of the Opera', u'0293508'], [u'A Very Long Engagement', u'0344510']], u'winner': [u'The Aviator', u'0338751']}, u'Best Short Film, Live Action': {u'nominees': [[u'7:35 in the Morning', u'0406501'], [u'Everything in This Country Must', u'0443499'], [u'Little Terrorist', u'0425200'], [u'Two Cars, One Night', u'0390579']], u'winner': [u'Wasp', u'0388534']}, u'Best Music, Original Song': {u'nominees': [[u'The Chorus', u'0372824'], [u'The Phantom of the Opera', u'0293508'], [u'The Polar Express', u'0338348'], [u'Shrek 2', u'0298148']], u'winner': [u'The Motorcycle Diaries', u'0318462']}, u'Best Music, Original Score': {u'nominees': [[u'Harry Potter and the Prisoner of Azkaban', u'0304141'], [u\"Lemony Snicket's A Series of Unfortunate Events\", u'0339291'], [u'The Passion of the Christ', u'0335345'], [u'The Village', u'0368447']], u'winner': [u'Finding Neverland', u'0308644']}, u'Best Short Film, Animated': {u'nominees': [[u'Birthday Boy', u'0435933'], [u'Gopher Broke', u'0438064'], [u'Guard Dog', u'0430159'], [u'Lorenzo', u'0412936']], u'winner': [u'Ryan', u'0414469']}, u'Best Makeup': {u'nominees': [[u'The Sea Inside', u'0369702'], [u'The Passion of the Christ', u'0335345']], u'winner': [u\"Lemony Snicket's A Series of Unfortunate Events\", u'0339291']}, u'Best Costume Design': {u'nominees': [[u'Finding Neverland', u'0308644'], [u\"Lemony Snicket's A Series of Unfortunate Events\", u'0339291'], [u'Ray', u'0350258'], [u'Troy', u'0332452']], u'winner': [u'The Aviator', u'0338751']}, u'Best Writing, Screenplay Based on Material from Another Medium': {u'nominees': [[u'Before Sunset', u'0381681'], [u'The Motorcycle Diaries', u'0318462'], [u'Finding Neverland', u'0308644'], [u'Million Dollar Baby', u'0405159']], u'winner': [u'Sideways', u'0375063']}, u'Best Sound Editing': {u'nominees': [[u'The Polar Express', u'0338348'], [u'Spider-Man 2', u'0316654']], u'winner': [u'The Incredibles', u'0317705']}, u'Best Actress in a Supporting Role': {u'nominees': [[u'Closer', u'0376541'], [u'Hotel Rwanda', u'0395169'], [u'Kinsey', u'0362269'], [u'Sideways', u'0375063']], u'winner': [u'The Aviator', u'0338751']}, u'Best Cinematography': {u'nominees': [[u'The Passion of the Christ', u'0335345'], [u'The Phantom of the Opera', u'0293508'], [u'House of Flying Daggers', u'0385004'], [u'A Very Long Engagement', u'0344510']], u'winner': [u'The Aviator', u'0338751']}, u'Best Documentary, Short Subjects': {u'nominees': [[u'Autism Is a World', u'0443434'], [u'The Children of Leningradsky', u'0442947'], [u'Hardwood', u'0443531'], [u\"Sister Rose's Passion\", u'0420195']], u'winner': [u\"Mighty Times: The Children's March\", u'0443587']}, u'Best Sound': {u'nominees': [[u'The Aviator', u'0338751'], [u'The Incredibles', u'0317705'], [u'The Polar Express', u'0338348'], [u'Spider-Man 2', u'0316654']], u'winner': [u'Ray', u'0350258']}, u'Best Director': {u'nominees': [[u'The Aviator', u'0338751'], [u'Ray', u'0350258'], [u'Sideways', u'0375063'], [u'Vera Drake', u'0383694']], u'winner': [u'Million Dollar Baby', u'0405159']}, u'Best Actor in a Leading Role': {u'nominees': [[u'The Aviator', u'0338751'], [u'Finding Neverland', u'0308644'], [u'Hotel Rwanda', u'0395169'], [u'Million Dollar Baby', u'0405159']], u'winner': [u'Ray', u'0350258']}, u'Best Picture': {u'nominees': [[u'The Aviator', u'0338751'], [u'Finding Neverland', u'0308644'], [u'Ray', u'0350258'], [u'Sideways', u'0375063']], u'winner': [u'Million Dollar Baby', u'0405159']}, u'Best Actress in a Leading Role': {u'nominees': [[u'Being Julia', u'0340012'], [u'Eternal Sunshine of the Spotless Mind', u'0338013'], [u'Maria Full of Grace', u'0390221'], [u'Vera Drake', u'0383694']], u'winner': [u'Million Dollar Baby', u'0405159']}, u'Best Effects, Visual Effects': {u'nominees': [[u'Harry Potter and the Prisoner of Azkaban', u'0304141'], [u'I, Robot', u'0343818']], u'winner': [u'Spider-Man 2', u'0316654']}, u'Best Animated Feature Film of the Year': {u'nominees': [[u'Shark Tale', u'0307453'], [u'Shrek 2', u'0298148']], u'winner': [u'The Incredibles', u'0317705']}}, u'2008': {u'Best Actor in a Supporting Role': {u'nominees': [[u'The Assassination of Jesse James by the Coward Robert Ford', u'0443680'], [u\"Charlie Wilson's War\", u'0472062'], [u'Into the Wild', u'0758758'], [u'Michael Clayton', u'0465538']], u'winner': [u'No Country for Old Men', u'0477348']}, u'Best Documentary, Features': {u'nominees': [[u'No End in Sight', u'0912593'], [u'Operation Homecoming: Writing the Wartime Experience', u'0970184'], [u'Sicko', u'0386032'], [u'War Dance', u'0912599']], u'winner': [u'Taxi to the Dark Side', u'0854678']}, u'Best Writing, Screenplay Written Directly for the Screen': {u'nominees': [[u'Lars and the Real Girl', u'0805564'], [u'Michael Clayton', u'0465538'], [u'Ratatouille', u'0382932'], [u'The Savages', u'0775529']], u'winner': [u'Juno', u'0467406']}, u'Best Foreign Language Film': {u'nominees': [[u'Beaufort', u'0758732'], [u'Mongol: The Rise of Genghis Khan', u'0416044'], [u'Katyn', u'0879843'], [u'12', u'0488478']], u'winner': [u'The Counterfeiters', u'0813547']}, u'Best Film Editing': {u'nominees': [[u'Into the Wild', u'0758758'], [u'No Country for Old Men', u'0477348'], [u'The Diving Bell and the Butterfly', u'0401383'], [u'There Will Be Blood', u'0469494']], u'winner': [u'The Bourne Ultimatum', u'0440963']}, u'Best Art Direction': {u'nominees': [[u'American Gangster', u'0765429'], [u'Atonement', u'0783233'], [u'The Golden Compass', u'0385752'], [u'There Will Be Blood', u'0469494']], u'winner': [u'Sweeney Todd: The Demon Barber of Fleet Street', u'0408236']}, u'Best Short Film, Live Action': {u'nominees': [[u'At Night', u'1117985'], [u'The Substitute', u'0922627'], [u'Tanghi argentini', u'0812387'], [u'The Tonto Woman', u'1176466']], u'winner': [u'Le Mozart des pickpockets', u'0820971']}, u'Best Music, Original Song': {u'nominees': [[u'August Rush', u'0426931'], [u'Enchanted', u'0461770'], [u'Enchanted', u'0461770'], [u'Enchanted', u'0461770']], u'winner': [u'Once', u'0907657']}, u'Best Music, Original Score': {u'nominees': [[u'3:10 to Yuma', u'0381849'], [u'The Kite Runner', u'0419887'], [u'Michael Clayton', u'0465538'], [u'Ratatouille', u'0382932']], u'winner': [u'Atonement', u'0783233']}, u'Best Short Film, Animated': {u'nominees': [[u'I Met the Walrus', u'1156511'], [u'Madame Tutli-Putli', u'1029440'], [u'My Love', u'0874952'], [u'Even Pigeons Go to Heaven', u'1066329']], u'winner': [u'Peter & the Wolf', u'0863136']}, u'Best Makeup': {u'nominees': [[u'Norbit', u'0477051'], [u\"Pirates of the Caribbean: At World's End\", u'0449088']], u'winner': [u'La Vie en Rose', u'0450188']}, u'Best Costume Design': {u'nominees': [[u'Across the Universe', u'0445922'], [u'Atonement', u'0783233'], [u'La Vie en Rose', u'0450188'], [u'Sweeney Todd: The Demon Barber of Fleet Street', u'0408236']], u'winner': [u'Elizabeth: The Golden Age', u'0414055']}, u'Best Writing, Screenplay Based on Material from Another Medium': {u'nominees': [[u'Atonement', u'0783233'], [u'Away from Her', u'0491747'], [u'The Diving Bell and the Butterfly', u'0401383'], [u'There Will Be Blood', u'0469494']], u'winner': [u'No Country for Old Men', u'0477348']}, u'Best Sound Editing': {u'nominees': [[u'No Country for Old Men', u'0477348'], [u'Ratatouille', u'0382932'], [u'There Will Be Blood', u'0469494'], [u'Transformers', u'0418279']], u'winner': [u'The Bourne Ultimatum', u'0440963']}, u'Best Actress in a Supporting Role': {u'nominees': [[u'American Gangster', u'0765429'], [u'Atonement', u'0783233'], [u'Gone Baby Gone', u'0452623'], [u\"I'm Not There.\", u'0368794']], u'winner': [u'Michael Clayton', u'0465538']}, u'Best Cinematography': {u'nominees': [[u'The Assassination of Jesse James by the Coward Robert Ford', u'0443680'], [u'Atonement', u'0783233'], [u'No Country for Old Men', u'0477348'], [u'The Diving Bell and the Butterfly', u'0401383']], u'winner': [u'There Will Be Blood', u'0469494']}, u'Best Documentary, Short Subjects': {u'nominees': [[u'La corona', u'1157626'], [u'Salim Baba', u'1157707'], [u\"Sari's Mother\", u'0841160']], u'winner': [u'Freeheld', u'0914369']}, u'Best Sound': {u'nominees': [[u'3:10 to Yuma', u'0381849'], [u'No Country for Old Men', u'0477348'], [u'Ratatouille', u'0382932'], [u'Transformers', u'0418279']], u'winner': [u'The Bourne Ultimatum', u'0440963']}, u'Best Director': {u'nominees': [[u'Juno', u'0467406'], [u'Michael Clayton', u'0465538'], [u'The Diving Bell and the Butterfly', u'0401383'], [u'There Will Be Blood', u'0469494']], u'winner': [u'No Country for Old Men', u'0477348']}, u'Best Actor in a Leading Role': {u'nominees': [[u'Eastern Promises', u'0765443'], [u'In the Valley of Elah', u'0478134'], [u'Michael Clayton', u'0465538'], [u'Sweeney Todd: The Demon Barber of Fleet Street', u'0408236']], u'winner': [u'There Will Be Blood', u'0469494']}, u'Best Picture': {u'nominees': [[u'Atonement', u'0783233'], [u'Juno', u'0467406'], [u'Michael Clayton', u'0465538'], [u'There Will Be Blood', u'0469494']], u'winner': [u'No Country for Old Men', u'0477348']}, u'Best Actress in a Leading Role': {u'nominees': [[u'Away from Her', u'0491747'], [u'Elizabeth: The Golden Age', u'0414055'], [u'Juno', u'0467406'], [u'The Savages', u'0775529']], u'winner': [u'La Vie en Rose', u'0450188']}, u'Best Effects, Visual Effects': {u'nominees': [[u\"Pirates of the Caribbean: At World's End\", u'0449088'], [u'Transformers', u'0418279']], u'winner': [u'The Golden Compass', u'0385752']}, u'Best Animated Feature Film of the Year': {u'nominees': [[u'Persepolis', u'0808417'], [u\"Surf's Up\", u'0423294']], u'winner': [u'Ratatouille', u'0382932']}}, u'2009': {u'Best Actor in a Supporting Role': {u'nominees': [[u'Doubt', u'0918927'], [u'Milk', u'1013753'], [u'Revolutionary Road', u'0959337'], [u'Tropic Thunder', u'0942385']], u'winner': [u'The Dark Knight', u'0468569']}, u'Best Documentary, Features': {u'nominees': [[u'The Betrayal - Nerakhoon', u'1157685'], [u'Encounters at the End of the World', u'1093824'], [u'The Garden', u'1252486'], [u'Trouble the Water', u'1149405']], u'winner': [u'Man on Wire', u'1155592']}, u'Best Writing, Screenplay Written Directly for the Screen': {u'nominees': [[u'Frozen River', u'0978759'], [u'Happy-Go-Lucky', u'1045670'], [u'In Bruges', u'0780536'], [u'WALLeE', u'0910970']], u'winner': [u'Milk', u'1013753']}, u'Best Foreign Language Film': {u'nominees': [[u'The Class', u'1068646'], [u'The Baader Meinhof Complex', u'0765432'], [u'Waltz with Bashir', u'1185616'], [u'Revanche', u'1173745']], u'winner': [u'Departures', u'1069238']}, u'Best Film Editing': {u'nominees': [[u'The Curious Case of Benjamin Button', u'0421715'], [u'The Dark Knight', u'0468569'], [u'Frost/Nixon', u'0870111'], [u'Milk', u'1013753']], u'winner': [u'Slumdog Millionaire', u'1010048']}, u'Best Art Direction': {u'nominees': [[u'Changeling', u'0824747'], [u'The Dark Knight', u'0468569'], [u'The Duchess', u'0864761'], [u'Revolutionary Road', u'0959337']], u'winner': [u'The Curious Case of Benjamin Button', u'0421715']}, u'Best Documentary, Short Subject': {u'nominees': [[u'The Conscience of Nhem En', u'1360057'], [u'The Final Inch', u'1360061'], [u'The Witness from the Balcony of Room 306', u'1360068']], u'winner': [u'Smile Pinki', u'1360065']}, u'Best Short Film, Live Action': {u'nominees': [[u'On the Line', u'1219675'], [u'The Pig', u'1333640'], [u'Manon on the Asphalt', u'1186020'], [u'New Boy', u'1095191']], u'winner': [u'Toyland', u'1280548']}, u'Best Music, Original Score': {u'nominees': [[u'The Curious Case of Benjamin Button', u'0421715'], [u'Defiance', u'1034303'], [u'Milk', u'1013753'], [u'WALLeE', u'0910970']], u'winner': [u'Slumdog Millionaire', u'1010048']}, u'Best Short Film, Animated': {u'nominees': [[u'Oktapodi', u'1323941'], [u'Presto', u'1245104'], [u'This Way Up', u'1279499'], [u'Lavatory Lovestory', u'0983242']], u'winner': [u'The House of Small Cubes', u'1361566']}, u'Best Makeup': {u'nominees': [[u'The Dark Knight', u'0468569'], [u'Hellboy II: The Golden Army', u'0411477']], u'winner': [u'The Curious Case of Benjamin Button', u'0421715']}, u'Best Costume Design': {u'nominees': [[u'Australia', u'0455824'], [u'The Curious Case of Benjamin Button', u'0421715'], [u'Milk', u'1013753'], [u'Revolutionary Road', u'0959337']], u'winner': [u'The Duchess', u'0864761']}, u'Best Writing, Screenplay Based on Material from Another Medium': {u'nominees': [[u'The Curious Case of Benjamin Button', u'0421715'], [u'Doubt', u'0918927'], [u'Frost/Nixon', u'0870111'], [u'The Reader', u'0976051']], u'winner': [u'Slumdog Millionaire', u'1010048']}, u'Best Sound Editing': {u'nominees': [[u'Iron Man', u'0371746'], [u'Slumdog Millionaire', u'1010048'], [u'WALLeE', u'0910970'], [u'Wanted', u'0493464']], u'winner': [u'The Dark Knight', u'0468569']}, u'Best Actress in a Supporting Role': {u'nominees': [[u'The Curious Case of Benjamin Button', u'0421715'], [u'Doubt', u'0918927'], [u'Doubt', u'0918927'], [u'The Wrestler', u'1125849']], u'winner': [u'Vicky Cristina Barcelona', u'0497465']}, u'Best Cinematography': {u'nominees': [[u'Changeling', u'0824747'], [u'The Curious Case of Benjamin Button', u'0421715'], [u'The Dark Knight', u'0468569'], [u'The Reader', u'0976051']], u'winner': [u'Slumdog Millionaire', u'1010048']}, u'Best Music, Original Song': {u'nominees': [[u'Slumdog Millionaire', u'1010048'], [u'WALLeE', u'0910970']], u'winner': [u'Slumdog Millionaire', u'1010048']}, u'Best Sound': {u'nominees': [[u'The Curious Case of Benjamin Button', u'0421715'], [u'The Dark Knight', u'0468569'], [u'WALLeE', u'0910970'], [u'Wanted', u'0493464']], u'winner': [u'Slumdog Millionaire', u'1010048']}, u'Best Director': {u'nominees': [[u'The Curious Case of Benjamin Button', u'0421715'], [u'Frost/Nixon', u'0870111'], [u'Milk', u'1013753'], [u'The Reader', u'0976051']], u'winner': [u'Slumdog Millionaire', u'1010048']}, u'Best Actor in a Leading Role': {u'nominees': [[u'The Curious Case of Benjamin Button', u'0421715'], [u'Frost/Nixon', u'0870111'], [u'The Visitor', u'0857191'], [u'The Wrestler', u'1125849']], u'winner': [u'Milk', u'1013753']}, u'Best Picture': {u'nominees': [[u'The Curious Case of Benjamin Button', u'0421715'], [u'Frost/Nixon', u'0870111'], [u'Milk', u'1013753'], [u'The Reader', u'0976051']], u'winner': [u'Slumdog Millionaire', u'1010048']}, u'Best Actress in a Leading Role': {u'nominees': [[u'Changeling', u'0824747'], [u'Doubt', u'0918927'], [u'Frozen River', u'0978759'], [u'Rachel Getting Married', u'1084950']], u'winner': [u'The Reader', u'0976051']}, u'Best Effects, Visual Effects': {u'nominees': [[u'The Dark Knight', u'0468569'], [u'Iron Man', u'0371746']], u'winner': [u'The Curious Case of Benjamin Button', u'0421715']}, u'Best Animated Feature Film of the Year': {u'nominees': [[u'Bolt', u'0397892'], [u'Kung Fu Panda', u'0441773']], u'winner': [u'WALLeE', u'0910970']}}, u'2011': {u'Best Actor in a Supporting Role': {u'nominees': [[u\"Winter's Bone\", u'1399683'], [u'The Town', u'0840361'], [u'The Kids Are All Right', u'0842926'], [u\"The King's Speech\", u'1504320']], u'winner': [u'The Fighter', u'0964517']}, u'Best Documentary, Features': {u'nominees': [[u'Exit Through the Gift Shop', u'1587707'], [u'GasLand', u'1558250'], [u'Restrepo', u'1559549'], [u'Waste Land', u'1268204']], u'winner': [u'Inside Job', u'1645089']}, u'Best Writing, Screenplay Written Directly for the Screen': {u'nominees': [[u'Another Year', u'1431181'], [u'Inception', u'1375666'], [u'The Kids Are All Right', u'0842926'], [u'The Fighter', u'0964517']], u'winner': [u\"The King's Speech\", u'1504320']}, u'Best Foreign Language Film': {u'nominees': [[u'Biutiful', u'1164999'], [u'Dogtooth', u'1379182'], [u'Incendies', u'1255953'], [u'Outside the Law', u'1229381']], u'winner': [u'In a Better World', u'1340107']}, u'Best Film Editing': {u'nominees': [[u'127 Hours', u'1542344'], [u'Black Swan', u'0947798'], [u'The Fighter', u'0964517'], [u\"The King's Speech\", u'1504320']], u'winner': [u'The Social Network', u'1285016']}, u'Best Art Direction': {u'nominees': [[u'Harry Potter and the Deathly Hallows: Part 1', u'0926084'], [u'Inception', u'1375666'], [u\"The King's Speech\", u'1504320'], [u'True Grit', u'1403865']], u'winner': [u'Alice in Wonderland', u'1014759']}, u'Best Short Film, Live Action': {u'nominees': [[u'The Confession', u'1687903'], [u'The Crush', u'1509756'], [u'Na Wewe', u'1764508'], [u'Wish 143', u'1518330']], u'winner': [u'God of Love', u'1631323']}, u'Best Music, Original Song': {u'nominees': [[u'127 Hours', u'1542344'], [u'Country Strong', u'1555064'], [u'Tangled', u'0398286']], u'winner': [u'Toy Story 3', u'0435761']}, u'Best Music, Original Score': {u'nominees': [[u'127 Hours', u'1542344'], [u'How to Train Your Dragon', u'0892769'], [u'Inception', u'1375666'], [u\"The King's Speech\", u'1504320']], u'winner': [u'The Social Network', u'1285016']}, u'Best Short Film, Animated': {u'nominees': [[u'Day & Night', u'1620446'], [u'The Gruffalo', u'1461418'], [u\"Let's Pollute\", u'1470652'], [u'Madagascar, a Journey Diary', u'1590114']], u'winner': [u'The Lost Thing', u'1669698']}, u'Best Makeup': {u'nominees': [[u\"Barney's Version\", u'1423894'], [u'The Way Back', u'1023114']], u'winner': [u'The Wolfman', u'0780653']}, u'Best Costume Design': {u'nominees': [[u'I Am Love', u'1226236'], [u\"The King's Speech\", u'1504320'], [u'The Tempest', u'1274300'], [u'True Grit', u'1403865']], u'winner': [u'Alice in Wonderland', u'1014759']}, u'Best Writing, Screenplay Based on Material from Another Medium': {u'nominees': [[u'127 Hours', u'1542344'], [u'True Grit', u'1403865'], [u\"Winter's Bone\", u'1399683'], [u'Toy Story 3', u'0435761']], u'winner': [u'The Social Network', u'1285016']}, u'Best Sound Editing': {u'nominees': [[u'Toy Story 3', u'0435761'], [u'TRON: Legacy', u'1104001'], [u'True Grit', u'1403865'], [u'Unstoppable', u'0477080']], u'winner': [u'Inception', u'1375666']}, u'Best Actress in a Supporting Role': {u'nominees': [[u'The Fighter', u'0964517'], [u\"The King's Speech\", u'1504320'], [u'True Grit', u'1403865'], [u'Animal Kingdom', u'1313092']], u'winner': [u'The Fighter', u'0964517']}, u'Best Cinematography': {u'nominees': [[u'Black Swan', u'0947798'], [u\"The King's Speech\", u'1504320'], [u'The Social Network', u'1285016'], [u'True Grit', u'1403865']], u'winner': [u'Inception', u'1375666']}, u'Best Documentary, Short Subjects': {u'nominees': [[u'Poster Girl', u'1505384'], [u'Killing in the Name', u'1684897'], [u'Sun Come Up', u'1621975'], [u'The Warriors of Qiugang', u'1744887']], u'winner': [u'Strangers No More', u'1754549']}, u'Best Sound': {u'nominees': [[u\"The King's Speech\", u'1504320'], [u'Salt', u'0944835'], [u'The Social Network', u'1285016'], [u'True Grit', u'1403865']], u'winner': [u'Inception', u'1375666']}, u'Best Director': {u'nominees': [[u'Black Swan', u'0947798'], [u'True Grit', u'1403865'], [u'The Social Network', u'1285016'], [u'The Fighter', u'0964517']], u'winner': [u\"The King's Speech\", u'1504320']}, u'Best Actor in a Leading Role': {u'nominees': [[u'Biutiful', u'1164999'], [u'True Grit', u'1403865'], [u'The Social Network', u'1285016'], [u'127 Hours', u'1542344']], u'winner': [u\"The King's Speech\", u'1504320']}, u'Best Picture': {u'nominees': [[u'127 Hours', u'1542344'], [u'Black Swan', u'0947798'], [u'The Fighter', u'0964517'], [u'Inception', u'1375666'], [u'The Kids Are All Right', u'0842926'], [u'The Social Network', u'1285016'], [u'Toy Story 3', u'0435761'], [u'True Grit', u'1403865'], [u\"Winter's Bone\", u'1399683']], u'winner': [u\"The King's Speech\", u'1504320']}, u'Best Actress in a Leading Role': {u'nominees': [[u'The Kids Are All Right', u'0842926'], [u'Rabbit Hole', u'0935075'], [u\"Winter's Bone\", u'1399683'], [u'Blue Valentine', u'1120985']], u'winner': [u'Black Swan', u'0947798']}, u'Best Effects, Visual Effects': {u'nominees': [[u'Alice in Wonderland', u'1014759'], [u'Harry Potter and the Deathly Hallows: Part 1', u'0926084'], [u'Hereafter', u'1212419'], [u'Iron Man 2', u'1228705']], u'winner': [u'Inception', u'1375666']}, u'Best Animated Feature Film of the Year': {u'nominees': [[u'How to Train Your Dragon', u'0892769'], [u'The Illusionist', u'0775489']], u'winner': [u'Toy Story 3', u'0435761']}}, u'2010': {u'Best Actor in a Supporting Role': {u'nominees': [[u'Invictus', u'1057500'], [u'The Last Station', u'0824758'], [u'The Lovely Bones', u'0380510'], [u'The Messenger', u'0790712']], u'winner': [u'Inglourious Basterds', u'0361748']}, u'Best Documentary, Features': {u'nominees': [[u'Burma VJ: Reporter i et lukket land', u'1333634'], [u'Food, Inc.', u'1286537'], [u'The Most Dangerous Man in America: Daniel Ellsberg and the Pentagon Papers', u'1319726'], [u'Which Way Home', u'0489342']], u'winner': [u'The Cove', u'1313104']}, u'Best Writing, Screenplay Written Directly for the Screen': {u'nominees': [[u'A Serious Man', u'1019452'], [u'Inglourious Basterds', u'0361748'], [u'The Messenger', u'0790712'], [u'Up', u'1049413']], u'winner': [u'The Hurt Locker', u'0887912']}, u'Best Foreign Language Film': {u'nominees': [[u'The Milk of Sorrow', u'1206488'], [u'The White Ribbon', u'1149362'], [u'Ajami', u'1077262'], [u'A Prophet', u'1235166']], u'winner': [u'The Secret in Their Eyes', u'1305806']}, u'Best Film Editing': {u'nominees': [[u'Avatar', u'0499549'], [u'District 9', u'1136608'], [u'Inglourious Basterds', u'0361748'], [u'Precious', u'0929632']], u'winner': [u'The Hurt Locker', u'0887912']}, u'Best Art Direction': {u'nominees': [[u'Nine', u'0875034'], [u'Sherlock Holmes', u'0988045'], [u'The Imaginarium of Doctor Parnassus', u'1054606'], [u'The Young Victoria', u'0962736']], u'winner': [u'Avatar', u'0499549']}, u'Best Short Film, Live Action': {u'nominees': [[u'Instead of Abracadabra', u'1351684'], [u'Kavi', u'1399573'], [u'Miracle Fish', u'1337354'], [u'The Door', u'1381557']], u'winner': [u'The New Tenants', u'1520428']}, u'Best Music, Original Song': {u'nominees': [[u'Paris 36', u'0948535'], [u'Nine', u'0875034'], [u'The Princess and the Frog', u'0780521'], [u'The Princess and the Frog', u'0780521']], u'winner': [u'Crazy Heart', u'1263670']}, u'Best Music, Original Score': {u'nominees': [[u'Avatar', u'0499549'], [u'Fantastic Mr. Fox', u'0432283'], [u'Sherlock Holmes', u'0988045'], [u'The Hurt Locker', u'0887912']], u'winner': [u'Up', u'1049413']}, u'Best Short Film, Animated': {u'nominees': [[u'French Roast', u'1323520'], [u\"Granny O'Grimm's Sleeping Beauty\", u'1382454'], [u'The Lady and the Reaper (La dama y la muerte)', u'1523317'], [u'A Matter of Loaf and Death', u'1118511']], u'winner': [u'Logorama', u'1563725']}, u'Best Makeup': {u'nominees': [[u'Il divo: La spettacolare vita di Giulio Andreotti', u'1023490'], [u'The Young Victoria', u'0962736']], u'winner': [u'Star Trek', u'0796366']}, u'Best Costume Design': {u'nominees': [[u'Bright Star', u'0810784'], [u'Coco Before Chanel', u'1035736'], [u'Nine', u'0875034'], [u'The Imaginarium of Doctor Parnassus', u'1054606']], u'winner': [u'The Young Victoria', u'0962736']}, u'Best Writing, Screenplay Based on Material from Another Medium': {u'nominees': [[u'An Education', u'1174732'], [u'District 9', u'1136608'], [u'In the Loop', u'1226774'], [u'Up in the Air', u'1193138']], u'winner': [u'Precious', u'0929632']}, u'Best Sound Editing': {u'nominees': [[u'Avatar', u'0499549'], [u'Inglourious Basterds', u'0361748'], [u'Star Trek', u'0796366'], [u'Up', u'1049413']], u'winner': [u'The Hurt Locker', u'0887912']}, u'Best Actress in a Supporting Role': {u'nominees': [[u'Crazy Heart', u'1263670'], [u'Nine', u'0875034'], [u'Up in the Air', u'1193138'], [u'Up in the Air', u'1193138']], u'winner': [u'Precious', u'0929632']}, u'Best Cinematography': {u'nominees': [[u'The White Ribbon', u'1149362'], [u'Harry Potter and the Half-Blood Prince', u'0417741'], [u'Inglourious Basterds', u'0361748'], [u'The Hurt Locker', u'0887912']], u'winner': [u'Avatar', u'0499549']}, u'Best Documentary, Short Subjects': {u'nominees': [[u\"China's Unnatural Disaster: The Tears of Sichuan Province\", u'1430809'], [u'Rabbit e la Berlin', u'1410281'], [u'The Last Campaign of Governor Booth Gardner', u'1534853'], [u'The Last Truck: Closing of a GM Plant', u'1487120']], u'winner': [u'Music by Prudence', u'1543539']}, u'Best Sound': {u'nominees': [[u'Avatar', u'0499549'], [u'Inglourious Basterds', u'0361748'], [u'Star Trek', u'0796366'], [u'Transformers: Revenge of the Fallen', u'1055369']], u'winner': [u'The Hurt Locker', u'0887912']}, u'Best Director': {u'nominees': [[u'Avatar', u'0499549'], [u'Inglourious Basterds', u'0361748'], [u'Precious', u'0929632'], [u'Up in the Air', u'1193138']], u'winner': [u'The Hurt Locker', u'0887912']}, u'Best Actor in a Leading Role': {u'nominees': [[u'A Single Man', u'1315981'], [u'Invictus', u'1057500'], [u'The Hurt Locker', u'0887912'], [u'Up in the Air', u'1193138']], u'winner': [u'Crazy Heart', u'1263670']}, u'Best Picture': {u'nominees': [[u'A Serious Man', u'1019452'], [u'An Education', u'1174732'], [u'Avatar', u'0499549'], [u'District 9', u'1136608'], [u'Inglourious Basterds', u'0361748'], [u'Precious', u'0929632'], [u'The Blind Side', u'0878804'], [u'Up', u'1049413'], [u'Up in the Air', u'1193138']], u'winner': [u'The Hurt Locker', u'0887912']}, u'Best Actress in a Leading Role': {u'nominees': [[u'An Education', u'1174732'], [u'Julie & Julia', u'1135503'], [u'Precious', u'0929632'], [u'The Last Station', u'0824758']], u'winner': [u'The Blind Side', u'0878804']}, u'Best Effects, Visual Effects': {u'nominees': [[u'District 9', u'1136608'], [u'Star Trek', u'0796366']], u'winner': [u'Avatar', u'0499549']}, u'Best Animated Feature Film of the Year': {u'nominees': [[u'Coraline', u'0327597'], [u'Fantastic Mr. Fox', u'0432283'], [u'The Princess and the Frog', u'0780521'], [u'The Secret of Kells', u'0485601']], u'winner': [u'Up', u'1049413']}}, u'2013': {u'Best Actor in a Supporting Role': {u'nominees': [[u'Argo', u'1024648'], [u'Silver Linings Playbook', u'1045658'], [u'The Master', u'1560747'], [u'Lincoln', u'0443272']], u'winner': [u'Django Unchained', u'1853728']}, u'Best Documentary, Features': {u'nominees': [[u'5 Broken Cameras', u'2125423'], [u'The Gatekeepers', u'2309788'], [u'How to Survive a Plague', u'2124803'], [u'The Invisible War', u'2120152']], u'winner': [u'Searching for Sugar Man', u'2125608']}, u'Best Writing, Screenplay Written Directly for the Screen': {u'nominees': [[u'Amour', u'1602620'], [u'Flight', u'1907668'], [u'Moonrise Kingdom', u'1748122'], [u'Zero Dark Thirty', u'1790885']], u'winner': [u'Django Unchained', u'1853728']}, u'Best Foreign Language Film': {u'nominees': [[u'War Witch', u'1820488'], [u'No', u'2059255'], [u'A Royal Affair', u'1276419'], [u'Kon-Tiki', u'1613750']], u'winner': [u'Amour', u'1602620']}, u'Best Film Editing': {u'nominees': [[u'Life of Pi', u'0454876'], [u'Lincoln', u'0443272'], [u'Silver Linings Playbook', u'1045658'], [u'Zero Dark Thirty', u'1790885']], u'winner': [u'Argo', u'1024648']}, u'Best Short Film, Live Action': {u'nominees': [[u'Asad', u'2136747'], [u'Buzkashi Boys', u'2133304'], [u'Death of a Shadow', u'2312702'], [u'Henry', u'2004244']], u'winner': [u'Curfew', u'2088735']}, u'Best Music, Original Song': {u'nominees': [[u'Ted', u'1637725'], [u'Life of Pi', u'0454876'], [u'Les Miserables', u'1707386'], [u'Chasing Ice', u'1579361']], u'winner': [u'Skyfall', u'1074638']}, u'Best Music, Original Score': {u'nominees': [[u'Anna Karenina', u'1781769'], [u'Argo', u'1024648'], [u'Lincoln', u'0443272'], [u'Skyfall', u'1074638']], u'winner': [u'Life of Pi', u'0454876']}, u'Best Production Design': {u'nominees': [[u'Anna Karenina', u'1781769'], [u'The Hobbit: An Unexpected Journey', u'0903624'], [u'Les Miserables', u'1707386'], [u'Life of Pi', u'0454876']], u'winner': [u'Lincoln', u'0443272']}, u'Best Short Film, Animated': {u'nominees': [[u'Adam and Dog', u'2162565'], [u'Fresh Guacamole', u'2309977'], [u'Head Over Heels', u'2391009'], [u'The Longest Daycare', u'2175842']], u'winner': [u'Paperman', u'2388725']}, u'Best Makeup': {u'nominees': [[u'Hitchcock', u'0975645'], [u'The Hobbit: An Unexpected Journey', u'0903624']], u'winner': [u'Les Miserables', u'1707386']}, u'Best Costume Design': {u'nominees': [[u'Les Miserables', u'1707386'], [u'Lincoln', u'0443272'], [u'Mirror Mirror', u'1667353'], [u'Snow White and the Huntsman', u'1735898']], u'winner': [u'Anna Karenina', u'1781769']}, u'Best Animated Feature': {u'nominees': [[u'Frankenweenie', u'1142977'], [u'ParaNorman', u'1623288'], [u'The Pirates! Band of Misfits', u'1430626'], [u'Wreck-It Ralph', u'1772341']], u'winner': [u'Brave', u'1217209']}, u'Best Writing, Screenplay Based on Material from Another Medium': {u'nominees': [[u'Beasts of the Southern Wild', u'2125435'], [u'Life of Pi', u'0454876'], [u'Lincoln', u'0443272'], [u'Silver Linings Playbook', u'1045658']], u'winner': [u'Argo', u'1024648']}, u'Best Sound Editing': {u'nominees': [[u'Zero Dark Thirty', u'1790885'], [u'Argo', u'1024648'], [u'Django Unchained', u'1853728'], [u'Life of Pi', u'0454876']], u'winner': [u'Skyfall', u'1074638']}, u'Best Actress in a Supporting Role': {u'nominees': [[u'The Master', u'1560747'], [u'Lincoln', u'0443272'], [u'The Sessions', u'1866249'], [u'Silver Linings Playbook', u'1045658']], u'winner': [u'Les Miserables', u'1707386']}, u'Best Cinematography': {u'nominees': [[u'Anna Karenina', u'1781769'], [u'Django Unchained', u'1853728'], [u'Lincoln', u'0443272'], [u'Skyfall', u'1074638']], u'winner': [u'Life of Pi', u'0454876']}, u'Best Documentary, Short Subjects': {u'nominees': [[u'Kings Point', u'2109153'], [u'Mondays at Racine', u'2083264'], [u'Open Heart', u'2348322'], [u'Redemption', u'2201886']], u'winner': [u'Inocente', u'2123210']}, u'Best Sound': {u'nominees': [[u'Argo', u'1024648'], [u'Life of Pi', u'0454876'], [u'Lincoln', u'0443272'], [u'Skyfall', u'1074638']], u'winner': [u'Les Miserables', u'1707386']}, u'Best Director': {u'nominees': [[u'Amour', u'1602620'], [u'Silver Linings Playbook', u'1045658'], [u'Lincoln', u'0443272'], [u'Beasts of the Southern Wild', u'2125435']], u'winner': [u'Life of Pi', u'0454876']}, u'Best Actor in a Leading Role': {u'nominees': [[u'Silver Linings Playbook', u'1045658'], [u'Les Miserables', u'1707386'], [u'The Master', u'1560747'], [u'Flight', u'1907668']], u'winner': [u'Lincoln', u'0443272']}, u'Best Picture': {u'nominees': [[u'Amour', u'1602620'], [u'Beasts of the Southern Wild', u'2125435'], [u'Django Unchained', u'1853728'], [u'Les Miserables', u'1707386'], [u'Life of Pi', u'0454876'], [u'Lincoln', u'0443272'], [u'Silver Linings Playbook', u'1045658'], [u'Zero Dark Thirty', u'1790885']], u'winner': [u'Argo', u'1024648']}, u'Best Actress in a Leading Role': {u'nominees': [[u'Zero Dark Thirty', u'1790885'], [u'Amour', u'1602620'], [u'Beasts of the Southern Wild', u'2125435'], [u'The Impossible', u'1649419']], u'winner': [u'Silver Linings Playbook', u'1045658']}, u'Best Effects, Visual Effects': {u'nominees': [[u'The Avengers', u'0848228'], [u'The Hobbit: An Unexpected Journey', u'0903624'], [u'Prometheus', u'1446714'], [u'Snow White and the Huntsman', u'1735898']], u'winner': [u'Life of Pi', u'0454876']}}, u'2012': {u'Best Actor in a Supporting Role': {u'nominees': [[u'My Week with Marilyn', u'1655420'], [u'Moneyball', u'1210166'], [u'Warrior', u'1291584'], [u'Extremely Loud & Incredibly Close', u'0477302']], u'winner': [u'Beginners', u'1532503']}, u'Best Documentary, Features': {u'nominees': [[u'Hell and Back Again', u'1748043'], [u'If a Tree Falls: A Story of the Earth Liberation Front', u'1787725'], [u'Paradise Lost 3: Purgatory', u'2028530'], [u'Pina', u'1440266']], u'winner': [u'Undefeated', u'1860355']}, u'Best Writing, Screenplay Written Directly for the Screen': {u'nominees': [[u'The Artist', u'1655442'], [u'Bridesmaids', u'1478338'], [u'Margin Call', u'1615147'], [u'A Separation', u'1832382']], u'winner': [u'Midnight in Paris', u'1605783']}, u'Best Foreign Language Film': {u'nominees': [[u'Bullhead', u'1821593'], [u'Footnote', u'1445520'], [u'In Darkness', u'1417075'], [u'Monsieur Lazhar', u'2011971']], u'winner': [u'A Separation', u'1832382']}, u'Best Film Editing': {u'nominees': [[u'The Artist', u'1655442'], [u'The Descendants', u'1033575'], [u'Hugo', u'0970179'], [u'Moneyball', u'1210166']], u'winner': [u'The Girl with the Dragon Tattoo', u'1568346']}, u'Best Art Direction': {u'nominees': [[u'War Horse', u'1568911'], [u'Midnight in Paris', u'1605783'], [u'Harry Potter and the Deathly Hallows: Part 2', u'1201607'], [u'The Artist', u'1655442']], u'winner': [u'Hugo', u'0970179']}, u'Best Short Film, Live Action': {u'nominees': [[u'Pentecost', u'1866218'], [u'Raju', u'1819651'], [u'Time Freak', u'1733689'], [u'Tuba Atlantic', u'2061843']], u'winner': [u'The Shore', u'2201259']}, u'Best Music, Original Song': {u'nominees': [[u'Rio', u'1436562']], u'winner': [u'The Muppets', u'1204342']}, u'Best Music, Original Score': {u'nominees': [[u'The Adventures of Tintin', u'0983193'], [u'Hugo', u'0970179'], [u'Tinker Tailor Soldier Spy', u'1340800'], [u'War Horse', u'1568911']], u'winner': [u'The Artist', u'1655442']}, u'Best Short Film, Animated': {u'nominees': [[u'Sunday', u'1895334'], [u'La luna', u'1957945'], [u'A Morning Stroll', u'1964446'], [u'Wild Life', u'2097943']], u'winner': [u'The Fantastic Flying Books of Mr. Morris Lessmore', u'1778342']}, u'Best Makeup': {u'nominees': [[u'Harry Potter and the Deathly Hallows: Part 2', u'1201607'], [u'Albert Nobbs', u'1602098']], u'winner': [u'The Iron Lady', u'1007029']}, u'Best Costume Design': {u'nominees': [[u'Anonymous', u'1521197'], [u'Hugo', u'0970179'], [u'Jane Eyre', u'1229822'], [u'W.E.', u'1536048']], u'winner': [u'The Artist', u'1655442']}, u'Best Writing, Screenplay Based on Material from Another Medium': {u'nominees': [[u'Hugo', u'0970179'], [u'The Ides of March', u'1124035'], [u'Tinker Tailor Soldier Spy', u'1340800'], [u'Moneyball', u'1210166']], u'winner': [u'The Descendants', u'1033575']}, u'Best Sound Editing': {u'nominees': [[u'The Girl with the Dragon Tattoo', u'1568346'], [u'Transformers: Dark of the Moon', u'1399103'], [u'War Horse', u'1568911'], [u'Drive', u'0780504']], u'winner': [u'Hugo', u'0970179']}, u'Best Actress in a Supporting Role': {u'nominees': [[u'The Artist', u'1655442'], [u'The Help', u'1454029'], [u'Bridesmaids', u'1478338'], [u'Albert Nobbs', u'1602098']], u'winner': [u'The Help', u'1454029']}, u'Best Cinematography': {u'nominees': [[u'The Artist', u'1655442'], [u'The Girl with the Dragon Tattoo', u'1568346'], [u'The Tree of Life', u'0478304'], [u'War Horse', u'1568911']], u'winner': [u'Hugo', u'0970179']}, u'Best Documentary, Short Subjects': {u'nominees': [[u'God Is the Bigger Elvis', u'2210633'], [u'The Barber of Birmingham: Foot Soldier of the Civil Rights Movement', u'1844056'], [u'Incident in New Baghdad', u'1746180'], [u'The Tsunami and the Cherry Blossom', u'2028578']], u'winner': [u'Saving Face', u'2140371']}, u'Best Sound': {u'nominees': [[u'Moneyball', u'1210166'], [u'War Horse', u'1568911'], [u'Transformers: Dark of the Moon', u'1399103'], [u'The Girl with the Dragon Tattoo', u'1568346']], u'winner': [u'Hugo', u'0970179']}, u'Best Director': {u'nominees': [[u'Midnight in Paris', u'1605783'], [u'The Tree of Life', u'0478304'], [u'The Descendants', u'1033575'], [u'Hugo', u'0970179']], u'winner': [u'The Artist', u'1655442']}, u'Best Actor in a Leading Role': {u'nominees': [[u'A Better Life', u'1554091'], [u'The Descendants', u'1033575'], [u'Tinker Tailor Soldier Spy', u'1340800'], [u'Moneyball', u'1210166']], u'winner': [u'The Artist', u'1655442']}, u'Best Picture': {u'nominees': [[u'The Tree of Life', u'0478304'], [u'The Descendants', u'1033575'], [u'Extremely Loud & Incredibly Close', u'0477302'], [u'The Help', u'1454029'], [u'Hugo', u'0970179'], [u'Midnight in Paris', u'1605783'], [u'Moneyball', u'1210166'], [u'War Horse', u'1568911']], u'winner': [u'The Artist', u'1655442']}, u'Best Actress in a Leading Role': {u'nominees': [[u'Albert Nobbs', u'1602098'], [u'The Help', u'1454029'], [u'The Girl with the Dragon Tattoo', u'1568346'], [u'My Week with Marilyn', u'1655420']], u'winner': [u'The Iron Lady', u'1007029']}, u'Best Effects, Visual Effects': {u'nominees': [[u'Real Steel', u'0433035'], [u'Harry Potter and the Deathly Hallows: Part 2', u'1201607'], [u'Transformers: Dark of the Moon', u'1399103'], [u'Rise of the Planet of the Apes', u'1318514']], u'winner': [u'Hugo', u'0970179']}, u'Best Animated Feature Film of the Year': {u'nominees': [[u'Chico & Rita', u'1235830'], [u'A Cat in Paris', u'1673702'], [u'Puss in Boots', u'0448694'], [u'Kung Fu Panda 2', u'1302011']], u'winner': [u'Rango', u'1192628']}}}\n" ] } ], "prompt_number": 92 }, { "cell_type": "markdown", "metadata": {}, "source": [ "However, the names of some of the different awards have changed over the years; we had better fix this for consistency later on. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "movie_awards = [u'Best Documentary, Features',u'Best Writing, Screenplay Written Directly for the Screen',\n", " u'Best Foreign Language Film',u'Best Short Film, Live Action',u'Best Music, Original Song',\n", " u'Best Music, Original Score',u'Best Art Direction-Set Decoration',u'Best Costume Design',\n", " u'Best Short Film, Animated',u'Best Makeup',u'Best Film Editing',u'Best Animated Feature',\n", " u'Best Writing, Screenplay Based on Material from Another Medium',u'Best Sound Editing',\n", " u'Best Cinematography',u'Best Documentary, Short Subjects',u'Best Sound',u'Best Director',\n", " u'Best Picture',u'Best Visual Effects']\n", "\n", "# http://stackoverflow.com/questions/9708374/python-how-to-find-the-string-with-most-matches-in-a-list-of-strings\n", "def find_correct_award(awards,keystr):\n", " keywords = re.split(' |-',keystr.lower())\n", " def matches(text):\n", " return sum(word in text.lower() for word in keywords)\n", " return max(awards,key=matches) \n", "\n", "for year in oscars:\n", " for award in movie_awards:\n", " if award not in oscars[year].keys():\n", " old = find_correct_award(oscars[year].keys(),award)\n", " oscars[year][award] = oscars[year].pop(old)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 109 }, { "cell_type": "code", "collapsed": false, "input": [ "print oscars['2003']['Best Cinematography']" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "{u'nominees': [[u'Chicago', u'0299658'], [u'Far from Heaven', u'0297884'], [u'Gangs of New York', u'0217505'], [u'The Pianist', u'0253474']], u'winner': [u'Road to Perdition', u'0257044']}\n" ] } ], "prompt_number": 110 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Populating a List of Candidate Movies

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In order to run our analysis, we need to isolate a dataset of movies for a given year that are candidates for an Oscar. For this purpose, we decided to extract a subset of the movies outlined by Box Office Mojo as the top movies in a given year. Assumming that the movies most likely to win an Oscar are likely to be among those with the highest gross revenue in a given year, we decided to select the Top 200 movies from each year as candidates for an Oscar (in the following year)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Getting the Movies

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The function get_top_movies_by_year takes two arguments, year and the number of movies desired for that given year. The function returns a dataframe for the given year with the following columns:\n", "\n", "This data, with the exception of IMDBid and RTid, is obtained from Box Office Mojo. In a first pass, we attempt to collect IMDBid and RTid from Rotten Tomatoes API. For the movies that we cannot successfully isolate an IMDBid for, we attempt to obtain an id through the OMDB API." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def get_top_movies_by_year(yr,num_movies=200):\n", " num_pages = int((num_movies-1)/100) + 1\n", " missing_rtid = 0\n", " missing_imdbid = 0\n", " alldata = []\n", " for pagenum in range(1,num_pages+1):\n", " url = 'http://boxofficemojo.com/yearly/chart/?page=' + str(pagenum) + '&view=releasedate&view2=domestic&yr=' + str(yr) + '&p=.htm'\n", " page_xml = requests.get(url).text\n", " dom = web.Element(page_xml)\n", " for table in dom.by_tag('table'):\n", " cellpadding = (table.attributes['cellpadding']) \n", " if (cellpadding == '5'): # isolates table with movie data\n", " for row in table.by_tag('tr'):\n", " cols = row.by_tag('td')\n", " #catches movie rows\n", " try:\n", " rank = int(web.strip_tags(cols[0]))\n", " if (rank<=num_movies): #checks to make sure in right spot!\n", " movie_title = web.strip_tags(cols[1]).strip('\\t')\n", " movie_title = unicodedata.normalize('NFKD', movie_title).encode('ascii', 'ignore') #removes accents\n", " studio = web.strip_tags(cols[2]).strip('\\t')\n", " \n", " # the below try/except mechanisms catch errors when there is a NONE instead of a string which is a candidate for integer casting\n", " try:\n", " total_gross = int(((web.strip_tags(cols[3])).strip('$')).replace(',', ''))\n", " except:\n", " total_gross = None\n", " try:\n", " num_theaters_total = int((web.strip_tags(cols[4])).replace(',', ''))\n", " except:\n", " num_theaters_total = None\n", " try:\n", " opening_revenue = int(((web.strip_tags(cols[5])).strip('$')).replace(',', ''))\n", " except:\n", " opening_revenue = None\n", " try: \n", " num_theaters_opening = int((web.strip_tags(cols[6])).replace(',', ''))\n", " except:\n", " num_theaters_opening = None\n", " \n", " date_open = web.strip_tags(cols[7]).strip('\\t')\n", " date_close = web.strip_tags(cols[8]).strip('\\t')\n", " \n", " #using rotten tomatoes to get rtid/imdbid\n", " url2 = 'http://api.rottentomatoes.com/api/public/v1.0/movies.json?' 'q=' + movie_title + ' &page_limit=10' + '&apikey=' + api_key\n", " info_data = requests.get(url2).text\n", " info_json = json.loads(info_data)\n", " movie_count = 0\n", " rtid=''\n", " imdbid=''\n", " try:\n", " for movie in info_json['movies']:\n", " if movie['year']==yr:\n", " movie_count+=1\n", " rtid=movie['id']\n", " try:\n", " imdbid=(movie['alternate_ids'])['imdb']\n", " except:\n", " imdbid=''\n", " except:\n", " pass\n", " if movie_count!=1: #case where more than one movie met description\n", " rtid = ''\n", " imdbid = ''\n", " \n", " # second attempt to obtain imdb ids using the omdbapi\n", " if imdbid=='':\n", " try:\n", " omdb_link = \"http://www.omdbapi.com/?t=%s&y=%s\" % (movie_title,yr)\n", " omdb_text = web.URL(omdb_link).download(cached=True)\n", " imdbid = json.loads(omdb_text)['imdbID'].replace(\"tt\",\"\")\n", " except:\n", " try:\n", " omdb_link = \"http://www.omdbapi.com/?t=%s&y=%s\" % (movie_title,(yr-1))\n", " omdb_text = web.URL(omdb_link).download(cached=True)\n", " imdbid = json.loads(omdb_text)['imdbID'].replace(\"tt\",\"\")\n", " except:\n", " try:\n", " omdb_link = \"http://www.omdbapi.com/?t=%s&y=%s\" % (movie_title,(yr-2))\n", " omdb_text = web.URL(omdb_link).download(cached=True)\n", " imdbid = json.loads(omdb_text)['imdbID'].replace(\"tt\",\"\")\n", " except:\n", " imdbid = ''\n", " missing_imdbid += 1\n", " if rtid=='':\n", " missing_rtid += 1\n", " \n", " data_row = [rank,yr,movie_title,imdbid,rtid,studio,total_gross,num_theaters_total,opening_revenue,num_theaters_opening,date_open,date_close]\n", " alldata.append(data_row)\n", " except ValueError:\n", " pass\n", " \n", " result = pd.DataFrame(alldata,columns=['rank','year','movie_title','imdbid','rtid','studio','total_gross','num_theaters_total','opening_revenue','num_theaters_opening','date_open','date_close'])\n", " if (missing_imdbid>0):\n", " print 'unable to find a imdbid for ' + str(missing_imdbid) + ' movies of ' + str(num_movies) + ' in ' + str(yr)\n", " if (missing_rtid>0):\n", " print 'unable to find a rtid for ' + str(missing_rtid) + ' movies of ' + str(num_movies) + ' in ' + str(yr)\n", " return result" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 111 }, { "cell_type": "markdown", "metadata": {}, "source": [ "In order to obtain the candidate movies for the timerange of the data we are investigating (2003-2012), we must run get_top_movies_by_year and create a unified dataframe of movie data. The datafile 'alldata_200.csv' includes all of the data outlined previously that we obtain from Box Office Mojo. The datafile 'iddata_200.csv' only includes the data needed by portions of the project in order to collect additional movie data, namely: year, movie rank, imdbid, and rtid." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Saves all data\n", "# alldata=get_top_movies_by_year(2003,200)\n", "# for yr in range(2004,2013):\n", "# num_movies=200\n", "# result=get_top_movies_by_year(yr,num_movies)\n", "# alldata.append(result,ignore_index=True)\n", "# print yr\n", "# filename='./data/alldata_' + str(num_movies) + '.csv'\n", "# alldata.to_csv(filename, index=False)\n", "\n", "# Saves just title and id data in a separate file\n", "# narrowed_data=pd.DataFrame(alldata, columns=['year','rank','movie_title','imdbid','rtid'])\n", "# filename='./data/iddata_' + str(num_movies) + '.csv'\n", "# narrowed_data.to_csv(filename, index=False)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 112 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Data Refinement and Cleaning

\n", "The data collected via get_top_movies by year successfully found the IMDBid (the reference id used across the different segment of this project) for approximately 90% of the top 200 movies in each given year. The additional 10% of IMDBids not found by the above procedure were identified manually. The manual determination of IMDBids was recorded in two new files: 'revised_id_data.csv' and 'completedata.csv'.\n", "\n", "Of the top 200 movies from each year, approximately 5% were excluded from further analysis. The top reasons for movie exclusion included:\n", "\n", "\n", "When a movie was excluded from analysis its IMDBid was set to 'None'. These rows of the dataframe were then removed from analysis." ] }, { "cell_type": "code", "collapsed": false, "input": [ "bomj_df = pd.read_csv('data/completedata.csv')\n", "\n", "def test_for_nones(df,column_name):\n", " result = []\n", " col = df[column_name]\n", " for item in col:\n", " check_bool = False\n", " if (item != 'None'):\n", " if item!='NaN':\n", " check_bool = True\n", " result.append(check_bool)\n", " return result\n", "\n", "# stores imdbid with 7 characters\n", "bomj_df=bomj_df[test_for_nones(bomj_df,'imdbid')]\n", "# removes rtid, which is calculated later\n", "bomj_df=bomj_df[['rank','year','movie_title','imdbid','studio','total_gross','num_theaters_total','opening_revenue','num_theaters_opening','date_open','date_close']]\n", "\n", "import numpy as np\n", "\n", "# ensures proper formatting of all columns\n", "def formatting_verification(column,fun):\n", " result = []\n", " for val in column:\n", " if fun=='int':\n", " if ((val == 'None')):\n", " result.append(None)\n", " else:\n", " print val\n", " result.append(int(val))\n", "\n", "# elif fun=='str':\n", "# if ((val is None)):\n", "# result.append()\n", "# else:\n", "# try:\n", "# if math.isnan(val):\n", "# result.append()\n", "# else:\n", "# result.append(str(val))\n", "# except:\n", "# result.append(str(val))\n", "# return result \n", "\n", "\n", "bomj_df['imdbid'] = bomj_df['imdbid'].map(lambda id: str(id).zfill(7))\n", "\n", "# bomj_df['rank'] = formatting_verification(bomj_df['rank'].values,'int')\n", "# bomj_df['year'] = formatting_verification(bomj_df['year'].values,'int')\n", "# bomj_df['studio'] = formatting_verification(bomj_df['studio'].values,'str')\n", "# bomj_df['total_gross'] = formatting_verification(bomj_df['total_gross'].values,'int')\n", "#bomj_df['num_theaters_total'] = formatting_verification(bomj_df['num_theaters_total'].values,'int')\n", "# bomj_df['opening_revenue'] = formatting_verification(bomj_df['opening_revenue'].values,'int')\n", "# bomj_df['num_theaters_opening'] = formatting_verification(bomj_df['num_theaters_opening'].values,'int')\n", "# bomj_df['date_open'] = pd.to_datetime(bomj_df['date_open'])\n", "# bomj_df['date_close'] = pd.to_datetime(bomj_df['date_close'])\n", "#bomj_df[['num_theaters_total']] = bomj_df[['num_theaters_total']].astype(int)\n", "#bomj_df['num_theaters_total'] = formatting_verification(bomj_df['num_theaters_total'].values,'int')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 163 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Verifying Movie Selection

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "imdb_as_index = bomj_df.set_index('imdbid')\n", "imdb_as_index.head()\n", "data_by_year = imdb_as_index.groupby('year').groups\n", "performance = {}\n", "total_nominees_present = 0\n", "total_nominees_absent = 0\n", "total_winners_present = 0\n", "total_winners_absent = 0\n", "for (yr,yr_list) in oscars.iteritems():\n", " yr = int(yr)\n", " if yr>2003:\n", " yr=yr-1\n", " movieids=data_by_year[yr]\n", " nominee_ids=[]\n", " winner_ids=[]\n", " \n", " nominees_present = 0\n", " nominees_absent = 0\n", " winners_present = 0\n", " winners_absent = 0\n", " \n", " for (award,award_list) in yr_list.iteritems():\n", " winner_ids.append(award_list['winner'][1])\n", " for nominee in award_list['nominees']:\n", " nominee_ids.append(nominee[1])\n", " for nid in nominee_ids:\n", " is_movie_saved = False\n", " for top200id in movieids:\n", " try:\n", " corrected_id=str(int(top200id)).zfill(7)\n", " if corrected_id==nid:\n", " is_movie_saved = True\n", " except:\n", " pass\n", " if is_movie_saved:\n", " nominees_present += 1\n", " else:\n", " nominees_absent += 1\n", " for wid in winner_ids:\n", " is_movie_saved = False\n", " for top200id in movieids:\n", " try:\n", " corrected_id=str(int(top200id)).zfill(7)\n", " if corrected_id==wid:\n", " is_movie_saved = True\n", " except:\n", " pass\n", " if is_movie_saved:\n", " winners_present += 1\n", " else:\n", " winners_absent += 1 \n", " total_nominees_present += nominees_present\n", " total_nominees_absent += nominees_absent\n", " total_winners_present += winners_present\n", " total_winners_absent += winners_absent\n", " performance[yr]=[winners_present,winners_absent,nominees_present,nominees_absent]\n", " #print str(yr) + ' nominee performance: ' + str(float(nominees_present)/(nominees_present+nominees_absent))\n", " #print str(yr) + ' winner performance: ' + str(float(winners_present)/(winners_present+winners_absent))\n", " #print\n", "\n", "print 'total nominee performance: ' + str(float(total_nominees_present)/(total_nominees_present+total_nominees_absent))\n", "print 'total winner performance: ' + str(float(total_winners_present)/(total_winners_present+total_winners_absent))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "total nominee performance: 0.769230769231\n", "total winner performance: 0.7875\n" ] } ], "prompt_number": 20 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Getting the Reviews

\n", "\n", "We need to constuct dataframes of reviews of movies from different review sources. We will be using the following sources:\n", "\n", "\n", "For each of these, we will construct a separate dataframe with the following structure:\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CriticNormalized ScoreQuoteIDTitleSourceOverall ScoreYear
Name of the CriticScore normalized to what the max is for this sourceThe string of the reviewMovie ID for this siteTitle of the movieSource of the reviewThe overall score for this movie on this site (if there is one)Year that the movie is form
" ] }, { "cell_type": "code", "collapsed": false, "input": [ "print \"For Example:\"\n", "pd.DataFrame({\"critic\":[''],\"norm_score\":[''],\"quote\":[''],\"id\":[''],\"title\":[''],\"source\":[''],\"overall_score\":[''],\"year\":[''],\"date\":['']}).head()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "For Example:\n" ] }, { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
criticdateidnorm_scoreoverall_scorequotesourcetitleyear
0
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 10, "text": [ " critic date id norm_score overall_score quote source title year\n", "0 " ] } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Rotten Tomatoes

" ] }, { "cell_type": "code", "collapsed": true, "input": [ "# write the functions to scrape the data\n", "\n", "'''\n", "Get Individual Review From Rotten Tomatoes\n", "\n", "'''\n", "\n", "def get_rtomatoes_movie_reviews(imdb):\n", "\t#api_key = 't97y5fkhfbfu9wjhse7v8ayy' \n", "\t#api_key = '8kr5nqyrshjyp4y69w8rzzgu'\n", "\tapi_key = 'sdat77wpkdnuyvb9bqhz2y5v'\n", "\tif(len(imdb)<7):\n", "\t\textra = 7 - len(imdb)\n", "\t\tprefix = \"\"\n", "\t\tfor i in range(0, extra):\n", "\t\t\tprefix = prefix + '0'\n", "\t\t\timdb = prefix + imdb\n", "\n", "\turl = 'http://api.rottentomatoes.com/api/public/v1.0/movie_alias.json' \n", "\toptions = {'type': 'imdb','id': imdb, 'apikey': api_key}\n", "\trotIds = requests.get(url, params=options).text\n", "\trotIds = json.loads(rotIds)\n", "\n", "\tif('\"error\":\"Could not find a movie with the specified id\"' in rotIds):\n", "\t\treturn None\n", "\tif('id' not in rotIds):\n", "\t\treturn None\n", "\n", "\ttitle = rotIds['title']\n", "\tyear = rotIds['year']\n", "\toverall_score = rotIds['ratings']['critics_score']\n", "\trotId = rotIds['id']\n", "\t\n", "\turl2 = 'http://api.rottentomatoes.com/api/public/v1.0/movies/%s/reviews.json' % rotId\n", "\toptions2 = {'review_type': 'top_critic', 'page_limit': 50, 'page': 1, 'apikey': api_key}\n", "\tdata = requests.get(url2, params=options2).text\n", "\tdata = json.loads(data) # load a json string into a collection of lists and dicts\n", "\tif('total' not in data or 'reviews' not in data):\n", "\t\treturn None\n", "\tif str(data['total']) == '0':\n", "\t\treturn None\n", "\n", "\tids = []\n", "\ttitles = []\n", "\tyears = []\n", "\toverall_scores = []\n", "\t\n", "\trevs = data['reviews'] \n", "\tcritics = []\n", "\tquotes = []\n", "\tpubs = []\n", "\tfreshness = []\n", "\tdates = []\n", "\n", "\tfor each in revs:\n", "\t\tids.append(imdb)\n", "\t\ttitles.append(title)\n", "\t\tyears.append(year)\n", "\t\toverall_scores.append(float(overall_score)/100.0)\n", "\n", "\t\tcritics.append(each['critic'])\n", "\t\tquotes.append(each['quote'])\n", "\t\tpubs.append(each['publication'])\n", "\t\tif(each['freshness'] == 'fresh'):\n", "\t\t\tfreshness.append(1)\n", "\t\telse:\n", "\t\t\tfreshness.append(0)\n", "\t\tdates.append(each['date']) \n", "\t\n", "\td = {'critic' : critics, 'norm_score' : freshness, 'quote' : quotes, 'id' : ids, 'title' : titles, 'source' : pubs, 'overall_score' : overall_scores, 'date' : dates, 'year': years} \n", "\treturn pd.DataFrame(d)\n", "\n", "def get_all_rtomatoes_movies(movieList):\n", "\tall_imdbs = alldata['imdbid']\n", "\timdbs = []\n", "\tfor each in all_imdbs:\n", "\t\tif str(each) != 'None':\n", "\t\t\timdbs.append(each)\n", "\t#print imdbs\n", "\t#for each in imdbs:\n", "\n", "\tnewDF = pd.DataFrame()\n", "\tfor each in imdbs:\n", "\t\tindividualDF = get_rtomatoes_movie_reviews(each)\n", "\t\tif(individualDF):\n", "\t\t\tnewDF = newDF.append(individualDF, ignore_index=True)\n", "\n", "\n", "\tfilename='./data/rotten_tomatoes_data.csv'\n", "\tnewDF.to_csv(filename, index=False)\n", "\treturn newDF" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "# actually call the functions and save in a file\n", "\n", "#alldata = pd.read_csv('./revised_id_data.csv') \n", "#rot_tom_data = get_all_rtomatoes_movies(alldata)\n", "\n", "#once we have the stored csv file not necessary to make the above calls, and can just do:\n", "rotten_df = pd.read_csv('data/rotten_tomatoes_data.csv')\n", "\n", "def filter_tomatoes(dataF):\n", " for ind, each in enumerate(dataF['quote']):\n", " if(str(each) == 'nan'):\n", " dataF['quote'][ind] = 'NoReview'\n", " dataF = dataF[dataF.quote != 'NoReview']\n", " return dataF\n", "\n", "rotten_df = filter_tomatoes(rotten_df)\n", "rotten_df.head()\n" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
criticdateidnorm_scoreoverall_scorequotesourcetitleyear
0 David Germain 11/19/13 167260 1 0.94 With The Lord of the Rings: The Return of the ... Associated Press The Lord of the Rings: The Return of the King 2003
1 Joe Morgenstern 11/19/13 167260 1 0.94 Yes, the running time is long, and yes, those ... Wall Street Journal The Lord of the Rings: The Return of the King 2003
2 Andrea Gronvall 2/6/07 167260 1 0.94 Standing out amid an excellent cast is Elijah ... Chicago Reader The Lord of the Rings: The Return of the King 2003
3 Geoff Andrew 2/9/06 167260 0 0.94 Some story strands are crudely abbreviated; ot... Time Out The Lord of the Rings: The Return of the King 2003
4 Peter Travers 1/15/04 167260 1 0.94 Pops your eyes, excites your senses and brings... Rolling Stone The Lord of the Rings: The Return of the King 2003
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 71, "text": [ " critic date id norm_score overall_score quote source title year\n", "0 David Germain 11/19/13 167260 1 0.94 With The Lord of the Rings: The Return of the ... Associated Press The Lord of the Rings: The Return of the King 2003\n", "1 Joe Morgenstern 11/19/13 167260 1 0.94 Yes, the running time is long, and yes, those ... Wall Street Journal The Lord of the Rings: The Return of the King 2003\n", "2 Andrea Gronvall 2/6/07 167260 1 0.94 Standing out amid an excellent cast is Elijah ... Chicago Reader The Lord of the Rings: The Return of the King 2003\n", "3 Geoff Andrew 2/9/06 167260 0 0.94 Some story strands are crudely abbreviated; ot... Time Out The Lord of the Rings: The Return of the King 2003\n", "4 Peter Travers 1/15/04 167260 1 0.94 Pops your eyes, excites your senses and brings... Rolling Stone The Lord of the Rings: The Return of the King 2003" ] } ], "prompt_number": 71 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Metacritic

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# write the functions to scrape the data" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 13 }, { "cell_type": "code", "collapsed": false, "input": [ "# actually call the functions and save in a file" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 14 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

IMDB

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\"\"\"\n", "Function\n", "--------\n", "get_imdb_movie_reviews:\n", " retrieves the movie reviews for a given movie on imdb\n", "Parameters\n", "----------\n", "id:\n", " imdb movie ID\n", "title:\n", " title of the movie (why scrape it when we already have it?)\n", "year:\n", " year that the movie was made\n", "Returns\n", "-------\n", "returns a dataframe containing all of the movie revies of the form\n", "listed above\n", "\"\"\"\n", "def get_imdb_movie_reviews(id,title,year):\n", " score_max = 10.0\n", " link = \"http://www.imdb.com/title/tt%0.7d/\" % id\n", " url = web.URL(link)\n", " dom = web.DOM(url.download(cached=True))\n", " overall = float(dom.by_class(\"titlePageSprite star-box-giga-star\")[0].content.strip()) / score_max\n", " # try to get year directly from page; this isn't present in every entry\n", " try:\n", " year = dom('span.itemprop[itemprop=name]')[0].next.next.by_tag('a')[0].content\n", " year = int(year)\n", " except:\n", " pass\n", " rc = dom.by_attr(itemprop=\"reviewCount\")[0].content.split(\" \")[0].replace(\",\",\"\")\n", " revlink = link + 'reviews?count=%s&start=0' % rc # get at most 20 reviews\n", " url = web.URL(revlink)\n", " dom = web.DOM(url.download(cached=True))\n", " parser = HTMLParser()\n", " lst = []\n", " hrs = dom.by_id('tn15main').by_tag('hr')\n", " for hr in hrs:\n", " div = hr.next.next\n", " try:\n", " score = float(div.by_tag(\"img\")[1].attrs[\"alt\"].split(\"/\")[0]) / score_max\n", " date = div.by_tag(\"small\")[2].content\n", " except:\n", " continue\n", " user = div.by_tag(\"a\")[1].content\n", " p = div.next.next\n", " review = parser.unescape(p.content.replace(\"
\",\"\\n\"))\n", " lst.append(dict(critic=user,norm_score=score,quote=review,\n", " id=id,title=title,source=\"IMDB\",overall_score=overall,year=year,date=date))\n", " return lst\n", "\n", "def get_all_imdb_movies():\n", " fname = 'revised_id_data.csv'\n", " df = []\n", " result = pd.read_csv('data/%s' % fname)\n", " f = open('errors.txt','w+')\n", " year = 2003\n", " for index,row in result.iterrows():\n", " try: \n", " row['imdbid'] = int(row['imdbid'])\n", " except:\n", " continue\n", " newyr = row['year']\n", " if(int(newyr) != year and df != []):\n", " # filter_quotes(df)\n", " fo = open('imdbrev%d.json' % year,'w+')\n", " json.dump(df,fo)\n", " fo.close()\n", " year = int(newyr)\n", " df = []\n", " gc.collect()\n", " try:\n", " df.append(get_imdb_movie_reviews(row['imdbid'],row['movie_title'],row['year']))\n", " print row['movie_title'], year\n", " except:\n", " print >> f, \"ERROR: %s\" % row['movie_title']\n", " f.close()\n", " if df:\n", " fo = open('imdbrev%d.json' % year,'w+')\n", " json.dump(df,fo)\n", " fo.close()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 15 }, { "cell_type": "code", "collapsed": false, "input": [ "# create the json files for all of the imdb reviews\n", "# get_all_imdb_movies()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 16 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Although we had all the data for imdb now, we still had to clean it. It turns out there was were a log of unicode characters in the quotes that exporting to csv doesn't really play nice with. In order to overcome this, we had to clean the data removing all escaped sequences including '\\r','\\n','\\t', and all unicode characters." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def filter_quotes(df):\n", " for index,row in df.iterrows():\n", " text = row['quote']\n", " text = re.sub(r\"\\\\u[0-9a-zAZ]{4}\", \"\", text)\n", " text = re.sub(\"\\\\\\[^\\'|\\\"]\", \"\", text)\n", " text = text.replace('\\n','')\n", " text = unicodedata.normalize('NFKC',unicode(text)).encode('ascii','ignore')\n", " df.ix[index, 'quote'] = text" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 17 }, { "cell_type": "code", "collapsed": false, "input": [ "\"\"\"\n", "Here we construct the dataframe for all of the imdb reviews.\n", "We then filter it, and save it to a csv.\n", "\"\"\"\n", "\"\"\"\n", "imdb_f_list = ['imdbrev2003.json', 'imdbrev2004.json', 'imdbrev2005.json', \n", " 'imdbrev2006.json', 'imdbrev2007.json', 'imdbrev2008.json', \n", " 'imdbrev2009.json', 'imdbrev2010.json', 'imdbrev2011.json', 'imdbrev2012.json'] \n", "\n", "\n", "imdb_df = pd.DataFrame({\"critic\":[],\"norm_score\":[],\"quote\":[],\"id\":[],\n", " \"title\":[],\"source\":[],\"overall_score\":[],\"year\":[],\"date\":[]})\n", "\n", "for f in imdb_f_list:\n", " fp = open('data/' + f,'rb')\n", " j = json.load(fp)\n", " fp.close()\n", " for m in j:\n", " if m != []:\n", " imdb_df = imdb_df.append(m)\n", " gc.collect()\n", " \n", "filter_quotes(imdb_df)\n", "imdb_df.to_csv('data/imdb_reviews.csv',index=False)\n", "\"\"\"\n", "pass" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 18 }, { "cell_type": "code", "collapsed": false, "input": [ "# read saved dataframe\n", "imdb_df = pd.read_csv('data/imdb_reviews.csv')\n", "imdb_df.head()" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "KeyboardInterrupt", "evalue": "", "output_type": "pyerr", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# read saved dataframe\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mimdb_df\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_csv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'data/imdb_reviews.csv'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mimdb_df\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m//anaconda/python.app/Contents/lib/python2.7/site-packages/pandas/io/parsers.pyc\u001b[0m in \u001b[0;36mparser_f\u001b[0;34m(filepath_or_buffer, sep, dialect, compression, doublequote, escapechar, quotechar, quoting, skipinitialspace, lineterminator, header, index_col, names, prefix, skiprows, skipfooter, skip_footer, na_values, na_fvalues, true_values, false_values, delimiter, converters, dtype, usecols, engine, delim_whitespace, as_recarray, na_filter, compact_ints, use_unsigned, low_memory, buffer_lines, warn_bad_lines, error_bad_lines, keep_default_na, thousands, comment, decimal, parse_dates, keep_date_col, dayfirst, date_parser, memory_map, nrows, iterator, chunksize, verbose, encoding, squeeze, mangle_dupe_cols, tupleize_cols)\u001b[0m\n\u001b[1;32m 398\u001b[0m )\n\u001b[1;32m 399\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 400\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0m_read\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 401\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 402\u001b[0m \u001b[0mparser_f\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__name__\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m//anaconda/python.app/Contents/lib/python2.7/site-packages/pandas/io/parsers.pyc\u001b[0m in \u001b[0;36m_read\u001b[0;34m(filepath_or_buffer, kwds)\u001b[0m\n\u001b[1;32m 203\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mparser\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 204\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 205\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 206\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 207\u001b[0m _parser_defaults = {\n", "\u001b[0;32m//anaconda/python.app/Contents/lib/python2.7/site-packages/pandas/io/parsers.pyc\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, nrows)\u001b[0m\n\u001b[1;32m 606\u001b[0m \u001b[0;31m# self._engine.set_error_bad_lines(False)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 607\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 608\u001b[0;31m \u001b[0mret\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnrows\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 609\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 610\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moptions\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'as_recarray'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m//anaconda/python.app/Contents/lib/python2.7/site-packages/pandas/io/parsers.pyc\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, nrows)\u001b[0m\n\u001b[1;32m 1026\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1027\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1028\u001b[0;31m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_reader\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnrows\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1029\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mStopIteration\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1030\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mnrows\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } ], "prompt_number": 19 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Exploring the Data

\n", "\n", "Here we visualize the reviews from the different sources to get a sense of the number of review, distribution of ratings, ..." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# now it's time to add the data\n", "\"\"\"\n", "Function\n", "--------\n", "add_oscar_data:\n", " Adds data for being an oscar winner or nominee in place in the passed dataframe\n", "\n", "Parameters\n", "----------\n", " df: Dataframe\n", " award_name: Name of the oscar award\n", " If None, then creates general columns for winning any or being nominated in any\n", "\"\"\"\n", "\n", "movie_awards = [u'Best Documentary, Features',u'Best Writing, Screenplay Written Directly for the Screen',\n", " u'Best Foreign Language Film',u'Best Short Film, Live Action',u'Best Music, Original Song',\n", " u'Best Music, Original Score',u'Best Art Direction-Set Decoration',u'Best Costume Design',\n", " u'Best Short Film, Animated',u'Best Makeup',u'Best Film Editing',u'Best Animated Feature',\n", " u'Best Writing, Screenplay Based on Material from Another Medium',u'Best Sound Editing',\n", " u'Best Cinematography',u'Best Documentary, Short Subjects',u'Best Sound',u'Best Director',\n", " u'Best Picture',u'Best Visual Effects']\n", "\n", "def add_oscar_data(df,imdbid_title='id',award_name=None):\n", " awards = movie_awards\n", " if award_name:\n", " awards = [award_name]\n", " win = award_name.replace(' ','_') + '_winner'\n", " nom = award_name.replace(' ','_') + '_nom'\n", " else:\n", " win = 'oscar_winner'\n", " nom = 'oscar_nom'\n", " df[win] = 0\n", " df[nom] = 0\n", " for year in oscars:\n", " for award in movie_awards:\n", " try:\n", " df[win][df[imdbid_title] == oscars[year][award]['winner'][1]] = 1\n", " df[nom][df[imdbid_title] == oscars[year][award]['winner'][1]] = 1\n", " for n in oscars[year][award]['nominees']:\n", " df[nom][df[imdbid_title] == n[1]] = 1\n", " # skip awards that don't exist for a year\n", " except:\n", " pass" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 126 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Box Office Mojo Data

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "add_oscar_data(bomj_df,'imdbid')\n", "bomj_df.head()" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
rankyearmovie_titleimdbidstudiototal_grossnum_theaters_totalopening_revenuenum_theaters_openingdate_opendate_closeoscar_winneroscar_nom
0 1 2003 The Lord of the Rings: The Return of the King 0167260 NL 377027325 3703 72629713 3703 17-Dec 3-Jun 1 1
1 2 2003 Finding Nemo 0266543 BV 339714978 3425 70251710 3374 30-May 18-Dec 1 1
2 3 2003 Pirates of the Caribbean: The Curse of the Bla... 0325980 BV 305413918 3416 46630690 3269 9-Jul 8-Jan 0 1
3 4 2003 The Matrix Reloaded 0234215 WB 281576461 3603 91774413 3603 15-May 13-Nov 0 0
4 5 2003 Bruce Almighty 0315327 Uni. 242829261 3549 67953330 3483 23-May 11-Dec 0 0
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 169, "text": [ " rank year movie_title imdbid studio total_gross num_theaters_total opening_revenue num_theaters_opening date_open date_close oscar_winner oscar_nom\n", "0 1 2003 The Lord of the Rings: The Return of the King 0167260 NL 377027325 3703 72629713 3703 17-Dec 3-Jun 1 1\n", "1 2 2003 Finding Nemo 0266543 BV 339714978 3425 70251710 3374 30-May 18-Dec 1 1\n", "2 3 2003 Pirates of the Caribbean: The Curse of the Bla... 0325980 BV 305413918 3416 46630690 3269 9-Jul 8-Jan 0 1\n", "3 4 2003 The Matrix Reloaded 0234215 WB 281576461 3603 91774413 3603 15-May 13-Nov 0 0\n", "4 5 2003 Bruce Almighty 0315327 Uni. 242829261 3549 67953330 3483 23-May 11-Dec 0 0" ] } ], "prompt_number": 169 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Movie Studios

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def plot_str_hist(df,column_name,xlabel='',ylabel='',title='',xticksize=7):\n", " total_movies = float(len(df))\n", " data_pts=[]\n", " counts=[]\n", " data=[]\n", " tickloc=0.5\n", " barloc=0\n", " barlocs=[]\n", " ticklocs=[]\n", " grouped_data=(df.groupby(column_name)).groups\n", " for key,val in grouped_data.items():\n", " data.append((key,len(val)))\n", " ticklocs.append(tickloc)\n", " barlocs.append(barloc)\n", " tickloc+=1\n", " barloc+=1\n", " data.sort(key=lambda x:x[1])\n", " for key,val in data:\n", " data_pts.append(key)\n", " counts.append(val/total_movies)\n", " plt.bar(barlocs, height=counts, width=1,color='r',edgecolor=\"white\")\n", " plt.xticks(rotation=90,size=xticksize)\n", " plt.xticks(ticklocs,data_pts)\n", " plt.xlabel(xlabel)\n", " plt.ylabel(ylabel)\n", " plt.title(title)\n", " histogram_style()\n", " plt.show()\n", "\n", "plot_str_hist(bomj_df,'studio',xlabel='Studio',ylabel='Frequency',title='Studio v. Count for All Movies')\n", "plot_str_hist(bomj_df[bomj_df.oscar_winner == 1],'studio',xlabel='Studio',ylabel='Frequency',title='Studio v. Count for Winners',xticksize=10)\n", "plot_str_hist(bomj_df[bomj_df.oscar_nom == 1],'studio',xlabel='Studio',ylabel='Frequency',title='Studio v. Count for Nominees',xticksize=10)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAnAAAAGmCAYAAAD8nLkMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8TNfj//H3ZJGIndiK2irU8ilFLbW2kdbeql0Ra+1L\nUE2rrV2V1lZCVQXhI4pSpf2KndKqqjVoLbVFYqt9i+T+/vDL/ZjMYJBELq/n4zEP5sw59547c2fy\nnnPvPWMzDMMQAAAALMPtSXcAAAAAD4cABwAAYDEEOAAAAIshwAEAAFgMAQ4AAMBiCHAAAAAWQ4AD\nnhE1atRQzZo1zfv//POP3NzcNGvWrCfYq2fXhAkTVLhwYXl4eKhMmTJPujt2ChQooHbt2pn3rbiv\nBAYGqmDBgk+6G0CyIcABKSAyMlLNmzdXwYIFlTZtWuXJk0c1atTQkCFD7OpNmTIl2f5I2mw22Wy2\nB5alNnv27FFgYKDy588vb29vZc6cWdWqVdOkSZN08+bNJ909SQ//um3atEl9+/ZVxYoVNXPmTI0a\nNSoZe2fv22+/lZubm4oVK3bPOvfaL1zZV9zc3OTm5qaOHTs6fXzYsGFmnWPHjrne8YdkhX0beBwe\nT7oDwNNuy5YtqlmzpvLmzav27dsrT548ioqK0rZt2zR69Gh9+umnZt0pU6Yoe/bsatu2bZL3wzAM\nuz9oBQoU0PXr1+XhkXo/BkJDQ9WpUydlz55drVu3VtGiRXX9+nVt3LhR/fv31549ezRt2rQn3c2H\nft3WrVsnSZo6daoyZMiQjD1zFBYWJh8fH/3111/atm2bypUrl+Tr8Pb21uLFizVlyhSlSZPG7rF5\n8+bJ29s72cP39OnTxTz1eJql3k9u4CkxfPhwZciQQb///ruyZMli99iZM2eeUK/uSPzHNTXZunWr\nOnXqpAoVKuinn36yCzrdu3fXwYMHtWLFiifYw0d3+vRpSUrS8Hb9+nWlTZv2vnVOnDihDRs2aMyY\nMRoyZIjCwsKSJcC98cYb+vHHH7VixQq99dZbZvn27dt14MABvfPOO1q0aFGSr/duqfmLCZAUOIQK\nJLNDhw6pePHiDuFNkrJnz27+v0CBAoqMjNT69evNQ0wJ5/CEhoY6PeS0bt06ubm5acOGDXblX3/9\ntQoXLiwfHx9VqFBBGzdudFj3vc5r2rlzp+rUqaNMmTIpffr0qlmzpjZt2vTA7SxZsqSqVavm9LEi\nRYrYnX/nisGDB8tms2nevHlOg84LL7ygXr16mffj4uI0YsQIvfDCC/L29lb+/Pk1cOBA3bhxw66d\nm5ubw6FryfG8r4TnfMOGDQoKClL27NmVPn16NWrUSGfPnrVrd6/XzRk3Nzd99dVX5v/d3Nw0e/bs\nh9qGAgUKqHbt2lq9erUqVKigtGnT6vPPP7/f0ynpzuiXh4eHAgMD1bhxY4WHhys+Pv6B7R5Wrly5\nVLNmTc2dO9eufO7cuXrhhRdUsWJFp+0WLVqkcuXKycfHR76+vmrZsqWOHz9uPj527Fi5ubnp8OHD\nDm2HDx9u9x651zlw8+bNU/ny5eXj46OsWbOqadOm+ueff+zqHDx4UE2bNtVzzz0nb29v5cmTR40b\nN1Z0dPTDPhVAsiHAAcmsYMGC2r59u3bt2nXfehMmTFDevHn14osvKiwsTGFhYZowYcJDr2/GjBnq\n0qWLnnvuOX3++eeqWrWq3nrrLZ04ccJp/bsPq+7bt09Vq1bVzp079f7772vw4MGKioqSv7+/0xB4\ntxYtWuiXX37RyZMn7cr/+OMPHTp0SC1atHB5G65fv65Vq1apWrVqev75511q89577+njjz9WmTJl\nNH78ePn7+2vMmDF65513HOre6/wuZ+V9+vTR7t27NWTIEHXt2lXLli1Tjx49zMcf9nWbM2eOatWq\nJUlm/YTg6+o22Gw2HTx4UE2aNFHNmjU1adIkVapU6YHPUVhYmGrXrq0sWbKodevWiomJUURExAPb\nPSybzaaWLVtq+fLlunz5siQpPj5e8+fPV4sWLZwe2gwLC1OTJk3k5uamzz77TF26dNGPP/6oV199\nVefOnZMkNW/eXDabTeHh4Q7tw8PDVbFiRbv9JfHr+dlnn6l169YqXLiwvvzyS/Xv31+bNm3Sq6++\naoby2NhYvfHGG9q8ebN69OihkJAQdevWTadPn9apU6eS7DkCHpsBIFmtWbPGcHd3N9zd3Y1XXnnF\n6Nevn7F8+XLjxo0bDnVLlChh1KxZ06F85syZhs1mM44ePWpXvnbtWsNmsxnr1683DMMwbt26ZeTI\nkcN4+eWXjdjYWLPet99+a9hsNrtlHzlyxLDZbMasWbPMsrffftvw8vIyDh48aJadPXvW8PX1NcqV\nK3ff7Tx48KBhs9mMcePG2ZUPGDDASJMmjXHu3Ln7tr/bzp07DZvNZvTt2/eh6rdv396ufPDgwYbN\nZjN+/PFHs8xmsxlDhgxxWEaBAgWMdu3amfcTnvNatWrZ1QsKCjI8PDyMS5cumWX3et3upXv37obN\nZnvkbcifP79hs9mMZcuWubzOhOUvXLjQMAzDiI+PN/Lnz2+8++67DnUTPxfO9pV7sdlsRteuXY2L\nFy8aadOmNWbOnGkYhmGsXr3asNlsxoEDB4wxY8bY7c+3bt0ycubMaZQoUcLufbFu3TrDZrMZ/fv3\nN8uqVKlivPTSS3br3Lt3r2Gz2YwJEyaYZW3btjUKFChg3j969Kjh4eFhDBs2zK7toUOHDG9vb+PD\nDz80DMMwduzYYdhsNmPRokUP3FbgSWIEDkhmNWvW1MaNG1WvXj3t3btXX375perVq6ecOXMqNDQ0\nSde1bds2nTlzRp06dbI7B6hNmzbKnDnzfdvGxcXp//7v/1S/fn0VLlzYLM+WLZsCAwP1xx9/3Pec\nvcKFC6ts2bIOoyMLFizQ66+/rqxZs7q8HZcuXZLk+jliy5cvlyQFBQXZlfft21fu7u7m44+iQ4cO\ndverVKmiuLg4HT169JGX6czDbkO+fPlUr149l5cfFhamzJkzq379+pLujE61atVKS5Ys0bVr1x6z\n944yZsyoOnXqaN68eZLuHLosW7as/Pz8HOpu27ZNp0+fVteuXeXl5WWWV69eXWXLlrXb9ubNm2vX\nrl06cOCAWRYeHi43Nzc1bdr0nv1ZvHix4uLi1LRpU509e9a8ZcyYUSVLltTatWvNfkvSzz//nCzP\nC5BUCHBACqhUqZKWLFmiixcvaseOHRo+fLhsNpvat29v/uFICgmhokiRInbl7u7uD5wT68yZM7p+\n/bqKFi3q8FjClBOJzxVKrHnz5vrtt9/MfmzZskXHjh1T8+bNXd0ESf/7I5pw+O1Bjh49KpvN5hAO\nMmbMqNy5cz9W2Ep8CDfhXMZ///33kZfpzMNuQ6FChVxednx8vP773/+qevXqOn78uA4ePKiDBw+q\nYsWKunr1qpYsWZIk25BYixYttGbNGh09elSLFi1Sy5YtndZL2LZ77Xt373dNmjSRu7u75s+fb5aF\nh4erWrVqypUr1z378tdff5nLy5Ejh93t7i8nBQsWVFBQkL755hv5+vqqVq1amjhxos6fP//Q2w8k\nJwIckILc3d31n//8Rx9++KEWL14s6c7IyIPcaz6ruLg4l9dtpMCUCs2aNbM7Ryk8PFze3t56++23\nH2o5L7zwgjw9PR943qArXN3u27dvOy13d3d/rOUmBWfretAVp3dbt26dTp48qaVLl6pIkSLy8/OT\nn5+fGjZsKMm1ffBR1K1bV+nTp1dgYKAuX778UOdB3u3u/T9HjhyqUaOGuY/t2LFDf/311wO/JCRc\nrPHzzz9r1apVDreEC0mkOxdL7NmzR5988oni4uLUr18/FStWTPv27Xuk/gPJgQAHPCHly5eXJLsT\no+8V1BJGfS5cuGBXnnhUJn/+/JL+N9qQ4Pbt2zpy5Mh9+5M9e3b5+Pho//79Do8llBUoUOC+y8ib\nN68qV66s8PBwGYah7777Tm+++eZDT5fh4+Oj119/XevXr3dpstf8+fPLMAy7w2rSnUOxp06dsut3\nlixZHJ7HW7duPdYJ6kkxYezDbMPDCgsLk6+vrxYuXOhw69ixo1atWpUsU9p4e3urUaNGWr9+vWrU\nqHHPEbKE/fZe+17ibW/evLn279+v3bt3Kzw8XB4eHmrcuPF9+/LCCy9IunPo+bXXXnO4Jb4IpHjx\n4vrggw+0Zs0abd++XRcuXNC4ceNc3XQg2RHggGS2Zs0apyMoCXOY3T0jfrp06Zweqkk4J239+vVm\nWVxcnL7++mu7euXLl1f27Nk1ffp0xcbGmuWzZ8/WxYsX79tPd3d3vfnmm1q2bJndNA3nz5/XrFmz\nzGU/SPPmzfXnn39qxowZOnXqlN3IyO3bt7V//36XpmP45JNPJEnvvvuu00Ophw4d0sSJEyXJPBds\n/PjxdnUmTJig+Ph4u3PFChcubPc8SnemXXmc6TTu9bo9jIfZhodx48YNLVq0SHXr1lWjRo0cbv36\n9dPt27ftDkkmpaCgIA0ePNjp1C0Jypcvr5w5c2ratGl2E/xu3LhRf/zxh8O2N2rUSJ6enpo/f74W\nLFggf39/p+dY3h2s33nnHbm7u2vo0KFO+5Bwpevly5cdRmOLFSsmb2/vB76HgJTETIdAMuvVq5eu\nXr2qt99+W8WKFVN8fLy2b9+uOXPmyNfXV3369DHrli9fXlOmTNHQoUNVpEgRpU+fXvXr11eJEiVU\nsWJFBQcH6/z588qSJYvmz5/vcAjVw8NDw4cP13vvvaeaNWuqWbNm+ueffxQaGqpChQo98LDf8OHD\ntXLlSlWpUkXdu3eXl5eXpk+frkuXLumLL75waXubNGmiPn36KCgoSOnSpTNPmpfuTCRbvHhxtW3b\n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\nl9aGDRtUr1497dmzRxcvXtQvv/yiF154ISX6CgAAkDRiY+8cNr1bUk4HklrmgTt16pRCQkL0xx9/\nyDAMvfzyy+revbty587t8soAAABSjeQMYk86wN26dUtVq1bV7NmzVbRoUZcXDAAAkKpZOMA98By4\nNGnS6MiRI7IlXgkAAACeCJcuYmjTpo2mT5+eJCucMmWKChYsqLRp06pcuXLatGnTfevv3r1b1atX\nl4+Pj/Lmzathw4bds+6mTZvk4eGhUqVKJUlfAQAAUiOX5oG7du2awsLCFBERobJlyypdunSS7vy8\nls1m08SJE11aWXh4uPr06aOQkBBVqVJFkydPVu3atRUZGal8+fI51L906ZJq1aqlGjVqaNu2bdq3\nb5/atWundOnSKSgoyK7uv//+qzZt2sjf319RUVEu9QcAAMCK7nsO3K5du1SiRAlzqpDEh1ETAtza\ntWtdWlmFChVUunRpTZs2zSzz8/NT48aNNXLkSIf6ISEhCg4OVkxMjLy8vCRJI0aMUEhIiE6cOGFX\nt1GjRipTpozi4+O1cOFC7d6926U+AQCAZ9TTeg5c6dKlde7cOa1bt07r1q1T2rRpNXfuXK1du1Zr\n167VunXrXA5vt27d0vbt2xUQEGBXHhAQoM2bNztts2XLFlWtWtUMbwn1o6KidPToUbNsypQpOnPm\njAYNGiQXL6oFAACwLJfOgUuwceNG3bhx45FWdPbsWcXFxSlnzpx25Tly5FB0dLTTNtHR0Q71E+4n\ntNm9e7eGDh2qsLAwLrQAAADPhIcKcCntQYHs5s2batasmcaOHav8+fOnUK8AAACeLJcuYkgKvr6+\ncnd3V0xMjF15TEzMPScDzpUrl8PoXEL7XLly6dSpU9q/f7/atWundu3aSZLi4+NlGIY8PT31008/\nyd/fPxm2BgAAWF7i066cnYblSllStnPRAwNc69at5eXlJcMwdOPGDXXu3Flp06Y1H7fZbPrhhx8e\nuKI0adKobNmyWrlypd555x2zPCIiQk2aNHHaplKlSho4cKBu3rxpngcXERGhPHnyKH/+/Lp9+7b2\n7Nlj12by5MmKiIjQkiVLGJUDAAD3ZuGLGO4b4Nq0aSObzWZeGNCqVSuHOg9z3llQUJBat26tV155\nRZUrV9bUqVMVHR2tLl26SJKCg4P1+++/a9WqVZKkli1basiQIQoMDNSgQYN04MABjR49WoMHD77T\n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\nkosDgIfCIVQAwP1xaBJIdRiBAwDc3+OMpAFIFozAAcCzjJE0wJIIcABgRY9yBaYrvxxgs/FrAoAF\ncAgVAKzI1V8F4OIA4KnECBwApJSknMsMwDMtxQPclClTVLBgQaVNm1blypXTpk2b7lt/9+7dql69\nunx8fJQ3b14NGzbMoc769etVtmxZpU2bVoULF9a0adOSq/sA8OhcOVzpSh0OawLPvBQNcOHh4erT\np48GDRqkHTt2qHLlyqpdu7aOHz/utP6lS5dUq1Yt5c6dW9u2bdOECRM0ZswYffnll2adI0eOqE6d\nOqpSpYp27Nih4OBg9ezZU4sXL06pzQJgBY86FUZStgOApGKkoFdeecXo3LmzXVmRIkWM4OBgp/Wn\nTJliZMqUybhx44ZZNnz4cCNPnjzm/ffff9/w8/Oza9exY0ejUqVK9+3L2rVrH1jmSp1HbZecy6ad\ndfr0tLdLdX26c8aXsfb//5tQZt53VmaxdqmxT097u9TYp6e9XWrsU5K1c1GKjcDdunVL27dvV0BA\ngF15QECANm/e7LTNli1bVLVqVXl5ednVj4qK0tGjR806zpa5bds2xcXF3bM/69ate2CZK3UetV1y\nLpt21unT097uvnXuGqFKXGbXLnHZo7a7uw8PuO9qWWpsl5zLpl3KL5t2Kb/s1NDOFSkW4M6ePau4\nuDjlzJnTrjxHjhyKjo522iY6OtqhfsL9hDYxMTFO69y+fVtnz551XGhyHh5JqnapsU9Pe7vU2Ken\nvd3d53UNGWJ/rlfCfWdlj9oOAJ4iqXoaEVtyfOjefen9kCF3Bi3vXk/isiFD7vybuCwp2iXnsmln\nnT497e3uVwcA8Gge6oDrY7h586bh4eFhLFy40K68W7duRo0aNZy2adOmjVG3bl27sq1btxo2m834\n559/DMMwjGrVqhndu3e3q7NgwQLD09PTuH37tsMyP/30U0MSN27cuHHjxo1bqr99+umnTjNSio3A\npUmTRmXLltXKlSv1zjvvmOURERFq0qSJ0zaVKlXSwIEDdfPmTfM8uIiICOXJk0f58+c363z//fd2\n7SIiIlS+fHm5u7s7LHPw4MEaPHhwEm0VAABAykvRaUSCgoIUGhqqGTNmaN++ferdu7eio6PVpUsX\nSVJwcLD8/f3N+i1btpSPj48CAwO1d+9eLV68WKNHj1ZQUJBZp0uXLjp58qT69u2rffv26ZtvvtGs\nWbPUv3//lNw0AACAFJOi58A1bdpU586d0/Dhw3Xq1CmVKlVKK1asUL58+STduTDh8OHDZv2MGTMq\nIiJC3bt3V7ly5ZQ1a1b1799fffv2NesUKFBAK1asUN++fRUSEqI8efJo0qRJevvtt1Ny0wAAAFKM\nzTA4kxjPhgsXLihz5sxPuhsui4+P18mTJ5UvXz670wgeVWxsrDw9PZOod8kjOjpaN2/elCTzNAkr\nu3HjhuLi4uTl5SUPj6T5vnzt2jUl/thOly5dkiz7URmG4fSis/Pnzytr1qyPvNxjx44pb968cnNz\nPFh0+/Zt8zm9evXqE38OktPZs2fl6+v7pLthSXFxcU5Pp0opyfnaPTO/hRoZGam9e/fa3RLbsWOH\n3f0PP/xQP/zwgyRp06ZNatiwoebMmSNJmj9/vt08c1euXNHvv/8uSTpx4oRZfubMGR09elTHjh2z\nW3ZISIikO+frdenSRe3atVO7du0c+tSmTRundeLj481fsEj4g5ewPleFhIRo8+bNiouL01dffaUB\nAwZo+fLl5uP//vuvpDt/MO6WMD3L3dO0tGnTxuk6zp49q99//13nz583y7777jsNHjxY3333ndPt\nlaRdu3bpu+++0+7du+0ev3z5si5fvixJeu+997Rq1Srzj9nJkycVFhamq1evSpLWrl1r/hsYGKge\nPXo4rC/hNf/hhx80ZswY/fjjj3avnyQdOHBA69evV+z/nwYjNjZWGzZscFhW/vz51aRJE7tbYsuW\nLXMoS9gX/vvf/0qSvvjiC0lSnz59zPM1e/bsKcMw7vsLIwnP3enTp82yhP3h448/NvedPn36aNSo\nUTIMQ7du3dLAgQOd9tMwDIWGhpplQUFBWr58ua5cuXLfPrRo0UItWrRQgwYNVLp0aTVp0kRNmza9\n7/MiSe3bt9fYsWM1depUTZ061eHxDz/80KHs77//Vr9+/dSyZUv169fP3GfvlvD8Jt6++92/2732\nxcSuXLmi6dOnq2HDhgoODlZcXJyaNm2qHj16qGfPnk7b3P1+W7p0qcPjY8aMMf9/6dIlhYSEKFu2\nbGrdurV69Ohh3u7Wpk0brV69WpL0xx9/mNs3YMAAvf/++xowYIB5u3s/Xrp0qb799ltJ/3vvJOjZ\ns6eaN2+uFi1aqE6dOnbvhcjISDVs2FAff/yxjhw5YrYJDAxUcHCwRo8eLenOr+a0bdtWLVu2VGBg\noDmX590Sfk1HkkaMGKFRo0bprbfeknTnM7x9+/aKiIiQJPXr10/SnfD23nvv6dy5c5LufEbMnj1b\n48eP16xZs+xud4uIiDDfMydPnjT3gT///NOunrP9J3GZs8+/e+1TCT8fOXToUKfvZ2fra968ufm5\ndy8hISEP/JxK+Jt26dIlu/K9e/eqZ8+eatCggd566y3lzZtX9evX108//WT3fp89e7Zu3rypFi1a\nOJxLfu3aNY0bN86uzNlUXm3atHH4THj11Vcd+pSwDTt27NBvv/2m3377zWFbpAc/nwmnZX3//feq\nU6eOxo4dq379+tk9TwMGDDDfawsXLnRYRkK/nXH2mXO3UaNGSZLDe+1uFy5ccPhS5opUPY1IUqpc\nubLq1KmjokWLmmUlSpSwq7N27VqVLl3avN+9e3d99tlnatCggWbMmKGFCxeqW7duat26tdKkSaO2\nbdvqxRdfVOfOnfXhhx8qTZo0Kl++vEaOHKkpU6ZowIAB2rJli/z8/PT3339r48aN5rLLlCkjSfrm\nm2/09ddf33N0Zfbs2erevbvGjh1r9w2+T58+unr1qmbMmKGePXuqadOmmjhxogoVKqQjR46oV69e\nev311836bdq00ezZs+2WXaZMGc2ePVuVK1dWZGSkBg4cqAYNGmj27NkqUaKETp48qdu3bytNmjQK\nCQlRr169NHHiRH388ccKCQnRt99+q/fff1+SlCFDBl2+fFkZMmTQ8ePHFRwcrLp162rlypV66aWX\nNHnyZL355pv6448/VKpUKTVv3ly///673RsnYXsnTpyomJgYlS9fXvPnz9fatWvVq1cvDRs2zPzQ\nf/755zV69GgtWrRIrVu3Vp48eXTo0CG9++676tSpkz7//HMFBwerQIECqly5sgzDUFhYmMPzu3bt\nWi1atEjPP/+8atWqpd9++00tWrTQpEmTFBgYKEkaP3684uPjVb16dUmSp6en5s+fr2rVqtkt6+jR\now6jZpL96MDNmze1ePFiNWrUyGw3Y8YMde3aVRs2bFCLFi108OBBSZK7u7s5CpU5c2bZbDbt3r1b\nlSpVUsaMGSXZj7wkvL6jR482Q+DYsWM1evRoXb58WUWKFJEkcz9t1qyZ3N3dNWDAAIfn5ebNm7LZ\nbPrzzz9VtGhRZcyYUW+88YaioqLUs2dPXbx4UcWKFdPIkSPt2iXex8aPH6/Tp0/rypUrql+/vvz9\n/c2RmilTpqhbt25mvRIlSph/lJ3p3r27Q9k777yjhQsXys/PTwcOHNDAgQP19ddf29VJeK8l3r77\n3ZfuvGfKlSvndF+8u07Xrl01e/ZsXb16VWfOnNGyZcvUt29fubu7y9/fX7169bI77SOhXbNmzTRv\n3jzZbDYZhqF58+apYcOGdvUOHz6sjRs3avbs2fr11181cuRIbd26VXPnztW1a9fUsGFDu/e5dOc1\n6Nq1q15//XV98803Klu2rFasWKGLFy/K09NT7777rvz8/CRJs2bN0urVq3XlyhUVLFhQe/fuVfv2\n7bVgwQLVrFnTXKaXl5fmz58vSercubM5kuvp6alJkybphx9+0I4dOzR+/HidOnVKjRo1kpeXl6ZN\nm2YGzOHDh2vcuHHKmjWrzp07p/fff18zZsyw6/vatWt1/fp1SdI///yj6dOn66WXXpJ0Z18eOXKk\nBg4cqFq1aqlNmzbq37+/Tp8+reHDh+ujjz7S1KlTFRwcrKpVq2rJkiX64IMP9NVXX5kB+uTJk5o5\nc6a2b9+uM2fOaMmSJZLufMHJkiWL6tevr2+//VaTJk0y++Rs/0lclni/l+7sU2FhYfrxxx/Vu3dv\nVapUSZL0448/ysPDQzlz5lRERITdZ8Hdy/7ll1/06quvSpJef/11denSRWnTplVgYKCqVKkiwzD0\n/fffm+3LlCmjmTNn3vdzqnv37lq5cqX69OmjCxcuyM/PT6+99pr279+vYcOGmUcoEr68/frrr5oz\nZ46OHz+ujRs3avfu3cqePbtat26tNWvWqHfv3jpz5oxeeOEF7dy5U506dbLbllGjRpmfRXc/Vx9+\n+KHdZ0JoaKhDnwICAtS0aVO98sorSpMmjSSpQoUKdtviyvOZECKXLVumFStWmO3u3odv3Lhhnr61\nevVqNW7cWIZhaOLEierdu7fda9ysWTPVqFFDbdu2lY+Pj3r27ClPT0+1bdtWNWrUcNgPErZ/3bp1\ndu+1kSNHat++fSpZsqSOHj2q2NhYTZ8+3aH9/TwzAe7gwYOaM2eO9u/fr1deeUUdOnQwH0s4bNOo\nUSPNmjVLbdu2lfS/D5OEYOLp6Slvb29JUqNGjVSqVCn169dPW7du1enTp1W7dm1JUtq0aSXdGeKv\nUaOGhg8fri+++EKnTp3S+vXrzT8WpUqVUtGiRXXt2jVzZ3I2OlGmTBldv37d7o914j/u8+bNM0cL\nDcNQhw4d9Prrr5uHzRJ2vsmTJ5vLyJAhg27fvi1J6tu3r/Lnz6+4uDiFh4erTp065s4eHx8vSeY3\nlgRLly7VwYMHlSlTJt28eVMdOnRQiRIldOzYMY0fP17BwcGaOXOmWb9Tp05Kly6d+U2mWLFi6tOn\njyZMmKA9e/Zo+vTpGjp0qKKioswRmLfeesu8yOX8+fP65ptvJEn9+/dXxowZlSdPHnl7e+v06dPy\n9fXVW2+9JX9/f3Xt2lUnTpxQxYoVValSJe3bt8/u9c6VK5fWrVun+vXra9y4cRo2bJgkqXTp0po4\ncaKuXbumDz74wAwoCR8gdz//kjRy5Ejt2bPHPITk6+trF6y//vpr9ezZU+7u7nrnnXfUqFEjDRgw\nQFmyZFHNmjU1dOhQ2Ww27d27V//++6/5b8I6IyMjNWnSJLPsyJEj5jfPtWvXKnfu3PL09JSXl5cu\nXryorVu32n0jvPv/p06d0rJlyxQdHa19+/YpR44cunjxomJiYhz2uYSRlCxZsmjlypWS7oz61q5d\nW9HR0YqJiTH/0CZ8yF+7dk02m01ly5aVdGf///333zV37lzFxsZq/vz5KlOmjP744w998MEH2rx5\ns7megwcP6ty5czp06JDSpUsnm82mcuXKOYwoJw5xr732mhlGihYtar73IiIi9Pvvv+vDDz/UkSNH\nVLFiRc2dO1etWrWSdCcY3T0K/+KLL0qSZs6cqSZNmih9+vSaPXu2unTp4rAvnjx5Unny5DFf/ypV\nqujDDz9UYGCgevfuLQ8PD926dUuSzLCXMIodHR0tm82m2bNnKzQ0VD4+Pjpz5ozc3Nz00Ucf2Y3I\nSdK8efNUpEgRffbZZxo0aJDq168v6c7V9HPnztVHH32kGjVqqF69eoqNjZXNZlP69OnN1ybxss6c\nOaPZs2dr0qRJ+v7771W3bl0NGjRInp6e6tevnxYsWKDJkydr7969dp8Vf//9t0aNGqWMGTPqr7/+\nsltuwhfL0qVLq3///poyZYrGjBmj+Ph4DRgwQL/++qsGDBigHTt2mIdTs2XLpgwZMpij5Qk6d+6s\njh07aurUqSpUqJC5H92+fVve3t7KlSuXMmfObH7p+O2335Q7d25NnjzZ/BJ869YtNWvWTFu2bNGb\nb76ppUuX6o033pAk+fr6asyYMRo0aJC6du2qbNmySZIyZcqkTJkySboz/+j+/fv1888/m5/VCSOZ\nCWw2mw4fPqylS5cqPj5eNptNCxYs0O3bt/Xnn3/q2rVryp49u6ZOnaqwsDB16dLFDHCHDx/WxIkT\nNSDML1MAACAASURBVHHiRO3fv1+S4+dyfHy85s2bpyxZssgwDB04cEBz587V6dOnNXnyZHXt2lW7\nd++2+0JXqlQpp59Tu3fv1vLly81t+fTTT9W6dWv99ttvmj59ugYOHOgw6vjxxx8rQ4YMunLlivLl\ny2fOHHHx4kVNnTpV4eHh5jLnzZun2rVra/ny5eah7gsXLujmzZvmF/yIiAgtWrTI/GL47bffOnwm\nJO5TQECASpYsaY7IStKhQ4e0ePFi87Pmk08+cXg+BwwYYH5JNAxDJ0+e1P79+819z2azORxFuHz5\nsnbs2GG3v0p33q///e9/lTFjRtlsNtWpU0fh4eHasGGDWrVqpQIFCmjUqFHy9vbWnDlzNG7cOF24\ncEE5cuSwW/53333n8F4bOnSo5syZo9atW2vOnDn3HKW/n2cmwPn6+qpp06aaPXu2IiIi1K5dO7m5\nual9+/bKmjWrGaDuDil79uyRv7+/OnTooOHDh0uSecFFYGCgChYsqOnTpytnzpyqU6eONm/erH79\n+pk7ceHChRUfH68OHTro2rVr2r59u1q0aKEsWbJIkvnN9O5DQ84OKwYGBppvBOnOH5nEf9wTRmSk\nOztoxowZzUMaYWFh6tOnj8aPH6/t27ebQXPZsmXasmWLzp8/ryJFiujcuXO6evWqRowYIQ8PD82Z\nM0fR0f+vvTMPqDF9+/j3nLRrKolkHxXTYjDZsoUkQpQ0g0nGiFIky1grxtIoQ5YSUSPSCKmRsWtB\nImS0mGyJtCEZUp3qvH+c97nnPAvix1i6P/80kzo9y71cy/e67iLcunWLNbDPnz8PQLYhMJSUlCAo\nKAi5ubkwMzODjo4O1NTUWPehpqbGC5M/ffoUt27dQqtWrQDIJhI3Gsn8/5MnT0ga5PHjx5g4cSKG\nDBmCdevWQUNDg6RqGjdujM2bN2Py5MlYsGABIiIicPnyZfzyyy/46aefsH79ekyZMgUxMTF4+vQp\neR8MYrEY7u7uOHHiBL7//nsAQJMmTXD06FGYm5uzFnNmoWVgDGEAxJvdsWMHnj17ht9++w1GRka4\nefMm3NzcEBMTAzMzM9ja2mLfvn346quvyFdAZhwcP34cdXV1cHd3R2VlJWuhB2QeLjM2169fD0Dm\nITo4OEAkEuHHH38EIEsv7N69G/fu3cOmTZtw6tQpkpbdsGEDGRMMjDc6ZswYXLhwAVOnTkWTJk1Q\nVlaG+fPnk/cFyKLIzZs3x/z587Fz506YmpqS9+bq6oq0tDSSltiyZQsUFBQwY8YMdOnSBX379oVY\nLIaenh4ePHjAugbGsNHV1WV939PTE6WlpRCJREhNTYWrqytJPzDe9v79+9GiRQsAQHp6Oh4/fozD\nhw/jyZMnAGRjl2vkmJiYQE9PD97e3qirq8Po0aMFx2JYWBh8fX0BgIz5uLg4uLi4IDMzE2lpaTAz\nM8PChQthbm6O9PR0mJmZYdGiRaioqIBEIoGamhoCAgJgYGCAvn37Yvny5VBXV8e9e/egpaWF8vJy\naGpqwtnZGRkZGcjLyyOGtpeXF3E4T548iaqqKvTo0QM+Pj7kXUdERMDR0RHPnz8nXx88eIBdu3Yh\nPz8f48ePh4KCAn7//XccPHgQ//zzD+bPn08cChMTE5amjXmnAHD06FH8/fff6NixI3Jzc1FZWYno\n6Gjs378fzZo1w+TJk7F69Wrk5eVBJBKRde7KlSs4fPgweVe3bt0SlDWsX78eqampxMm2srLC6NGj\nyf2pqKjAzc2N9dmAbC4wqXsAuHfvHnGIsrOzIZVKkZWVhcjISDg4OKCgoAAPHjyAvr4+jIyMEBkZ\niWvXrqFHjx5YsGABfvrpJygqKkIkEpG0rI2NDZSUlJCQkECcXXlmzJiBgoIC9OjRAxcuXICmpib+\n/vtvVFdXk2sIDg5GeXk5mjZtSu6Ruy6vW7cOTZs2RUxMDMRiMb799lucO3cOO3fuRHl5OZYvXw6A\n7dABsrWPu079+uuvmDNnDho1agSRSIQxY8bgyy+/RN++fREYGCiozwoLC4OTkxPs7e3Rq1cvMg/k\no9tBQUGwsrLC5s2bUVVVRVK/aWlpUFVVJcbkxo0bcfDgQVYWibsmjB07VvCaFBUVYWVlRdYAFRUV\nqKmpYdy4caR9GPd5BgYGssZujx49sGXLFiIV6dq1K9q3b4/Ro0ejdevWuHfvHjw9PbHs/xuOy4+p\n06dPo7q6mpUKvnjxIqKjo2FoaEgc8ujoaPTo0QM5OTlQVFQU3Me5c62qqgrZ2dnEgZeXGdWXBmPA\njR49Go0bN8bEiRMxatQo5OTkwMTEhJe2cXV1RVhYGMRiMcrKynD79m00atQIKSkpmDNnDvHkQkND\nWYv74cOHcf36ddTV1cHY2BjAvwPh8ePH0NLSQlBQEEaMGEF+h/kseeE2AHz33XcAZKm38vJyREVF\n4fLlyxg5ciTxlLibu7m5OSsVlpycjP79+7PSZoDM0xw7diwAWYje2toac+bMQUVFBdTU1HD48GEA\nwPz585GQkICNGzcSo5a5H+br1atXsWvXLohEIhQXFyM6Ohp6eno4fvw4nJyccOXKFbIp19XV4a+/\n/sKWLVtYE8fDwwPx8fGorKzEtWvXUFhYiNzcXFYkktEPbt26FceOHYNUKsWWLVsgFotx5coVXL58\nGSKRiKXl+uKLL1BTU4NDhw7Bw8MDCxYsIClsZiPz8vLC1q1bkZmZyfp71dXVkEgksLKyQps2bdCp\nUydUVlYiLCwM8fHxMDExwa+//gpAZujExMRATU0NIpFIMGp26NAhxMbGQiwWY+PGjXB0dER1dTXO\nnz+P4uJiPHz4EF9//TXc3d3RqVMnAOClNU+fPg01NTWWllIkEqGiogJJSUlQVFRETk4OKisr0bdv\nX/Tt25f1+0uXLkVQUBDRC23cuBExMTGoqKiAlpYWL/LD/J2NGzeSo+qcnJzIgl1ZWQkdHR0sWbIE\nzZo1Q2VlJcRiMc6cOcMSrV++fBne3t4YPHgw1NTUsHbtWhKtYKI6jFc+evRoMp7Gjx8POzs7ks6Q\nRz6dJ6+llEqlJCWmoqICkUiE2tpaPH78GKNGjcKTJ09gamoKsViMo0eP4ubNmyRFlZqaCgAYNmwY\nLCwsEBERAW9vb2hpaWHcuHHE6Dh58iRatGiBzMxMYugoKSkRLc/9+/cRHh6OpUuXIjMzEzk5OZg4\ncSJMTEywfv16eHl5AQAWLFhAxoZ8+geQaZnc3NwQEhJCsgEFBQWIiIjAiBEj0LRpU4hEIkRFRWH3\n7t04ePAghg0bhgcPHkAqleLGjRtwcXHBsmXLWEUUWlpaGD58ONq2bYtLly7h8uXLmDZtGpYsWQKp\nVIqFCxeiRYsWuHPnDszMzHDp0iUEBAQgOjoa8fHxsLW1hYeHB/r164ft27fj7t27aNu2LdasWYNN\nmzZh586dJALKvA9fX19IJBIoKSmhT58+KC0tJcbp2LFjee8WkOkCS0tLibGQn5+PgIAA4tgwjpp8\nVAeQObZlZWXEITM0NCQOEXdD7dy5Mzp37oylS5di+/btmDZtGkaMGAFtbW0oKiqipqYGZmZmaNy4\nMfmduLg4jBs3DgBw/fp1aGpq4tChQ9DQ0IBIJEL//v3RuHFjmJmZwcfHBwEBAXj+/Dn27duHDh06\nkGto0aIFTpw4AUAWQTY1NeWty8OHD4exsTGJGHfp0gXjxo2Dj48P9PX1yTWtXLmStTeYmppi69at\nrHVqw4YNLAP8hx9+QGpqKpKTk5GVlYX+/fuTSCSDpaUlli9fjsTERHh4eODu3bs4duwYvL29UVRU\nROaDn58fRCIR6/MLCgp40oqWLVuyskgDBgxgrQklJSX46quvWNfUv39/FBYWkmcFyOaNRCJBnz59\nSGaAiVwxDpm/vz9EIhEqKysRFBQENTU12NvbE4euadOm6NWrF7S0tNCqVSvo6upCJBKRMe7j44Pc\n3FzY2NjA3t4eJ06cYOnAU1JS4O/vT4ImLVq0wKhRo9C3b198//33+Oabb1jPiZmr3LkWHBwMZ2dn\nDBgwgMhA3pQGY8C1b98eKSkpOH78OAmHmpiYIC4ujqRtANniyRgJmzdvxo8//oioqCj06dMHJ06c\ngKqqKi/NmZqaCjMzM1RXVxMv58iRI1ixYgVZ6EUiEfLz83H8+HHyt2JiYngRwNWrVxMxOyDzRoX0\nGadOncLBgwdRVVWFffv2ITY2luV1eHh4YN26day0GSCLIDILRb9+/WBkZMTSSIhEIhI5Gz16NJKS\nkniHgTOh6z/++AN79+4FINMmeHl5YdiwYTh06BC0tLTg6uqKefPmITQ0FPHx8RgzZgwkEgliY2NR\nWlqKpk2bQiwWw8jICJs3b0ZkZCRWrVqFNm3aAJBFYBjPa/369SgoKCDXkJSUhKdPn7K83f79+2PG\njBkkSmVubo7Dhw/j5MmT0NTUJJq2KVOm4N69ezA0NESvXr1YGjxAZlgz78PIyIikcJl0s3zxSv/+\n/VFRUUEm+KpVq8j4YfRdZWVl2LBhA3nvmZmZrOdSWFiI6OhoLF26lKSIZ8yYwavqy8vLg4WFBRQV\nFYkB2KlTJ/IOVqxYgdWrV/MKZsLDw3l6IW9vb0gkEgwZMgQnTpxg9V8EQDYqDQ0N4qi8ePECUqkU\nlZWVyMvLI+mviRMnQklJCQEBAbCyskLz5s1ZUbPk5GQS1X327BkWLVqE1NRUnlfu6elJ7mX69Omw\ns7NDfHw8bt26RdJb7dq1Y6XzmjVrRp4zABKlsrW1xYYNG2BnZ4eZM2eiuLgYWlpayMzMBCArTLhz\n5w4x4OLi4tC7d2+4uLhAWVkZY8eORU5ODsLDw3Hs2DF89913iIiIwOLFi6Grq8sSNF+5cgUrVqyA\nsrIyqqqqsGTJEgQEBGDevHm4fv060dqePHkSz58/R01NDa5du4bg4GBe+ic3NxcJCQnIz88n0SoN\nDQ30798fixcvxsGDB5GdnY3MzEwMHjwYsbGxWLFiBQYPHoygoCAAgI+PD7Zu3UqKKHR0dKCiooKx\nY8dCJBKxogl+fn5YuXIlAJmR/88//6BHjx7w9vZGly5diBbs7Nmz+OKLLzBo0CCcPXsW7du3x5o1\na8jnPHjwgGW8MeNRXvPWt29f5OTkEOMUACmsEYlEqKqqQl1dHcliMGNIV1cXiYmJCAkJgZqaGqys\nrGBpackbPzt27EBycjKsra0RHx+Ptm3bwsrKimWka2trk3lVXFxMNEfymmJXV1eoqKjA2dmZjP09\ne/agTZs2sLe3J8ZoYmIi+vTpQ36mf//+RL9mZ2eHFi1aCKbFQkJCyDhn9FXcdfn27duIiopCeXk5\npFIp2rVrB3V1dZbxxrwz+b3BysoKM2bMwF9//YXOnTsDkDl/iYmJRP4TExODvn37Ijk5GTExMdi1\naxcJGjCIRCL4+fnhzp07aNq0KRnvLVq0IM4rAzdFq6OjAwcHB7LP7tixA7m5uawsUmVlJe+5lJWV\nsa7p+vXrePHiBaKjo4mRPGrUKCgqKuK7774jWj9mv5RKpVi3bh06duxItIeenp4kwi2vP5s0aRK6\ndeuG8vJy+Pv7A5BFlkeNGoWKigrExMRg1qxZOHPmDCQSCaytrXH8+HFMmjQJQ4YMQXBwMLnfq1ev\nomXLlrh//z7OnTuHrVu34uuvv+Y9J+5c8/Pzg5mZGVJSUnDnzh3ivL8JDcaAmzlzJuthMcUMTFUp\nIBOTM54xIBv4jx49QkJCAnR1dXH69GlIpVLB8KiPjw98fX0hFovJi2OiUq9CSLidkJAAkUgEiUSC\nS5cuoWnTpix9BgDe4qWiosLzSNevX489e/aQtBkg06H17dsX3bt3x/3792FoaIhhw4ZBS0sLUqkU\n9+7dYwmuQ0JCSEia8WiYNFRlZSUpKnj06BHS0tIwePBgnDx5kmjQAFnIOSEhATNnzkRcXBxsbGxY\nGoHo6GjiVQPAiRMneAUZTk5ORFfEsGHDBpa3C8i0JIzXs3TpUgAyw2P9+vWwt7fH4sWLye9z05EM\n3FSegoIC5s6di5EjR8LZ2RlpaWmYO3cuBg0aBBcXF9ZiKR9l2bhxIzw9PaGnp4c5c+aQ98J4bsxz\nMTMzwxdffAEVFRXSIqJdu3Y8bWBBQQFZtJSUlBAdHY05c+bgxYsXqKioQEhICPr164f4+HjBaJ68\nXkhXVxdSqRSTJk1CQUGBYGXp9evX0bt3b2zcuBFnz57FuXPn8M0338DAwIAYfPKRu6FDh5KUu3xk\nZfLkyThw4AAUFBRQU1ODESNG4Msvv0SrVq1YXrn8eGIMYvn0NCAzYuW9/dTUVNY15OfnIysrC/r6\n+mRhBmSbChNJZEhLS8OtW7cgEomIgxMSEsIyRI4dO4bo6GjY2trizz//xLRp0/Ds2TMUFhaSDWrD\nhg3Ys2cPlJSUUFVVhenTp5PNUj6COGfOHDJ/LS0tIZVKYW5uDh0dHZL+SU9Px8OHDzFu3Dii/7t0\n6RJr88nNzWU5lZcuXcLt27dJ0cGtW7cgkUh4RRSzZs3izWMdHR3iMKmqqkJdXR0LFixATk4Oy7HJ\nz8/HunXrEBkZiZSUFKSnpxNtEACWbohBQ0ODpXmrrKzkGaeMMRMfH090yurq6oKRV0A2l0+cOIEF\nCxbwojpnzpzB9u3b4ejoiAMHDmDGjBmIjY1lGenyY6Jjx44kDaegoECeA1MwxK1onD17NmttLC0t\nZRW0ADJnRv6rt7c3kpOTYWlpSYyQp0+fIikpCcC/GtXZs2fD2toaUqkUpqamSExMxJkzZ2BiYgKx\nWAwHBwfMmzeP9cxtbW152r0jR47Azs4OISEhxEiWT/OqqKhg1KhR0NHRgaWlJXGYuRXBe/fuRWZm\nJlRVVVFTU4N+/fqRZwyAZBzc3d15KdpVq1YRmQ8z3rhrbUREBKmkfvjwIbKystCzZ0/WNQHAwIED\nUVVVhaqqKhJdnjVrFmsPzsrKIvtlVlYWunfvDjMzMzg7O6O8vByHDx/m6c+ys7OxcOFC1vtjpE9L\nliwBIMsaNWvWDHV1dXB2dib7Gfd+GV3i1KlTsWDBAsycOVPwOamoqLDmWtu2bWFsbIzi4mKWpvhN\naDAGHPdhVVZW8qI6z549YxlwgMyIe/jwIcaMGcMSVMunOfPz89GpUyfcv38fioqKuH37NhISEvD0\n6VOWADIjI4MleI+KiuJFAC0tLZGXlwdAlu60trbGs2fPWPoM4N+QNDNAAL5Rd+PGDSImXb9+PXx8\nfDB79mxWtSy3om358uXEQ5dKpaioqBD0aBISEtCrVy9SraOuro7du3ejpqYGKSkpKC0thbKyMo4c\nOQI9PT0AsggW9+g0kUiEgoICUgwByIxBbkHGjh07sHPnTjg5OcHFxQUdO3ZEt27dAPzr7QKyip/0\n9HRIJBI0b94cdXV1ePz4MRwdHZGXl4dz587xIluM0cRUA9bV1fF0JCKRCEOGDAEgM1QSEhIEF0v5\n6BfT5oX7XqZMmcJ6LhKJhOjRJk6ciEaNGsHf35+nDRQSKK9YsQJqampwcnLCgQMHEBISgk2bNglG\n8+S1HVlZWVBQUMDo0aNhbGwMCwsLnsbnxo0b+PLLL0nqOSIigjw7ofYAALB7925UV1fj9u3bZNxr\naWmRoo9GjRqhY8eOCAoKYmk77927hzFjxpDxxKQOc3NzeWky+UKjqKgo8u4BWeQwJiYGycnJ6NSp\nE5SVlXH16lWcOnUKu3fvRkZGBgICArBp0yb8/PPPCA4OBiDzjufPn4/bt29DLBaTFBETJWaifCoq\nKsjLy8OiRYtQXV2Nuro6NG/enLwbZWVlaGpq4ujRozxBtI2NDcLCwlBbW4tp06Zh8ODBWLNmDXkG\npqamLOOU4dKlS6zN5+jRoyyn8vz58+jQoQPrd4SKKITmcVxcHDGUJk6ciLlz52LcuHHIyMggUdi9\ne/eS9hGNGzfGokWLcOTIEZY2yMTEhKdn8/DwYGneNDU1ecapgYEB/Pz8EB0dDU9PT5iZmRGBPjOG\nbt26hZiYGFZqKzAwkKcNZiKg+vr6qKioQG1tLUpKSlhGuryxX1payioYysnJIdKHGzduYNq0aWQM\ny7dHYSgpKcHQoUNZ+mN5RCIRfvnlF5iamiIlJQW3b99Gx44d4eHhgYsXL5KIESCLxOno6EAkEmHr\n1q3YsGEDLC0tcfr0aYSHh6O2thaDBw/m6bG42r3ExESekezr6ws9PT2IRCIUFhZCVVUVbm5uGDRo\nEIkeyrftyc/PR0xMDIqKingVw7Nnz+atn9xxq62tjezsbGKw/v777zzpB3PCkoqKCmJiYuDl5YUf\nfvgBf//9N8rLy8nP6uvr48KFC1i8eDH27NnDchyYogJGS6esrIyZM2fiypUrvEhzYmIiS3+WkpIC\nR0dHXL16FWPHjoVYLEaTJk2ItvP69eu4ePEicnNz8dtvv5F1Uuh+8/PzSdo/ISEBR48ehb6+Pg4f\nPgx7e3vo6+sjLi4OI0aMgL29PcRiMSZOnAh9fX2MGzeOpyl+ExqMASf0sAoLC3lRHaENQwhumtPG\nxgYbN26ESCSCp6cn0tLSMGjQINaE4wreAVlpsvyE6N+/PywsLGBtbU1SdW5ubnB2doZUKiWaDG5I\nOjw8nOeRMp6CfPPWxo0bE42IqqoqzMzMWBVt06dPJ5sjINvAhDwad3d3WFhYwN3dHWKxmDTsjI+P\nR3h4OHx8fKCgoIDjx48TbdrQoUOJ1w3IDMzt27fzUpjyvYSYggwArBL2WbNmwc7ODoMGDcKuXbug\noaEBQJbeZN6NWCwmjUAZLC0tsXLlShKJ8/HxgYuLCywsLKCkpITq6mro6uri5s2bLB3JzJkzWQ1U\nJRIJmbjyi6WCggKWLFnCMgK472XRokWs52JoaAiJRAJtbW0YGRkhMzMTAQEBUFJSYmkDmUKK7t27\nIz09HQDQvHlzSCQSWFhY4OjRo9DV1RWM5sn3GBSJRAgNDUVWVhap8OrZsydP47NgwQL8/vvv6NGj\nBynMEIo+l5WVEZ1IQUEBLypx/fp1lkHM9DCMiIggFd4tW7aErq4uGU8MQm125PuxaWtrs8Yrw+LF\ni0m6gkktpqamkrRcXl4e7t27h19++QXLly/H5cuX8f3332PHjh3Iz8/H6NGjidEPgFR/2traoqio\niBUx8vT0RHBwMHnfGRkZpFWOvFGzceNGREVFoba2llSJx8XF4cSJE8R5qY/42cHBgeVUdujQAd26\ndSNRDg8PD5KqNjc3x8WLF2FmZiY4j+3s7GBnZ4e//voLHTp0QFRUFFauXIlvvvkGL168IOPjt99+\nI1WWdXV1iI2NZWmDmjVrRnoGNmnSBBMmTICNjQ3L8Jk6dSrvXZmZmWHnzp2YNGkSSkpKUFVVhays\nLFZKLy0tDQoKCqzUllBUx9TUFFOnToWSkhKmTp2KwsJChIeHk3fj5+dHIl/MdYaGhkIqlWLs2LF4\n+PAhkT5we0Ey4z8rK4tEyYR49uwZcnJySIZDX1+fFzhITExkrd2AzLFhijTmz58Pf39/ZGRkkBZI\nkZGRrHnGYGNjw9ob1NTUkJeXh+HDh5NnP2zYMFJlv3TpUiJ9WLp0KSorK2FmZoaZM2dCTU0N/v7+\n0NbWhrOzM69iGJDtGUyWg6kI56ZoTUxMcPToUXKNy5YtQ0FBAUurx/QbZLJVly5dgrq6Oq9dz/79\n+0naOD09HVZWVjwjlpsmZ6Qy8ty6dYulP/vqq69YMhYTExMsXLgQq1atQn5+Ptq2bYuamho8fvwY\nrq6uRFsrdL/y8/Hhw4dwcXGBvb09pFIpSkpKsG3bNjRu3BghISE4cuQI2f8GDhyIpKQknqb4TWgw\nBhzTjJX7sLgb2/Pnz1/Zl42BWTyYVgnMAi+VStGoUSNMmjQJt27dwpYtWyCVSjFt2jSsXr2aJXgf\nPnw4ioqKWC0Ybt68iUOHDuH48ePQ09PD0qVLWVo6QGY8zpgxA1lZWTA2NiZROa5RJ+TR6+rqIjk5\nGd7e3oiLi0NtbS2roo3LiBEjSHid2cwACF4nc31MChFg99qzs7MjVWDMBrhz507Exsay0o5JSUm8\nggyAXcJubW2NGTNm4NSpU5g2bRrpU5SdnY2oqChIJBI0bdoUq1atYl1DYmIisrOzkZGRAZFIBEVF\nRVhbWyM0NJT8jLu7O69dxYsXL8j3qqurUVtbC2trazx8+BBDhw4lEYUVK1bg9u3bkEqlaNWqFZKS\nkpCVlYX58+ejuroaRUVFOHnyJOua2rRpQ0LwTFg/IyMDVlZW2LBhA0JDQ+Hl5YWuXbvi77//hru7\nO2bNmgVra2vo6OiwNCFMnzb5aN7evXsREhJCyufDwsIE+yu1adMGDg4OkEqlSExMRLdu3RAbG4vf\nf/8d7du3540NBkZPZ21tjYqKCt6Ymzp1KikAMTY2xtq1azFr1iyEhIRg/vz5CAkJga2tLYYNG8Ya\nT8+fP+e12QFklcvyhUZClJaWwtfXFyoqKkQXp6CgAJFIhCdPnqC4uFiwf9S6desgkUiwbt06tGnT\nhtUUGZAJwLkRo+HDh8PHxwcRERHQ0NCAqakpevfujRUrVqCiooI8uyZNmqCwsBASiQStWrVCRUUF\nzp49+9LnysAVPzOFSfIwvQsBWdSNqRCNi4uDsbExVFVV4eHhwYpM7N69G3v27EGTJk1IYYaioiIr\n3T116lR06dIFV69eRe/evbFs2TKsWbOG9c6PHz/O2niKi4sxa9Ysnq5SiG7duqFbt26orKzE/v37\nMX78eGhra7PGELMuyae2uFpPkUjEm8djxowhgnhAZnwJGfuAbFNm1k4mM8NE5AFZQ2X5KNmkSZNI\nmxPm7+/du5eX4Thw4AAvcGBiYoKTJ0+SKBJjGC9btgxSqRQJCQno3Lkz9PT0WC2QuM980qRJCA0N\nxd27dzFgwAA4OTmxii4Y7ty5g8jISEilUuTl5aFr164YNmwYqXq9du0apk6dCl1dXcybNw/GorH5\nyAAAGCVJREFUxsYYOXIkr2IYkFV8MrpBNzc39OrVC4cOHWIZtvJGMgNXq8cUEnXv3h0XLlzAkydP\niMMl3zqKMZJqa2uRk5ODQYMG8T6bmyZn2rXIw9WfMR0C5OU92trarGBCu3btkJCQgJKSElLcN3z4\ncN79vopOnTohNjZWUNvKGOcvXrxgaYrfhAZjwNXV1Qk+LPmNLTg4GBKJhLdhCMEItZlWCa6urmSA\nLFmyBDt37mQNGhcXFzg4OPA2BG4LBkVFRejp6bFabnC1dP7+/qiurkaPHj1w7NgxnDp1Cl5eXjyP\n1MnJieUpdO3aFZmZmRgxYgT279+P2bNnkxRhVFQUQkJC0KhRI5LuYtLDZWVlJCrIREeErrM+BAcH\nw8/PD3v27CEboHyU8969ewgNDWXplRjDSb6Effz48di7dy9KSkpYfYosLS1J1WyrVq2gqanJmmQV\nFRXw8vJCVlYW4uLiYGJiwtMeCB27smXLFp5WJzg4mFUxCMj6+Pn5+ZFSf01NTezevZt8jrzgnoEb\ngr9z5w60tbUxYMAAsvmIRCLk5eVBU1OTGMuPHz/GkCFDkJGRQSI9TD81+WgeANLLr1GjRigoKOD1\nV6qsrCTVjbdu3UJSUhJ69uyJefPmkR6CTPEKF3mdyObNm4lOTx6h++Y+c+54MjU1hYWFBUlXMsYv\nt9CIy8WLF0l179OnT7Fy5Urs3bsXkydPxtq1azF9+nSYmJggMzMTGzduRFBQEK5fv46qqirs378f\nsbGxaNGiBSuKwBAfH8+LGGVnZ+Phw4dwdXUlY7SoqAh3796FpaUl2eiZIgjGAWjRogWsra1RV1cH\nsVhMNnMu3M2He6IAINNzMVE8Q0NDODk54dtvvyV6t4yMDN67u3DhAk+7o6CgwEp3M61MKioq0Lhx\nY0RGRuLSpUto164dSxsk3yCd0Za9zFgSQkVFBRMmTMCECRPg5ubGGkN79uxhpbaqq6tJywf5Cv7A\nwEDWZxYWFsLZ2Rl+fn4kgiREXFwc4uLicPToUZIybNWqFWlizpw4IB8l++eff7BmzRpWoRXAz3Bw\nAwfXrl1DVlYWNm3aBA8PDyxatAirVq1CaWkpjIyMcODAAbi5ucHDwwNFRUX47bffcOnSJaxevVpQ\nj8Vo+rZv3w4DAwNyGoU8Tk5OpJIzLCwMEydOZFVWAzIH9dmzZ6Q9TlFREUsyJK9H5KZQuelfxjl9\n/vw5UlJSMGDAAJ5Wz8rKiuWMch1EJoAiX4zUq1cvVhCBgZsmF4KrP3v48CFP3sOk1xnDnUn5c+VT\nQulueYTS9I6Ojjz5wOzZszFgwABW66k3pcEYcC97WLW1tRCJRGjUqBECAwMxYsQI3obB5fbt2zyh\ntvwAYao45b8nn/6UR74FQ3FxMbp27YpOnTrBwcEBqqqqWLZsGU9LV1BQQLxtGxsbeHp6YuHChYiM\njGSJZQ8dOsT6Wy4uLryKWi8vL96GL29wrF+/HjNmzOBF27jXyQhFX4fQBshNOx4/fpw027W1tUWX\nLl14+qTTp09jwoQJvD5FvXr1Ig04lZSUyDEmDAcOHECfPn0QHh5OPC8Agj3e5BHS6gilUMPCwtCr\nVy/o6+uTjufyCBmH3BD82LFjcf78eZ4hJGQYjR49GgMHDiRGukQiQWRkJCuaB/xrBCsrK6Nly5aQ\nSqWs/kopKSm8+2Pas3CLV+QJCAjAtm3biE5E6BqFOHbsGBwdHXHlyhU4OjoiPj4eT548YY0nocgo\nAJw6dQpxcXGkAptJxzAEBwfzokgXL15Ev379sGPHDigqKsLBwQGVlZXQ1NTEjz/+iLlz52L8+PFw\ncHDArl27XhqBF4oYVVdXszx1qVSKPXv2ICAggOjzmAINeQdAW1ub5wAIwd18uDg6OqKqqor0P1NU\nVISfnx9P78ZFyHFo164day7U1tYiMjISS5YsgUQiwZ07d1BVVcV658bGxi/Vlr0N3OOYVq9ezUpt\nMXq/8ePHo3nz5mTsA+x5XF5ezjOshThy5AjOnj1L3sOUKVMQEBDA039JJBJiOObm5mLUqFG8k2+4\nGQ4mcsoEDpgCKaaJdFlZGR48eMBbl5kG4YMHD0azZs1w+vRppKen8/RYmzZtQkpKCoyMjIhwnktG\nRgb+/PNPVFRU4MCBAzA0NBQ8GaU+uLm54YcffoBUKiVOIzf9O23aNPLzUqkU3t7e6NChA3bs2IHM\nzEx0794dHh4esLCwIOs+t5VTfn4+amtrMWTIEBgYGKCiogI2Njbo27cvK5AAgKdl5SKkPzM0NOTJ\ne7i6Xm9vb0EnhHu/XOQ/h0nTC60nb+LgvIwGY8DJn+koDzMIlZWV0adPn9dGSwDZpiUvsr1//z6+\n/fZbjB07FnV1deQ4rhEjRhAjb9asWeRMP4aEhATo6elBLBZjwIABWLZsGczNzUkq9/nz5ygoKOBp\n6YSOAfL29iZVtuXl5Xjw4AERZzKeFlMFJl9RK7Thc9PDQtE2pqKNuc76wt0Azc3Nce3aNQQFBSEu\nLg7du3fHo0ePMHToUHTu3BknT57Ejh07UF5ejtatWxN9UmRkJKqqqnh9ipgGnEpKSqRySh4hz2v9\n+vXYtm0br8ebPEKGp5BXNXXqVGzbtg15eXlwc3ODsrLya41DIc2Gk5NTvZ6nsbExaUUAyLRa3E0Z\nYGs53dzcAIDVX+ny5cu8+xMSvXNhGlBydSKvg0nJMDAFEvLj6WWnX3CLQrhwiyY0NTXRr18//PDD\nDxg/fjw5aYAp5GCMvP3799f7+uUjRhERETxPnXtsW30cAECWopFHaPPhIqSbMzc35+nduJ9tY2OD\nvLw8DBkyBHl5ebCxsRFMdz9+/BjFxcUkmnju3DneO5ePCjKb1tsib5AB4KW2mPHbunVrVvV6dXU1\nax5/+eWXPMNayMnkvodHjx7x9F/h4eH49ddfMWzYMGhqauL+/ftEh8oUWqWlpfEyHNzAga2tLflb\nzFexWMxbl7mVxm5ubrxnfvHiRezfvx96enq4du3aS89K5WZ5li5dyjsFgala79KlC9TV1XHz5k2k\npaXBxcWFtEa5ffs2NDQ0SOSeMfwkEgn8/PyIocoYYgoKCmjZsiU8PT2RmJiIDh06oKamBmVlZTwJ\njr+/P2xsbFgFITNmzMDGjRsxf/58mJqaYujQobC1tWUFEgDZGs7oxZlWT/IwujN5/RnAl/fUF+79\ncnkXhll9aTAG3MuYO3cu+e9Vq1YhKyuLvFihaAkAnsg2NTWViIEBmeH3/PlzWFlZvVIHwhQCWFtb\nw9fXF3V1dbzNXEhLp6SkhMmTJ8PU1BSZmZkYMmQIr8pWXV0dTZs2ZQmyo6OjeRuNkBfOpCOZ9LBQ\ntE3I6HgTmA3wwoULAGQ6jFOnTpGWB4mJifD19UV5eTk6duyItWvXQlFRkeiTmjdvjh9++IHXp6hn\nz568BpzycAsIhg4dCiUlJcFzNuURirxwN/wVK1Zg27ZtiIyMJBV4mzZteq1x+LLn8zocHR1x8+ZN\npKen44svviDtBrjRPG5qID8/H7q6uqz+SsOHD+fd3927d19rBDBtdrg6kfrg6+tLIhr37t0jCzJD\nenq6oPErVIEtT01NDS+KBADdu3dHUFAQ3Nzc8Pz5c56R97bUZy7U1wHg8rLNRx5uX0qm4phbicdl\nzZo1PGmEkpISz3GdO3cuK5oYGBjIe+fvc9MSGr/29vbEoNHU1IRIJMKaNWtY81hNTU0wBcaF+x7y\n8vJ4+q+amhqy5q5bt451FipTaMU1ul4WLWX+FvNVKpXyrpPbvionJ4f3zGNiYnDixAmWE8LooeXh\nZnmETkYJDQ3FlStXcObMGVRUVBDjXd5JYjIjDAEBAfD19cWGDRsQFBSE+Ph41NbWIjExkRQHMEc+\nfvXVV6wj+LhBAT09PQQEBODJkycwMDCAra0txGIxxGIx7OzsMHHiRMyePVtQtiMvMWDkS/IIZUrq\nky0SIiAggHW/zLGBH4oGb8B5enrC2NgYIpEISUlJEIvFWL9+/UujJQB4IlvuuWcKCgoksicSiYjm\nRb5yFRAuBBCCO0CNjIwQGBiIzZs3IzAwEGvXrn1pSfKrBNkAWIsHs+GfOXOGVGn6+vq+dbStPghF\nxLgTvrKyklTwMvokVVVVPH78mOUdAv/qXuQbcMrDnL7B8CaeF8COvHApKCiApqYmSY9oamrWyzh8\nW3r06IGYmBhWJZWQMcHVTBkZGRG9DFczw40svc4I4FZEvgkvO7OVYe3atYLG740bN/DTTz+Rxq/c\nd7x27VpeFImRE+jr62P37t3o06ePoJH3vqiPAyBEfTafmJgYXvVjfdoS1Hf94UYT/5d3/jZwx9+4\nceMQHR0tqAWUp75OJvfnpFIpT//FRNuYMXj//n1eoVXLli15kTTuu6rvNXGNOjMzM94zF4o0cxHK\n8nBPQQBkY6hr164sw5SLfGoUkOnkGC3etWvXcPLkSZJ9ki8OENqbuEGBiIgIPH36FJMmTYKJiQkO\nHTqEU6dOAfi3p97OnTtRVFTEk+0IyZfkqY+jVF+498utuP+vafAGnIWFBTlLUl1dHa1bt4aPj88r\noyX6+vosrc++fft4kQKhBpVc6lsIwB2gBQUF0NHRQWFhIXR0dFBWVsYTy2pqasLIyOiVgmyAv6A4\nOjryqjSZKMn7QCgiJjThHRwcWPokd3d3QX2WqqoqrwHnf4X8Zst8fZ8INUoW4m2jI/XZbP6XSGzr\n1q0xadIkiEQioumRR8j4raysxMCBA185r4SiSPb29uS/VVRUkJqayjPy/gte5QAIUd/Nh1v9yGiC\nXsXbFiL9r9H3N0Vo/G7fvh0JCQksIf67cpSE7u/SpUusqslBgwaxWsTMmDEDiYmJ78ywFcrEcOFG\nqIWcEKEsj9ApCPVB6Lg9LS0tlgNeUVHBc8iFOkBwgwK5ubk4c+YMXF1dMXLkSMycORN6enpwcXGB\nmZkZ/vrrLzg5OaFnz56sQEJ9JAbvcrwKBRw+JA3egCspKcHPP/8MqVSKJ0+esDp1vwyuyFYoUtC+\nfXue5oVLfQoBkpKSiJaO0delpaXxDAVule3Vq1excuXKVwqyhejRowevSvN9IhQRs7S05E14brTi\nZfqstLQ0VgNO+eN+3jdC6ZH3ydsuJv+lRuNlSKVSdOjQAe7u7qirq3tllaA8Qlqyt0HIyPsYqe/m\nw61+rA9vW4j0MaCtrf3e1yZ5AgMDWWu8iYkJAgMDWYVW/7VhKxRp5iIUZeWegtC9e3eWGP/Jkyck\nLS2PUCTU3Nyc5YB7enri+vXrLIdcqAMEt9/Zvn37eCniu3fv4tdff0VYWBhKSkrQuXNn3trFFJ68\nSmLwLhEKOHxIGrQBt2LFCmzduhWbNm3CgAEDeKmYl8HVJwlFCoQ0L1xDqj6pyaioKISGhrL0dUKG\nwrsoSQZkUR2hKs3/kpe1fJFHqCnp8OHDWacF/Nf81wv4x7aYvAkikQjXrl1D79698cUXX6CiokIw\n/cGlPvOqIcKtfqxPRPF9SiPeN9wsyPuGu8Z7e3vzCq2UlJR4rUze9zW9zgkRirKmp6fzTkFYtWoV\ncnJyYGpqirt370IikZB+bwwvc/zkDWnu2a92dnZwcXF57d4klJa/f/8+mjRpgtzcXPz555+Ce9G7\n1LfVh/9VgvOuadAGHHOMVlZWFjw8POqVdqgv9dG81GfDF6rEE/q9dxVV+RhCxPUxRl8m0uY2Rua2\nmPic+NgWkzclLy8PixcvfqmWTYi31ZJ9zjAtJ+SrH+vDf+1wvEu4WZD/GqayUr7Qavny5R/0moQQ\nirIyDi4jEaqpqUF+fj4iIyPx/fffk9NF3hUv6wAhj9BYPHbs2Gv3onepb/sUadAG3H+hWXpTzYsQ\nr2tD8S75GKI6bzvhAX7JPOXjpD5atlfxLubV50J9qh8/N+pTpf0+ESq0el3z9w+BUJSVewqCgoIC\nysrKyKHwTGugD0199qJP2Ql5F4ik8irQBoZQuu1j0AfJw/Q2ys7OhomJCaZOnfpRLhQfC4sWLUJV\nVRW8vLzwyy+/YNOmTR/6kigCtGrVCn5+fnBxcYGnp+d/ol/5XBk5ciSmT5+Obdu2wdXV9b2nkSiA\nnp7e/3wQ+Yfijz/+wJ07dxAUFEROQbh8+TLv55hTGSgfLw3agKN8fmRnZ0NJSQkbNmzAwIEDMWbM\nmA99SRQBmMbBpaWlKCkpwaFDh6iW7S35FBzRz43y8nIkJSUhNTX1rQ8i/1C0bduW1//v6tWrGDRo\nEAYMGFDvgiLKh4cacJTPjp07d6J37964fPlyvU80oHwYGC3bgQMHGryWjfLpUFZWhuTkZJw+fRp5\neXlo1qzZK4/r+piQSCS8ytS8vDwkJiYiOTkZT58+RceOHbFq1aoPfamU19CgNXCUz4vy8nJoampi\n8ODBcHd3h5KSEjXgPnKolo3yKfKuqv4/BEKVqUKnJVA+fmgEjvLZMHfuXAQGBuLAgQO4fv06qqur\nBQ83plAolIYKtzIVAKZMmfLJavoaMjQCR/lsuHHjBrZs2YKioiL4+fl9MpoUCoVC+a8QqkwVOi2B\nrp8fP9SAo3w2LF++HA8ePEBubi4cHR3Rv3//D31JFAqF8lEh1HqjrKzstc3TKR8f1ICjfDY8efIE\nRkZG5PDtr7/++gNfEYVCoXz8fMqavoYM1cBRPhvc3NxQVVUFf39/aGlpwdnZGdHR0R/6sigUCoVC\neefQCBzlsyEzMxMaGhpo1qwZAEBLS+sDXxGFQqFQKO8HasBRPht+/vlniMViSKVSiESiT+pwdwqF\nQqFQ3gSaQqVQKBQKhUL5xBB/6AugUCgUCoVCobwZ1ICjUCgUCoVC+cSgBhyFQqFQKBTKJwY14CgU\nCuU9sm/fPojF/y61ERER0NDQ+IBXRKFQPgeoAUehUBocpaWlcHd3R/v27aGiogI9PT1YWVnhxIkT\nAIB27dph7dq17+Vvf/vtt7hz5857+WwKhdJwoG1EKBRKg8PBwQGVlZXYsWMHDAwMUFxcjKSkJDx+\n/BgAIBKJ3tvfVlFRgYqKynv7fAqF0jCgETgKhdKgePLkCc6cOQN/f38MHDgQrVu3hrm5OebMmYNx\n48bB0tISd+/exbx58yAWi6GgoABAOPWZmJgIsVhMDD8A2LlzJ9q2bQt1dXWMHDkSxcXFrN8R+pzQ\n0FAYGBhAWVkZhoaGCAsLe093T6FQPheoAUehUBoUjRs3RuPGjREXF4eqqirev8fGxqJVq1bw9fVF\nUVERCgsL6/3ZaWlpmDx5MqZPn46rV69i5MiR8PHxeWVELzY2Fp6envD29kZWVhZmzZoFd3d3HDp0\n6K3uj0KhNAyoAUehUBoUjRo1QkREBHbt2gUtLS1YWFhg3rx5uHDhAgBAW1sbCgoK5Fg25mi2+hAU\nFAQrKyssXLgQBgYGcHV1hb29PV7VLz0wMBDOzs5wd3eHgYEBPDw8MGHCBPzyyy//871SKJTPF2rA\nUSiUBoe9vT0ePHiAP/74A8OGDcO5c+fQq1cvrF69+n/63OvXr6N3796s7/Xq1eu1v9OnTx/W9/r0\n6YPs7Oz/6VooFMrnDTXgKBRKg0RZWRlWVlZYunQpzp49iylTpsDPzw8SiUTw55lzduV52c++C95n\nIQWFQvn0oQYchUKhAPjqq69QW1uLyspKKCkpoba2lvXvurq6qKiowD///EO+l5GRwfuM1NRU1vfO\nnz//2r975swZ1vfOnDkDExOTt7kNCoXSQKBtRCgUSoPi0aNHcHR0xJQpU2BmZgYNDQ2kp6djzZo1\nGDx4MDQ0NNCuXTskJydjwoQJUFJSQtOmTdGzZ0+oq6tj4cKF8PLywtWrVxEcHMz67JkzZ8LCwgL+\n/v5wcHBAYmIiDh48+MrrmTdvHhwdHfHNN99gyJAhOHLkCKKiohAbG/s+HwOFQvnUkVIoFEoDoqqq\nSrpo0SJp9+7dpdra2lI1NTWpoaGhdM6cOdKysjKpVCqVnj9/Xvr1119LVVRUpGKxmPxuXFyc1MjI\nSKqqqiq1sbGR7tq1SyoWi6WPHj0iPxMeHi5t06aNVFVVVTp8+HDppk2bWJ8RHh4u1dDQYF3Tli1b\npAYGBlJFRUWpoaGhNCws7D0/BQqF8qkjkkpfUR5FoVAoFAqFQvnooBo4CoVCoVAolE8MasBRKBQK\nhUKhfGJQA45CoVAoFArlE4MacBQKhUKhUCifGNSAo1AoFAqFQvnEoAYchUKhUCgUyicGNeAoFAqF\nQqFQPjGoAUehUCgUCoXyiUENOAqFQqFQKJRPjP8Ds4jSIvsc5YUAAAAASUVORK5CYII=\n", "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAnAAAAGjCAYAAACsUSi/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XtclGX+//H3gIKiphkgeMKzZmImnkAsLaE1s01T08pj\nWVqWip3cr5WWHTS3Mguy1lU7bR4itzY3xTIFxUzJQ2q6HssUFE94BuH6/eGPWWdBHWDugdtez8dj\nHg/mmut+z3UPA3y47vu6x2GMMQIAAIBt+JT2AAAAAFA0FHAAAAA2QwEHAABgMxRwAAAANkMBBwAA\nYDMUcAAAADZDAQdAktS5c2d16dLFeX/Pnj3y8fHRnDlzSnFUf1zTpk1Tw4YNVa5cOd10002lPZzL\n4r0CeB8FHFAGbNmyRf369VP9+vVVsWJF1apVS507d9bEiRNd+sXHx1v2R9LhcMjhcFyxraz5+eef\nNXjwYIWFhalChQqqVq2abr75Zk2fPl3nzp0r7eFJKvr3LSUlRWPGjFGHDh00a9Ysvfrqq5aNLTEx\nUT4+Ppo/f36Bx26++Wb5+Pjoiy++KPBYVFSUateu7bxvh/cKcDVxcCFfoHSlpqaqS5cuql27tgYN\nGqRatWpp//79Wrt2rZYsWaLTp087+7Zo0UJBQUFatmyZx8fRuXNn+fj46LvvvnO2ZWdnq1y5cvLx\nKZv/682ePVvDhg1TUFCQBgwYoKZNm+rMmTNKTk7WF198ocGDB2vGjBmlPcwif98mTZqk559/XseP\nH1eVKlUsHduhQ4dUo0YNPfHEE3rrrbec7dnZ2apatary8vI0cuRI/fWvf3U+dvbsWVWtWlW9evXS\nP/7xD2f/svxeAa425Up7AMAf3aRJk1SlShX9+OOPuvbaa10eO3ToUCmN6gI/P79Sff7LWbNmjYYN\nG6b27dvr3//+t0uh89hjj2nHjh1atGhRKY6w+A4ePChJHi3ezpw5o4oVKxZoDwoKUuPGjZWcnOzS\nvnbtWp07d07333+/UlJSXB5bs2aNcnJyFB0d7Wwry+8V6UKB6evrK19f39IeCuAR/KsElLKdO3eq\nefPmBYo36cIf13z16tXTli1btHz5cvn4+MjHx0f169eXdGEmysfHR7/++qvL9t9//718fHy0YsUK\nl/b3339fDRs2VEBAgNq3b1/gj7d06fOaNmzYoDvuuENVq1ZV5cqV1aVLlwJ/4AvTokUL3XzzzYU+\n1rhxY5fz79wxYcIEORwOffrpp4UWOo0aNdITTzzhvJ+bm6uXX35ZjRo1UoUKFRQWFqZnnnlGZ8+e\nddnOx8enwKFr6cLrP2TIEOf9/Nd8xYoViouLU1BQkCpXrqxevXopMzPTZbtLfd8K4+Pjo3feecf5\ntY+Pjz788MMi7UO9evXUrVs3ffvtt2rfvr0qVqyoKVOmXPI5O3bsqI0bN+rkyZPOtpUrV6pu3brq\n16+ffvrpJ5fnWLlypSSpU6dOkgp/r0yYMEE+Pj7avn27Bg8erGuvvVbVqlXT0KFDdebMmQL7PGLE\nCC1cuFAtWrRQhQoV1KJFCy1evLjAWA8cOKCHHnpIISEhqlChgpo3b6733nvPpU/++/7TTz/VhAkT\nVLduXQUEBOj333+XdOGQdnh4uCpXrqxq1arppptu0vvvv3/J1wcoiyjggFJWv359paWlaePGjZft\nN23aNNWuXVvXX3+9Pv74Y3388ceaNm1akZ9v5syZGj58uGrWrKkpU6aoU6dOuvvuu7Vv375C+198\nXtPWrVvVqVMnbdiwQU8//bQmTJig/fv3q2vXroUWgRfr37+/Vq5c6fwjmm/dunXauXOn+vfv7/Y+\nnDlzRkuXLtXNN9+sunXrurXNI488oueee0433XST3nrrLXXt2lWvv/667rnnngJ9CzuX61LneI0e\nPVqbNm3SxIkTNWLECH311VcaOXKk8/Gift8++ugjxcTESJKzf37h6+4+OBwO7dixQ3369FGXLl00\nffp0RUZGXvI5o6OjlZubq9TUVGdbSkqKoqOjFRkZWehjVatWVcuWLa/4uvXr10+nTp3Sa6+9pr59\n+2r27NmFFsipqakaOXKk7rvvPk2ZMkVnz57VPffcoyNHjjj7HDx4UB06dNCSJUs0cuRIvf3222rR\nooUeffRRvfzyywUyX3nlFX3xxRcaM2aMpkyZokqVKmnmzJkaOXKkmjdvrjfffFOvvPKKIiMjXfYP\nsAUDoFR99913xtfX1/j6+pp27dqZsWPHmq+//tqcPXu2QN8bbrjBdOnSpUD7rFmzjMPhMHv37nVp\nX7ZsmXE4HGb58uXGGGOys7NNcHCwad26tcnJyXH2+/vf/24cDodL9u7du43D4TBz5sxxtvXs2dP4\n+/ubHTt2ONsyMzNNYGCgadOmzWX3c8eOHcbhcJg333zTpf2pp54yfn5+5vDhw5fd/mIbNmwwDofD\njBkzpkj9hw4d6tI+YcIE43A4zL/+9S9nm8PhMBMnTiyQUa9ePTNkyBDn/fzXPCYmxqVfXFycKVeu\nnMnKynK2Xer7dimPPfaYcTgcxd6HsLAw43A4zFdffeXW823fvt04HA7z/PPPO9uCgoJMfHy8McaY\n66+/3rz44ovGGGPy8vJMtWrVTLdu3Zx9C3uvvPDCC8bhcJgHH3zQ5bl69eplAgMDXdocDofx9/c3\nO3fudLZt3LjROBwO88477zjbhg0bZkJDQ01mZqbL9sOGDTMBAQHm2LFjxpj/vu/DwsLM6dOnXfre\nfffdJjw83K3XBSjLmIEDSlmXLl2UnJysO++8U5s3b9Ybb7yhO++8UzVq1NDs2bM9+lxr167VoUOH\nNGzYMJUr999TYAcOHKhq1apddtvc3FwtXrxYPXr0UMOGDZ3t1113nQYPHqx169Zd9py9hg0bKiIi\nQnPnznVpnzdvnm677TZVr17d7f3IysqS5P45Yl9//bUkKS4uzqV9zJgx8vX1dT5eHA8++KDL/fzZ\nrL179xY7szBF3Yc6derozjvvdCu7cePGCg4Odh4K37p1qzIzM9WxY0dJF1ac5j/2888/6/jx487D\np1cybNgwl/vR0dE6fPiwy+Fa6cLPQYMGDZz3w8PDdc0112j37t2SJGOMFixYoO7du8sYo8zMTOct\nJiZGZ86c0Q8//OCSOXDgwALn/VWrVk2//fab1q5d69b4gbKKAg4oAyIjI7Vw4UIdP35c69ev16RJ\nk+RwODR06FCPrjjNLyoaN27s0u7r63vZ87KkCwsqzpw5o6ZNmxZ4rFmzZpIunAt1Of369dMPP/zg\nHEdqaqp+/fVX9evXz91dkCRdc801kqQTJ0641X/v3r1yOBxq0qRJgZzQ0NASFVv/ewg3/1zGo0eP\nFjuzMEXdh4uLIXdERUXphx9+UG5urlauXKkqVaooPDzc+djq1auVl5fnPP/t4gUMl+Pu61PYofBr\nr73W2e/QoUM6duyYZs6cqeDgYJfbvffeK4fDUeAfiIv/0cj3zDPPqEqVKmrXrp0aNWqkESNG6Pvv\nv3drX4CyhAIOKEN8fX3VsmVL/eUvf1FiYqKkC+dBXcmlrr+Vm5vr9nMbL1xRKP8Pbf4s3Ny5c1Wh\nQgX17NmzSDmNGjVS+fLlr3jeoDvc3e/z588X2n6pVY3eeD0v91yFrTi9nOjoaJ0+fVppaWlKSUlR\nZGSk830VFRWlEydOaMOGDUpJSZG/v7/atWvnVq67r8+V+uXl5UmS7rvvPi1durTALSkpSbfddpvL\ntoW9Bs2aNdO2bds0f/583XrrrfrXv/6lW2+91eW8RcAOKOCAMqpt27aSLqy6y3epQi1/VuPYsWMu\n7f87KxMWFiZJ2r59u0v7+fPnnYeqLiUoKEgBAQH65ZdfCjyW31avXr3LZtSuXVtRUVGaO3eujDGa\nP3++/vSnPxX5chkBAQG67bbbtHz58gIrbwsTFhYmY4y2bdvm0p6VlaUDBw64jPvaa68t8DpmZ2e7\nfB+KyhMXuC3KPhRH/oxaSkqKVq5c6TLD1rRpU1133XVKSUlRSkqKIiIi5O/vX6LnK6qgoCBVqVJF\nOTk5uvXWWwu9hYSEuJVVsWJF3XPPPXr//fe1Z88e3X///YqPjy/R9xjwNgo4oJR99913hc6g5F/D\nLP/wpCRVqlTJZVVevvxDRcuXL3e25ebmFrg0Qtu2bRUUFKQPPvhAOTk5zvYPP/xQx48fv+w4fX19\n9ac//UlfffWVdu3a5Ww/cuSI5syZ48y+kvzLUsycOVMHDhxwOXx6/vx5/fLLL0pPT79izvPPPy9J\neuCBBwo9lLpz5069/fbbkuQ8F+ziC9VKF1aI5uXluZwr1rBhQ5fXUbpw2ZX8GaDiuNT3rSiKsg/F\n0bp1awUEBGjBggXauXOn8/w36UIBGhkZqblz5+rXX391+/CpJ/n6+qp3795auHBhoTOv7l4z8fDh\nwwVyW7RoIangP0BAWcaFfIFS9sQTT+jUqVPq2bOnmjVrpry8PKWlpemjjz5SYGCgRo8e7ezbtm1b\nxcfH68UXX1Tjxo1VuXJl9ejRQzfccIM6dOigcePG6ciRI7r22mv12WefFTiEWq5cOU2aNEmPPPKI\nunTponvvvVd79uzR7Nmz1aBBgyse9ps0aZKWLFmi6OhoPfbYY/L399cHH3ygrKwslyv1X06fPn00\nevRoxcXFqVKlSurRo4fzsX379ql58+YaNGiQZs2addmcDh06aMaMGXrkkUfUtGlTDRgwQE2aNNGZ\nM2e0atUqJSYmOq/bFh4ergcffFAzZ87U8ePH1aVLF6WlpWnWrFnq1q2bunXr5sx96KGHNHz4cPXu\n3Vtdu3bVhg0btGTJEgUGBhb7sOj/ft+qVKlS5IKrKPtQHOXKlVP79u21bNky59cX69ixo8aNGyfJ\n/fPfSup/X+/XXntN33//vSIjIzVs2DA1b95cR48e1fr167Vw4cIC15crTGxsrGrUqKGOHTsqJCRE\nO3bs0DvvvKMbb7xR119/vVW7AnheKax8Ne+++66pV6+eqVChgomIiDDJycmX7Hv27FkzaNAg07Jl\nS1O+fHnTuXPnAn0+//xzExMTY4KCgkyVKlVM+/btzZdffmnlLgAe880335hhw4aZ5s2bm2uuucb4\n+/ubBg0amGHDhpk9e/a49D148KD585//bKpWrWocDoepX7++87Fdu3aZmJgYU6FCBRMaGmrGjx9v\nli5danx8fJyXEcmXkJBgGjRoYCpUqGDatWtnUlJSTOfOna94GRFjLlzO4o477jBVqlQxlSpVMp07\nd77sz3Bhunbtanx8fEz//v1d2vOf8+LLdVzJxo0bzaBBg0zdunWNv7+/ueaaa0zHjh3N9OnTTXZ2\ntrNfbm6uefnll03Dhg2Nn5+fqVu3rnnmmWcKXK4lLy/PPPvssyYoKMhUqlTJdOvWzezcubPQy4j4\n+PiYH374wWX7ZcuWFXjNL/d9K8zIkSONj49PgXZ396FevXoul/lw1/PPP28cDkehl4RJTk42DofD\n+Pr6miNHjrg8Vth7ZcKECcbHx8dkZGS49M1/3S6+5I3D4TAjRowo8Jz/+5obY8yhQ4fME088YcLC\nwoyfn58JCQkxt956q/OSJ8b893swd+7cApnvv/++6dy5swkKCnL+rI0aNcocOnToCq8OULZ4/bNQ\n586dqwEDBighIUHR0dF69913NWvWLG3ZskV16tQp0P/06dMaO3asIiIi9PXXX+v48eMun9UoXbiQ\nZs2aNXXrrbeqevXq+vjjj/Xiiy/q+++/L5WpfgAAACt5vYBr3769WrVq5fIB002aNFHv3r31yiuv\nXHbbkSNHavPmzW5dVqF9+/bq1KmTpk6dWuIxAwAAlCVeXcSQnZ2ttLQ0xcbGurTHxsZq1apVHn2u\nrKysIl0YFAAAwC68WsBlZmYqNzdXNWrUcGkPDg52a9WZu959913t379fAwYM8FgmAABAWXHVrUL9\n/PPP9fTTT2vevHmFnlMHAABgd16dgQsMDJSvr68yMjJc2jMyMhQaGlri/AULFmjgwIH66KOP1L17\n9xLnAQAAlEVeLeD8/PwUERGhJUuWuLQnJSUpKiqqRNnz5s3TwIEDNWfOHPXq1atEWQAAAGWZ1w+h\n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\nzh4riKwQERGhdevWWZLdunVrpaWlufyOyG/7o2nSpIkeeOABDRkyxHmJrHyvvfaann322SLlVaxY\nUY0aNZIk7dy5Uw0bNnQ+tnPnTp0+fbrYY01NTVV6erpiY2NVqVIlSRdmU0+ePKnWrVsXKzMnJ0fP\nPfec/va3vzkX3/z666968MEHNWnSpAIzc8UxZ86cQn9vFPdIQ506dVS3bl31799fffr0KdOzbhej\ngNOFVU0//fSTJOmee+7R559/XsojKn1xcXFq27at7r33XknS/PnztWbNmsse5nGHlYdxrDJ+/HhF\nRkZ6dFVdbm6uBgwYoE8//dRjmfmOHz+u1atXKzU1VampqcrMzNQNN9ygDz/8sNiZw4YNU1RUlIYM\nGSJJatSokbp166YzZ86oXLlyeu+99zw1fI86duyYJk6cqBUrVki6UNA///zzJfqvOjAwULfffrv6\n9++v2NhY+fn5eWSsEydOLLQ9/4/T888/X6L8CRMmKCgoSL169ZK/v7+z3ROXhImKilJycrJ69+6t\n2267TTVr1tS4ceO0bdu2EuUePHhQU6ZM0ZYtW3TmzBlJnvl9kZKSookTJxb4PVTSQ77ShUNw+TP1\nnvDmm28qKipK1atXd77XLv6zXa9evRLlJyUlKSYmxqVt9uzZGjx4cIlyz5w5ox07dsgYo0aNGjkP\ngXvCyJEjnT8XZ8+e1bfffqvWrVtrwYIFxcrbs2dPgdcxMzNT1113XZn+p4wCTq4F3MVfl1R4ePgl\nH3M4HNq4cWOxcjt27KiVK1eqcuXKBd5cDodDWVlZxcq9WOXKlXX69GnnL6K8vDznf2gleY6WLVtq\nxIgRat26tcthnIiIiGLlWfUaXyz/tfDz83P+9+iJ1zk6Olrffvutyx9TTzh37pzWrFmjVatWaeXK\nlVq9erWCg4MLzKgWRatWrZSWluZ8P1z8c5L/fiyJL774Ql26dHEeujl27Ji+//573X333SXK7dWr\nl8LDwzVo0CAZY/TRRx9p48aNSkxMLHZm/nth4MCBHi3Ap06dWuDn+dSpU5o5c6YyMzN16tSpEuVf\nPNt5sZLOckoXrqPVrFkzHTt2TM8995yysrL09NNPq0OHDiXKjYmJ0b333qupU6dqxowZmj17toKC\ngjRlypQS5TZt2lRvvfWWy+8hSR6Zrfb0P6ljx45Vamqqtm7dqvDwcEVHRysqKspZ1JVUp06d1KJF\nC02dOlUnTpzQsGHD5OfnV+yJjO3bt+upp57Sjh071LJlS02dOlW1atUq8Tgv59ixY7r33nu1ePHi\nYuANlqEAABRmSURBVG2fmpqqcePGqXr16ho/frwGDhyozMxM5ebm6sMPP1S3bt08PGIP8e6aibLJ\nqksk7N692+W2Z88es3v3brN8+XLTrVs3jz2PnVxuhVJxvPHGG2b16tVm+/btZs+ePc7XOP9Wlj3w\nwAOmTZs25sUXXzRTp041U6dONX/961+LnTd69GjTrl07U61aNdOlSxfzf//3f2bRokXm6NGjJR7r\nDTfc4HJ/48aNzq/zV4SVRGEryG688UZLcj21Ws3KFZLHjx83L730kqlXr555+umnC70sQ1lx/vx5\nM3bsWEuy8y+5c/ElIjyx0rwkqzevJDw83MTHx5vVq1ebH3/80fz4449m7dq1Jc49e/asSUlJMa+/\n/rrp2bOnCQkJMc2aNStxrqdXanfs2NG8//77ZuvWrWbKlCmmZ8+eJR7jlZw7d840bty42Nu3bt3a\nLF682MybN89UrVrVpKamGmMuXFrEE7+HrMIiBkkbN250nhx65swZlxNFSzLTcvGUbFpamv7xj39o\n/vz5qlevnu65554SjTlfcnKyduzYoSFDhujQoUM6efKk6tevX+JcY4wSExOVkpIiHx8fRUdHe+Tj\nyXr06KF3333XY4dx9u3b5/wcXCv+O5VU6Hk8VatWVVhYWInON/T0Cdr16tXTAw884LHzIC/m6+ur\nAwcOKDQ0VNJ/Zz5///13lxmM4jKFHAjwxEnwFStWVHJysvME7ZSUFI8dyvH0Cknpwqr3N998U598\n8okGDhyotLQ0XXvttSUa57fffqvbbrtNn3/+eaHvr5KeWO7r66uUlBSPrO79X/mHDENCQvSvf/1L\nNWvW1NGjR0uc26VLFz311FPq1auX8zkcDkexz/u6WPny5TVixIgS5/yvM2fOKCsrS8ePH9fx48dV\ns2ZNtWzZssS5nl6pffLkSedFkZs1a2bJhZcvXriWl5enLVu2OFfnFkdubq5iY2MlXThVIX/m2FOL\nwKxCASfP/KEozLZt2/SPf/xDc+fOVVBQkPr06aO8vDyPreibMGGC1q5dq+3bt2vIkCHKzs7W/fff\n75EVdo8++qh27typ/v37yxij9957T0lJSYqPjy9R7uzZs+VwODR16lSX9uIexsk/J+/cuXNau3at\n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\nRU5ErkJggg==\n", "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAnAAAAGjCAYAAACsUSi/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlcVHX////ngIqAS7mguCPuhZq4coFhCdeFS6ap2aKi\nuX7MVLTM8iotrUvt0tSUzMwlWzDz55VlV2KWSlqm5G62YKYhKGruhsL794df5nKcAQeTgWOP++02\nN5n3vM457zPA8PSc834fmzHGCAAAAJbhVdgdAAAAQP4Q4AAAACyGAAcAAGAxBDgAAACLIcABAABY\nDAEOAADAYghwwF9IZGSk2rVrZ3/+yy+/yMvLS4sXLy7EXv11zZw5U8HBwSpWrJjuuuuuwu5OoZkw\nYYK8vPhzBOQHvzGAh+zdu1e9evVSUFCQfH19VbVqVUVGRmrixIkOdXPnzi2wQGWz2WSz2a7bVtTs\n3r1bsbGxqlmzpkqWLKnbbrtNbdu21ezZs/XHH38Udvck5f/7lpSUpFGjRql169ZauHChXn755QLs\nnbRo0SJ5eXmpZMmSOnTokNPrnTp1UlBQUIH2ITdW+BkEihobE/kCBW/z5s1q166dqlWrpr59+6pq\n1apKTU3V1q1btWbNGp0/f95ee+edd6pixYr64osvbno/IiMj5eXlpXXr1tnbMjMzVaxYsSJ7BGTR\nokUaOHCgKlasqN69e6t+/fq6cOGCNm7cqP/v//v/FBsbq3nz5hV2N/P9fZs0aZKee+45nTp1SqVL\nly7g3l15H/v37y9JGjx4sOLj4x1e79Spk/bu3auUlJQC78u1srKylJWVpRIlSnh824BVFSvsDgB/\nBZMmTVLp0qX17bff6vbbb3d47dixY4XUqyuK8h/NLVu2aODAgWrVqpU+/fRTh6AzbNgw/fTTT1q9\nenUh9vDGHT16VJJuani7cOGCfH1986xp2rSpFi5cqGeeeUbVq1e/adv+M7y9veXt7V3Y3QAspWj+\nlxu4xfz8889q1KiRU3iTpIoVK9q/rlWrlvbu3av169fLy8tLXl5e9tNaOafAfv31V4flv/zyS3l5\neWnDhg0O7W+88YaCg4Pl5+enVq1aaePGjU7bzu0auB07dqhDhw4qW7asSpUqpXbt2ikpKem6+3nn\nnXeqbdu2Ll+rW7euw/V37pgwYYJsNpveffddl0GnTp06euKJJ+zPs7KyNHnyZNWpU0clS5ZUzZo1\nNXbsWF28eNFhOS8vL6dT19KV979fv3725znv+YYNGxQXF6eKFSuqVKlS6tatmzIyMhyWy+375oqX\nl5dee+01+9deXl5asmRJvvahVq1aiomJ0eeff65WrVrJ19dXU6dOzevtlCSNGzdOkjR58uTr1ua3\nL19++aWaN28uPz8/hYSE2I/0fvjhhwoJCZGvr69CQ0OVnJzssLyra+By1pmUlKSWLVvK19dXwcHB\nevvtt536eerUKcXFxalGjRry8fFRcHCwJk2apOzsbIc6Y4xmz55t70ulSpU0YMAAHT9+3KEuOTlZ\nHTp0UEBAgHx9fVWrVi316dPHab+BwkSAAzwgKChIycnJ2rlzZ551M2fOVLVq1dSwYUMtXbpUS5cu\n1cyZM/O9vQULFmjIkCGqUqWKpk6dqoiICN1///06fPiwy/qrrz/at2+fIiIitGPHDj311FOaMGGC\nUlNT1b59e5ch8GoPPfSQvvrqK/32228O7du2bdPPP/+shx56yO19uHDhgtauXau2bduqRo0abi0z\nePBg/fOf/9Rdd92lV199Ve3bt9e0adP0wAMPONW6uuYqt2uxRo4cqV27dmnixIkaOnSoVq1apccf\nf9z+en6/b2+//baioqIkyV6fE3zd3QebzaaffvpJPXr0ULt27TR79my1adPmuu9RjRo11L9/fy1c\nuNDltXBXy09fUlJS9PDDD6tz587617/+pd9//11dunTRwoULNWrUKPXu3VsvvPCCUlJS1KNHD6dw\n5erazAMHDqhHjx76+9//runTp+v2229XbGys9u7da6+7cOGC2rVrpyVLlqhPnz6aM2eO7rnnHk2Y\nMEGDBw92WOfQoUM1evRotWnTRrNmzdKgQYO0fPlytWvXzn4t5bFjxxQVFaUDBw5o7NixmjNnjmJj\nY7Vnzx6HSx2AQmcAFLh169YZb29v4+3tbVq2bGlGjx5tPvnkE3Px4kWn2jvuuMO0a9fOqX3hwoXG\nZrOZgwcPOrR/8cUXxmazmfXr1xtjjMnMzDQBAQGmWbNm5tKlS/a6t956y9hsNod1HzhwwNhsNrN4\n8WJ7W9euXY2Pj4/56aef7G0ZGRmmQoUKpnnz5nnu508//WRsNpuZMWOGQ/uTTz5pSpQoYY4fP57n\n8lfbsWOHsdlsZtSoUfmq79+/v0P7hAkTjM1mMx9//LG9zWazmYkTJzqto1atWqZfv3725znveVRU\nlENdXFycKVasmDl9+rS9LbfvW26GDRtmbDbbDe9DzZo1jc1mM6tWrXJrezn78s0335hDhw4ZHx8f\nM3jwYPvrHTt2NEFBQX+qL0lJSfa2NWvWGJvNZkqWLGl++eUXe/sbb7xhbDabWbt2rb3t+eefd3ov\ncta5ceNGe9uxY8dMyZIlzZgxY+xtkydPNn5+fmb//v0Oy0+ePNnYbDZ7+1dffWVsNptZunSpQ11S\nUpKx2WzmjTfeMMYYs3LlSmOz2cy2bdtyeyuBIoEjcIAHtGvXThs3blSnTp20Z88eTZ8+XZ06dVKl\nSpW0aNGim7qtrVu36tixYxo4cKCKFfvfZa59+vTRbbfdlueyWVlZ+uyzz9S5c2cFBwfb28uXL6/Y\n2Fht27Ytz2v2goODFRoaqoSEBIf2ZcuW6d5771W5cuXc3o/Tp09Lcv8asU8++USSFBcX59A+atQo\neXt721+/EY899pjD8/DwcGVlZengwYM3vE5X8rsP1atXV6dOnfK9nWrVqtmPwl17Sv5G+1K/fn39\n7W9/sz9v2bKlpCs/+zVr1nRqP3DgwHX7Wb9+fYWHh9ufV6hQQfXr13dYdtmyZYqIiFD58uWVkZFh\nf9x7772SpPXr19vrSpUqpejoaIe6+vXrKyAgwD74pGzZspKkVatW6fLly9ftI1BYCHCAh7Rp00Yr\nV67UqVOntH37dk2aNEk2m039+/e/qSNOc0JF3bp1Hdq9vb2vO03EsWPHdOHCBdWvX9/ptQYNGki6\nct1cXnr16qVvvvnG3o/Nmzfr119/Va9evdzdBUlSmTJlJElnzpxxq/7gwYOy2WyqV6+e03oCAwP/\nVNi69hRuzrWMJ0+evOF1upLffahdu/YNb+uZZ56RzWbL9Vq4/Pbl2vcoJwhdO1Aip92d987VqfPb\nbrvNYdkffvhBa9asUcWKFRUQEGB/tGnTRjabzT5Y5IcfftDZs2dVqVIlh7qAgAAdPXrU/h+TyMhI\nde/eXRMnTlT58uV133336c033+T0KYocRqECHubt7a3GjRurcePGatOmje69914tXbr0uhf45zZP\nVlZWltvbNh6YNejBBx/UU089pYSEBPu/JUuWVNeuXfO1njp16qh48eLXvW7QHe7ud25HXHIbIemJ\n9zOvbV1vxGleqlWrpscee0xvvvmmnn322T/dl9zeoz/z3rmzrDFG9957r31wxrVyQm52drbKly/v\n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\nffaZOX36dK7LJycnmw8++MDs3bvX7W1eq3r16g7PmzZt6vJrVxISEuyfl+544oknTEJCgjl8+HD+\nOnmNAQMGuF2b2/cvMTHRqW3RokUuazMyMtzeniuu3sdvvvnGpKamOmy7c+fOZvjw4eb48eMu1zNm\nzBhz6tQpk5mZae655x5Tvnx5s2TJErf7ce379umnn5ply5Y51X3wwQdmzZo1Dm1NmjQxwcHBZvz4\n8WbPnj1ub/Ov5i8V4PL6sMjtw6NXr14mJibG/Pbbb2bXrl2mefPmJi4uLl/bze0PQ+PGjc2lS5fM\njz/+aOrWrWvGjBljYmJiHGo6duxokpKS7M8bNmxoli9fbhYvXmy6dOniUDtjxgwTFhZmOnToYBYv\nXpznh3GO2rVru/2BMXbsWDNt2jTz66+/muPHj9sfua13x44dJisry611u3L1B87Vnn/+eRMZGWkq\nVqxoYmNjTaVKlcwDDzzgUNOwYUP71zNmzLC/V0eOHDFNmjRxWmdKSop56aWXTEhIiAkNDTXly5c3\nBw4ccKobMWKECQkJMUOHDjXr16832dnZN7RvH330kVPbxx9/bGrVqmXeeust891335nk5GSzYMEC\nExQUZD7++GOX69m0aZMZPny4qV69uvH39zcLFy50+p78/vvv5u677zZBQUHm/vvvN126dDG1a9c2\nkZGR5tSpUw61eQWCq99TY4xp1KiROXr0qDHGmJ9//tm0atUq12Xvuusulz8LWVlZplGjRi6XOXr0\nqNmyZYt9f86cOWMmT57sFJ7ykp8/vn8mwH3xxRfmyy+/NF988YWpU6eO/euc9pvhjTfeMPfff7+5\nfPmyOXDggAkJCTGfffaZ28u7+pk7e/asWbdunZk0aZLp2LGjqVixomncuLFTWJ84caKpW7eu6dWr\nl6lVq5aZN2/eDe3Dte9bfgJcly5dTIUKFcyjjz5qPvnkE3P58uU862fNmmUeeughU7NmTVOjRg3T\nq1cvM3v2bJOcnJyvz6Vvv/3W7drffvvNZXt4eLgZMmSIOXv2rDly5Ijp1KmT6datm8vaOnXqmO7d\nu5tPPvkkz8+XS5cumYcfftitfjVt2tT+e7R+/XpTuXJls3z5cvPss886fXbmaNy4sTHGmBUrVpj+\n/fub33//3YSEhLi1PWOc37c2bdqY9PR0p7qjR4+6/OzYt2+fef75503Dhg1NSEiIefnll11+Ju/f\nv9/07dvXjBo1yvz666/mH//4h/Hz8zONGzc2W7Zscbu/VkSAy+X51d577z1Tvnx5U6NGDad57G5G\nf6ZMmWJmzZrlsh/XHgFq2bKl/euwsDCX6/3pp5/M5MmTTYsWLUz37t3Nd999l2sfIiMjHf5Xn5ea\nNWu6PPLkStu2ba/7AXu1V1991a02Y4y54447zOXLl+0fMGlpaebee+91qLn6fYyJiTFvvfWW/fm1\nAa5169amWbNm5uWXXzY///yzMcbkul/GXAkdn3/+uRk4cKBp3LixGTNmjElJSbnOHl5f27Ztzfbt\n253ad+zYYSIiIhzann76aVO3bl3z97//3SxYsMAcP3481z4//vjjZvTo0Q5/tC5fvmyefPJJ8/jj\njzvU5jYno6vX8vM7lFtIM8Y5GBpjzJw5c0xAQID96N6sWbNM7dq1zYgRI3IN9q7k549vfuQVIq8X\nRHI8+uijbrVdbfbs2aZjx47mzjvvdPiP3Z915swZs3btWjNhwgRTu3Ztp5+lhg0b2o98ZmRkmNDQ\n0BvazrXvW/369c22bdvM1q1bHb7etm2b0xkGY678Z2ThwoXm73//u6lUqZIZPHiwWwH58OHD5oMP\nPjCjRo0ytWvXzvfZgD8rKyvLTJ061QQHB5s6derkeRYgKyvLfPbZZ+bBBx80tWvXNk8//bTZv3+/\ny9q//e1v5uLFi9fdfs5npTHG/N///Z/DWaSrX7tazu9s//79zerVq/OsdUdeZ3ByO+uT47vvvjNP\nP/20CQoKMm3atHF4LSwszMybN89MnTrVVKlSxSQkJJjz58+bNWvWOPy9vBV5dBBDYbtw4YKSk5Nl\njLF/Lcn+3JUffvhBs2bNUrdu3bRv3z4tXbpUd911l/z9/R3q3n77bfXu3Vv//ve/ndZhs9kcRs7m\nKFGihN59910tWbJEq1atknTl+qWrnTlzxuH5N998Y//66NGjLvscHBysLl266Pz581q6dKn279+v\npk2buqwNCgpSu3bt1LFjR5UoUSLP/v7yyy8u1+HKlClTFBMTo3bt2l13vZK0aNEijRgxwqFt4cKF\nTm2S5OvrK29vbxUrVkynTp1SQECADh065FBTtmxZrVq1SlWrVtWmTZu0YMECSVfe34sXLzrUVqpU\nSbt371Z6erqOHj2q2rVr57lvXl5euueee9SsWTO99957eu6551S3bl0NGjTIZf2FCxe0YMEC7dmz\nx75tm82mt956y6EuPT1dTZo0cVq+cePGTt/rN998U6GhoRo6dKhiYmLs77Era9eu1c6dO+Xl9b9B\n597e3po8ebJCQkIcagMCAlxe37Vlyxan6+IOHz6sJ554Qub/XUb722+/2Z/bbDbNmjXLXuvn56cf\nfvhB9erVc1jHjz/+KD8/P6c+v/baa9q3b5/KlSungwcPql69etq0aZNCQ0Nz3U9Xmjdv7rI9IyND\nEydOVFJSkmw2myIiIvTcc8+pfPny9prOnTvnut7jx4/nqx+u7N692+H55cuXtW3bNqe6nM8Um80m\nY4wOHTqkJk2a6Ouvv9Y333zj8nfq6NGjmj9/vn755Rf7ta3X/sy988472rRpk7Zv3y4fHx+1aNFC\nrVu31ldffeV0HZ6Pj4/9+1S+fHllZ2fnul+uPgNznD171uF55cqVNXr0aKevc3zxxRcOz8uWLavY\n2FjFxsYqIyNDH374oYYPH64TJ07o8OHDTtszxmjnzp3atGmTNm3apL1796pOnTrq06ePy/7t379f\nr7zyitP7tm7dOqfaH374Qc8884zT7/XVA/FynDx5Ut9++62Cg4N1+PBh/frrr7leq+zl5aXo6GhF\nR0dr3bp1evTRRzV37lw1bdpUL7/8ssO0W0FBQQoPD9d9991n//64+pzNysqyXxu7du1avfHGG/bX\nrr72+WqdO3dWgwYNVLJkScXHx+vo0aNO12COGDFCM2fOdPm7YrPZ9NFHH9mfnzlzxuX1ua4+k6+W\nnZ2to0ePKj09XefOnXO689K5c+fsn73z5s2zX6cdFRWlJ598Mtf13gr+UgEurw+L3CYTvu+++/Ta\na6+pffv2ys7O1owZM9SiRQvt3bvXoe78+fOSrvyQuntR8FtvvaXXX39dzz77rIKCgpSSkqJHH33U\noaZKlSr6+uuv1bp1a4f2zZs3q2rVqg5tP//8s95//3395z//UY0aNfTggw/q2Wefdbrw/Go1atRQ\njRo1lJmZqczMzFw/VKQrvyjTp0/Xr7/+qvnz5+vHH3/U/v371alTJ6faf/7znypdurQuXryozMzM\nXLf/3nvv6d1339WBAwccPgTOnDnj8Mf0ai1atNDJkyc1cOBANW/eXP7+/k5zCc6bN09PPPGE0tLS\n9Oqrr9q/v59//rk6duzoULty5Ur9/vvvWrFihZ577jn99NNPOnnypMsgc/bsWf3nP/9RQkKCjh07\n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\n", "text": [ "" ] } ], "prompt_number": 170 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Quantitative BOMJ Data

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def plot_quant_data(bomj_df,varname,cr):\n", " \n", " data = (bomj_df)[varname].values\n", " cleaned_data = []\n", " for pt in data:\n", " try:\n", " cleaned_data.append(int(pt))\n", " except:\n", " pass\n", " plt.hist(cleaned_data,20,color=cr,normed=True)\n", " plt.xlabel(varname)\n", " plt.ylabel('Frequency')\n", " plt.title(varname + ' v. count for all movies')\n", " histogram_style()\n", " plt.show()\n", " \n", " win_data = (bomj_df[bomj_df.oscar_winner == 1])[varname].values\n", " cleaned_win_data = []\n", " for pt in win_data:\n", " try:\n", " cleaned_win_data.append(int(pt))\n", " except:\n", " pass \n", " plt.hist(cleaned_win_data,20,color=cr,normed=True)\n", " plt.xlabel(varname)\n", " plt.ylabel('Frequency')\n", " plt.title(varname + ' v. count for winners')\n", " histogram_style()\n", " plt.show()\n", "\n", " nom_data = (bomj_df[bomj_df.oscar_nom == 1])[varname].values\n", " cleaned_nom_data = []\n", " for pt in nom_data:\n", " try:\n", " cleaned_nom_data.append(int(pt))\n", " except:\n", " pass \n", " plt.hist(cleaned_nom_data,20,color=cr,normed=True)\n", " plt.xlabel(varname)\n", " plt.ylabel('Frequency')\n", " plt.title(varname + ' v. count for nominees')\n", " histogram_style()\n", " plt.show()\n", "plot_quant_data(bomj_df,'num_theaters_total','b')\n", "plot_quant_data(bomj_df,'opening_revenue','b')\n", "plot_quant_data(bomj_df,'num_theaters_opening','b')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAApMAAAGVCAYAAACip3p9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8VOXd///3TPZAEtEQsmADBCgmxS2LJuwKaUFr3YAg\nUtGyKJW1lOUuegNCZGm5pWogDbbSViVIgNtb6S2xSghNAFMIBAIokgIKCQZZqrdhCdfvD76Zn+NM\nwuQAQ4DX8/G4Hg/mms855zonM8mba845YzPGGAEAAAAW2K/0AAAAAHD1IkwCAADAMsIkAAAALCNM\nAgAAwDLCJAAAACwjTAIAAMAywiQAAAAsI0wCTdy//vUv2e12zZ0790oPBQ1Yt26d7Ha71q9ff6WH\nctXLzc3VLbfcooCAALVo0eJKD8fBbrdrxowZjsdX88+8TZs2evLJJ6/0MHCNIEwCTcSbb76phQsX\n1vu8zWbz4mjO+/bbbzV9+nQVFBR4fduNkZmZqf/+7/+2vPyhQ4c0ffp0bdu27RKOCtKFX9ffV1FR\noccff1yxsbH6wx/+oJycnMs4usa7Eu/Dy8Fms10z+4Irz/dKDwDAeW+++aZ27typsWPHXumhOHzz\nzTeaOXOm7Ha7evTocaWHU6/MzEwNGDBAP/vZzywtf+jQIc2cOVPt2rXTbbfddolHd31r7Ov6H//4\nh2prazV//nx17tz5Mo/u+vXJJ5/Ibmc+CZcGrySgCWmqMwWX+ltXT58+rdra2ku2PpvNdknGyLfL\nXh6NeV0fOXJEkhQaGnrJtv/tt99esnVdK/z8/OTj43Olh4FrBGES15zp06fLbrfrk08+0dChQ9Wi\nRQvdcMMNeuqpp5z+qNSdi7h06VKXdXz/3Ki6de7evVuPP/64brjhBrVs2VK/+c1vJEkHDx7Uz372\nM4WFhSkyMlK//e1vGzXmnj17as2aNY4x1bXvMsYoJydHcXFxCgwMVEpKikpKSlzW9cknn2jAgAEK\nDw9XUFCQ7rzzTuXl5TnVHDt2TL/+9a916623KjQ0VCEhIerVq5c2bNjgdHwiIiIkSTNmzHCM6bvn\nWR0+fFjDhg1TZGSkAgMDFR8fr8WLFzttq+68sjfffFPTp0/XD37wAwUHB+uLL76QJGVlZalz585q\n3ry5brjhBt1xxx36wx/+4PGxs9vt+uabb7R06VLHGHv16uW0HwMHDtRNN92k4OBgpaSkOH0kvm7d\nOqWkpEiSnnzyScc6Zs6cKUnavn27nnzyScXFxSkoKEgtW7bUoEGDdPDgQY/HWKeqqkq+vr56/vnn\nXZ47ePCg03YbY9myZbr77rvVvHlztWjRQt26ddM777zjVLN48WL96Ec/UlBQkKKiovT000/r2LFj\nTjX1nUfXs2dPp2Na9zNdtmyZMjMz1bp1awUFBal379767LPPnJa70Ov6+9ufOHGiJKlt27Yu70NP\n9qFnz5665ZZbVFpaql69eql58+YaNWpUvdv05L1wseqO11tvvaUZM2YoJiZGISEheuSRR3T8+HGd\nOnVK48aNU0REhEJCQjR06FDV1NQ4raO2tlazZ89W+/btFRgYqNjYWE2ePNmp7v7771dsbKzbMfTu\n3Vvt2rVzPHb3sz516pRmzJihDh06KDAwUK1bt9aECRNcwvjf//53de/eXTfeeKOaNWum9u3ba/To\n0Rd7mHAV42NuXLMyMjIUFxenOXPm6J///KeWLFmiiIgIzZkzx6muvlkTd/2DBg3SLbfcorlz5+q9\n997Tiy++qLCwMC1ZskS9e/fWvHnz9Ne//lWTJk1SYmKi0x/ghkybNk2TJk3S559/rpdeesltTW5u\nrr7++ms988wzkqR58+bp4Ycf1r59++Tre/6tvGvXLqWlpSk6OlqTJ09W8+bNtXLlSvXv319/+ctf\nNHjwYEnSZ599pry8PA0cOFDt2rXTsWPH9Nprr6l37976+OOP1blzZ0VERGjRokV65pln9PDDD+vh\nhx+WJMXFxUk6P4N09913yxijZ599VhEREfrggw80atQoHT161BG062RmZsrHx0fjx4+XMUbNmjXT\na6+9pmeffVb9+/fXmDFjdObMGe3YsUPFxcUaMWKER8fuL3/5i4YNG6a77rrLsUyrVq0cY0xLS9M3\n33yjMWPGqGXLlvrLX/6ihx9+WG+88YYyMjIUHx+vmTNn6vnnn9fIkSPVrVs3SdKtt94qSfrggw8c\n/zGJjo7W3r17tXjxYm3evFk7duxQUFCQR+OsG1evXr2Um5vrEhqXL18u6fzrtjFmzZql559/Xqmp\nqZo+fbqCgoJUUlKitWvX6oEHHnCquffee/XMM89o7969evXVV7Vp0yZt2rRJ/v7+kuo/j66+/nnz\n5snX11eTJk3S8ePHNW/ePA0ePFgbN26U5Nnr+rsWLlyo5cuX66233tJLL72k8PBwx8+hMftw/Phx\n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\na8GCBSosLFRgYOAFx4xrD2ES1626WZS6//3XuZiZmotxscGn7kpNHx8f3XPPPQ3Wvv322+rVq5f+\n+Mc/OvV//yrj+sbUsmVLhYSE6MyZMxfc1oUEBQXpkUce0SOPPKLa2loNHTpUWVlZ+s1vfqOoqCiP\n1lHfOGNjY7V7926X/rq+Nm3aNLj8sWPH9Pe//10zZszQc8895+ivqanRV1995dHY3PnZz36moKAg\nLVu2TKGhodq+fbtHF6h8X/v27SVJO3bsUGJiotuauqt7d+/e7aiXzoeHTz/91Gm5Fi1auJ1V3L9/\nv9OyjXEpAn1j9qGxPH0vXEmxsbEyxmjPnj360Y9+5Og/efKkDh8+7LjQSjof9h544AHl5eXplVde\nUW5urm6//XaXWc3va9++vf75z3969H622Wzq0aOHevTooblz52rx4sUaNWqUVq5cqccee8z6juKq\nxcfcuG6FhoYqPDzc5dtdsrKyGrWeS3VvyGbNml3Ux4MRERHq1auXcnJydOjQIZfnv/uxs6+vr8us\nWlFRkYqLi536goODJcklOPn4+OjRRx/V6tWrtX379ga31ZCjR4+6rLfuj+X3Q35DmjVr5jbc3X//\n/dqyZYvTbV5qamq0aNEiRUVFOUJIs2bNJLnfT0kux+q//uu/Lmr2rXnz5o5z29566y3Z7XYNGDDA\n8fzJkye1e/fuC37M+tBDDzluJ1TfLGl6err8/f31+9//3mnMb7zxho4cOaL777/f0RcXF6eNGzc6\nztWTpHfffVeff/651V296Ne11Lh9aCxP3wtXUt3+ff8/HAsXLtS5c+dc9j8jI0Nffvml/vjHP2rT\npk0enT4xcOBAVVVVadGiRS7PnTp1ynGuubv32R133CFJlk77wLXB6zOTWVlZmj9/viorK5WQkKCX\nXnrJcdK2O2VlZXr22Wf18ccf68Ybb9TIkSOdZggkqaCgQBMmTFB5ebmio6M1adIkjRw50qkmLy9P\nzz33nPbt26e4uDjNnj1bDz74oOP5Nm3a6MCBAy7b79evn959992L3Gs0VcOGDdOcOXM0fPhwJSYm\nav369Y6LVDxVX6hobNhITk7W8uXLNW7cOKWkpMhutzf6HLpFixapS5cuuvXWWzV8+HC1a9dOR44c\n0aZNm7Rr1y7Hvj3wwAOaPn26nnjiCXXt2lWffvqpcnJylJCQ4HSBUlBQkBISErRs2TJ17NhRN954\no9q1a6eUlBTNmTNH69atU2pqqoYPH674+HgdO3ZMpaWlWr16tUc3ik5PT1erVq3UpUsXRUZGau/e\nvXrllVd022236ZZbbvF4v5OSkvTBBx/od7/7nWJiYhy34Jk8ebLeeust3XfffRozZozCw8P117/+\nVbt379Ybb7zh+Og2Li5OLVq00KJFi9SsWTOFhISoc+fOSkhIUM+ePTVv3jydPn1aP/jBD7Rhwwat\nX79eN91000UFyoyMDOXl5em//uu/1L17d0VGRjqeW7lypZ566in96U9/0hNPPFHvOtq1a6fnn39e\n06dPV9euXfXQQw8pODhYW7ZsUVBQkF555RXddNNNeu655/Tcc88pPT1dP/vZz7Rv3z69+uqruv32\n250uKhs2bJhWrFihn/zkJ+rfv78+++wzvfHGG4qLi7O8r5fidd2YfZAa997z9L1wJXXu3Fm/+MUv\n9Nprr+nEiRPq1auXtmzZoj/96U/q27ev+vbt61T/4x//WC1atNCECRNks9ncHu/vH6PHH39cK1as\n0C9/+UsVFBSoS5cujtnQt99+WytWrFD37t01c+ZMFRQU6L777lNsbKyOHTumxYsXq3nz5hcV6nGV\n896F48YsW7bM+Pn5mSVLlpjdu3eb0aNHm+bNm5sDBw64rT9x4oRp1aqVGThwoNm5c6dZsWKFCQkJ\nMb/73e8cNfv27TPBwcFmzJgxZvfu3SYnJ8f4+fmZvLw8R01RUZHx9fU1mZmZZvfu3Wb27NnG19fX\nbNq0yVFTXV1tqqqqHG3r1q3GbrebP//5z5fvgOCymD59urHb7aaqqsqp/09/+pOx2+1Otxz59ttv\nzbBhw8wNN9xgQkNDTUZGhtvb4dS3zqFDh5qgoCCXMfTs2dPccsstjRr3//3f/5knnnjC3HTTTcZu\ntxu73W6M+f9vDTR37lyXZdzdtudf//qXefLJJ010dLTx9/c3rVu3Nvfdd59ZtmyZo+b06dNm8uTJ\npnXr1iYoKMikpKSY999/3wwdOtTlNi6bNm0yd911lwkMDDQ2m83pdiJffvmlGTNmjImNjTX+/v4m\nMjLS3HPPPSYrK8tR89FHHxm73W5yc3Ndxv+HP/zB9OzZ07Rs2dIEBASYdu3ambFjx5ovv/yyUcfu\n008/Nffcc49p3ry5sdlsTrexqaioMAMGDDA33nijCQwMNMnJyWb16tUu63jvvffMrbfeavz9/Y3d\nbncc18OHD5sBAwaYm266yYSGhpqf/vSnZu/evS63VqnbzwvdJqbOt99+a0JDQ43dbjfZ2dlOz73+\n+uvGbre7vVWRO3/+859NUlKSCQoKMi1atDDdunUz//M//+NUs3jxYpOQkGACAgJMZGSkGTlypPnq\nq69c1rVgwQLTunVrExgYaLp162a2bNlievbs6XJrIHc/U3e326rvdV2f3/72ty7v08bsQ2Pfe415\nL7i7NZAnP/P6jlfd76Tv/i0yxv3vm9raWjN79mwTFxdn/P39zQ9+8AMzefJkl9uA1Rk2bJix2+0m\nNTXV7fPubgN19uxZ89vf/tZ07tzZBAYGmhYtWpikpCQzffp0x3H+6KOPzMMPP2xat25tAgICTHR0\ntHn00UfN9u3bGzwGuLbZjPHemdJ33XWXbr/9dmVnZzv6OnbsqEcffVSZmZku9YsWLdLUqVNVVVWl\ngIAASdLs2bO1aNEix8cukydP1urVq7Vnzx7HcsOHD9fOnTtVVFQk6fz0/fHjxx03XZWkPn36qGXL\nlnrzzTfdjnX27Nn63e9+p8OHDzu2DQAAAGdeO2fy9OnT2rJli9LT053609PTHaHv+4qLi9WtWzen\nMJeenq5Dhw45LpIoLi52u86SkhLHVbkbN25s1HaNMXrttdf0+OOPEyQBAAAa4LVzJqurq1VbW+v4\nmrM6ERERqqysdLtMZWWly60y6pavrKxUbGysqqqqXNbZqlUrnT17VtXV1WrVqpUqKyvd1tS33fz8\nfP3rX/9yuek1YMWXX355wdsNtWzZ0osjujqcO3fOcW+7+gQHBys0NNRLIwIAuNOkbw10qa6Sbayc\nnBylpKRc0u9kxfUrOTnZ7cVdddq0aXPJ72d3LThw4IDjdkf1GTp0qMstXQAA3uW1MBkeHi4fHx9V\nVVU59VdVVdV7L7nIyEiX2cO65euufKyvxtfXV+Hh4Q3WfPfqyTpHjhzRO++80+jbwwD1efPNN1VT\nU1Pv8425wfL1JCoqSh988EGDNXU3UgYAXDleC5P+/v5KTEzU2rVr9cgjjzj68/Pz1b9/f7fLpKam\navLkyTp16pTj3MX8/HzFxMQ4bmKbmpqqVatWOS2Xn5+v5ORkxz3iUlNTlZ+fr4kTJzrVdOnSxWWb\nr7/+ugIDAzVo0KCL22Hg/0lLS7vSQ7gqBQQEXPQN0QEAXuDNS8dzc3ONv7+/WbJkiSkvLzdjxowx\nISEhjlsDTZkyxdx7772O+hMnTpjIyEiTkZFhduzYYfLy8kxoaKhZsGCBo6aiosI0a9bMjBs3zpSX\nl5ucnBzj7+9vVq5c6aipuzXQnDlzzK5du0xmZqbx8/MzmzdvdhrfuXPnTIcOHcyIESMu85EAAAC4\nNng1TBpjTFZWlmnTpo0JCAgwSUlJprCw0PGcu/t6lZWVme7du5vAwEATHR1tZs6c6bLOgoICc+ed\ndzruU/f9e7YZY8yKFStMp06djL+/v4mPjzerVq1yqfnwww+N3W43H3/88SXYUwAAgGufV+8zCQAA\ngGsL380NAAAAywiTAAAAsIwwCQAAAMsIkwAAALCMMAkAAADLCJMAAACwjDAJAAAAywiTAAAAsMxr\n3819LTp3znvbshP7AQBAE0REsSg7W/Lx8V7bsOFK7zEAAIArwiQAAAAsI0wCAADAMsIkAAAALCNM\nAgAAwDLCJAAAACwjTAIAAMAywiQAAAAsI0wCAADAMsIkAAAALCNMAgAAwDLCJAAAACwjTAIAAMAy\nwiQAAAAsI0wCAADAMsIkAAAALCNMAgAAwDLCJAAAACwjTAIAAMAywiQAAAAsI0wCAADAMsIkAAAA\nLCNMAgAAwDLCJAAAACwjTAIAAMAywiQAAAAsI0wCAADAMsIkAAAALPN6mMzKylLbtm0VFBSkpKQk\nbdiwocH6srIy9ejRQ8HBwWrdurVeeOEFl5qCggIlJiYqKChIcXFxys7OdqnJy8tTfHy8AgMDlZCQ\noNWrV7vUHD58WE888YQiIiIUFBSkhIQErV+/3vrOAgAAXOO8GiZzc3M1btw4TZs2TaWlpUpLS1Pf\nvn118OBBt/UnT55Unz59FBUVpZKSEi1cuFDz58/XggULHDUVFRXq16+funbtqtLSUk2dOlWjR4/W\nypUrHTXFxcXKyMjQkCFDtG3bNg0ePFj9+/fX5s2bHTXHjx9Xly5dZLPZtGbNGu3evVuvvPKKIiIi\nLt8BAQAAuMrZjDHGWxu76667dPvttzvNHHbs2FGPPvqoMjMzXeoXLVqkqVOnqqqqSgEBAZKk2bNn\na9GiRfr8888lSZMnT9bq1au1Z88ex3LDhw/Xzp07VVRUJEkaOHCgjh8/rvfff99R06dPH7Vs2VJv\nvvmmJOk//uM/VFhYqMLCQo/2JTtbevrpRh6Ai1BYKHXt6r3tAQAAeMJrM5OnT5/Wli1blJ6e7tSf\nnp7uCH3fV1xcrG7dujmCZF39oUOHtH//fkeNu3WWlJSotrZWkrRx48YLbnf16tVKSUnRwIED1apV\nK91xxx169dVXre8wAADAdcBrYbK6ulq1tbVq1aqVU39ERIQqKyvdLlNZWelSX/e4bpmqqiq3NWfP\nnlV1dXWD6/nudvft26esrCy1b99ea9eu1dixYzVlyhQCJQAAQAN8r/QAGmKz2by2rXPnziklJUWz\nZ8+WJN1222369NNP9eqrr+qXv/yl18YBAABwNfHazGR4eLh8fHxUVVXl1F9VVaWoqCi3y0RGRrrM\nWtYtHxkZ2WCNr6+vwsPDG6ypW4ckRUdHKz4+3qmmU6dOOnDggNuxjRwpGeO9xvmSAACgKfJamPT3\n91diYqLWrl3r1J+fn6+0tDS3y6SmpqqwsFCnTp1yqo+JiVFsbKyjJj8/32WdycnJ8vHxabCmS5cu\njsddunTR7t27nWo++eQTtWnTxu3YsrMlm8177QJ3UAIAALgyjBfl5uYaf39/s2TJElNeXm7GjBlj\nQkJCzIEDB4wxxkyZMsXce++9jvoTJ06YyMhIk5GRYXbs2GHy8vJMaGioWbBggaOmoqLCNGvWzIwb\nN86Ul5ebnJwc4+/vb1auXOmoKSoqMr6+vmbOnDlm165dJjMz0/j5+ZnNmzc7aj7++GPj5+dnZs+e\nbT799FOzfPlyExYWZrKystzuy+LF3pyXNKaw8FL/NAAAAC6eV8OkMcZkZWWZNm3amICAAJOUlGQK\nv5OShg4datq2betUX1ZWZrp3724CAwNNdHS0mTlzpss6CwoKzJ133mkCAgJMu3btTHZ2tkvNihUr\nTKdOnYy/v7+Jj483q1atcql57733zG233WYCAwPND3/4Q/Pyyy/Xux+ESQAAAGO8ep/Jawn3mQQA\nAOC7uQEAAHARCJMAAACwjDAJAAAAywiTAAAAsIwwCQAAAMsIkwAAALCMMAkAAADLCJMAAACwjDAJ\nAAAAywiTAAAAsIwwCQAAAMsIkwAAALCMMAkAAADLCJMAAACwjDAJAAAAywiTAAAAsIwwCQAAAMsI\nkwAAALCMMAkAAADLCJMAAACwjDAJAAAAywiTAAAAsIwwCQAAAMsIkwAAALCMMAkAAADLCJMAAACw\njDAJAAAAywiTAAAAsIwwCQAAAMsIkwAAALCMMAkAAADLCJMAAACwjDAJAAAAywiTAAAAsIwwCQAA\n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\n", "text": [ "" ] }, { "ename": "AttributeError", "evalue": "'DataFrame' object has no attribute 'oscar_winner'", "output_type": "pyerr", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 42\u001b[0m \u001b[0mhistogram_style\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 44\u001b[0;31m \u001b[0mplot_quant_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbomj_df\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'num_theaters_total'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'b'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 45\u001b[0m \u001b[0mplot_quant_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbomj_df\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'opening_revenue'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'b'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 46\u001b[0m \u001b[0mplot_quant_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbomj_df\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'num_theaters_opening'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'b'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m\u001b[0m in \u001b[0;36mplot_quant_data\u001b[0;34m(bomj_df, varname, cr)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mwin_data\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mbomj_df\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mbomj_df\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moscar_winner\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mvarname\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mcleaned_win_data\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mpt\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mwin_data\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m//anaconda/python.app/Contents/lib/python2.7/site-packages/pandas/core/frame.pyc\u001b[0m in \u001b[0;36m__getattr__\u001b[0;34m(self, name)\u001b[0m\n\u001b[1;32m 2086\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2087\u001b[0m raise AttributeError(\"'%s' object has no attribute '%s'\" %\n\u001b[0;32m-> 2088\u001b[0;31m (type(self).__name__, name))\n\u001b[0m\u001b[1;32m 2089\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2090\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__setattr__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mAttributeError\u001b[0m: 'DataFrame' object has no attribute 'oscar_winner'" ] } ], "prompt_number": 168 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

IMDB Reviews & Ratings

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In order to understand what the distribution of movies and movie reviewers looks like, we calculated the number of reviews, critics, and movies and then plot the number of reviews per critic." ] }, { "cell_type": "code", "collapsed": false, "input": [ "print \"Number of reviews: %i\" % len(imdb_df)\n", "print \"Number of critics: %i\" % imdb_df.critic.unique().size\n", "print \"Number of movies: %i\" % imdb_df.title.unique().size" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Number of reviews: 435277\n", "Number of critics: 199188" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Number of movies: 1900\n" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "imdb_df.groupby('critic').title.count().hist(log=True, bins=range(20), edgecolor='white')\n", "plt.xlabel(\"Number of reviews per critic\")\n", "plt.ylabel(\"N\")\n", "histogram_style()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n+64yMjIUFRWl22+/XRMmTPAHonnz5qlFixb+vh9++KE8Ho9eeOEFf1v//v3185//XJL07bffasCA\nAUpISFBUVJSaNGlS7SxkQUGB0tLS9Oqrr+q2225TdHS0HnroIR0+fDigX1FRkVq2bKmoqCg1b95c\nM2bMCAjrHo9Hc+bM0cMPP6y6detq/PjxFxzzl7/8pe644w5FRkYqOTlZ48aNk3Thv/PZx+fatWs1\nePBglZeXy+PxyOPx6F//9V8lnf7I9amnnvKPU1lZqXHjxiklJUWRkZFq0qSJ/v3f//2CdQE3lOv0\n7FkA10FeXp558MEHzfLly01ERITZtWuXMebvDwY/fPjweb83xpjS0lLjOI7ZvHlzQJ9OnTqZ4uJi\n8+c//9m0bt3aZGZmmu7du5uNGzea//mf/zGpqalmxIgRATXExMSYfv36mc8//9x88MEHplGjRubp\np5/29xk3bpz50Y9+ZD744AOzZ88e89vf/tbUqVPHvP/++wG1pKSkmDfffNPs2bPngg8qz83NNS1a\ntDDr1683n332mcnNzTXJycnmxIkTprKy0mzbts04jmPeeust4/V6TWVl5Xm307hxY1OvXj3z4osv\nml27dpmdO3eaP//5z6Zu3bpm+vTpZufOneaPf/yj6dy5s+nTp48xxpgjR46YyMhIs2LFCv92jh49\naurUqWPeeOMNY4wxRUVFpm7duv73V6xYYerVq2cWLVpkdu/ebdasWWOaN29uRo8ebYwxZvv27cZx\nHOP1eo0xxowfP97ceuutpmfPnv5tJCcnmyVLlhhjjHnyySdNmzZtzKZNm8zf/vY3s3btWv/Y55Of\nn2/q1q1runfvbkpKSszHH39sWrVqZXJzc/19FixYYBITE/2/+3fffdc0aNDAzJo1y9/HcRwTHx9v\nfv3rX5vS0lJTWlp63vHGjh1rbrrpJlNUVGR2795tNm7caObNm2eMufDf+ezjs7Ky0sycOdPUqVPH\neL1e4/V6TXl5uTHGmKysLPPUU0/5x3rkkUdMUlKS+d3vfmdKS0vN+vXrzWuvvXbB3wVwIyHQARbJ\ny8szvXr1MsYY0717d/PII48YY64u0K1cudLfZ9asWcZxHPPpp5/62woKCkzr1q0Darj55pv9/+ka\nY8zrr79uateubY4fP26OHTtmoqKiTHFxcUDtI0aMMA888EBALdOnT692f//6178ax3HM+vXr/W3f\nfvutiY2NNa+++qoxxpiDBw8ax3HM73//+2q31bhx44BQY4wxAwYMMEOGDAlo+/TTT43jOObgwYPG\nGGMefvhWTGUyAAAHfklEQVRhM2DAAP/7r732momNjTXff/+9MebcQNe1a1dTWFgYsM233noroE9i\nYqJZunSpMcaYLl26mBdeeMHUrVvXVFVVmR07dhjHccyBAweMMacD7eDBg6vdt7Pl5+ebsLAws2/f\nPn9bcXGxcRzH7Ny50xhzOjC+/vrrAT/38ssvm5YtW/q/dxwnIKSfz9GjR01kZKSZP3/+ed+/0N/5\nh8fnD3+HZ5wd6M4cCx988EG1NQE3qlpuzxACuDzm/z8We+GFF9S5c2c9++yzV7W99PR0/9dnrmtK\nS0sLaPvqq6/O+Zno6Gj/93fddZcqKyu1a9cunThxQhUVFbr//vsDbp44efKkUlNTA7bTvn37amvb\nvn27PB6POnfu7G+rV6+e0tLS/B+7XirHcc4Zb/Pmzdq1a5eWLVvmbzPGyHEc7dq1S3Fxcerfv7/y\n8vJUUVGhyMhILVmyRH369FFERMR5x9m8ebM2bdqkqVOn+tt8Pp8qKirk9XqVkJCge+65R2vWrFGv\nXr20adMmvfnmm5o7d642btyorVu3qkmTJmrYsKEkafjw4erTp482b96s++67T7169VK3bt2q3ddG\njRopKSnJ/33Hjh3l8Xi0fft21atXT/v379fQoUM1bNgwf5/zXcN4sb/Ptm3b9P333+vHP/5xtf0u\ntp1L8emnn8rj8ah79+5XvS2gJiLQAZbq0KGDevfurTFjxuhf/uVfAt7zeE5fHmvOuibqQhe1h4eH\n+78+E8DCwsIC2n54DZmp5saIM33fe+893XbbbRccS9IVX/BujPHv4+X44XjGGP385z/XM888c07f\nM4HqgQceUK1atfT2228rOztbH330kVauXFltbQUFBerbt+857525eSIrK0vTp0/XJ598oqZNmyo+\nPl5ZWVlas2aNtm3bFhBaevbsqb179+q///u/9dFHH+knP/mJ+vbtq4ULF172/kt///vMnz9fmZmZ\n1fa9VjckcGMDcP0R6ACLTZ48WS1bttSKFSsC2m+99VZJ0hdffOG/aaCkpOSajfvZZ5/p+PHj/lm6\nP/zhD4qIiFCTJk106tQp1a5dW3v27FFWVtZVjdOiRQv5fD5t2LBBXbt2lSR999132rp1q4YMGXK1\nu6F27dpp69atuv322y/Yp3bt2urbt6+WLFmigwcPKjExsdr9ateunbZv317tNrOysjR8+HAtWbLE\nH96ysrL0+uuv6y9/+UvA7J4k1a9fX/3791f//v3Vs2dPPfbYY5o/f/45AfmMAwcOaP/+/f5Zuo0b\nN8rn86lFixZKSEhQw4YNtXPnTvXv3/+CNV6KFi1aqHbt2vrwww/VpEmTK95ORESEqqqqqu3Tpk0b\n+Xw+rV69Wvfff/8VjwXUVAQ6wGJNmjTR0KFDNWPGjID2pk2bKjk5WQUFBZo6dapKS0vPWbvuapw6\ndUqDBw/WxIkTdeDAAY0dO1ZDhw5VVFSUJGn06NEaPXq0jDHq2rWrjh07pj/84Q8KCwvz3715Ke64\n4w799Kc/1T/+4z9qwYIFio2N1fjx4xUbG6vHHnvsqvfjF7/4he666y4NHz5cQ4cOVUxMjP73f/9X\n7733nubNm+fv179/f2VnZ6u0tFSPPvpotducOHGiHnzwQTVu3Fh9+/ZVrVq1tHXrVm3atMl/J2vz\n5s2VkJCg119/XUuXLpV0OtA98cQT8vl8AYFx4sSJysjIUMuWLXXq1Cn97ne/U5MmTS4Y5iQpKipK\neXl5mj59uo4fP65hw4bpwQcf9IeuSZMm6amnntJNN92knJwcnTx5Ulu2bNEXX3yhsWPHXvLvLyYm\nRiNGjNBzzz2n2rVrq2vXrjp8+LC2bNkS8HHuxaSkpKiiokIffvih2rRpozp16igqKkrm9HXekqRm\nzZqpX79+euKJJzRz5ky1bdtW+/fv1969e686mAI1AcuWABY536K+EydOVHh4eEB7eHi4li5dqt27\nd+vOO+/UpEmTNGXKlHN+9nwLBJ+vz9ltjuMoKytLrVq1Uvfu3fXwww/r3nvv1bRp0/x9nn/+eRUU\nFOill15S69at1aNHD7311lsBs1aXujhxUVGROnbsqNzcXHXq1EkVFRVasWKFateufdnb+qG0tDSt\nW7fOP5vYpk0bjRs3Tg0aNAjo17VrVyUlJWn79u3nDQ9nj9+jRw+9//77WrNmjTp16qROnTpp2rRp\naty4ccDPZGVlyefz6Z577pEkNW7cWElJSQHXz0mn17kbP3682rRpoy5duqi8vFzvvvtutfuVkpKi\nRx99VL169dKPf/xjNW3aVEVFRf73hwwZooULF+q1115TmzZt1K1bN7366qvVzipeyJQpU/SLX/xC\nzz//vFq2bKk+ffrowIED5/3dnO3s9szMTA0bNkyPPvqo4uPj9eKLL/r7nN3vN7/5jR577DE9/fTT\natGihQYNGqTvvvvusmsGaiLHVHcxDADAKgUFBXrzzTf12WefuV0KgCBihg4AAMByBDoAqEFC8Vm7\nAK4/PnIFAACwHDN0AAAAliPQAQAAWI5ABwAAYDkCHQAAgOUIdAAAAJYj0AEAAFju/wC2Q6uNLhAs\nSAAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "As one can see, although we have a very large number of reviews and reviews, most of them do not interview that many movies themselves." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, we will visualize how the number of reviews changes over the years, and how the average ratings equuivalently change." ] }, { "cell_type": "code", "collapsed": false, "input": [ "plt.plot(imdb_df.groupby('year').critic.count().index,imdb_df.groupby('year').critic.count())\n", "plt.xlabel('Year')\n", "plt.ylabel('Number of Reviews')\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nI20AAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "From this plot, as expected, there is a sharp increase in the number of reviews beginning in 2003, the start of our data, but strangely enough, there is some (sparse) data for years previous 2002. Let's investigate those." ] }, { "cell_type": "code", "collapsed": false, "input": [ "imdb_df[imdb_df['year'] < 2003].groupby('year').title.unique()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 9, "text": [ "year\n", "2001 [Winged Migration, Nowhere in Africa, Monsters...\n", "2002 [Phone Booth, 28 Days Later, Bend It Like Beck...\n", "dtype: object" ] } ], "prompt_number": 9 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Considering the earliest movie we tried to get was in 2003, it looks like something went wrong. These movies *are* from 2002 and 2001, so these errors are likely from the original year classification. Because we are only interested in years in [2003,2012], we will just remove these entries from the dataframe." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# let's remove the entries for years < 2003\n", "imdb_df = imdb_df[imdb_df['year'] >= 2003]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "# Finally, let's try plotting the same graph as above\n", "plt.plot(imdb_df.groupby('year').critic.count().index,imdb_df.groupby('year').critic.count())\n", "plt.xlabel('Year')\n", "plt.xticks(range(2002,2013))\n", "plt.ylabel('Number of Reviews')\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "As expected, we now only have our data from 2003 onwards. Interestingly, the peak of user reviews is in 2005, with the number of reviews exponentially falling off until 2011. Thus, it seems that as IMDB became more widespread and popular, *fewer* people actually have been leaving reviews for movies.\n", "\n", "Now that we have an idea of the distribution of the data over the years, let's look at the actual review ratings. On IMDB users have the option of rating movies without actually leaving a review. Here, we compare the overall movie rating to the average rating user critics give as an approximate measure of whether user critics or general users rate movies more harshly." ] }, { "cell_type": "code", "collapsed": false, "input": [ "print \"average movie rating: %0.2f / 10\" % (imdb_df.groupby('title')['overall_score'].unique().mean() * 10)\n", "print \"average user critic rating: %0.2f / 10\" % (imdb_df.groupby('critic')['norm_score'].mean().mean() * 10) " ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "average movie rating: 6.27 / 10\n", "average user critic rating: 6.27 / 10" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n" ] } ], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "From this measure, it appears that the user critics rate the movies *the same* as the average user. Let's try to visualize this a little more explicitly. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "#Your code here\n", "imdb_df.groupby('critic').norm_score.mean().hist(bins=10, edgecolor='w', lw=1)\n", "plt.xlabel(\"Average rating per critic\")\n", "plt.ylabel(\"N\")\n", "histogram_style()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAocAAAGJCAYAAAD49pkPAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xt0VOW9//HP5AK5TJoIZBJIcgA1yEVBThBJKDeJQQWM\n1lYkEgSloYUTQGRFaa2iIhUNiIBa8QIIAirFtpZLgge0BIZVDJeDQvBChHJJIEiDiSGEyfP7w/L8\nHESUIDOBvF9rzVrNfr6z93fvZ1U/7ts4jDFGAAAAgKQAfzcAAACA+oNwCAAAAItwCAAAAItwCAAA\nAItwCAAAAItwCAAAAItwCAAAAMun4XDSpEkKCAjw+rRo0eI7NXFxcQoLC1OfPn20Y8cOr/Hq6mpl\nZ2crOjpaTqdT6enp2r9/v1fN0aNHlZmZqaioKEVFRWno0KEqLy/3qtm7d68GDhwop9Op6OhojR07\nVjU1NRdmxwEAAC4SPj9z2LZtW5WUlNjP9u3b7djUqVM1ffp0zZ49W5s2bZLL5dKNN96oiooKWzNu\n3DgtW7ZMS5Ys0bp163Ts2DENGDBAtbW1tiYjI0Nbt25VXl6eVq1apc2bNyszM9OOezwe9e/fX5WV\nlSooKNDixYu1dOlSPfDAA745CAAAAPWV8aFHH33UXH311Wccq62tNbGxsWbKlCl2WVVVlYmIiDAv\nvfSSMcaYf//736ZRo0Zm0aJFtuZf//qXCQgIMHl5ecYYY3bs2GEcDofZsGGDrSkoKDAOh8N88skn\nxhhjVqxYYQICAsy+fftszcKFC01ISIj56quvfrodBgAAuMj4/Mzh7t27FRcXp8svv1yDBw9WcXGx\nJKm4uFilpaVKS0uztSEhIerZs6c2bNggSSosLFRNTY1XTXx8vNq1aye32y1JcrvdcjqdSk5OtjUp\nKSkKDw+363G73Wrfvr3i4uJsTVpamqqrq1VYWHjhdh4AAKCe82k47Natm+bPn6+8vDy9/PLLKikp\nUUpKir788kuVlJRIkmJiYry+43K57FhJSYkCAwPVtGlTr5qYmBivmujoaK9xh8PxnfWcvp1mzZop\nMDDQ1gAAADREQb7c2E033WT/99VXX63k5GS1bt1a8+fP1/XXX/+933M4HGddrzHmnHupy3cAAAAu\ndX59lU1YWJg6dOigzz77TM2bN5cklZaWetWUlpYqNjZWkhQbGyuPx6MjR46ctebw4cNe48YYHTp0\nyKvm9O2UlZXJ4/HYGgAAgIbIr+Hw+PHj2rlzp5o3b67WrVsrNjZW+fn5XuMFBQVKSUmRJCUlJSk4\nONirZt++fSoqKrI1ycnJqqiosPcgSt/cY1hZWWlrUlJStHPnTq9X4KxevVqNGzdWUlLSBd1nAACA\n+sxhfHh9dcKECbr11luVkJCgQ4cO6YknnlBBQYG2b9+uhIQEPf3005oyZYrmzp2rxMRETZ48WQUF\nBdq1a5fCw8MlSaNGjdK7776refPmqUmTJho/frzKy8tVWFhoLz/fcsst2rdvn+bMmSNjjLKysnT5\n5Zfrr3/9qySptrZW1157raKjozVt2jSVlZVp2LBhuuOOO/Tcc8/56nAAAADUOz6953D//v0aPHiw\nysrKFB0dreTkZG3cuFEJCQmSpJycHFVVVWn06NE6evSounXrpvz8fBsMJWnGjBkKCgrSoEGDVFVV\npdTUVC1cuNDrvsRFixYpOztb/fr1kySlp6dr9uzZdjwgIEDLly/XqFGj1L17d4WGhmrIkCF65pln\nfHQkAAAA6iefnjkEAABA/cZvKwMAAMAiHAIAAMAiHAIAAMAiHAIAAMAiHAIAAMAiHAIAAMAiHAIA\nAMAiHAIAAMAiHAIAAMAiHAIAAMAiHAIAAMAiHAIAAMAiHAIAAMAiHAIAAMAiHAIAAMAiHAIAAMAi\nHAIAAMAiHAIAAMAiHAIAAEiqqfX4u4V6wWGMMf5uAgAAoD6In/uQv1s4b/uGP3Ve3+fMIQAAACzC\nIQAAACzCIQAAACzCIQAAACzCIQAAACzCIQAAACzCIQAAACzCIQAAACzCIQAAACzCIQAAACzCIQAA\nACzCIQAAACzCIQAAACzCIQAAACzCIQAAACzCIQAAACzCIQAAACzCIQAAACzCIQAAACzCIQAAACzC\nIQAAACzCIQAAACzCIQAAACzCIQAAACzCIQAAACzCIQAAACzCIQAAACzCIQAAACzCIQAAACzCIQAA\nACzCIQAAACzCIQAAACzCIQAAACzCIQAAACzCIQAAACzCIQAAACy/hcM//vGPCggIUHZ2ttfySZMm\nKS4uTmFhYerTp4927NjhNV5dXa3s7GxFR0fL6XQqPT1d+/fv96o5evSoMjMzFRUVpaioKA0dOlTl\n5eVeNXv37tXAgQPldDoVHR2tsWPHqqam5sLsLAAAwEXCL+Fw48aNevnll9WxY0c5HA67fOrUqZo+\nfbpmz56tTZs2yeVy6cYbb1RFRYWtGTdunJYtW6YlS5Zo3bp1OnbsmAYMGKDa2lpbk5GRoa1btyov\nL0+rVq3S5s2blZmZacc9Ho/69++vyspKFRQUaPHixVq6dKkeeOAB3xwAAACAesphjDG+3GB5ebmS\nkpL06quvatKkSbrmmms0c+ZMGWPUokULjRkzRhMnTpQkHT9+XC6XS7m5ucrKylJ5eblcLpfmzZun\nwYMHS5L27dunli1bauXKlUpLS9POnTvVoUMHrV+/XsnJyZKk9evXq0ePHtq1a5cSExO1cuVKDRgw\nQHv37lVcXJwk6Y033tCIESN0+PBhOZ1OXx4SAABQT8TPfcjfLZy3fcOfOq/v+/zMYVZWln71q1+p\nV69e+nYuLS4uVmlpqdLS0uyykJAQ9ezZUxs2bJAkFRYWqqamxqsmPj5e7dq1k9vtliS53W45nU4b\nDCUpJSVF4eHhdj1ut1vt27e3wVCS0tLSVF1drcLCwguz4wAAABeBIF9u7OWXX9bu3bu1aNEiSfK6\npFxSUiJJiomJ8fqOy+XSgQMHbE1gYKCaNm3qVRMTE2O/X1JSoujoaK9xh8Mhl8vlVXP6dpo1a6bA\nwEBbAwAA0BD5LBzu2rVLv//971VQUKDAwEBJkjFGP+aq9rdD5JnU5cq4j6+mAwAAXBR8Fg7dbrfK\nysrUoUMHu8zj8WjdunV66aWX9NFHH0mSSktLFR8fb2tKS0sVGxsrSYqNjZXH49GRI0e8zh6Wlpaq\nV69etubw4cNe2zbG6NChQ17rOXWJ+ZSysjJ5PB5bAwAAGp7zvV/vUuCzcHj77bera9eu9m9jjIYP\nH642bdrod7/7nRITExUbG6v8/HwlJSVJ+uaBlIKCAuXm5kqSkpKSFBwcrPz8fK8HUoqKipSSkiJJ\nSk5OVkVFhdxut73v0O12q7Ky0takpKToySef1P79++19h6tXr1bjxo3ttgEAQMPDAyk+DIeRkZGK\njIz0WhYWFqbLLrtM7du3l/TNa2qmTJmitm3bKjExUZMnT1ZERIQyMjLsOu677z7l5OTI5XKpSZMm\nGj9+vDp16qTU1FRJUrt27XTTTTdp5MiRmjNnjowxGjlypAYOHKjExERJ3zx80qFDBw0dOlTTpk1T\nWVmZcnJylJWVxZPKAACgQfPpAymnczgcXvcT5uTkqKqqSqNHj9bRo0fVrVs35efnKzw83NbMmDFD\nQUFBGjRokKqqqpSamqqFCxd6rWfRokXKzs5Wv379JEnp6emaPXu2HQ8ICNDy5cs1atQode/eXaGh\noRoyZIieeeYZH+w1AABA/eXz9xwCAADUV1xW5reVAQAA8C2EQwAAAFiEQwAAAFiEQwAAAFiEQwAA\nAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiE\nQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAA\nAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiE\nQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAA\nAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFiE\nQwAAAFiEQwAAAFiEQwAAAFiEQwAAAFg+DYfPP/+8OnXqpMjISEVGRiolJUUrVqzwqpk0aZLi4uIU\nFhamPn36aMeOHV7j1dXVys7OVnR0tJxOp9LT07V//36vmqNHjyozM1NRUVGKiorS0KFDVV5e7lWz\nd+9eDRw4UE6nU9HR0Ro7dqxqamouzI4DAABcJHwaDhMSEvT0009ry5YtKiws1A033KDbbrtN27Zt\nkyRNnTpV06dP1+zZs7Vp0ya5XC7deOONqqiosOsYN26cli1bpiVLlmjdunU6duyYBgwYoNraWluT\nkZGhrVu3Ki8vT6tWrdLmzZuVmZlpxz0ej/r376/KykoVFBRo8eLFWrp0qR544AHfHQwAAIB6yGGM\nMf5soGnTpnrqqac0YsQItWjRQmPGjNHEiRMlScePH5fL5VJubq6ysrJUXl4ul8ulefPmafDgwZKk\nffv2qWXLllq5cqXS0tK0c+dOdejQQevXr1dycrIkaf369erRo4d27dqlxMRErVy5UgMGDNDevXsV\nFxcnSXrjjTc0YsQIHT58WE6n0z8HAwAA+FX83If83cJ52zf8qfP6vt/uOfR4PFqyZImOHz+unj17\nqri4WKWlpUpLS7M1ISEh6tmzpzZs2CBJKiwsVE1NjVdNfHy82rVrJ7fbLUlyu91yOp02GEpSSkqK\nwsPD7Xrcbrfat29vg6EkpaWlqbq6WoWFhRd0vwEAAOqzIF9vcPv27UpOTlZ1dbVCQ0P11ltv6aqr\nrrLBLSYmxqve5XLpwIEDkqSSkhIFBgaqadOmXjUxMTEqKSmxNdHR0V7jDodDLpfLq+b07TRr1kyB\ngYG2BgAAoCHyeThs27at/u///k/l5eV6++23ddddd2nt2rVn/Y7D4TjreF2ujPv5ajoAAEC95PNw\nGBwcrMsvv1yS1LlzZ23atEnPP/+8HnnkEUlSaWmp4uPjbX1paaliY2MlSbGxsfJ4PDpy5IjX2cPS\n0lL16tXL1hw+fNhrm8YYHTp0yGs9p85UnlJWViaPx2NrAABAw3O+9+tdCnweDk/n8XhUW1ur1q1b\nKzY2Vvn5+UpKSpL0zQMpBQUFys3NlSQlJSUpODhY+fn5Xg+kFBUVKSUlRZKUnJysiooKud1ue9+h\n2+1WZWWlrUlJSdGTTz6p/fv32/sOV69ercaNG9ttAwCAhocHUnwcDh966CENGDBA8fHx+uqrr7Ro\n0SJ98MEHWrVqlaRvXlMzZcoUtW3bVomJiZo8ebIiIiKUkZEhSYqMjNR9992nnJwcuVwuNWnSROPH\nj1enTp2UmpoqSWrXrp1uuukmjRw5UnPmzJExRiNHjtTAgQOVmJgo6ZuHTzp06KChQ4dq2rRpKisr\nU05OjrKyshrck8rVnpOq9lwa73f8WaNQf7cAAMBFz6fhsLS0VEOGDFFJSYkiIyPVqVMnrVq1Sjfe\neKMkKScnR1VVVRo9erSOHj2qbt26KT8/X+Hh4XYdM2bMUFBQkAYNGqSqqiqlpqZq4cKFXvclLlq0\nSNnZ2erXr58kKT09XbNnz7bjAQEBWr58uUaNGqXu3bsrNDRUQ4YM0TPPPOOjI1F/HD9Zoxc/+kBF\nR0v93cp5uSuxi25q2cHfbQAAcNHz+3sO4V/l1VUasWaB3CW7/d3KeXn4ulv0m6t7+rsNAMBFjsvK\n/LYyAAAAvoVwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItw\nCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAA\nAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAACvobINffvnlj1pJkyZNfpJmAAAA4F9nDYfN\n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\nAAAAFuEQAAAAFuEQAAAAFuEQAAAAFuEQAAAAFuEQAAAAFuEQAAAAFuEQABqImlqPv1sAcBEI8ncD\nAADfCA4IVPzch/zdxnnbN/wpf7cAXNI4cwgAAACLcAgAAACLcAgAAACLcAgAAACLcAgAAACLcAgA\nAACLcAgAAACLcAgAAACLcAgAAACLcAgAAACLcAgAAACLcAgAAACLcAgAAACLcAgAAACLcAgAAACL\ncAgAAACLcAgAAACLcAgAAACLcAgAAACLcAgAAACLcAgAAACLcAgAAACLcAgAP6Cm1uPvFgDAZ4L8\n3QAAbzW1HgUHBPq7jfN2qeyHJAUHBCp+7kP+buO87Rv+lL9bAHARIBwC9QxBBADgT1xWBgAAgEU4\nBHBBcJ8eAFycfHpZ+R//+Idyc3O1efNmHThwQHPnztU999zjVTNp0iS9/PLLOnr0qK6//no9//zz\nat++vR2vrq7WhAkTtGTJElVVValv37564YUXFBcXZ2uOHj2qMWPG6N1335Uk3XrrrZo1a5YiIyNt\nzd69ezV69GitXbtWoaGhysjIUG5uroKDgy/wUQAahkvl8rjEJXIADYtPzxxWVlaqY8eOeu655xQa\nGiqHw+E1PnXqVE2fPl2zZ8/Wpk2b5HK5dOONN6qiosLWjBs3TsuWLdOSJUu0bt06HTt2TAMGDFBt\nba2tycjI0NatW5WXl6dVq1Zp8+bNyszMtOMej0f9+/dXZWWlCgoKtHjxYi1dulQPPPDAhT8IAAAA\n9ZhPzxzefPPNuvnmmyVJw4YN8xozxmjGjBmaOHGibr/9dknS/Pnz5XK5tGjRImVlZam8vFyvvfaa\n5s2bp759+0qSFixYoJYtW+q9995TWlqadu7cqby8PK1fv17XX3+9JOmll15Sjx499OmnnyoxMVH5\n+fnasWOH9u7da884Pv300xoxYoSmTJkip9PpoyMCAABQv9Sbew6Li4tVWlqqtLQ0uywkJEQ9e/bU\nhg0bJEmFhYWqqanxqomPj1e7du3kdrslSW63W06nU8nJybYmJSVF4eHhdj1ut1vt27f3uhSdlpam\n6upqFRYWXtD9xIXDPW4AAJy/evMqm5KSEklSTEyM13KXy6UDBw7YmsDAQDVt2tSrJiYmxn6/pKRE\n0dHRXuMOh0Mul8ur5vTtNGvWTIGBgbYGF59L5R437m8DAPhTvTlzeDan35t4OmPMOa+zLt8BAAC4\n1NWbM4exsbGSpNLSUsXHx9vlpaWldiw2NlYej0dHjhzxOntYWlqqXr162ZrDhw97rdsYo0OHDnmt\n59Ql5lPKysrk8XhsTUMR2ThUb9+c5e82fjKXylk39qP+uVT2hf2oXy6V/ZAunX25VPbjfNSbcNi6\ndWvFxsYqPz9fSUlJkqTjx4+roKBAubm5kqSkpCQFBwcrPz9fgwcPliTt27dPRUVFSklJkSQlJyer\noqJCbrfb3nfodrtVWVlpa1JSUvTkk09q//799r7D1atXq3HjxnbbDUV5dZVGrFkgd8luf7dyXh6+\n7hb95uqel8xlZfajfrlU9oX9qF8ulf2QLp19uZT243z4NBxWVlbq008/lSTV1tZqz5492rp1q5o2\nbaqEhASNGzdOU6ZMUdu2bZWYmKjJkycrIiJCGRkZkqTIyEjdd999ysnJkcvlUpMmTTR+/Hh16tRJ\nqampkqR27drppptu0siRIzVnzhwZYzRy5EgNHDhQiYmJkr55+KRDhw4aOnSopk2bprKyMuXk5Cgr\nK4snlQEAQIPm03C4adMm3XDDDZK+uY/w0Ucf1aOPPqphw4bptddeU05OjqqqqjR69GgdPXpU3bp1\nU35+vsLDw+06ZsyYoaCgIA0aNEhVVVVKTU3VwoULve5LXLRokbKzs9WvXz9JUnp6umbPnm3HAwIC\ntHz5co0aNUrdu3dXaGiohgwZomeeecZHRwIAAKB+8mk47N27t9fLqs/kVGD8Po0aNdLMmTM1c+bM\n762JiorSggULzrqdhIQE+wsqAAAA+MZF8bQyAAAAfINwCAAAAItwCAAAAItwCAAAAItwCAAAAItw\nCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAA\nAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItw\nCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAA\nAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItw\nCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAAAItwCAAA\n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\nMI8//rj55JNPTGFhoenXr59p2bKl+frrr/21Gw1SRUWF2bJli9myZYsJCwszjz/+uNmyZctPnlka\nfDg05ptHvVu1amUaN25sunTpYtatW2fHhg0bZlq3bu1Vv337dtOzZ08TEhJiWrRoYR5//HFft4xv\nOZf5GzZsmAkICDAOh8Prc/ocwzfO9f973zZ37lzec+hn5zp/Bw8eNL/61a9MRESEcblcZsiQIfyH\nmZ+c69y9/fbbJikpyTidTuNyuUx6errZuXOnr9tu8NauXWv/vfXtf5cNHz7cGPPTZRZ+Pg8AAABW\ng77nEAAAAN4IhwAAALAIhwAAALAIhwAAALAIhwAAALAIhwAAALAIhwAAALAIhwDgY7179+anG/9j\n3rx5ioiI+MG61q1ba/r06T7oCAAvwQZwzjZv3qwuXbooJSVFBQUF/m6n3po3b56ys7P11VdfeS3/\n97//reDgYIWHh/ups/rj+PHjqqioULNmzSRJkyZN0p///Gdt377dq+7IkSMKCwtTaGioP9oEGhTO\nHAI4Z6+88oquu+46bdy4UUVFRRd8eydPnrzg2zgXJ06cOK/vR0VFXdTB8Keaj5MnTyokJMQGw7Np\n2rQpwRDwEcIhgHNSVVWlxYsX67HHHtMNN9ygV1991Y5lZGTol7/8pVd9bW2tEhISNGPGDEmSMUZP\nP/20rrzySoWFhaljx4564403bP0XX3yhgIAALVmyRDfccIPCwsI0Z84cffnllxo8eLASEhIUFham\nq6++WvPmzfPaVmVlpYYOHaqIiAi1aNFCubm5GjBggIYPH25rTpw4oQcffFAJCQkKDw9X165dlZ+f\nf9Z97t27t0aNGqUJEybI5XKpR48ekqTp06erU6dOcjqdio+P169//WuVl5dLkt5//33de++9qqys\nVEBAgAICAvT444/b9WVnZ9v1t2rVSk8++aRGjhypyMhIJSQkKDc316uHTz75RL169VJoaKjat2+v\nVatWyel0av78+d/b97BhwzRw4EBNnjxZsbGxioiI0L333qvjx4971dVlPs7kxIkT+t3vfqdWrVop\nJCREV1xxhWbNmmWPR0BAgFauXKmuXbuqcePGysvL87qsPG/ePD3++OP6+OOP7TF7/fXX7TGaNm2a\n3VZ5ebl++9vfqkWLFvaYvPXWW2eZRQA/2k/9o9AALm2vv/66admypTHGmLffftu4XC5z8uRJY4wx\n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\nRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": {}, "source": [ "From this histogram, it appears we have an almost bi-modal distribution where the highest frequency averages are at the polar ends. Considering that a user would be more likely to write a review for a movie if s/he absolutely hated or loved it, this isn't that surprising because then they too would rate it at the extremes. \n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lastly, before we begin out statistical analysis, we must only include reviews that are written in the time *before* the movie was considered for an oscar, else our data would be unnecesarily skewed because after an award does (or does not) win an award, critics may be more inclined to give it a certain review type. In this way, we try to eliminate this particular type of bias here." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# first let's convert the date column to an actual date object\n", "imdb_df['date'] = pd.to_datetime(imdb_df['date'])\n", "def less_than_date(row):\n", " return row['date'] < pd.to_datetime('January 1 ' + str(row['year'] + 1))\n", "imdb_df = imdb_df[imdb_df.apply(less_than_date,axis=1)]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "print \"Number of reviews: %i\" % len(imdb_df)\n", "print \"Number of critics: %i\" % imdb_df.critic.unique().size\n", "print \"Number of movies: %i\" % imdb_df.title.unique().size" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Number of reviews: 242533\n", "Number of critics: 130504" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Number of movies: 1852\n" ] } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Rotten Tomatoes Reviews & Ratings

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we repeat the process for the reviews scraped from Rotten Tomatoes. In order to understand what the distribution of movies and movie reviewers looks like, we calculated the number of reviews, critics, and movies and then plot the number of reviews per critic." ] }, { "cell_type": "code", "collapsed": false, "input": [ "print \"Number of reviews: %i\" % len(rotten_df)\n", "print \"Number of critics: %i\" % rotten_df.critic.unique().size\n", "print \"Number of movies: %i\" % rotten_df.title.unique().size" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Number of reviews: 60306\n", "Number of critics: 876\n", "Number of movies: 1812\n" ] } ], "prompt_number": 73 }, { "cell_type": "code", "collapsed": false, "input": [ "rotten_df.groupby('critic').title.count().hist(log=True, bins=range(20), edgecolor='white')\n", "plt.xlabel(\"Number of reviews per critic\")\n", "plt.ylabel(\"N\")\n", "histogram_style()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\njig8PFwxMTFn3PeKK65Q1apVL8q6QEVH0AGWSU9PV4MGDfTYY4+ddp9THbH76quv5PF4tHHjxoB9\nli9frtatW6tKlSq68cYbtWfPHq1cuVLJycmKjo5WZmamvv/+e//tOI4jY4xycnJUp04dRUdHa/Dg\nwSopKQmYYerUqWrUqJGqVKmi5ORkLVmy5KRZli5dqoyMDFWpUkXz588/5X35/vvvlZWVpZo1a6pK\nlSrq0qWLNm/e7L8PtWrVkiRlZGTI4/Fo9erVp7ydBg0aaNKkSRo8eLCuvPJKDRgwQJK0du1ade7c\nWVWrVlV8fLx++9vf6qeffpIkzZ8/X3Xq1JHP5wu4rbvvvlu33367pFMfXXrzzTfVpk0bRUVF6Zpr\nrtH48eP9QTR37lw1bdrUv+/7778vj8ejKVOm+Lf1799f9913nyTphx9+0IABAxQbG6uoqCglJiaW\nexQyOztbLVq00PPPP6+rr75aVapUUa9evfTdd98F7Jebm6tmzZopKipKTZo00YwZMwJi3ePxaPbs\n2brjjjtUrVo1Pfroo6dd86mnntK1116ryMhIJSQkaNy4cZJO/+98/OMzLy9PgwcPVnFxsTwejzwe\nj/785z9LOvqS64MPPuhfp7S0VOPGjVODBg0UGRmpxMREPfvss6edC7isXKLvngVwCWRlZZnbbrvN\nvPPOOyYiIsJs377dGPO/Lwb/7rvvTvmzMcYUFhYax3HMhg0bAvZp3769yc/PN5999plp3ry5SU1N\nNenp6WbdunXmX//6l2nYsKEZMWJEwAzR0dGmb9++5osvvjDvvvuuqVevnnnooYf8+4wbN85cd911\n5t133zVfffWV+etf/2qqVq1q3n777YBZGjRoYF555RXz1VdfnfaLyjMzM03Tpk3NmjVrzOeff24y\nMzNNQkKCOXTokCktLTWbN282juOY1157zXi9XlNaWnrK26lfv76pXr26mTZtmtm+fbvZtm2b+eyz\nz0y1atXM9OnTzbZt28wnn3xiOnToYHr37m2MMebAgQMmMjLSLF++3H87P/30k6latap5+eWXjTHG\n5ObmmmrVqvmvX758ualevbpZuHCh2bFjh1m1apVp0qSJGT16tDHGmC1bthjHcYzX6zXGGPPoo4+a\nq666ynTv3t1/GwkJCWbJkiXGGGMeeOAB07JlS7N+/Xrz9ddfm7y8PP/apzJx4kRTrVo1k56ebgoK\nCsw///lPk5SUZDIzM/37zJ8/38TFxfn/7t98801Tp04dM2vWLP8+juOYmJgY88ILL5jCwkJTWFh4\nyvXGjh1rrrjiCpObm2t27Nhh1q1bZ+bOnWuMOf2/8/GPz9LSUjNz5kxTtWpV4/V6jdfrNcXFxcYY\nY9LS0syDDz7oX+uuu+4y8fHx5tVXXzWFhYVmzZo15qWXXjrt3wVwOSHoAItkZWWZnj17GmOMSU9P\nN3fddZcx5sKCbsWKFf59Zs2aZRzHMZ9++ql/W3Z2tmnevHnADFdeeaX/f7rGGLN48WJTuXJl8/PP\nP5uDBw+aqKgok5+fHzD7iBEjzC233BIwy/Tp08u9v19++aVxHMesWbPGv+2HH34wNWrUMM8//7wx\nxph9+/YZx3HMhx9+WO5t1a9fPyBqjDFmwIABZsiQIQHbPv30U+M4jtm3b58xxpg77rjDDBgwwH/9\nSy+9ZGrUqGF++eUXY8zJQdepUyeTk5MTcJuvvfZawD5xcXFm6dKlxhhjOnbsaKZMmWKqVatmysrK\nzNatW43jOGbPnj3GmKNBO3jw4HLv2/EmTpxowsLCzK5du/zb8vPzjeM4Ztu2bcaYo8G4ePHigN97\n+umnTbNmzfw/O44TEOmn8tNPP5nIyEgzb968U15/un/nEx+fJ/4dHnN80B17LLz77rvlzgRcriq5\nfYQQwLkx//+y2JQpU9ShQwf94Q9/uKDbS05O9v/52PuaWrRoEbDt22+/Pel3qlSp4v/5hhtuUGlp\nqbZv365Dhw6ppKRE3bp1C/jwxOHDh9WwYcOA22nbtm25s23ZskUej0cdOnTwb6tevbpatGjhf9n1\nbDmOc9J6GzZs0Pbt27Vs2TL/NmOMHMfR9u3bVbt2bfXv319ZWVkqKSlRZGSklixZot69eysiIuKU\n62zYsEHr16/X5MmT/dt8Pp9KSkrk9XoVGxurzp07a9WqVerZs6fWr1+vV155RXPmzNG6deu0adMm\nJSYmqm7dupKk4cOHq3fv3tqwYYO6dOminj176sYbbyz3vtarV0/x8fH+n1NSUuTxeLRlyxZVr15d\nu3fv1tChQzVs2DD/Pqd6D+OZ/n02b96sX375RTfddFO5+53pds7Gp59+Ko/Ho/T09Au+LaAiIugA\nS7Vr10533nmnxowZoz/96U8B13k8R98ea457T9Tp3tQeHh7u//OxAAsLCwvYduJ7yEw5H4w4tu9b\nb72lq6+++rRrSTrvN7wbY/z38VycuJ4xRvfdd58efvjhk/Y9FlS33HKLKlWqpNdff10ZGRn64IMP\ntGLFinKgjyL5AAAFAUlEQVRny87OVp8+fU667tiHJ9LS0jR9+nR99NFHatSokWJiYpSWlqZVq1Zp\n8+bNAdHSvXt37dy5U//4xz/0wQcf6NZbb1WfPn20YMGCc77/0v/+febNm6fU1NRy971YH0jggw3A\npUfQARZ7/PHH1axZMy1fvjxg+1VXXSVJ2rt3r/9DAwUFBRdt3c8//1w///yz/yjdxx9/rIiICCUm\nJurIkSOqXLmyvvrqK6WlpV3QOk2bNpXP59PatWvVqVMnSdKPP/6oTZs2aciQIRd6N9S6dWtt2rRJ\n11xzzWn3qVy5svr06aMlS5Zo3759iouLK/d+tW7dWlu2bCn3NtPS0jR8+HAtWbLEH29paWlavHix\n/vOf/wQc3ZOkWrVqqX///urfv7+6d++uu+++W/PmzTspkI/Zs2ePdu/e7T9Kt27dOvl8PjVt2lSx\nsbGqW7eutm3bpv79+592xrPRtGlTVa5cWe+//74SExPP+3YiIiJUVlZW7j4tW7aUz+fTypUr1a1b\nt/NeC6ioCDrAYomJiRo6dKhmzJgRsL1Ro0ZKSEhQdna2Jk+erMLCwpPOXXchjhw5osGDB2vChAna\ns2ePxo4dq6FDhyoqKkqSNHr0aI0ePVrGGHXq1EkHDx7Uxx9/rLCwMP+nN8/Gtddeq9tvv13333+/\n5s+frxo1aujRRx9VjRo1dPfdd1/w/fjjH/+oG264QcOHD9fQoUMVHR2tf//733rrrbc0d+5c/379\n+/dXRkaGCgsL1a9fv3Jvc8KECbrttttUv3599enTR5UqVdKmTZu0fv16/ydZmzRpotjYWC1evFhL\nly6VdDTo7r33Xvl8voBgnDBhgtq0aaNmzZrpyJEjevXVV5WYmHjamJOkqKgoZWVlafr06fr55581\nbNgw3Xbbbf7omjRpkh588EFdccUV6tGjhw4fPqyNGzdq7969Gjt27Fn//UVHR2vEiBF65JFHVLly\nZXXq1EnfffedNm7cGPBy7pk0aNBAJSUlev/999WyZUtVrVpVUVFRMkff5y1Jaty4sfr27at7771X\nM2fOVKtWrbR7927t3LnzgsMUqAg4bQlgkVOd1HfChAkKDw8P2B4eHq6lS5dqx44duv766zVp0iQ9\n8cQTJ/3uqU4QfKp9jt/mOI7S0tKUlJSk9PR03XHHHbr55ps1depU/z6PPfaYsrOz9eSTT6p58+bq\n2rWrXnvttYCjVmd7cuLc3FylpKQoMzNT7du3V0lJiZYvX67KlSuf822dqEWLFlq9erX/aGLLli01\nbtw41alTJ2C/Tp06KT4+Xlu2bDllPBy/fteuXfX2229r1apVat++vdq3b6+pU6eqfv36Ab+TlpYm\nn8+nzp07S5Lq16+v+Pj4gPfPSUfPc/foo4+qZcuW6tixo4qLi/Xmm2+We78aNGigfv36qWfPnrrp\nppvUqFEj5ebm+q8fMmSIFixYoJdeekktW7bUjTfeqOeff77co4qn88QTT+iPf/yjHnvsMTVr1ky9\ne/fWnj17Tvl3c7zjt6empmrYsGHq16+fYmJiNG3aNP8+x+/34osv6u6779ZDDz2kpk2batCgQfrx\nxx/PeWagInJMeW+GAQBYJTs7W6+88oo+//xzt0cBEEQcoQMAALAcQQcAFUgoftcugEuPl1wBAAAs\nxxE6AAAAyxF0AAAAliPoAAAALEfQAQAAWI6gAwAAsBxBBwAAYLn/A/B/vuLS5b9mAAAAAElFTkSu\nQmCC\n", "text": [ "" ] } ], "prompt_number": 74 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The histogram demonstrates that most critics write between 0 and 5 reviews, and that in general critics do not write more than 20 reviews. In general there is a negative trend: more reviewers are likely to write few reviews, and less reviewers are likely to write many reviews.\n", "\n", "As we did before, next we will visualize how the number of reviews changes over the years, and how the average ratings equivalently change." ] }, { "cell_type": "code", "collapsed": false, "input": [ "plt.plot(rotten_df.groupby('year').critic.count().index,rotten_df.groupby('year').critic.count())\n", "plt.xlabel('Year')\n", "plt.ylabel('Number of Reviews')\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 76 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Movies that came out in 2003 and 2006 appear to have received the most reviews, whereas movies that came out in 2009 and 2010 received the least reviews. In general there are never less than 5000 and never more than 7000 reviews for all movies of a specific year. \n", "\n", "Now let's look at the actual review ratings. Here, we compare the overall movie rating to the average rating user critics give as an approximate measure of whether user critics or general users rate movies more harshly. Note that on Rotten Tomatoes critics can rate movies without actually leaving a review. Later, when analyzing the reviews themselves, we delete the rows that don't have reviews from our data frame." ] }, { "cell_type": "code", "collapsed": false, "input": [ "print \"average movie rating: %0.2f / 10\" % (rotten_df.groupby('title')['overall_score'].unique().mean() * 10)\n", "print \"average user critic rating: %0.2f / 10\" % (rotten_df.groupby('critic')['norm_score'].mean().mean() * 10) " ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "average movie rating: 5.16 / 10\n", "average user critic rating: 5.06 / 10\n" ] } ], "prompt_number": 77 }, { "cell_type": "markdown", "metadata": {}, "source": [ "It seems that the average rating a movie receives is pretty close to the average score that the critics in the dataframe give. This implies that the score a movie receives by critics is likely to be similar to the score it will receive overall, which means the critics ratings that are included in the dataframe are a good measure for the overall score from this website. \n", "\n", "Now we will look at the average rating that critics give in a histogram" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#Your code here\n", "rotten_df.groupby('critic').norm_score.mean().hist(bins=10, edgecolor='w', lw=1)\n", "plt.xlabel(\"Average rating per critic\")\n", "plt.ylabel(\"N\")\n", "histogram_style()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nmjdvnmrWrCmHw+F2+ezZs5WcnKyXX35Z27dvl9Pp1L333quCggLXmvHjx2v16tVauXKltmzZolOn\nTql///4qLy+/xocOAABgD7/LXXjbbbdd8QYcDofKysqu6s769eunfv36SZLi4+PdLjPGaO7cuZoy\nZYoGDRokSUpJSZHT6dSKFSuUmJio/Px8LVq0SEuWLFGvXr0kScuWLVN0dLQ2btyoPn36XNUcAAAA\ntrls1KWlpV30uMPh0Mcff6y5c+fK39//hgySlZWlvLw8tzALDAxU165dlZGRocTERO3cuVOlpaVu\na6KiotSyZUtlZGQQdQAA4KZ12ajr3r37Bcd27dqlSZMmacuWLUpMTNQLL7xwQwbJzc2VJIWHh7sd\ndzqdOnbsmGuNr6+vwsLC3NaEh4crLy/vhswBAABQHV026n7q8OHDevbZZ/Xee+9p8ODBOnjwoBo3\nblyZs7mc/9y7q/Vmz9E3eBIA+EFOwixvjwDclPizd2lXjLpvv/1WL774ol5//XXdfffd2rp1qzp2\n7HjDB4mIiJAk5eXlKSoqynU8Ly/PdVlERITKysp08uRJt7N1ubm56tq16wW3mZi2XOuy99/wWauC\nf454XnUCg709BnDTilo82dsjVBr+0kRVxp+9S7vsq19nzpypxo0ba9OmTfrzn/+stLS0Sgk6SYqJ\niVFERIRSU1Ndx4qLi5Wenq64uDhJUvv27eXv7++2JicnR5mZma41AAAAN6PLnql74YUXFBgYqKio\nKL366qt67bXXZIxxW+NwOPThhx9e1Z0VFhbq0KFDkqTy8nJlZ2drz549CgsLU4MGDTR+/Hj9/ve/\nV4sWLdS0aVPNnDlToaGhGjlypCSpVq1aeuSRRzRp0iQ5nU7VqVNHEyZMUNu2bdW7d++KPH4AAAAr\nXDbqfvWrX7mez3Z+zP3oWp7vtn37dvXs2dN1valTp2rq1KmKj4/XokWLNGnSJBUVFenJJ5/U999/\nr06dOik1NVXBwf/+NePcuXPl5+enYcOGqaioSL1799by5csr/Lw7AAAAGzjMpWrNAjynDkBl4Xk9\ngHfwZ+/S+OxXAAAACxB1AAAAFiDqAAAALEDUAQAAWICoAwAAsABRBwAAYAGiDgAAwAJEHQAAgAWI\nOgAAAAsQdQAAABYg6gAAACxA1AEAAFiAqAMAALAAUQcAAGABog4AAMACRB0AAIAFiDoAAAALEHUA\n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\nVseOHb09Cq5ReXm5SkpKtGzZMt1zzz265557tGzZMv3jH//Qjh07vD0eruDw4cN68MEHlZCQoB07\ndmjTpk0KDQ3V0KFDifIqrqLNUi2j7lo+KuxHERERF9Ttj9ePiIionEFxgYrs3Y/S09N133336cUX\nX9Tjj9v5mb5VXUX275NPPtH06dPl7+8vf39/PfrooyosLJS/v78WLlzoibGhiu1dvXr15OfnpyZN\nmriONWnSRL6+vvrmm28qdV64q8j+vfHGG2rQoIFmz56ttm3bqkuXLlq+fLk+/fRTbd261RNjo4Iq\n2izVMuoCAgLUvn17paamuh3/29/+pri4uItep3PnztqyZYtKSkrc1tevX1/R0dGVOi/+rSJ7J/3w\ncvD77rtP06dP17hx4yp7TFxCRfZv//792rt3r+trxowZqlmzpvbu3ashQ4Z4YmyoYnt3zz336Ny5\nczp8+LDr2OHDh1VWVsZ/Nz2sIvtnjJGPj/tf8z9+X15eXjmD4oaocLNc98s4vGTVqlUmICDALFy4\n0Bw8eNCMGzfOhIaGul7aPXnyZNOrVy/X+vz8fBMREWGGDx9u9u/fbz744ANzyy23mOTkZG89hJvW\nte7dJ598YoKCgsykSZNMbm6uOX78uDl+/Lj5n//5H289hJvate7f+RYvXsyrX73kWveuvLzctG/f\n3nTr1s3s3r3b7Nq1y3Tt2tV07tzZWw/hpnat+7dlyxbj4+NjZsyYYb788kuzc+dO07dvXxMdHW3O\nnDnjrYdxUyooKDC7d+82u3fvNkFBQWbGjBlm9+7dN7xZqm3UGfPDS34bNmxoatSoYTp06GC2bNni\nuiw+Pt7ExMS4rd+3b5/p2rWrCQwMNJGRkWbGjBmeHhn/71r2Lj4+3vj4+BiHw+H2df7+wnOu9c/e\nTy1evJj3qfOia92748ePm1/+8pcmNDTUOJ1OM3r0aP6Hyouudf/ee+890759exMSEmKcTqcZOHCg\n+fzzzz099k3vk08+cf3d9dO/zxISEowxN65Z+JgwAAAAC1TL59QBAADAHVEHAABgAaIOAADAAkQd\nAACABYg6AAAACxB1AAAAFiDqAAAALEDUAcBV6t69Ox9T9/+WLFmi0NDQK66LiYlRcnKyByYCwJsP\nAzeRXbt2qUOHDoqLi1N6erq3x6mylixZorFjx+r06dNux//3f/9X/v7+Cg4O9tJkVUdxcbEKCgp0\n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\n", "text": [ "" ] } ], "prompt_number": 79 }, { "cell_type": "markdown", "metadata": {}, "source": [ "From this histogram, we see that the highest frequency averages are at the polar ends, as it was for the IMDB data set: most critics gave either a 0 or a 1. The third most frequent score is right in the middle at 0.5. Users are indeed likely to write a review if they love or hate the movie. On the other hand, it seems that if they neither hate it or love it, they will give it a 50% rather than thinking too hard if it's on the better or worse end. \n", "\n", "\n", "Next we clear out reviews for a movie that occurred after the oscar awards were given, just as we did with the IMDB reviews. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "#def less_than_date(row):\n", "# return row['date'] < pd.to_datetime('January 1 ' + str(row['year'] + 1))\n", "\n", "rotten_df['date'] = pd.to_datetime(rotten_df['date'])\n", "rotten_df = rotten_df[rotten_df.apply(less_than_date,axis=1)]\n", "rotten_df.head()" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
criticdateidnorm_scoreoverall_scorequotesourcetitleyear
6 Bill Muller2003-12-18 00:00:00 167260 1 0.94 Not only has Jackson boldly and faithfully bro... Arizona Republic The Lord of the Rings: The Return of the King 2003
7 Scott Foundas2003-12-18 00:00:00 167260 1 0.94 Both the longest film in the series and the mo... L.A. Weekly The Lord of the Rings: The Return of the King 2003
8 Peter Howell2003-12-17 00:00:00 167260 1 0.94 Completes the picture, magnificently so, and a... Toronto Star The Lord of the Rings: The Return of the King 2003
9 Roger Moore2003-12-17 00:00:00 167260 1 0.94 The thrilling conclusion to what has become th... Orlando Sentinel The Lord of the Rings: The Return of the King 2003
10 Liam Lacey2003-12-17 00:00:00 167260 1 0.94 A movie for our time, perhaps for all time, mo... Globe and Mail The Lord of the Rings: The Return of the King 2003
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 82, "text": [ " critic date id norm_score overall_score quote source title year\n", "6 Bill Muller 2003-12-18 00:00:00 167260 1 0.94 Not only has Jackson boldly and faithfully bro... Arizona Republic The Lord of the Rings: The Return of the King 2003\n", "7 Scott Foundas 2003-12-18 00:00:00 167260 1 0.94 Both the longest film in the series and the mo... L.A. Weekly The Lord of the Rings: The Return of the King 2003\n", "8 Peter Howell 2003-12-17 00:00:00 167260 1 0.94 Completes the picture, magnificently so, and a... Toronto Star The Lord of the Rings: The Return of the King 2003\n", "9 Roger Moore 2003-12-17 00:00:00 167260 1 0.94 The thrilling conclusion to what has become th... Orlando Sentinel The Lord of the Rings: The Return of the King 2003\n", "10 Liam Lacey 2003-12-17 00:00:00 167260 1 0.94 A movie for our time, perhaps for all time, mo... Globe and Mail The Lord of the Rings: The Return of the King 2003" ] } ], "prompt_number": 82 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we've gotten rid of the irrelevant data we again look at the number of reviews, critics and movies. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "print \"Number of reviews: %i\" % len(rotten_df)\n", "print \"Number of critics: %i\" % rotten_df.critic.unique().size\n", "print \"Number of movies: %i\" % rotten_df.title.unique().size" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Number of reviews: 54816\n", "Number of critics: 829\n", "Number of movies: 1737\n" ] } ], "prompt_number": 83 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Statistical Analysis

\n", "\n", "We will now use a Naive Bayes classifier to build a prediction model for whether a movie will be nominated for an oscar. From there we will try to pick from among the nominees to get a winner." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we can see, this filter reduced the number of reviews almost by half, but we also lost some movies." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Before we begin our analysis, we should first add to our dataframe information about the results of the oscar nominations and winners. Here we add two columns to our dataframe: one for the winner, and one for the nomination. For preliminary analysis, we treat all movie-speicifc oscars as the same." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

IMDB Statistical Analysis

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Because we store the imdb ids as strings in the oscars dataframe, we need to make sure we have a \n", "consistent representation in the imdb review dataframe. Because we read in from a csv, pandas\n", "automatically turns the ids into ints, so we have to do the editting here." ] }, { "cell_type": "code", "collapsed": false, "input": [ "imdb_df['id'] = imdb_df['id'].map(lambda id: str(id).zfill(7))" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'imdb_df' is not defined", "output_type": "pyerr", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mimdb_df\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'id'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mimdb_df\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'id'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mlambda\u001b[0m \u001b[0mid\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mid\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mzfill\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m7\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mNameError\u001b[0m: name 'imdb_df' is not defined" ] } ], "prompt_number": 171 }, { "cell_type": "code", "collapsed": false, "input": [ "add_oscar_data(imdb_df)\n", "imdb_df.head()" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
criticdateidnorm_scoreoverall_scorequotesourcetitleyearoscar_winneroscar_nom
0 GuyCC2003-12-17 00:00:00 0167260 1.0 0.89 Peter Jackson has done it. He has created an ... IMDB The Lord of the Rings: The Return of the King 2003 1 1
1 (muffinking66@hotmail.com)2003-12-16 00:00:00 0167260 1.0 0.89 Saying that this film starts where `Two Towers... IMDB The Lord of the Rings: The Return of the King 2003 1 1
3 eiratan2003-12-17 00:00:00 0167260 1.0 0.89 As a movie watcher, I tend to become bored wit... IMDB The Lord of the Rings: The Return of the King 2003 1 1
5 Chris_Docker2003-12-17 00:00:00 0167260 0.9 0.89 Feeling weary and battle-worn, I have just sta... IMDB The Lord of the Rings: The Return of the King 2003 1 1
6 eviltimmy2003-12-20 00:00:00 0167260 1.0 0.89 This is the final movie in the Lord of the Rin... IMDB The Lord of the Rings: The Return of the King 2003 1 1
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 9, "text": [ " critic date id norm_score overall_score quote source title year oscar_winner oscar_nom\n", "0 GuyCC 2003-12-17 00:00:00 0167260 1.0 0.89 Peter Jackson has done it. He has created an ... IMDB The Lord of the Rings: The Return of the King 2003 1 1\n", "1 (muffinking66@hotmail.com) 2003-12-16 00:00:00 0167260 1.0 0.89 Saying that this film starts where `Two Towers... IMDB The Lord of the Rings: The Return of the King 2003 1 1\n", "3 eiratan 2003-12-17 00:00:00 0167260 1.0 0.89 As a movie watcher, I tend to become bored wit... IMDB The Lord of the Rings: The Return of the King 2003 1 1\n", "5 Chris_Docker 2003-12-17 00:00:00 0167260 0.9 0.89 Feeling weary and battle-worn, I have just sta... IMDB The Lord of the Rings: The Return of the King 2003 1 1\n", "6 eviltimmy 2003-12-20 00:00:00 0167260 1.0 0.89 This is the final movie in the Lord of the Rin... IMDB The Lord of the Rings: The Return of the King 2003 1 1" ] } ], "prompt_number": 9 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using different review dataframes, we will now compute a pair of numerical X, Y, Z arrays where:\n", " \n", " * X is a `(nreview, nwords)` array. Each row corresponds to a bag-of-words representation for a single review.\n", " * Y is a `nreview`-element 1/0 array, encoding whether a movie wins an oscar (1) or didn't win (0).\n", " * Z is a `nreview`-element 1/0 array, encoding whether a movie is nominated for an oscar (1) or not (0)." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.feature_extraction.text import CountVectorizer\n", "from sklearn.cross_validation import train_test_split\n", "from sklearn.naive_bayes import MultinomialNB\n", "from sklearn.ensemble import RandomForestClassifier\n", "\n", "\"\"\"\n", "Function\n", "--------\n", "make_xyz\n", "\n", "Build a bag-of-words training set for the review data\n", "\n", "Parameters\n", "-----------\n", "df : Pandas DataFrame\n", " The review for a dataset\n", " \n", "vectorizer : CountVectorizer object (optional)\n", " A CountVectorizer object to use. If None,\n", " then create and fit a new CountVectorizer.\n", " Otherwise, re-fit the provided CountVectorizer\n", " using the critics data\n", " \n", "Returns\n", "-------\n", "X : numpy array (dims: nreview, nwords)\n", " Bag-of-words representation for each review.\n", "Y : numpy array (dims: nreview)\n", " 1/0 array. 1 = won an oscar, 0 = didn't win an oscar\n", "Z : numpy array (dims: nreview)\n", " 1/0 array. 1 = nominated, 0 = not nominated\n", "\n", "Examples\n", "--------\n", "X, Y, Z = make_xyz(imdb_id)\n", "\"\"\"\n", "def make_xyz(df, vectorizer=None): \n", " if vectorizer is None:\n", " vectorizer = CountVectorizer()\n", " X = vectorizer.fit_transform(df.quote)\n", " X = X.tocsc() # some versions of sklearn return COO format\n", " gc.collect()\n", " return X, df['oscar_winner'].astype(np.int), df['oscar_nom'].astype(np.int)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 96 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Because the dataframe for imdb is so large, though, we cannot in reality create a vectorizer based on this because it would not be able to fit in memory. So here we will take a random sample of the quotes for each movie." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from random import sample\n", "\n", "# group imdb_df by movie\n", "grp_imdb = imdb_df.groupby('id')\n", "# reset imdb_df for appending new info\n", "imdb_df = pd.DataFrame()\n", "\n", "# iterate through groups, randomly remove reviews, append to imdb_df\n", "for name,group in grp_imdb:\n", " rows = sample(group.index,len(group.index) / 10)\n", " group = group.ix[rows]\n", " imdb_df = imdb_df.append(group)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 38 }, { "cell_type": "code", "collapsed": false, "input": [ "# finally construct X,Y,Z\n", "X, Y, Z = make_xyz(imdb_df)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 45 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Rotten Tomatoes Statistical Analysis

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we repeat the process for the Rotten Tomatoes reviews, first adding columns for oscar winner or oscar nominee. \n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "rotten_df['id'] = rotten_df['id'].map(lambda id: str(id).zfill(7))\n", "add_oscar_data(rotten_df)\n", "rotten_df.head()" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
criticdateidnorm_scoreoverall_scorequotesourcetitleyearoscar_winneroscar_nom
62908 Joe Neumaier2012-11-08 00:00:00 1579361 1 0.96 You won't want to look away - not only because... New York Daily News Chasing Ice 2012 0 1
62909 Linda Barnard2012-11-08 00:00:00 1579361 1 0.96 Considering the gravity of the situation there... Toronto Star Chasing Ice 2012 0 1
62910 Chuck Wilson2012-11-07 00:00:00 1579361 1 0.96 Jeff Orlowski's beautiful yet sobering documen... Village Voice Chasing Ice 2012 0 1
62911 Justin Chang2012-01-30 00:00:00 1579361 1 0.96 The case for climate change is mounted in visu... Variety Chasing Ice 2012 0 1
62912 John DeFore2012-01-26 00:00:00 1579361 1 0.96 Doc about photographing glaciers makes a compe... Hollywood Reporter Chasing Ice 2012 0 1
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 94, "text": [ " critic date id norm_score overall_score quote source title year oscar_winner oscar_nom\n", "62908 Joe Neumaier 2012-11-08 00:00:00 1579361 1 0.96 You won't want to look away - not only because... New York Daily News Chasing Ice 2012 0 1\n", "62909 Linda Barnard 2012-11-08 00:00:00 1579361 1 0.96 Considering the gravity of the situation there... Toronto Star Chasing Ice 2012 0 1\n", "62910 Chuck Wilson 2012-11-07 00:00:00 1579361 1 0.96 Jeff Orlowski's beautiful yet sobering documen... Village Voice Chasing Ice 2012 0 1\n", "62911 Justin Chang 2012-01-30 00:00:00 1579361 1 0.96 The case for climate change is mounted in visu... Variety Chasing Ice 2012 0 1\n", "62912 John DeFore 2012-01-26 00:00:00 1579361 1 0.96 Doc about photographing glaciers makes a compe... Hollywood Reporter Chasing Ice 2012 0 1" ] } ], "prompt_number": 94 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next we attempt to create a vectorizer. \n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "rottenX, rottenY, rottenZ = make_xyz(rotten_df)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 97 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Isolating a Training and Validation Set: IMDB

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\"\"\"\n", "Function\n", "--------\n", "split_test_train_years:\n", " randomly splits a movie dataframe by years into training and testing groups\n", "\n", "Parameters\n", "----------\n", "df:\n", " Dataframe to be split\n", "yr_lst:\n", " a list of the years on which to split\n", "\n", "Returns\n", "-------\n", "test_yrs, train_years:\n", " A tuple of the split dataframe\n", "\"\"\"\n", "\n", "def split_test_train_years(df,yr_lst):\n", " test_yrs = random.sample(yr_lst, len(yr_lst)/2)\n", " train_yrs = list(set(yr_lst) - set(test_yrs))\n", " print 'Test years: ' + str(test_yrs)\n", " print 'Train years: ' + str(train_yrs)\n", " test_mask = [x in test_yrs for x in df.year]\n", " train_mask = [x in train_yrs for x in df.year]\n", " return df[test_mask], df[train_mask]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 172 }, { "cell_type": "code", "collapsed": false, "input": [ "bomj_testdf,bomj_traindf = split_test_train_years(bomj_df,range(2003,2013))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Test years: [2011, 2012, 2010, 2003, 2007]\n", "Train years: [2008, 2009, 2004, 2005, 2006]\n" ] } ], "prompt_number": 173 }, { "cell_type": "code", "collapsed": false, "input": [ "bomj_testdf.head()" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
rankyearmovie_titleimdbidstudiototal_grossnum_theaters_totalopening_revenuenum_theaters_openingdate_opendate_closeoscar_winneroscar_nom
0 1 2003 The Lord of the Rings: The Return of the King 0167260 NL 377027325 3703 72629713 3703 17-Dec 3-Jun 1 1
1 2 2003 Finding Nemo 0266543 BV 339714978 3425 70251710 3374 30-May 18-Dec 1 1
2 3 2003 Pirates of the Caribbean: The Curse of the Bla... 0325980 BV 305413918 3416 46630690 3269 9-Jul 8-Jan 0 1
3 4 2003 The Matrix Reloaded 0234215 WB 281576461 3603 91774413 3603 15-May 13-Nov 0 0
4 5 2003 Bruce Almighty 0315327 Uni. 242829261 3549 67953330 3483 23-May 11-Dec 0 0
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 174, "text": [ " rank year movie_title imdbid studio total_gross num_theaters_total opening_revenue num_theaters_opening date_open date_close oscar_winner oscar_nom\n", "0 1 2003 The Lord of the Rings: The Return of the King 0167260 NL 377027325 3703 72629713 3703 17-Dec 3-Jun 1 1\n", "1 2 2003 Finding Nemo 0266543 BV 339714978 3425 70251710 3374 30-May 18-Dec 1 1\n", "2 3 2003 Pirates of the Caribbean: The Curse of the Bla... 0325980 BV 305413918 3416 46630690 3269 9-Jul 8-Jan 0 1\n", "3 4 2003 The Matrix Reloaded 0234215 WB 281576461 3603 91774413 3603 15-May 13-Nov 0 0\n", "4 5 2003 Bruce Almighty 0315327 Uni. 242829261 3549 67953330 3483 23-May 11-Dec 0 0" ] } ], "prompt_number": 174 }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.naive_bayes import MultinomialNB\n", "\n", "def none_checker_composite(df,list_of_cols):\n", " num_cols = len(list_of_cols)\n", " newdf=df[test_for_nones(df,list_of_cols[1])]\n", " if num_cols>1:\n", " for i in range(1,num_cols):\n", " newdf=newdf[test_for_nones(newdf,list_of_cols[i])]\n", " return newdf\n", "\n", "def isolate_data(df,cols_to_include,classifier_column='oscar_winner'):\n", " X = df[cols_to_include].values\n", " Y = df[classifier_column].values \n", " X_new=[]\n", " Y_new=[]\n", " for i in range(0,len(Y)):\n", " try:\n", " X_new.append((int(X[i,0]),int(X[i,1]),int(X[i,2])))\n", " Y_new.append(int(Y[i]))\n", " except:\n", " pass\n", " return X_new, Y_new\n", "\n", "bomj_testdf=none_checker_composite(bomj_testdf,['total_gross','num_theaters_total','opening_revenue','num_theaters_opening'])\n", "bomj_traindf=none_checker_composite(bomj_traindf,['total_gross','num_theaters_total','opening_revenue','num_theaters_opening'])\n", "(X_test, Y_test) = isolate_data(bomj_testdf,['total_gross','num_theaters_total','opening_revenue','num_theaters_opening'],'oscar_winner')\n", "(X_train, Y_train) = isolate_data(bomj_traindf,['total_gross','num_theaters_total','opening_revenue','num_theaters_opening'],'oscar_winner')\n", "\n", "\n", "print \"Accuracy on train data: %0.2f%%\" % (100 * clf.score(X_train, Y_train))\n", "print \"Accuracy on test data: %0.2f%%\" % (100 * clf.score(X_test, Y_test))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[1 1 1 0 0 0 1 0 0 1 0 0 1 0 0 1 1 0 0 1 1 0 1 1 0 0 0 0 0 1 0 0 1 1 0 0 0\n", " 0 1 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0\n", " 1 0 0 1 1 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1 0 1 0 1\n", " 1 0 0 1 1 1 1 1 0 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0\n", " 1 1 0 1 0 0 1 1 0 1 0 1 0 0 1 0 0 0 0 1 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 1 0\n", " 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0\n", " 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0\n", " 1 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0\n", " 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 1 1 0 0 0 1 1 1 1 0 0 0\n", " 0 0 0 1 1 0 1 0 1 1 0 1 1 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0\n", " 1 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0\n", " 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1\n", " 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1\n", " 0 1 0 0 1 1 1 1 1 1 1 1 1 0 1 1 0 0 1 1 0 1 0 0 1 1 0 1 1 1 1 0 0 1 1 0 0\n", " 0 0 0 0 1 0 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0\n", " 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0\n", " 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 1 1 1\n", " 1 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 0 0 1 1 1 1 1 1 0\n", " 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 1 0 0 0 1 0 0\n", " 0 1 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0\n", " 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 1 0 1 1 0 1 0 0\n", " 0 1 1 1 0 1 0 0 0 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 0 0 1 0 1 1 0 1 0 1 1 1\n", " 1 1 0 0 1 1 0 1 1 1 1 1 1]\n", "[1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", "Accuracy on train data: 70.43%\n", "Accuracy on test data: 68.92%\n" ] } ], "prompt_number": 187 }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "**3.2** Next, randomly split the data into two groups: a\n", "training set and a validation set. \n", "\n", "Use the training set to train a `MultinomialNB` classifier,\n", "and print the accuracy of this model on the validation set\n", "\n", "**Hint**\n", "You can use `train_test_split` to split up the training data" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#Your code here\n", "xtrain, xtest, ytrain, ytest = train_test_split(X, Y)\n", "clf = MultinomialNB().fit(xtrain, ytrain)\n", "\n", "print \"Accuracy on train data: %0.2f%%\" % (100 * clf.score(xtest, ytest))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Accuracy: 77.15%\n" ] } ], "prompt_number": 14 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**3.3:**\n", "\n", "We say a model is **overfit** if it performs better on the training data than on the test data. Is this model overfit? If so, how much more accurate is the model on the training data compared to the test data?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Your code here. Print the accuracy on the test and training dataset\n", "training_accuracy = clf.score(xtrain, ytrain)\n", "test_accuracy = clf.score(xtest, ytest)\n", "\n", "print \"Accuracy on training data: %0.2f\" % (training_accuracy)\n", "print \"Accuracy on test data: %0.2f\" % (test_accuracy)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Accuracy on training data: 0.90\n", "Accuracy on test data: 0.77\n" ] } ], "prompt_number": 16 }, { "cell_type": "markdown", "metadata": {}, "source": [ "*Interpret these numbers in a few sentences here*\n", "\n", "**Answer** *Some overfitting seems to be happening here, since the error rate on the test data (23%) is more than twice as large as the error rate on the training data (10%). It's possible (though unlikely) that the accuracy difference is a product of chance, and not a symptom of overfitting. This could be tested with cross-validation, by repeatedly fitting and scoring the classifier on different train/test splits. If the performance on the training data is consistently better than the test data, then overfitting has occured. This is the case here.*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**3.4: Model Calibration**\n", "\n", "Bayesian models like the Naive Bayes classifier have the nice property that they compute probabilities of a particular classification -- the `predict_proba` and `predict_log_proba` methods of `MultinomialNB` compute these probabilities. \n", "\n", "Being the respectable Bayesian that you are, you should always assess whether these probabilities are **calibrated** -- that is, whether a prediction made with a confidence of `x%` is correct approximately `x%` of the time.\n", "\n", "Let's make a plot to assess model calibration. Schematically, we want something like this:\n", "\n", "\n", "\n", "In words, we want to:\n", "\n", "* Take a collection of examples, and compute the freshness probability for each using `clf.predict_proba`\n", "* Gather examples into bins of similar freshness probability (the diagram shows 5 groups -- you should use something closer to 20)\n", "* For each bin, count the number of examples in that bin, and compute the fraction of examples in the bin which are fresh\n", "* In the upper plot, graph the expected P(Fresh) (x axis) and observed freshness fraction (Y axis). Estimate the uncertainty in observed freshness fraction $F$ via the [equation](http://en.wikipedia.org/wiki/Binomial_proportion_confidence_interval) $\\sigma = \\sqrt{F (1-F) / N}$\n", "* Overplot the line y=x. This is the trend we would expect if the model is calibrated\n", "* In the lower plot, show the number of examples in each bin\n", "\n", "**Hints**\n", "\n", "The output of `clf.predict_proba(X)` is a `(N example, 2)` array. The first column gives the probability $P(Y=0)$ or $P(Rotten)$, and the second gives $P(Y=1)$ or $P(Fresh)$.\n", "\n", "The above image is just a guideline -- feel free to explore other options!" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\"\"\"\n", "Function\n", "--------\n", "calibration_plot\n", "\n", "Builds a plot like the one above, from a classifier and review data\n", "\n", "Inputs\n", "-------\n", "clf : Classifier object\n", " A MultinomialNB classifier\n", "X : (Nexample, Nfeature) array\n", " The bag-of-words data\n", "Y : (Nexample) integer array\n", " 1 if a review is Fresh\n", "\"\"\" \n", "#your code here\n", "\n", "def calibration_plot(clf, xtest, ytest):\n", " prob = clf.predict_proba(xtest)[:, 1]\n", " outcome = ytest\n", " data = pd.DataFrame(dict(prob=prob, outcome=outcome))\n", "\n", " #group outcomes into bins of similar probability\n", " bins = np.linspace(0, 1, 20)\n", " cuts = pd.cut(prob, bins)\n", " binwidth = bins[1] - bins[0]\n", " \n", " #freshness ratio and number of examples in each bin\n", " cal = data.groupby(cuts).outcome.agg(['mean', 'count'])\n", " cal['pmid'] = (bins[:-1] + bins[1:]) / 2\n", " cal['sig'] = np.sqrt(cal.pmid * (1 - cal.pmid) / cal['count'])\n", " \n", " #the calibration plot\n", " ax = plt.subplot2grid((3, 1), (0, 0), rowspan=2)\n", " p = plt.errorbar(cal.pmid, cal['mean'], cal['sig'])\n", " plt.plot(cal.pmid, cal.pmid, linestyle='--', lw=1, color='k')\n", " plt.ylabel(\"Empirical P(Fresh)\")\n", " remove_border(ax)\n", " \n", " #the distribution of P(fresh)\n", " ax = plt.subplot2grid((3, 1), (2, 0), sharex=ax)\n", " \n", " plt.bar(left=cal.pmid - binwidth / 2, height=cal['count'],\n", " width=.95 * (bins[1] - bins[0]),\n", " fc=p[0].get_color())\n", " \n", " plt.xlabel(\"Predicted P(Fresh)\")\n", " remove_border()\n", " plt.ylabel(\"Number\")" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 17 }, { "cell_type": "code", "collapsed": false, "input": [ "calibration_plot(clf, xtest, ytest)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nrkJggg==\n", "text": [ "" ] } ], "prompt_number": 18 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**3.5** We might say a model is *over-confident* if the freshness fraction is usually closer to 0.5 than expected (that is, there is more uncertainty than the model predicted). Likewise, a model is *under-confident* if the probabilities are usually further away from 0.5. Is this model generally over- or under-confident? " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Answer** *This model is over-confident. For a properly calibrated model, we would expect ~10% of the P(Fresh)~0.1 reviews to actually be fresh. However, the actual freshness rate is closer to 30%. Likewise, for reviews where P(Fresh) ~0.9, the actuall freshness fraction is closer to 0.7. In other words, there is more uncertainty in the outcome than implied by the model.*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Cross Validation\n", "\n", "Our classifier has a few free parameters. The two most important are:\n", "\n", " 1. The `min_df` keyword in `CountVectorizer`, which will ignore words which appear in fewer than `min_df` fraction of reviews. Words that appear only once or twice can lead to overfitting, since words which occur only a few times might correlate very well with Fresh/Rotten reviews by chance in the training dataset.\n", " \n", " 2. The [`alpha` keyword](http://scikit-learn.org/stable/modules/naive_bayes.html#multinomial-naive-bayes) in the Bayesian classifier is a \"smoothing parameter\" -- increasing the value decreases the sensitivity to any single feature, and tends to pull prediction probabilities closer to 50%. \n", "\n", "As discussed in lecture and HW2, a common technique for choosing appropriate values for these parameters is **cross-validation**. Let's choose good parameters by maximizing the cross-validated log-likelihood.\n", "\n", "**3.6** Using `clf.predict_logproba`, write a function that computes the log-likelihood of a dataset" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\"\"\"\n", "Function\n", "--------\n", "log_likelihood\n", "\n", "Compute the log likelihood of a dataset according to \n", "a bayesian classifier. \n", "The Log Likelihood is defined by\n", "\n", "L = Sum_fresh(logP(fresh)) + Sum_rotten(logP(rotten))\n", "\n", "Where Sum_fresh indicates a sum over all fresh reviews, \n", "and Sum_rotten indicates a sum over rotten reviews\n", " \n", "Parameters\n", "----------\n", "clf : Bayesian classifier\n", "x : (nexample, nfeature) array\n", " The input data\n", "y : (nexample) integer array\n", " Whether each review is Fresh\n", "\"\"\"\n", "#your code here\n", "\n", "def log_likelihood(clf, x, y):\n", " prob = clf.predict_log_proba(x)\n", " rotten = y == 0\n", " fresh = ~rotten\n", " return prob[rotten, 0].sum() + prob[fresh, 1].sum()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 19 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's a function to estimate the cross-validated value of a scoring function, given a classifier and data" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.cross_validation import KFold\n", "\n", "def cv_score(clf, x, y, score_func):\n", " \"\"\"\n", " Uses 5-fold cross validation to estimate a score of a classifier\n", " \n", " Inputs\n", " ------\n", " clf : Classifier object\n", " x : Input feature vector\n", " y : Input class labels\n", " score_func : Function like log_likelihood, that takes (clf, x, y) as input,\n", " and returns a score\n", " \n", " Returns\n", " -------\n", " The average score obtained by randomly splitting (x, y) into training and \n", " test sets, fitting on the training set, and evaluating score_func on the test set\n", " \n", " Examples\n", " cv_score(clf, x, y, log_likelihood)\n", " \"\"\"\n", " result = 0\n", " nfold = 5\n", " for train, test in KFold(y.size, nfold): # split data into train/test groups, 5 times\n", " clf.fit(x[train], y[train]) # fit\n", " result += score_func(clf, x[test], y[test]) # evaluate score function on held-out data\n", " return result / nfold # average" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 20 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**3.7**\n", "\n", "Fill in the remaining code in this block, to loop over many values of `alpha` and `min_df` to determine\n", "which settings are \"best\" in the sense of maximizing the cross-validated log-likelihood" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#the grid of parameters to search over\n", "alphas = [0, .1, 1, 5, 10, 50]\n", "min_dfs = [1e-5, 1e-4, 1e-3, 1e-2, 1e-1]\n", "\n", "#Find the best value for alpha and min_df, and the best classifier\n", "best_alpha = None\n", "best_min_df = None\n", "max_loglike = -np.inf\n", "\n", "for alpha in alphas:\n", " for min_df in min_dfs: \n", " vectorizer = CountVectorizer(min_df = min_df) \n", " X, Y = make_xy(critics, vectorizer)\n", " \n", " #your code here\n", " clf = MultinomialNB(alpha=alpha)\n", " loglike = cv_score(clf, X, Y, log_likelihood)\n", "\n", " if loglike > max_loglike:\n", " max_loglike = loglike\n", " best_alpha, best_min_df = alpha, min_df" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ "print \"alpha: %f\" % best_alpha\n", "print \"min_df: %f\" % best_min_df" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "alpha: 5.000000\n", "min_df: 0.001000\n" ] } ], "prompt_number": 22 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**3.8** Now that you've determined values for alpha and min_df that optimize the cross-validated log-likelihood, repeat the steps in 3.1, 3.2, and 3.4 to train a final classifier with these parameters, re-evaluate the accuracy, and draw a new calibration plot." ] }, { "cell_type": "code", "collapsed": false, "input": [ "#Your code here\n", "\n", "vectorizer = CountVectorizer(min_df=best_min_df)\n", "X, Y = make_xy(critics, vectorizer)\n", "xtrain, xtest, ytrain, ytest = train_test_split(X, Y)\n", "\n", "clf = MultinomialNB(alpha=best_alpha).fit(xtrain, ytrain)\n", "\n", "calibration_plot(clf, xtest, ytest)\n", "\n", "# Your code here. Print the accuracy on the test and training dataset\n", "training_accuracy = clf.score(xtrain, ytrain)\n", "test_accuracy = clf.score(xtest, ytest)\n", "\n", "print \"Accuracy on training data: %0.2f\" % (training_accuracy)\n", "print \"Accuracy on test data: %0.2f\" % (test_accuracy)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Accuracy on training data: 0.78\n", "Accuracy on test data: 0.74\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nYAH0ej3Ky8sBAIcPH8awYcMwZswY/Pjjj/j8889x6NAhvPDCC9J133jjDezcuROff/45vvnmGxQV\nFWHv3r1mjwA6ODgAuPXOGgDs3bsXffr0qbNufUljVVUVkpKSsGbNGhw7dgyPPPIIoqOjkZeXh//9\n3//F0aNHMXXqVIwaNUp67Lt8+XJs2bIFGzduxMmTJ7Fx40YEBgYatfVf//VfCAoKQlFREebOnYu4\nuDh8++23Rm337dsXe/bsMeueicgGBBGRhaZOnSpGjhwpff/uu++Em5ubmDhxohBCiAULFgiFQiHO\nnz8v1fnmm2+EUqkUlZWVRtd6/PHHxYcffiiEEGLSpEli6NChRsdffPFFIZPJpO+pqalCqVRK30ND\nQ8WkSZPqjbVz585i2bJlRmXPPfecmDZtmlFZUVGRkMlk4tdffxVXrlwRDg4OYsOGDdLxq1evioce\nekhER0fX21Zubq6QyWTiwoULQgghLly4IEaPHi1cXV2lv4tevXqJd955p87zlEql0efMmTMiNTVV\nyGQycfDgQan+yZMnhVwuF2fOnDG6TkREhHj11VeFEELExsaKwYMH1xurj4+PmDx5slGZv7+/SEpK\nMipbtmyZ8PX1rfc6RNQy8B07ImqUr7/+GiqVCjdv3sSNGzcwZswYrFixQjqu1Wrh7u4ufS8sLMT1\n69eNyoBbo1GlpaUAgGPHjiEiIsLoeEhICD7++ON647h7pM0UhYWFOHXqFDZu3CiVCSEgk8lw6tQp\nODo64rfffkO/fv2k487OzujevbtJ1+/cuTMA4Nq1awgICEBWVpZ031euXIFSqazzvN27d6NDhw7S\nd09PTwCAvb09Hn/8can84MGDEELgscceMzq/uroagwcPBnBrgsuQIUMQEBCAoUOHYsSIERg+fLg0\n4iiTydCjRw+j8z09PfHrr78albm4uKCiosKk+yYi22FiR0SNMmDAAPzP//wPFAoFPD09jd5fA24l\nQneqra2Fh4cH8vPz77nW7dmh1proIITAn/70J8yePfueY56enjh+/Hi955li9+7dcHNzg7u7+z1J\nnKurK65evVrneb6+vkaTJ25zcHAw+rupra2FTCbDgQMHoFAojOq2b98eANCzZ0/885//xN///nd8\n8803mDp1KoKCgrBjxw7pWnefK5PJpMkZt12+fBkPPfSQSfdNRLbDxI6IGqV9+/bo0qWLyfWDg4Nh\nMBggk8nqnWHZrVs37Nu3z6js7ne+7tazZ0/s3LkT06ZNq/N4u3btUFNTY1TWq1cvHDlypN74u3bt\nCoVCgX379hmNvh05cgT+/v4NxgPUn6ABgJ+fH06fPn3fazSkZ8+eEEKgvLwcYWFh9dZTKpUYN24c\nxo0bh6ioKISEhODUqVPw8/Mzua3Tp08jICCgUfESUfPj5Akisqrw8HA8+eSTiIiIwNdff42ysjLs\n27cPCxYskEbxYmNjsXPnTnzwwQc4ceIE1qxZI820rc/8+fORlZWFd955B8XFxTh69ChSUlJQWVkJ\n4NZj0b179+LcuXO4cOECAGDu3Ln4/vvv8corr6CoqAgnT57EV199hZdffhnArYRo2rRpmDt3Lnbu\n3ImjR4/ihRdeuGc0yxJPPfUU9u/f36hrBAQE4Nlnn0VUVBQ2b96M0tJSHDhwAEuXLsUXX3wBAEhO\nTkZmZiaOHTuGkydPYv369XB1dYVWq633ukKIe0Ylv//+e+h0ukbFS0TNj4kdEVnsfovb1nc8Ozsb\ngwYNwp/+9CcEBgYiMjISJ06cgJeXFwDgiSeewMcff4zVq1cjKCgIW7ZsQUJCwj3XuvP78OHD8cUX\nX2D79u3o1asXwsLCpAV/ASAxMRE///wzunbtCg8PDwBA9+7dsXfvXvzzn/9EWFgYHn/8cbz11lvQ\naDTSdZcuXYqBAwdi7NixGDx4MHr06GFSgnO/x8njxo3DqVOncPLkSZPPq+tYamoqoqOjERcXh27d\numHUqFHIz8+XRhhdXFzw5z//GU888QSCg4Px448/Yvv27Q2uAXh3vxkMBhQWFmLixIkN3hMR2Z5M\nmPqyCBERNakpU6bAx8cH7733nq1DadCyZcuwa9cubNu2zdahENF9MLEjIrKR0tJShISE4OTJk9LE\nkZamuroafn5++PLLL41m5BJRy8TEjoiIiKiN4Dt2RERERG0EEzsiIiKiNoKJHREREVEbwcSOiIiI\nqI1gYkdERETURjCxIyIiImojmNgRERERtRH/B/9vDL5NqXsoAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 23 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**3.9** Discuss the various ways in which Cross-Validation has affected the model. Is the new model more or less accurate? Is overfitting better or worse? Is the model more or less calibrated?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Answer** *The new model is slightly less accurate on the test data (74% vs 77% on the original model). However, it is both better calibrated and less over-fit than before. In other words, while the classification accuracy is slightly worse, the probabilities themselves are more accurate. The model is still slightly over-confident when making low P(Fresh) predictions. However, the calibration plot shows the model is usually within 1 error bar of the expected performance where P(Fresh) >= 0.2. Finally, the new model makes less-conclusive predictions on average -- the histogram in the calibration plot is more uniformly distributed, with fewer predictions clustered around P(Fresh) = 0 or 1.*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*To think about/play with, but not to hand in: What would happen if you tried this again using a function besides the log-likelihood -- for example, the classification accuracy?*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Part 4: Interpretation. What words best predict a fresh or rotten review?\n", "\n", "**4.1**\n", "Using your classifier and the `vectorizer.get_feature_names` method, determine which words best predict a positive or negative review. Print the 10 words\n", "that best predict a \"fresh\" review, and the 10 words that best predict a \"rotten\" review. For each word, what is the model's probability of freshness if the word appears one time?\n", "\n", "#### Hints\n", "\n", "* Try computing the classification probability for a feature vector which consists of all 0s, except for a single 1. What does this probability refer to?\n", "\n", "* `np.eye` generates a matrix where the ith row is all 0s, except for the ith column which is 1." ] }, { "cell_type": "code", "collapsed": false, "input": [ "## Your code here\n", "\n", "words = np.array(vectorizer.get_feature_names())\n", "\n", "x = np.eye(xtest.shape[1])\n", "probs = clf.predict_log_proba(x)[:, 0]\n", "ind = np.argsort(probs)\n", "\n", "good_words = words[ind[:10]]\n", "bad_words = words[ind[-10:]]\n", "\n", "good_prob = probs[ind[:10]]\n", "bad_prob = probs[ind[-10:]]\n", "\n", "print \"Good words\\t P(fresh | word)\"\n", "for w, p in zip(good_words, good_prob):\n", " print \"%20s\" % w, \"%0.2f\" % (1 - np.exp(p))\n", " \n", "print \"Bad words\\t P(fresh | word)\"\n", "for w, p in zip(bad_words, bad_prob):\n", " print \"%20s\" % w, \"%0.2f\" % (1 - np.exp(p))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Good words\t P(fresh | word)\n", " masterpiece 0.90\n", " delight 0.89\n", " remarkable 0.89\n", " touching 0.87\n", " perfect 0.87\n", " rare 0.86\n", " witty 0.86\n", " superb 0.86\n", " captures 0.86\n", " delightful 0.85\n", "Bad words\t P(fresh | word)\n", " worst 0.21\n", " dull 0.21\n", " disappointment 0.20\n", " disappointing 0.20\n", " unfunny 0.20\n", " bland 0.18\n", " uninspired 0.17\n", " pointless 0.17\n", " lame 0.13\n", " unfortunately 0.12\n" ] } ], "prompt_number": 22 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**4.2**\n", "\n", "One of the best sources for inspiration when trying to improve a model is to look at examples where the model performs poorly. \n", "\n", "Find 5 fresh and rotten reviews where your model performs particularly poorly. Print each review." ] }, { "cell_type": "code", "collapsed": false, "input": [ "#Your code here\n", "x, y = make_xy(critics, vectorizer)\n", "\n", "prob = clf.predict_proba(x)[:, 0]\n", "predict = clf.predict(x)\n", "\n", "bad_rotten = np.argsort(prob[y == 0])[:5]\n", "bad_fresh = np.argsort(prob[y == 1])[-5:]\n", "\n", "print \"Mis-predicted Rotten quotes\"\n", "print '---------------------------'\n", "for row in bad_rotten:\n", " print critics[y == 0].quote.irow(row)\n", " print\n", "\n", "print \"Mis-predicted Fresh quotes\"\n", "print '--------------------------'\n", "for row in bad_fresh:\n", " print critics[y == 1].quote.irow(row)\n", " print" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Mis-predicted Rotten quotes\n", "---------------------------\n", "It survives today only as an unusually pure example of a typical 50s art-film strategy: the attempt to make the most modern and most popular of art forms acceptable to the intelligentsia by forcing it into an arcane, antique mold.\n", "\n", "The Waterboy is arguably Sandler's most enjoyable motion picture to date, but it's still far from a masterpiece.\n", "\n", "Pale Rider does nothing to disprove the wisdom that this genre is best left to the revival houses. A double feature of Shane and Eastwood's High Plains Drifter will do just fine, thanks.\n", "\n", "It's a sad day when an actor who's totally, beautifully in touch with his dark side finds himself stuck in a movie that's scared of its own shadow.\n", "\n", "Walken is one of the few undeniably charismatic male villains of recent years; he can generate a snakelike charm that makes his worst characters the most memorable, and here he operates on pure style.\n", "\n", "Mis-predicted Fresh quotes\n", "--------------------------\n", "The gangland plot is flimsy (bad guy Peter Greene wears too much eyeliner), and the jokes are erratic, but it's a far better showcase for Carrey's comic-from-Uranus talent than Ace Ventura.\n", "\n", "It's a one-joke movie, a funhouse ride, the cinematic equivalent of having a rubber spider thrown in your lap. But it doesn't matter if you reject the wispy script or the plot, which has as much substance as a spider's web; you'll jump every time.\n", "\n", "There's too much talent and too strong a story to mess it up. There was potential for more here, but this incarnation is nothing to be ashamed of, and some of the actors answer the bell.\n", "\n", "This tough-to-peg whodunit keeps you going for two hours, despite a few James Bond-ish (or Jane Bond-ish) turns that play less preposterously than you might assume were they to be divulged.\n", "\n", "Some of the gags don't work, but fewer than in any previous Brooks film that I've seen, and when the jokes are meant to be bad, they are riotously poor. What more can one ask of Mel Brooks?\n", "\n" ] } ], "prompt_number": 23 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**4.3** What do you notice about these mis-predictions? Naive Bayes classifiers assume that every word affects the probability independently of other words. In what way is this a bad assumption? In your answer, report your classifier's Freshness probability for the review \"This movie is not remarkable, touching, or superb in any way\"." ] }, { "cell_type": "code", "collapsed": false, "input": [ "clf.predict_proba(vectorizer.transform(['This movie is not remarkable, touching, or superb in any way']))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 25, "text": [ "array([[ 0.01755082, 0.98244918]])" ] } ], "prompt_number": 25 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Answer** *Many mis-predictions seem due to the fact that the quotes use more ambivalent language -- quotes along the lines of \"this should have been a good movie, but it wasn't\". Words like \"but\", \"not\", etc. act to negate the sentiment of words. However, because Naive Bayes treats each word separately, it isn't able to capture these kind of word interactions. Because the quote \"this movie is not remarkable, touching, or superb in any way\" contains typically positive words like remarkabke/touching/superb, the classifier gives it P(Fresh)=0.98.*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**4.4**\n", "If this was your final project, what are 3 things you would try in order to build a more effective review classifier? What other exploratory or explanatory visualizations do you think might be helpful?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are many things worth trying. Some examples:\n", "\n", "1. You could try to build a NB model where the features are word pairs instead of words. This would be smart enough to realize that \"not good\" and \"so good\" mean very different things. This technique doesn't scale very well, since these features are much more sparse (and hence harder to detect repeatable patterns within).\n", "2. You could try a model besides NB, that would allow for interactions between words -- for example, a Random Forest classifier.\n", "3. You could consider adding supplemental features -- information about genre, director, cast, etc.\n", "4. You could build a visualization that prints word reviews, and visually encodes each word with size or color to indicate how that word contributes to P(Fresh). For example, really bad words could show up as big and red, good words as big and green, common words as small and grey, etc." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### How to Submit\n", "\n", "To submit your homework, create a folder named lastname_firstinitial_hw3 and place this notebook file in the folder. Double check that this file is still called HW3.ipynb, and that it contains your solutions. Please do **not** include the critics.csv data file, if you created one. Compress the folder (please use .zip compression) and submit to the CS109 dropbox in the appropriate folder. If we cannot access your work because these directions are not followed correctly, we will not grade your work.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "*css tweaks in this cell*\n", "" ] } ], "metadata": {} } ] }