diff --git "a/Data Analitics/Week 4/.ipynb_checkpoints/TU257-Lab3-2-Data-Transformations-checkpoint.ipynb" "b/Data Analitics/Week 4/.ipynb_checkpoints/TU257-Lab3-2-Data-Transformations-checkpoint.ipynb" new file mode 100644--- /dev/null +++ "b/Data Analitics/Week 4/.ipynb_checkpoints/TU257-Lab3-2-Data-Transformations-checkpoint.ipynb" @@ -0,0 +1,4249 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Lab3 - 2 - Data Transformations" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from IPython.display import display, HTML\n", + "display(HTML(\"\"))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When preparing data for input to machine learning algorithms you may have to perform certain types of data preparation.\n", + "\n", + "In most enterprise solutions all or most of these tasks are automated for you, but in many languages they aren’t. The enterprise solutions are about ‘automating the boring stuff’ so that you don’t have to worry about it and waste valuable time doing boring, repetitive things.\n", + "\n", + "The following examples illustrates a number of ways to record categorical variables into numeric. There are a number of approaches available, and it is up to you to decide which one might work best for your problem, your data, etc.\n", + "\n", + "Let’s begin by loading the data set to be used in these examples. It is a Video Games reviews data set.\n", + "Useful : This website has a list of useful and typical data transformations. Some of these are covered below.\n", + "https://www.kdnuggets.com/2020/07/easy-guide-data-preprocessing-python.html" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NamePlatformYear_of_ReleaseGenrePublisherNA_SalesEU_SalesJP_SalesOther_SalesGlobal_SalesCritic_ScoreCritic_CountUser_ScoreUser_CountDeveloperRating
0Wii SportsWii2006.0SportsNintendo41.3628.963.778.4582.5376.051.08322.0NintendoE
1Super Mario Bros.NES1985.0PlatformNintendo29.083.586.810.7740.24NaNNaNNaNNaNNaNNaN
2Mario Kart WiiWii2008.0RacingNintendo15.6812.763.793.2935.5282.073.08.3709.0NintendoE
3Wii Sports ResortWii2009.0SportsNintendo15.6110.933.282.9532.7780.073.08192.0NintendoE
4Pokemon Red/Pokemon BlueGB1996.0Role-PlayingNintendo11.278.8910.221.0031.37NaNNaNNaNNaNNaNNaN
5TetrisGB1989.0PuzzleNintendo23.202.264.220.5830.26NaNNaNNaNNaNNaNNaN
6New Super Mario Bros.DS2006.0PlatformNintendo11.289.146.502.8829.8089.065.08.5431.0NintendoE
7Wii PlayWii2006.0MiscNintendo13.969.182.932.8428.9258.041.06.6129.0NintendoE
8New Super Mario Bros. WiiWii2009.0PlatformNintendo14.446.944.702.2428.3287.080.08.4594.0NintendoE
9Duck HuntNES1984.0ShooterNintendo26.930.630.280.4728.31NaNNaNNaNNaNNaNNaN
\n", + "
" + ], + "text/plain": [ + " Name Platform Year_of_Release Genre \\\n", + "0 Wii Sports Wii 2006.0 Sports \n", + "1 Super Mario Bros. NES 1985.0 Platform \n", + "2 Mario Kart Wii Wii 2008.0 Racing \n", + "3 Wii Sports Resort Wii 2009.0 Sports \n", + "4 Pokemon Red/Pokemon Blue GB 1996.0 Role-Playing \n", + "5 Tetris GB 1989.0 Puzzle \n", + "6 New Super Mario Bros. DS 2006.0 Platform \n", + "7 Wii Play Wii 2006.0 Misc \n", + "8 New Super Mario Bros. Wii Wii 2009.0 Platform \n", + "9 Duck Hunt NES 1984.0 Shooter \n", + "\n", + " Publisher NA_Sales EU_Sales JP_Sales Other_Sales Global_Sales \\\n", + "0 Nintendo 41.36 28.96 3.77 8.45 82.53 \n", + "1 Nintendo 29.08 3.58 6.81 0.77 40.24 \n", + "2 Nintendo 15.68 12.76 3.79 3.29 35.52 \n", + "3 Nintendo 15.61 10.93 3.28 2.95 32.77 \n", + "4 Nintendo 11.27 8.89 10.22 1.00 31.37 \n", + "5 Nintendo 23.20 2.26 4.22 0.58 30.26 \n", + "6 Nintendo 11.28 9.14 6.50 2.88 29.80 \n", + "7 Nintendo 13.96 9.18 2.93 2.84 28.92 \n", + "8 Nintendo 14.44 6.94 4.70 2.24 28.32 \n", + "9 Nintendo 26.93 0.63 0.28 0.47 28.31 \n", + "\n", + " Critic_Score Critic_Count User_Score User_Count Developer Rating \n", + "0 76.0 51.0 8 322.0 Nintendo E \n", + "1 NaN NaN NaN NaN NaN NaN \n", + "2 82.0 73.0 8.3 709.0 Nintendo E \n", + "3 80.0 73.0 8 192.0 Nintendo E \n", + "4 NaN NaN NaN NaN NaN NaN \n", + "5 NaN NaN NaN NaN NaN NaN \n", + "6 89.0 65.0 8.5 431.0 Nintendo E \n", + "7 58.0 41.0 6.6 129.0 Nintendo E \n", + "8 87.0 80.0 8.4 594.0 Nintendo E \n", + "9 NaN NaN NaN NaN NaN NaN " + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# perform some Statistics on the items in a panda\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib as plt\n", + "videoReview = pd.read_csv('/Users/brendan.tierney/Dropbox/4-Datasets/Video_Games_Sales_as_at_22_Dec_2016.csv') \n", + "videoReview.head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Name object\n", + "Platform object\n", + "Year_of_Release float64\n", + "Genre object\n", + "Publisher object\n", + "NA_Sales float64\n", + "EU_Sales float64\n", + "JP_Sales float64\n", + "Other_Sales float64\n", + "Global_Sales float64\n", + "Critic_Score float64\n", + "Critic_Count float64\n", + "User_Score object\n", + "User_Count float64\n", + "Developer object\n", + "Rating object\n", + "dtype: object" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#What are the data types of each variable\n", + "videoReview.dtypes" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Nintendo',\n", + " nan,\n", + " 'Good Science Studio',\n", + " 'Rockstar North',\n", + " 'Polyphony Digital',\n", + " 'Infinity Ward, Sledgehammer Games',\n", + " 'Treyarch',\n", + " 'Infinity Ward',\n", + " 'DMA Design',\n", + " 'Game Arts',\n", + " 'Retro Studios, Entertainment Analysis & Development Division',\n", + " 'Bungie Software, Bungie',\n", + " 'Ubisoft',\n", + " 'Bungie',\n", + " 'SquareSoft',\n", + " '343 Industries',\n", + " 'Hudson Soft',\n", + " 'Bethesda Game Studios',\n", + " 'EA Sports',\n", + " 'Bungie Software',\n", + " 'Nd Cube',\n", + " 'Hudson',\n", + " 'Electronic Arts',\n", + " 'The Sims Studio',\n", + " 'Game Freak',\n", + " 'Rockstar Leeds',\n", + " 'Sledgehammer Games',\n", + " 'EA Sports, EA Vancouver',\n", + " 'Nintendo EAD Tokyo',\n", + " 'EA DICE',\n", + " 'EA Black Box',\n", + " 'Ubisoft Paris',\n", + " 'Namco',\n", + " 'Naughty Dog',\n", + " 'HAL Labs',\n", + " 'EA Canada',\n", + " 'EA LA',\n", + " 'Epic Games',\n", + " 'Pipeworks Software, Inc.',\n", + " 'Rockstar San Diego',\n", + " 'Retro Studios',\n", + " 'Blizzard Entertainment',\n", + " 'Reflections Interactive',\n", + " 'Rare Ltd.',\n", + " 'KCEJ',\n", + " 'Kojima Productions',\n", + " 'Square Enix',\n", + " 'SCE/WWS, Media Molecule',\n", + " 'Capcom',\n", + " 'Level 5',\n", + " \"Traveller's Tales\",\n", + " 'Taito Corporation',\n", + " 'Ubisoft Montreal',\n", + " 'Turn 10',\n", + " 'Rocksteady Studios',\n", + " 'Intelligent Systems',\n", + " 'Core Design Ltd.',\n", + " 'EA Tiburon',\n", + " 'Harmonix Music Systems',\n", + " 'Lionhead Studios',\n", + " 'Neversoft Entertainment',\n", + " 'Neversoft Entertainment, BudCat',\n", + " 'Naughty Dog, SCE/WWS',\n", + " 'SCE Santa Monica',\n", + " 'TT Fusion',\n", + " 'Stormfront Studios',\n", + " 'Bluepoint Games',\n", + " 'Vicarious Visions',\n", + " 'Next Level Games',\n", + " 'Konami',\n", + " 'Bethesda Softworks',\n", + " 'Ubisoft Paris, Ubisoft Montpellier',\n", + " 'High Moon Studios',\n", + " 'Insomniac Games',\n", + " 'Mass Media',\n", + " 'Ready at Dawn',\n", + " 'SCEE, Zoe Mode',\n", + " 'Valve Software',\n", + " 'Obsidian Entertainment',\n", + " 'Cat Daddy Games',\n", + " 'Digital Eclipse',\n", + " 'CD Projekt Red Studio',\n", + " 'Ubisoft, Ubisoft Montreal',\n", + " 'Visual Concepts',\n", + " 'Evolution Studios',\n", + " 'KCET',\n", + " 'SCEA, Zindagi Games',\n", + " 'Nintendo, Namco Bandai Games',\n", + " 'Massive Entertainment',\n", + " 'Maxis',\n", + " 'Argonaut Games',\n", + " 'TOSE',\n", + " 'Zipper Interactive',\n", + " 'Pandemic Studios',\n", + " 'Fox Interactive',\n", + " 'Office Create',\n", + " 'Team Soho',\n", + " 'EA Redwood Shores',\n", + " 'Certain Affinity',\n", + " 'Agenda',\n", + " 'Gearbox Software',\n", + " 'Kojima Productions, Moby Dick Studio',\n", + " 'Media Molecule',\n", + " 'Eurocom Entertainment Software',\n", + " 'Ubisoft Quebec',\n", + " 'Double Helix Games',\n", + " 'Rockstar Toronto',\n", + " 'EA Games',\n", + " 'Splash Damage, The Coalition',\n", + " 'Luxoflux, Inc.',\n", + " 'Shiny Entertainment',\n", + " 'Team Bondi',\n", + " '1st Playable Productions',\n", + " 'Dimps Corporation, Sonic Team',\n", + " 'Indies Zero',\n", + " '4J Studios',\n", + " 'BioWare',\n", + " 'Dimps Corporation',\n", + " 'Quantic Dream',\n", + " 'Volition Inc.',\n", + " 'Guerrilla',\n", + " 'Junction Point',\n", + " 'Spike, Namco Bandai Games',\n", + " 'LucasArts, BioWare',\n", + " 'Monolith Productions',\n", + " 'Sonic Team',\n", + " 'Io Interactive',\n", + " 'Respawn Entertainment',\n", + " 'Sucker Punch',\n", + " 'Sumo Digital',\n", + " 'Clap Hanz',\n", + " 'OfficeCreate',\n", + " 'Spark Unlimited',\n", + " 'NetherRealm Studios',\n", + " 'Irrational Games, 2K Marin',\n", + " 'Majesco Games, Majesco',\n", + " 'EA DICE, Danger Close',\n", + " 'Virtual Toys',\n", + " 'NuFX',\n", + " 'Criterion Games',\n", + " 'Toys for Bob',\n", + " 'Warner Bros. Interactive Entertainment, NetherRealm Studios',\n", + " 'Edge of Reality',\n", + " 'LucasArts',\n", + " 'Artoon',\n", + " 'Namco Bandai Games',\n", + " 'Dreamworks Interactive',\n", + " 'Big Blue Box',\n", + " 'DC Studios',\n", + " 'Ubisoft Shanghai',\n", + " 'Slightly Mad Studios',\n", + " 'Team Fusion',\n", + " 'Angel Studios',\n", + " 'Ensemble Studios',\n", + " 'Dice, Danger Close',\n", + " 'syn Sophia',\n", + " \"Yuke's\",\n", + " 'Genius Sonority Inc.',\n", + " 'Acclaim Studios Cheltenham',\n", + " 'Headstrong Games',\n", + " 'CAProduction',\n", + " 'Raven Software',\n", + " 'Midway',\n", + " 'From Software',\n", + " 'Black Rock Studio',\n", + " 'Cyan Worlds',\n", + " 'THQ',\n", + " 'Rainbow Studios',\n", + " 'Black Box',\n", + " 'Bullfrog Productions',\n", + " 'Konami Computer Entertainment Hawaii',\n", + " 'Techland',\n", + " 'Heavy Iron Studios',\n", + " 'Frontier Developments',\n", + " 'GREZZO',\n", + " 'Rare Ltd., BigPark',\n", + " 'ArenaNet',\n", + " 'WB Games Montreal',\n", + " 'HAL Labs, Creatures Inc.',\n", + " 'Backbone Entertainment',\n", + " 'Sega',\n", + " 'Exakt',\n", + " 'TT Games',\n", + " '2K Marin',\n", + " '5TH Cell',\n", + " 'Beenox',\n", + " 'Amaze Entertainment',\n", + " 'Bizarre Creations',\n", + " 'Omega Force',\n", + " 'Visceral Games',\n", + " 'Blue Planet Software',\n", + " 'Matrix Software',\n", + " 'Full Fat',\n", + " 'Helixe',\n", + " 'EA Vancouver',\n", + " 'Ubisoft Montpellier',\n", + " 'ChunSoft',\n", + " 'Midway Studios - San Diego',\n", + " 'Acquire',\n", + " 'h.a.n.d. Inc.',\n", + " 'Ghost Games',\n", + " 'Check Six Games',\n", + " 'PLAYGROUND, Playground Games',\n", + " 'Aki Corp.',\n", + " 'Flagship, HAL Labs',\n", + " 'Jellyvision',\n", + " 'Art',\n", + " 'Irrational Games',\n", + " 'Nintendo, Nd Cube',\n", + " 'NanaOn-Sha',\n", + " 'Factor 5',\n", + " 'Papaya Studios',\n", + " 'SCEI',\n", + " 'Krome Studios',\n", + " 'Avalanche Studios',\n", + " 'Jupiter Corporation',\n", + " 'Rockstar Studios',\n", + " 'Altron',\n", + " 'Creative Assembly',\n", + " 'Sega AM2',\n", + " 'Hangar 13',\n", + " 'BudCat',\n", + " 'Tango Gameworks',\n", + " 'SCEE London Studio',\n", + " 'Genuine Games',\n", + " 'Team Ninja',\n", + " 'Camelot Software Planning',\n", + " 'Red Storm Entertainment',\n", + " 'VIS Entertainment',\n", + " 'Realtime Worlds',\n", + " 'Monolith Soft',\n", + " 'Terminal Reality',\n", + " 'Ready at Dawn, SCE Santa Monica',\n", + " 'SCE Japan Studio',\n", + " 'ArtePiazza',\n", + " 'Ubisoft Reflections, Ivory Tower',\n", + " 'Tri-Ace',\n", + " 'Arkane Studios',\n", + " '3d6 Games',\n", + " 'Magic Pockets',\n", + " 'Artefacts Studio',\n", + " 'Hello Games',\n", + " 'Activision',\n", + " 'Griptonite Games',\n", + " 'Webfoot Technologies',\n", + " 'Farsight Studios',\n", + " 'Firaxis Games',\n", + " 'Bandai Namco Games',\n", + " 'Rebellion',\n", + " 'Shaba Games',\n", + " 'Artificial Mind and Movement',\n", + " 'Paradigm Entertainment',\n", + " 'EA Chicago',\n", + " 'SuperMassive Games',\n", + " 'HB Studios Multimedia',\n", + " 'EA Sports Big',\n", + " 'Spike',\n", + " 'Ninja Theory',\n", + " 'EA Montreal',\n", + " 'id Software',\n", + " 'Avalanche Software',\n", + " 'Capcom Vancouver',\n", + " 'Pivotal Games',\n", + " 'MachineGames',\n", + " '2K Czech',\n", + " 'Mind Candy',\n", + " 'Naughty Dog, Sony Bend',\n", + " 'Cavia Inc.',\n", + " 'The Code Monkeys',\n", + " 'Amusement Vision',\n", + " 'Genius Sonority Inc., Disney Interactive Studios',\n", + " 'Sports Interactive',\n", + " 'Genki',\n", + " 'Blue Castle Games',\n", + " 'Barking Lizards',\n", + " 'Zoe Mode',\n", + " 'Kush Games',\n", + " 'Nihilistic',\n", + " 'WayForward',\n", + " 'Kaos Studios',\n", + " 'Hellbent Games',\n", + " 'Blitz Games',\n", + " 'BigPark',\n", + " 'Planet Moon Studios',\n", + " 'Blue Byte, Related Designs',\n", + " 'EA Bright Light',\n", + " 'Digital Extremes, 2K Marin',\n", + " 'Sand Grain Studios',\n", + " 'Flagship',\n", + " 'PlatinumGames',\n", + " 'Danger Close',\n", + " 'Barnstorm Games',\n", + " 'Incognito Inc.',\n", + " 'Exient Entertainment',\n", + " 'Codemasters',\n", + " 'Playground Games',\n", + " 'Arzest',\n", + " 'Crytek',\n", + " 'Crystal Dynamics',\n", + " 'Sega, Sonic Team',\n", + " 'Z-Axis, Ltd.',\n", + " 'Now Production',\n", + " 'Eidos Montreal',\n", + " 'Square Enix, Think and Feel',\n", + " 'The Coalition',\n", + " 'Pitbull Syndicate',\n", + " 'Codemasters Birmingham',\n", + " 'Rockstar Vienna',\n", + " 'Remedy Entertainment',\n", + " 'Steel Monkeys',\n", + " 'Acclaim',\n", + " 'Radical Entertainment',\n", + " 'Good-Feel',\n", + " 'SCEA',\n", + " 'Namco Bandai Games America, Namco Bandai Games',\n", + " 'Creatures Inc.',\n", + " 'Pocket Studios',\n", + " 'M2',\n", + " 'Melbourne House',\n", + " 'Ubisoft Sofia',\n", + " 'ZeniMax Media',\n", + " 'Snowblind Studios',\n", + " 'Lexis Numerique, Virtual Toys',\n", + " 'Opus, Project Sora',\n", + " 'Nintendo, Spike Chunsoft',\n", + " 'CyberConnect2',\n", + " '3G Studios',\n", + " 'Tamsoft',\n", + " \"THQ, Yuke's\",\n", + " 'Virtuos',\n", + " 'Nixxes Software',\n", + " 'Slant Six',\n", + " 'Tarsier Studios, Double Eleven',\n", + " 'Spike Chunsoft Co. Ltd., Spike Chunsoft',\n", + " 'Chris Sawyer',\n", + " '49Games',\n", + " 'Oddworld Inhabitants',\n", + " 'High Voltage Software',\n", + " 'neo Software',\n", + " 'Savage Entertainment',\n", + " 'Nex Entertainment',\n", + " 'Surreal Software',\n", + " 'Climax Group',\n", + " 'Locomotive Games',\n", + " 'Nintendo, Nintendo Software Technology',\n", + " 'Omega Force, Tecmo Koei Games',\n", + " 'Light Weight',\n", + " 'City Interactive',\n", + " 'Vingt-et-un Systems',\n", + " 'K2 LLC',\n", + " 'Ambrella',\n", + " 'Day 1 Studios',\n", + " 'Level 5, Brownie Brown',\n", + " 'United Front Games',\n", + " 'Ryu ga Gotoku Studios',\n", + " 'Atlus',\n", + " 'Ruffian Games',\n", + " 'Mercury Steam',\n", + " 'MTO',\n", + " 'EA Redwood Shores, EA Salt Lake',\n", + " 'Sony Online Entertainment',\n", + " 'Big Sky Software',\n", + " 'Visual Impact',\n", + " 'Ubisoft Shanghai/Paris',\n", + " 'PopCap',\n", + " 'Electronic Arts, Rebellion',\n", + " 'SCEE',\n", + " 'Page 44 Studios',\n", + " 'FreeStyleGames',\n", + " 'Mad Doc Software, Rockstar Vancouver',\n", + " 'Blizzard North',\n", + " 'Arika',\n", + " 'Barnhouse Effect',\n", + " 'Vigil Games',\n", + " 'n-Space',\n", + " 'Black Lantern Studios',\n", + " 'Microsoft Game Studios',\n", + " 'Sega AM3',\n", + " 'Tecmo',\n", + " '8ing/Raizing',\n", + " 'Electronic Arts, EA Redwood Shores',\n", + " 'Splash Damage',\n", + " 'Studio Liverpool',\n", + " 'Red Storm Entertainment, Ubisoft Paris',\n", + " 'Tantalus Interactive, Tantatus, Nintendo',\n", + " 'Crystal Dynamics, Nixxes Software',\n", + " 'Avanquest Software',\n", + " 'Bigbig Studios',\n", + " 'EA Salt Lake',\n", + " 'Longtail Studios',\n", + " 'Powerhead Games',\n", + " 'Epic Games, People Can Fly',\n", + " 'Sega, Dimps Corporation',\n", + " 'Koei',\n", + " 'Hyde',\n", + " 'Project Aces',\n", + " 'Team Ninja, Tecmo',\n", + " 'Razorworks Studios',\n", + " '989 Sports',\n", + " 'UBlart Montpellier',\n", + " 'Free Radical Design',\n", + " 'DreamFactory',\n", + " 'Incinerator Games',\n", + " 'Route 1 Games',\n", + " 'Rockstar London',\n", + " 'Ubisoft Toronto',\n", + " 'Double Fine Productions',\n", + " 'Turtle Rock Studios',\n", + " 'Giants Software',\n", + " 'Vicarious Visions, Neversoft Entertainment',\n", + " 'Blue Tongue Entertainment',\n", + " 'Overworks',\n", + " 'Monster Games Inc.',\n", + " 'Atari',\n", + " 'Coresoft',\n", + " 'SuperBot Entertainment',\n", + " 'Ubisoft Reflections',\n", + " 'Monkey Bar Games',\n", + " 'Alfa System',\n", + " 'Buzz Monkey',\n", + " 'Rockstar Vancouver',\n", + " 'SCEA San Diego Studios',\n", + " 'Neko Entertainment',\n", + " 'Square Enix, h.a.n.d. Inc.',\n", + " 'UDS',\n", + " 'KCE Studios',\n", + " 'Titus Software',\n", + " 'Black Ops Entertainment',\n", + " 'ImaginEngine',\n", + " 'Tantalus Interactive',\n", + " 'Mistwalker, Artoon',\n", + " 'Marvelous AQL',\n", + " 'Xpec',\n", + " 'Mistwalker',\n", + " 'Blitz Games Studios',\n", + " 'KCEK',\n", + " 'Sony Bend',\n", + " 'RED Entertainment',\n", + " 'FASA Studio',\n", + " 'Runecraft',\n", + " 'Big Huge Games',\n", + " 'Media Molecule, United Front Games',\n", + " 'SCi',\n", + " 'Cooking Mama Limited',\n", + " 'Disney Interactive Studios',\n", + " 'Red Fly Studio',\n", + " 'Cygames',\n", + " 'Rage Software',\n", + " 'Toolbox Design',\n", + " 'Team 17',\n", + " 'Dimps Corporation, Namco Bandai Games',\n", + " 'Land Ho!',\n", + " 'Asobo Studio',\n", + " 'Eutechnyx',\n", + " 'Gearbox Software, 3D Realms',\n", + " 'Digital Anvil',\n", + " 'Treyarch, Sledgehammer Games',\n", + " 'Marvelous Entertainment',\n", + " 'EA Seattle',\n", + " 'Big Blue Bubble Inc.',\n", + " 'Indie Built',\n", + " 'Ludia Inc.',\n", + " 'Evolution Games',\n", + " 'Atlus Co.',\n", + " 'Capcom, Pipeworks Software, Inc.',\n", + " 'Gevo Entertainment',\n", + " 'Gorilla Systems',\n", + " 'Guerilla Cambridge',\n", + " 'Marvelous',\n", + " 'Gorilla Games',\n", + " 'Deibus Studios',\n", + " 'Square Enix, Tri-Ace',\n", + " 'Novarama',\n", + " 'Sumo Digital, Playground Games',\n", + " 'Trilobyte',\n", + " 'Silicon Knights',\n", + " 'Digital Illusions',\n", + " 'Kush Games, Visual Concepts',\n", + " 'iNiS',\n", + " 'EA Canada, Nihilistic',\n", + " 'Eden Studios',\n", + " 'David A. Palmer Productions',\n", + " 'Artificial Mind and Movement, Polygon Magic',\n", + " 'Acclaim Studios Austin',\n", + " 'Tetris Online, Inc',\n", + " 'Dancing Dots',\n", + " 'Piranha Games',\n", + " 'LucasArts, Red Fly Studio',\n", + " 'Game Republic',\n", + " 'Project Soul',\n", + " 'Kouyousha',\n", + " 'Propaganda Games',\n", + " 'JGI Entertainment',\n", + " 'Digital Extremes',\n", + " 'Brownie Brown',\n", + " 'Natsume',\n", + " 'Arc System Works',\n", + " 'Takara',\n", + " 'CyberConnect2, Racjin',\n", + " 'Dearsoft',\n", + " 'Paradox Development',\n", + " '2K Australia',\n", + " 'Realism Ltd',\n", + " 'Bandai',\n", + " 'Human Soft',\n", + " 'Jester Interactive',\n", + " 'Equinoxe',\n", + " 'Pacific Coast Power & Light',\n", + " 'Koei, Omega Force',\n", + " 'id Software, Nerve Software',\n", + " 'Eighting, Genius Sonority Inc.',\n", + " 'Reality Pump',\n", + " 'Virtucraft',\n", + " 'Illusion Softworks',\n", + " 'SCEA, Sims',\n", + " 'Kalypso',\n", + " 'Midway Studios - Los Angeles',\n", + " 'Ubisoft Milan',\n", + " 'Fuse Games Limited',\n", + " 'Pyramid',\n", + " 'Hypnos Entertainment',\n", + " 'Black Isle Studios',\n", + " 'Gaijin Entertainment',\n", + " 'Eden',\n", + " 'Blue Fang Games',\n", + " 'Sanzaru Games',\n", + " 'Tomy Corporation',\n", + " 'Secret Level',\n", + " 'Nerve Software',\n", + " 'Trion Worlds',\n", + " 'BioWare, Demiurge Studios',\n", + " 'Engine Software',\n", + " 'RED Entertainment, Artdink',\n", + " 'Cunning Developments',\n", + " 'Starbreeze',\n", + " 'Delphine Software International',\n", + " 'Gameloft',\n", + " 'Grasshopper Manufacture',\n", + " 'Shift, Bandai Namco Games',\n", + " 'Dimps Corporation, SCE Japan Studio',\n", + " 'Krome Studios, Screenlife Games',\n", + " 'Suzak',\n", + " 'Iron Galaxy Studios',\n", + " 'GenePool',\n", + " 'Ubisoft Casablanca',\n", + " 'Epicenter Studios',\n", + " 'KCEA',\n", + " 'Adrenium',\n", + " 'Juice Games',\n", + " 'id Software, Raven Software',\n", + " 'SEGA Racing Studio',\n", + " 'Clover Studio',\n", + " 'SuperVillain Studios',\n", + " 'EA Sports, EA Canada',\n", + " 'MagicWand',\n", + " 'Media Vision, Contrail',\n", + " 'Paon Corporation',\n", + " 'Lab Rats Games',\n", + " 'Vicious Cycle',\n", + " 'Cinegroupe',\n", + " 'High Impact Games',\n", + " 'Skyworks Technologies',\n", + " 'Robomodo',\n", + " 'Ascaron Entertainment GmbH, Ascaron Entertainment',\n", + " '2K Sports',\n", + " 'FUN Labs',\n", + " 'Appaloosa Interactive',\n", + " 'Vanillaware',\n", + " 'Endemol',\n", + " 'Dreamworks Games',\n", + " 'Atomic Planet Entertainment',\n", + " 'Coldwood Interactive',\n", + " 'Valuewave Co.,Ltd.',\n", + " 'Pam Development',\n", + " 'Ubisoft Romania',\n", + " 'Spicy Horse',\n", + " 'Overkill Software',\n", + " 'Midway Studios - Austin',\n", + " 'Bunkasha Publishing',\n", + " 'Nippon Ichi Software',\n", + " 'Neverland',\n", + " 'Silicon Studio',\n", + " 'Namco Bandai Games, Bandai Namco Games',\n", + " 'Vanilla Ware',\n", + " 'Full-Fat',\n", + " 'Etranges Libellules',\n", + " 'Relic',\n", + " 'Collision Studios',\n", + " 'Anchor',\n", + " 'Racjin',\n", + " 'Magenta Software',\n", + " 'Awesome Studios',\n", + " 'Behaviour Interactive',\n", + " 'Pipe Dream Interactive',\n", + " 'Bullets',\n", + " 'Aspect',\n", + " 'Deep Space',\n", + " 'Inti',\n", + " 'Bam Entertainment',\n", + " 'THQ Digital Studio Phoenix',\n", + " 'Brain Toys',\n", + " 'Hothouse Creations',\n", + " 'Nuevo Retro Games',\n", + " 'Digital Kids',\n", + " 'Yager',\n", + " 'Omega Force, Koei Tecmo Games',\n", + " '4A Games',\n", + " 'Cing',\n", + " 'WXP',\n", + " 'Cerasus Media',\n", + " 'Inevitable Entertainment',\n", + " 'Destineer',\n", + " 'Eighting',\n", + " 'SCEA Sports Studio',\n", + " 'Keen Games',\n", + " 'Storm City Games',\n", + " 'ValuSoft',\n", + " 'High Voltage Software, Ubisoft Paris',\n", + " 'GRIN',\n", + " 'Q-Games',\n", + " 'Raster',\n", + " 'Vivarium',\n", + " 'VU Games',\n", + " 'Machatin, Inc.',\n", + " 'Point of View',\n", + " 'City Interactive, Deck 13',\n", + " 'T&E Soft',\n", + " 'Climax Group, Climax Studios',\n", + " 'HexaDrive',\n", + " 'Jupiter Corporation, Jupiter Multimedia',\n", + " 'Blade Interactive',\n", + " 'Factor 5, SCE/WWS',\n", + " 'SCE Japan Studio, comcept',\n", + " 'WBIE',\n", + " 'Warthog',\n", + " 'AWE Games',\n", + " 'Contraband Entertainment',\n", + " 'Eugen Systems',\n", + " 'Quest',\n", + " 'Kuusou Kagaku',\n", + " 'HandMade Game',\n", + " '7 Studios',\n", + " 'Blue Tongue',\n", + " 'SCS Software',\n", + " 'Humongous Entertainment',\n", + " 'Pocketeers',\n", + " 'Harmonix Music Systems, Backbone Entertainment',\n", + " 'Scholastic, Inc.',\n", + " 'Screenlife Games, WXP',\n", + " 'Totally Games',\n", + " 'Ratbag',\n", + " 'SCEJ',\n", + " 'Razorworks',\n", + " 'New',\n", + " 'Beyond Games',\n", + " 'Teyon',\n", + " 'Ubisoft Barcelona, Ubisoft Reflections',\n", + " 'Eurocom Entertainment Software, Visceral Games',\n", + " 'Nintendo, Headstrong Games',\n", + " \"Shin'en\",\n", + " 'Creations',\n", + " 'Crave',\n", + " 'Vatra',\n", + " 'Treasure',\n", + " 'Human Soft, Ivolgamus',\n", + " 'Eighting/Raizing',\n", + " '505 Games',\n", + " 'Studio Gigante',\n", + " 'Wideload Games Inc.',\n", + " 'Farsight Studios, Crave',\n", + " 'Computer Artworks',\n", + " 'Saffire',\n", + " 'Nintendo, Camelot Software Planning',\n", + " 'Team 17, Two Tribes',\n", + " 'Square Enix, TOSE',\n", + " 'Kuju Entertainment',\n", + " 'Humagade',\n", + " 'Q Entertainment',\n", + " 'Tri-Crescendo',\n", + " 'Tenyo',\n", + " 'LucasArts, Krome Studios',\n", + " 'Idea Factory, Compile Heart',\n", + " 'Kamui',\n", + " 'Ubisoft, Sensory Sweep',\n", + " 'War Drum Studios',\n", + " 'TOYBOX',\n", + " 'Sunrise Interactive',\n", + " 'Hijinx Studios',\n", + " 'Game Machine Studios',\n", + " 'Mastiff',\n", + " 'Gust',\n", + " 'Ritual Entertainment, Avalanche Software',\n", + " 'D3Publisher',\n", + " 'Psygnosis',\n", + " 'Armature Studio',\n", + " 'RedLynx',\n", + " 'Creat Studios',\n", + " 'Phoenix Games Studio',\n", + " 'Nintendo, Intelligent Systems',\n", + " 'Telegames',\n", + " 'Bluehole Studio',\n", + " 'Spike Chunsoft',\n", + " 'Red Storm Entertainment, Ubisoft Montreal',\n", + " 'Saber Interactive',\n", + " 'Idol Minds',\n", + " 'Maximum Games',\n", + " 'Knowledge Adventure Inc.',\n", + " 'Harmonix Music Systems, Demiurge Studios',\n", + " 'Shift',\n", + " 'Torus Games',\n", + " 'Triumph Studios',\n", + " 'DONTNOD Entertainment',\n", + " 'Twisted Pixel Games',\n", + " 'Zoo Games',\n", + " 'Zen Studios',\n", + " 'Victor Interactive Software',\n", + " 'Frogwares, Mistic Software',\n", + " 'Firebrand Games',\n", + " 'Prope',\n", + " 'Wow Entertainment',\n", + " 'Monolith Soft, Banpresto',\n", + " 'Sega Studios San Francisco',\n", + " 'Ganbarion',\n", + " 'Milestone S.r.l',\n", + " 'Red Tribe',\n", + " 'Red Zone Entertainment',\n", + " 'Amuze',\n", + " 'Uacari',\n", + " 'Bugbear',\n", + " 'Cyberlore Studios',\n", + " 'Lightning Fish Games',\n", + " 'Crafts & Meister',\n", + " 'Open Sesame',\n", + " '3DO',\n", + " 'Blueside',\n", + " 'Arcade Moon',\n", + " 'Noise Inc.',\n", + " '2K Games',\n", + " 'Psyonix',\n", + " 'Playbox Limited',\n", + " 'Takara Tomy',\n", + " 'KCEO',\n", + " 'Zombie Studios',\n", + " 'Bandai Namco Games, Artdink',\n", + " 'Pax Softonica',\n", + " 'Zener Works',\n", + " 'RED Entertainment, Spike Chunsoft',\n", + " 'Cattle Call',\n", + " 'Inland Productions',\n", + " 'Take-Two Interactive',\n", + " 'CokeM Interactive',\n", + " 'ITL',\n", + " 'Sandlot',\n", + " 'Hypnotix',\n", + " 'Vir2L Studios',\n", + " 'Airtight Games',\n", + " 'Deep Silver Dambuster Studios',\n", + " 'WildTangent',\n", + " 'Destination Software',\n", + " 'Brash Entertainment',\n", + " 'Haemimont',\n", + " 'High Voltage Software, Backbone Entertainment',\n", + " 'Nadeo',\n", + " 'Impulse Games',\n", + " 'Sennari Interactive',\n", + " 'Gas Powered Games',\n", + " 'Tantatus',\n", + " 'Starfish',\n", + " 'Buena Vista Interactive',\n", + " 'Cohort Studios',\n", + " 'Ubisoft, Powerhead Games',\n", + " 'EA Canada, EA Vancouver',\n", + " 'Inti Creates',\n", + " 'Fizz Factor',\n", + " 'Ion Storm',\n", + " 'SNK Playmore',\n", + " 'Smart Bomb Interactive',\n", + " 'Amaze Entertainment, Griptonite Games',\n", + " 'SunSoft',\n", + " 'Lancarse, Atlus',\n", + " 'Capcom, Klein Computer Entertainment',\n", + " 'Terminal Reality, 4mm Games',\n", + " 'AI',\n", + " 'Eidos Interactive',\n", + " 'Smack Down Productions',\n", + " 'Nobilis',\n", + " 'Polygon Magic',\n", + " 'Buzz Monkey, EA Montreal',\n", + " 'Atlus, Dingo Inc.',\n", + " 'Opus',\n", + " 'Venom Games',\n", + " 'Game Republic, JapanStudio',\n", + " 'CodeFire',\n", + " 'Phantagram',\n", + " 'Mercury Steam, Alchemic Productions',\n", + " 'SScholastic Media',\n", + " 'Access Games',\n", + " 'Image Epoch, Imageepoch',\n", + " 'Human Head Studios',\n", + " 'Big Red Button Entertainment',\n", + " 'Blue Byte',\n", + " 'Wildfire Studios',\n", + " 'MumboJumbo',\n", + " 'Sidhe Interactive',\n", + " 'Inti, Inti Creates',\n", + " 'Magix',\n", + " 'Mucky Foot Productions',\n", + " 'Denyu-Sha',\n", + " 'Ronin Entertainment',\n", + " 'Disney Interactive',\n", + " 'Artdink',\n", + " 'Shade',\n", + " 'Prolific',\n", + " 'SCE Studio Cambridge',\n", + " 'Sinister Games',\n", + " 'Banpresto, SoftMax',\n", + " 'Mahou',\n", + " 'Graphic State',\n", + " 'Wizarbox',\n", + " 'Hyperspace Cowgirls',\n", + " 'Related Designs',\n", + " 'The Workshop',\n", + " 'Neversoft Entertainment, Underground Development',\n", + " 'Simon & Schuster',\n", + " 'Banpresto',\n", + " 'DoubleTap Games',\n", + " 'Mistic Software',\n", + " 'IR Gurus',\n", + " 'LightBox Interactive',\n", + " 'Akella',\n", + " 'Game Brains',\n", + " 'Circus Freak',\n", + " 'Infinite Interactive',\n", + " 'Wargaming.net',\n", + " 'Game Titan',\n", + " 'Sacnoth',\n", + " 'Cave',\n", + " 'Sanuk Games',\n", + " 'Just Add Monsters',\n", + " 'Sims',\n", + " 'Volatile Games',\n", + " 'Media Vision',\n", + " 'Ignition Entertainment',\n", + " 'Zindagi Games',\n", + " 'Zoom',\n", + " 'Sensory Sweep',\n", + " 'Telltale Games',\n", + " 'Sega Toys',\n", + " 'Presto Studios',\n", + " 'Ornith',\n", + " 'Zoe Mode, HB Studios Multimedia',\n", + " 'Activision, FreeStyleGames',\n", + " 'Attention To Detail',\n", + " 'Crawfish Interactive',\n", + " 'Rockstar Toronto, Rockstar Leeds',\n", + " 'HotGen',\n", + " 'Amble',\n", + " 'Gusto Games',\n", + " 'GameMill Publishing, 1st Playable Productions',\n", + " 'The Learning Company',\n", + " 'Mac Play, MacPlay',\n", + " 'Ubisoft Vancouver',\n", + " 'Majesco Games',\n", + " 'TimeGate Studios',\n", + " 'Pacific Century Cyber Works',\n", + " 'LDW, Big Fish Games',\n", + " 'Rocksteady Studios, Virtuos',\n", + " 'Smilebit',\n", + " 'Blue Shift',\n", + " 'Rovio Mobile, Rovio Entertainment',\n", + " 'Metro',\n", + " 'iWin',\n", + " 'Treyarch, Shaba Games',\n", + " 'Prokion',\n", + " '2K Shanghai',\n", + " 'Artech Studios',\n", + " \"Crispy's\",\n", + " 'Left Field Productions',\n", + " 'Mitchell',\n", + " 'Activision Value',\n", + " 'Cyanide, Cyanide Studios',\n", + " 'AQ Interactive',\n", + " 'Starfish SD',\n", + " 'FuRyu',\n", + " 'Sony Interactive Entertainment',\n", + " 'InXile Entertainment',\n", + " '2015',\n", + " 'Tornado Studios',\n", + " 'Stainless Games',\n", + " 'ZootFly',\n", + " 'Empire Interactive',\n", + " 'Southend Interactive',\n", + " 'Amaze',\n", + " \"Y's K\",\n", + " 'Data Design Interactive',\n", + " 'Bec',\n", + " 'Io Interactive, Nixxes Software',\n", + " 'Handheld Games',\n", + " 'Tamsoft, D3Publisher',\n", + " 'Falcom',\n", + " 'Metro Graphics',\n", + " 'Lucky Chicken',\n", + " 'Matrix Software, Marvelous Entertainment',\n", + " 'Nautilus',\n", + " 'Hasbro Interactive',\n", + " 'Frogwares',\n", + " 'Oxygen Interactive',\n", + " 'Revolution Software',\n", + " 'Larian Studios',\n", + " 'Blueshift',\n", + " 'Compile Heart',\n", + " 'SolWorks',\n", + " 'Magic Pixel Games',\n", + " 'Gratuitous Games',\n", + " 'Sanrio Digital',\n", + " 'Griffin International',\n", + " 'K2',\n", + " 'Hudson, NATSUME ATARI Inc.',\n", + " 'Jet Black Games',\n", + " 'Bits Studios',\n", + " 'Piranha Bytes',\n", + " 'Alphadream Corporation',\n", + " 'Tecmo Koei Games',\n", + " 'Phoenix Interactive Entertainment',\n", + " 'Tecmo, Ntreev Soft',\n", + " 'Monumental Games',\n", + " 'Climax Entertainment',\n", + " 'Aspect, Takara Tomy',\n", + " 'Secret Stash Games',\n", + " 'GungHo',\n", + " 'Beyond Reality',\n", + " 'Fall Line Studio',\n", + " 'SoftMax',\n", + " 'Bit Town',\n", + " 'Phoenix Entertainment',\n", + " 'Career Soft',\n", + " 'Ubisoft Sao Paulo',\n", + " 'Stealth Studios',\n", + " 'Mobius Entertainment',\n", + " 'Pseudo Interactive',\n", + " 'Rhino Studios',\n", + " 'Ivory Tower',\n", + " 'Backbone Vancouver',\n", + " 'Irem',\n", + " 'Kodiak Interactive',\n", + " 'Digital Fiction',\n", + " 'MASA Group',\n", + " 'Classic Media Distribution Limited',\n", + " 'Swordfish Studios',\n", + " 'ThatGameCompany',\n", + " 'Creative Patterns',\n", + " 'Osiris Studios',\n", + " 'Deep Silver, Sproing Interactive Media, Sproing',\n", + " 'Gunnar Games',\n", + " '2XL Games',\n", + " 'Super X Studios',\n", + " 'Jellyvision, Iron Galaxy Studios',\n", + " 'Bongfish',\n", + " 'Cranky Pants Games',\n", + " 'Sun-Tec',\n", + " 'Alpha Unit',\n", + " 'Gimagin Games',\n", + " 'Sanzaru Games, Sanzaru Games, Inc.',\n", + " 'CCP',\n", + " 'Hitmaker',\n", + " 'SCEA, Think and Feel',\n", + " 'MicroProse, n-Space',\n", + " 'Studio Saizensen',\n", + " 'Ubisoft Annecy',\n", + " 'Pyro Studios',\n", + " 'WideScreen Games',\n", + " 'Gaming Minds Studios',\n", + " 'Omega Force, Koei Canada',\n", + " 'Aspyr',\n", + " 'Cauldron Ltd.',\n", + " 'Sega, Tom Create',\n", + " 'Mad Catz',\n", + " 'Examu',\n", + " 'Merscom LLC',\n", + " 'Vivendi Games',\n", + " 'RFX Interactive',\n", + " 'FeelPlus',\n", + " 'Spiders',\n", + " 'GCP1',\n", + " 'Nordcurrent',\n", + " 'Zono Inc.',\n", + " 'Software Creations',\n", + " 'Pixel Tales',\n", + " 'Magic Rings',\n", + " 'Artificial Mind and Movement, EA Redwood Shores',\n", + " 'Santa Cruz Games',\n", + " 'Seta Corporation',\n", + " 'BottleRocket Entertainment',\n", + " 'Skip Ltd.',\n", + " 'SME Dynamic Systems Limited',\n", + " 'Game Sauce',\n", + " 'Cinemaware',\n", + " 'Games Farm',\n", + " 'Ubisoft, Ludia Inc.',\n", + " 'Tecmo Koei Canada',\n", + " ...]" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df=videoReview\n", + "df['Developer'].unique().tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(16719, 7)\n" + ] + }, + { + "data": { + "text/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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NamePlatformGenrePublisherUser_ScoreDeveloperRating
0Wii SportsWiiSportsNintendo8NintendoE
1Super Mario Bros.NESPlatformNintendoNaNNaNNaN
2Mario Kart WiiWiiRacingNintendo8.3NintendoE
3Wii Sports ResortWiiSportsNintendo8NintendoE
4Pokemon Red/Pokemon BlueGBRole-PlayingNintendoNaNNaNNaN
5TetrisGBPuzzleNintendoNaNNaNNaN
6New Super Mario Bros.DSPlatformNintendo8.5NintendoE
7Wii PlayWiiMiscNintendo6.6NintendoE
8New Super Mario Bros. WiiWiiPlatformNintendo8.4NintendoE
9Duck HuntNESShooterNintendoNaNNaNNaN
\n", + "
" + ], + "text/plain": [ + " Name Platform Genre Publisher User_Score \\\n", + "0 Wii Sports Wii Sports Nintendo 8 \n", + "1 Super Mario Bros. NES Platform Nintendo NaN \n", + "2 Mario Kart Wii Wii Racing Nintendo 8.3 \n", + "3 Wii Sports Resort Wii Sports Nintendo 8 \n", + "4 Pokemon Red/Pokemon Blue GB Role-Playing Nintendo NaN \n", + "5 Tetris GB Puzzle Nintendo NaN \n", + "6 New Super Mario Bros. DS Platform Nintendo 8.5 \n", + "7 Wii Play Wii Misc Nintendo 6.6 \n", + "8 New Super Mario Bros. Wii Wii Platform Nintendo 8.4 \n", + "9 Duck Hunt NES Shooter Nintendo NaN \n", + "\n", + " Developer Rating \n", + "0 Nintendo E \n", + "1 NaN NaN \n", + "2 Nintendo E \n", + "3 Nintendo E \n", + "4 NaN NaN \n", + "5 NaN NaN \n", + "6 Nintendo E \n", + "7 Nintendo E \n", + "8 Nintendo E \n", + "9 NaN NaN " + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#We don’t want to work with all the data in these examples. \n", + "#We just want to concentrate on the categorical variables. \n", + "#Let’s us create a subset of the dataframe to contains these.\n", + "df = videoReview.select_dtypes(include=['object']).copy()\n", + "print(df.shape)\n", + "df.head(10)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Name 0\n", + "Platform 0\n", + "Genre 0\n", + "Publisher 0\n", + "User_Score 0\n", + "Developer 0\n", + "Rating 0\n", + "dtype: int64" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Now do a little data clean up by removing NaN (nulls)\n", + "df.dropna(inplace=True)\n", + "df.isnull().sum()\n", + "#NB: Before removing NaN records you could clean the data and replace these with other values" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(9873, 7)\n" + ] + } + ], + "source": [ + "print(df.shape)\n", + "#Our data set has been reduced by approx 7,000 records!" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "#Question: After running all of this code, modify the above to do better replacement of NaN \n", + "# and see what impact that has." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/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", + "
NamePlatformGenrePublisherUser_ScoreDeveloperRating
count9873987398739873987398739873
unique602017123299616568
topMadden NFL 07PS2ActionElectronic ArtstbdUbisoftE
freq914782177113723742043949
\n", + "
" + ], + "text/plain": [ + " Name Platform Genre Publisher User_Score Developer \\\n", + "count 9873 9873 9873 9873 9873 9873 \n", + "unique 6020 17 12 329 96 1656 \n", + "top Madden NFL 07 PS2 Action Electronic Arts tbd Ubisoft \n", + "freq 9 1478 2177 1137 2374 204 \n", + "\n", + " Rating \n", + "count 9873 \n", + "unique 8 \n", + "top E \n", + "freq 3949 " + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Output some summary statistics for the data\n", + "df.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/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", + "
countuniquetopfreq
Name98736020Madden NFL 079
Platform987317PS21478
Genre987312Action2177
Publisher9873329Electronic Arts1137
User_Score987396tbd2374
Developer98731656Ubisoft204
Rating98738E3949
\n", + "
" + ], + "text/plain": [ + " count unique top freq\n", + "Name 9873 6020 Madden NFL 07 9\n", + "Platform 9873 17 PS2 1478\n", + "Genre 9873 12 Action 2177\n", + "Publisher 9873 329 Electronic Arts 1137\n", + "User_Score 9873 96 tbd 2374\n", + "Developer 9873 1656 Ubisoft 204\n", + "Rating 9873 8 E 3949" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#transpose it to display differently\n", + "df.describe().transpose()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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yhYAAEACyhYAAEACyhYAAEACyhYAAEACyhYAAEACyhYAAEACyhYAAEACyhYAAEACyhYAAEACyhYAAEACyhYAAEACyhYAAEACyhYAAEACyhYAAEACyhYAAEACyhYAAEACyhYAAEACyhYAAEACyhYAAEACyhYAAEACyhYAAEACyhYAAEACyhYAAEACyhYAAEACyhYAAEACyhYAAEACyhYAAEACyhYAAEACyhYAAEACBfUdgO1vzrVD6jtCDd0vnFTfEQAAoM7ZswUAAJCAsgUAAJCAsgUAAJCAsgUAAJCAsgUAAJCAsgUAAJCAsgUAAJCAsgUAAJCAsgUAAJCAsgUAAJCAsgUAAJCAsgUAAJCAsgUAAJCAsgUAAJCAsgUAAJCAsgUAAJBAvZatv/71r3HCCSdEWVlZ5HK5uPfee/Pz1q5dGxdddFF07do1WrRoEWVlZXHGGWfE22+/XeMxqqurY+jQodGuXbto0aJFnHjiibF48eIaY5YtWxYDBgyI4uLiKC4ujgEDBsR77723HdYQAADYWdVr2Vq5cmUcfPDBcd1119Wat2rVqnjmmWfixz/+cTzzzDNx9913x0svvRQnnnhijXHDhg2Le+65J6ZNmxaPPfZYrFixIvr27Rvr16/Pj+nfv3/Mmzcvpk+fHtOnT4958+bFgAEDkq8fAACw8yqozx9+/PHHx/HHH7/JecXFxTFjxowa0yZOnBhf+tKX4s0334w99tgjqqqqYvLkyXHbbbfFMcccExERU6dOjfLy8njooYfi2GOPjb///e8xffr0ePLJJ+Owww6LiIibbropevToEQsWLIh999037UoCAAA7pQZ1zlZVVVXkcrn43Oc+FxERc+fOjbVr10afPn3yY8rKyqJLly4xa9asiIh44oknori4OF+0IiK+/OUvR3FxcX7MplRXV8fy5ctr3AAAALZUgylbH3zwQVx88cXRv3//aN26dUREVFZWRpMmTWKXXXapMbakpCQqKyvzY9q3b1/r8dq3b58fsynjxo3Ln+NVXFwc5eXldbg2AADAZ12DKFtr166NU089NTZs2BDXX3/9J47PsixyuVz+/of/vbkxHzV69OioqqrK3xYtWrR14QEAgJ3SDl+21q5dG/369YuFCxfGjBkz8nu1IiJKS0tjzZo1sWzZshrLLF26NEpKSvJj3nnnnVqP+89//jM/ZlOKioqidevWNW4AAABbaocuWxuL1ssvvxwPPfRQtG3btsb8bt26RWFhYY0LaSxZsiTmz58fPXv2jIiIHj16RFVVVTz99NP5MU899VRUVVXlxwAAANS1er0a4YoVK+KVV17J31+4cGHMmzcv2rRpE2VlZfGd73wnnnnmmbj//vtj/fr1+XOs2rRpE02aNIni4uIYNGhQjBgxItq2bRtt2rSJkSNHRteuXfNXJ9x///3juOOOi8GDB8eNN94YERFnn3129O3b15UIAQCAZOq1bM2ZMyeOPPLI/P3hw4dHRMTAgQNjzJgx8bvf/S4iIr7whS/UWO7hhx+OioqKiIgYP358FBQURL9+/WL16tVx9NFHx5QpU6Jx48b58bfffntccMEF+asWnnjiiZv8214AAAB1pV7LVkVFRWRZttn5Hzdvo6ZNm8bEiRNj4sSJmx3Tpk2bmDp16lZlBAAA2Bo79DlbAAAADZWyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkICyBQAAkEBBfQeALTXn/iH1HaGG7n0n1XcEAAB2YPZsAQAAJKBsAQAAJKBsAQAAJKBsAQAAJKBsAQAAJKBsAQAAJKBsAQAAJKBsAQAAJKBsAQAAJKBsAQAAJKBsAQAAJFCvZeuvf/1rnHDCCVFWVha5XC7uvffeGvOzLIsxY8ZEWVlZNGvWLCoqKuKFF16oMaa6ujqGDh0a7dq1ixYtWsSJJ54YixcvrjFm2bJlMWDAgCguLo7i4uIYMGBAvPfee4nXDgAA2JnVa9lauXJlHHzwwXHddddtcv5VV10V11xzTVx33XUxe/bsKC0tjd69e8f777+fHzNs2LC45557Ytq0afHYY4/FihUrom/fvrF+/fr8mP79+8e8efNi+vTpMX369Jg3b14MGDAg+foBAAA7r4L6/OHHH398HH/88Zucl2VZTJgwIS655JI46aSTIiLi1ltvjZKSkrjjjjvinHPOiaqqqpg8eXLcdtttccwxx0RExNSpU6O8vDweeuihOPbYY+Pvf/97TJ8+PZ588sk47LDDIiLipptuih49esSCBQti33333T4rCwAA7FR22HO2Fi5cGJWVldGnT5/8tKKioujVq1fMmjUrIiLmzp0ba9eurTGmrKwsunTpkh/zxBNPRHFxcb5oRUR8+ctfjuLi4vyYTamuro7ly5fXuAEAAGypHbZsVVZWRkRESUlJjeklJSX5eZWVldGkSZPYZZddPnZM+/btaz1++/bt82M2Zdy4cflzvIqLi6O8vHyb1gcAANi51OthhFsil8vVuJ9lWa1pH/XRMZsa/0mPM3r06Bg+fHj+/vLly2sVrjkXDPnYHPWh+y8m1XcEAAAgduA9W6WlpRERtfY+LV26NL+3q7S0NNasWRPLli372DHvvPNOrcf/5z//WWuv2YcVFRVF69ata9wAAAC21A5btjp27BilpaUxY8aM/LQ1a9bEzJkzo2fPnhER0a1btygsLKwxZsmSJTF//vz8mB49ekRVVVU8/fTT+TFPPfVUVFVV5ccAAADUtXo9jHDFihXxyiuv5O8vXLgw5s2bF23atIk99tgjhg0bFmPHjo3OnTtH586dY+zYsdG8efPo379/REQUFxfHoEGDYsSIEdG2bdto06ZNjBw5Mrp27Zq/OuH+++8fxx13XAwePDhuvPHGiIg4++yzo2/fvq5ECAAAJFOvZWvOnDlx5JFH5u9vPEdq4MCBMWXKlBg1alSsXr06zj333Fi2bFkcdthh8eCDD0arVq3yy4wfPz4KCgqiX79+sXr16jj66KNjypQp0bhx4/yY22+/PS644IL8VQtPPPHEzf5tLwAAgLpQr2WroqIisizb7PxcLhdjxoyJMWPGbHZM06ZNY+LEiTFx4sTNjmnTpk1MnTp1W6ICAAB8KjvsOVsAAAANmbIFAACQgLIFAACQgLIFAACQgLIFAACQgLIFAACQgLIFAACQgLIFAACQgLIFAACQgLIFAACQ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Ytddd42rr776E69UCAAAsDPYqrL18MMP13UOAACAz5StKlsb/fOf/4wFCxZELpeLffbZJ3bddde6ygUARMSQ++fUd4QaJvXtXt8RABqMrbpAxsqVK+N73/te7LbbbnHEEUfEV7/61SgrK4tBgwbFqlWr6jojAABAg7NVZWv48OExc+bM+P3vfx/vvfdevPfee3HffffFzJkzY8SIEXWdEQAAoMHZqsMI//d//zd++9vfRkVFRX7a1772tWjWrFn069cvbrjhhrrKBwAA0CBt1Z6tVatWRUlJSa3p7du3dxghAABAbGXZ6tGjR/z0pz+NDz74ID9t9erVcemll0aPHj3qLBwAAEBDtVWHEU6YMCGOP/746NChQxx88MGRy+Vi3rx5UVRUFA8++GBdZwQAAGhwtqpsde3aNV5++eWYOnVq/OMf/4gsy+LUU0+N7373u9GsWbO6zggAANDgbFXZGjduXJSUlMTgwYNrTL/55pvjn//8Z1x00UV1Eg4AAKCh2qpztm688cbYb7/9ak0/8MADY9KkSdscCgAAoKHbqrJVWVkZu+22W63pu+66ayxZsmSbQwEAADR0W3UYYXl5eTz++OPRsWPHGtMff/zxKCsrq5NgAFCXhsx5pL4j1DKpe0V9RwAgoa0qW2eddVYMGzYs1q5dG0cddVRERPz5z3+OUaNGxYgRI+o0IAAAQEO0VWVr1KhR8e9//zvOPffcWLNmTURENG3aNC666KIYPXp0nQYEAABoiLaqbOVyubjyyivjxz/+cfz973+PZs2aRefOnaOoqKiu8wEAADRIW1W2NmrZsmUceuihdZUFAADgM2OrrkYIAADAx1O2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAEtjhy9Zbb70Vp59+erRt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ixYt+nThAQCAndoOXbbmzp0bS5cujW7dukVBQUEUFBTEzJkz4xe/+EUUFBTk92h9dA/V0qVL8/NKS0tjzZo1sWzZss2O2ZSioqJo3bp1jRsAAMCW2qHL1tFHHx3PP/98zJs3L3/r3r17fPe734158+ZFp06dorS0NGbMmJFfZs2aNTFz5szo2bNnRER069YtCgsLa4xZsmRJzJ8/Pz8GAACgru3Q52y1atUqunTpUmNaixYtom3btvnpw4YNi7Fjx0bnzp2jc+fOMXbs2GjevHn0798/IiKKi4tj0KBBMWLEiGjbtm20adMmRo4cGV27dq11wQ0AAIC6skOXrS0xatSoWL16dZx77rmxbNmyOOyww+LBBx+MVq1a5ceMHz8+CgoKol+/frF69eo4+uijY8qUKdG4ceN6TA4AAHyWNbiy9cgjj9S4n8vlYsyYMTFmzJjNLtO0adOYOHFiTJw4MW04AACA/2+HPmcLAACgoVK2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAEiio7wAAO7Mhc35Y3xFqmNR9bH1HAIDPDHu2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAElC2AAAAEiio7wAAdeGHc4bUd4RaxnafVN8RAIB6ZM8WAABAAsoWAABAAsoWAABAAsoWAABAAsoWAABAAjt02Ro3blwceuih0apVq2jfvn1885vfjAULFtQYk2VZjBkzJsrKyqJZs2ZRUVERL7zwQo0x1dXVMXTo0GjXrl20aNEiTjzxxFi8ePH2XBUAAGAns0OXrZkzZ8Z5550XTz75ZMyYMSPWrVsXffr0iZUrV+bHXHXVVXHNNdfEddddF7Nnz47S0tLo3bt3vP/++/kxw4YNi3vuuSemTZsWjz32WKxYsSL69u0b69evr4/VAgAAdgI79N/Zmj59eo37t9xyS7Rv3z7mzp0bRxxxRGRZFhMmTIhLLrkkTjrppIiIuPXWW6OkpCTuuOOOOOecc6KqqiomT54ct912WxxzzDERETF16tQoLy+Phx56KI499tjtvl4AAMBn3w69Z+ujqqqqIiKiTZs2ERGxcOHCqKysjD59+uTHFBUVRa9evWLWrFkRETF37txYu3ZtjTFlZWXRpUuX/JhNqa6ujuXLl9e4AQAAbKkdes/Wh2VZFsOHD4+vfOUr0aVLl4iIqKysjIiIkpKSGmNLSkrijTfeyI9p0qRJ7LLLLrXGbFx+U8aNGxeXXnppXa4CwGfCkDmT6ztCLZO6D6rvCABQS4PZs3X++efHc889F3feeWeteblcrsb9LMtqTfuoTxozevToqKqqyt8WLVq0dcEBAICdUoMoW0OHDo3f/e538fDDD0eHDh3y00tLSyMiau2hWrp0aX5vV2lpaaxZsyaWLVu22TGbUlRUFK1bt65xAwAA2FI7dNnKsizOP//8uPvuu+Mvf/lLdOzYscb8jh07RmlpacyYMSM/bc2aNTFz5szo2bNnRER069YtCgsLa4xZsmRJzJ8/Pz8GAACgru3Q52ydd955cccdd8R9990XrVq1yu/BKi4ujmbNmkUul4thw4bF2LFjo3PnztG5c+cYO3ZsNG/ePPr3758fO2jQoBgxYkS0bds22rRpEyNHjoyuXbvmr04IAABQ13bosnXDDTdERERFRUWN6bfcckuceeaZERExatSoWL16dZx77rmxbNmyOOyww+LBBx+MVq1a5cePHz8+CgoKol+/frF69eo4+uijY8qUKdG4cePttSoAAMBOZocuW1mWfeKYXC4XY8aMiTFjxmx2TNOmTWPixIkxceLEOkwHAMDOZM6QOfUdoYbuk7rXdwQ+wQ59zhYAAEBDpWwBAAAkoGwBAAAkoGwBAAAkoGwBAAAkoGwBAAAkoGwBAAAkoGwBAAAkoGwBAAAkoGwBAAAkoGwBAAAkoGwBAAAkoGwBAAAkoGwBAAAkUFDfAQAAgDTmDLmrviPU0n3SKfUdYbuxZwsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACCBgvoOAACwIxhywZz6jlDDpF90r+8IwDayZwsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACABZQsAACCBgvoOAAAA8GFzhlxR3xFq6D7pkq1azp4tAACABHaqsnX99ddHx44do2nTptGtW7d49NFH6zsSAADwGbXTlK277rorhg0bFpdcckk8++yz8dWvfjWOP/74ePPNN+s7GgAA8Bm005Sta665JgYNGhRnnXVW7L///jFhwoQoLy+PG264ob6jAQAAn0E7xQUy1qxZE3Pnzo2LL764xvQ+ffrErFmzNrlMdXV1VFdX5+9XVVVFRMTy5cvz01asWZMg7bb5cL7NWfHBjpV7SzJHRKxY1fByr1yxY2WO2LLcq3ew3FuSuXoHyxyxZbnXrKj+xDHb05ZlXr0dknw6W5Z75XZI8ulsUe5VK7ZDki23RZk/2LEyR2xh7jU7Vu4tyfzBDpY5Ystyr9rBcm/xd5EGmHvFmlXbIcmns2W5P9gOSbbcRzNvvJ9l2ccul8s+acRnwNtvvx277757PP7449GzZ8/89LFjx8att94aCxYsqLXMmDFj4tJLL92eMQEAgAZk0aJF0aFDh83O3yn2bG2Uy+Vq3M+yrNa0jUaPHh3Dhw/P39+wYUP8+9//jrZt2252ma21fPnyKC8vj0WLFkXr1q3r9LFTaYiZIxpm7oaYOULu7akhZo5omLkbYuaIhpm7IWaOkHt7aoiZIxpm7oaYOSJt7izL4v3334+ysrKPHbdTlK127dpF48aNo7Kyssb0pUuXRklJySaXKSoqiqKiohrTPve5z6WKGBERrVu3blAbcETDzBzRMHM3xMwRcm9PDTFzRMPM3RAzRzTM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U9566624//77a73+3n///fjNb34Tp59+evTu3TtWrlxZZ4dqbu494re//W2sXbs2Ro4cWWuZc845J1q2bBl33nlnjemXXHJJXH311TFnzpwoKCiI733ve/l5DzzwQJx++ulxwQUXxIsvvhg33nhjTJkyJa644oo6WY+P+jSvxUGDBsXMmTNrHML7+uuvx8MPPxyDBg1Kkm9Lffi7an1u1xHO2UquoqIiHn/88Vi3bl28//778eyzz8YRRxwRvXr1yr/gn3zyyVi9evUO/Ub9Ufvtt1+8/vrr8eUvfzl++MMfRv/+/aNdu3Zx/PHHx89+9rN45513kv3sXC4XN9xwQ/z5z3+OkpKSuPjii2uNOe2006J58+ax++67R+vWreNXv/pVft5rr70Wb7zxRvzmN7+JX//61zFlypSYO3dufOc738mPqaysjJKSkhqPWVJSEuvWravzc9E2evrpp+OOO+6Io48+OoYOHRqHHnpodO3aNfbaa6849dRT4+abb47q6upay3Xo0CGKioqie/fucd5558VZZ52VJF9dZt7o6quvjpUrV0a/fv2SZXz++eejZcuWUVRUFEOGDIl77rknDjjggI9dplGjRrHPPvvE66+/HhERJ598cpx22mnRq1ev2G233eJb3/pWXHfddbXOBUzp0z7XL7/8clx88cVx++23R0FBwXbL+Um2dZvZXrbkfaZnz57RsmXLaNKkSRx66KHRr1+/OOOMM+oh7aZ9+Ll++eWXo1OnTlFYWFjfsWrZ1m1i8eLF8bOf/Sw6dOgQ++yzT51m+6x8hr/yyiuRZVnsu+++Naa3a9cuWrZsGS1btoyLLrooXn755Yj4z2f8jppxo4suuihatmwZzZo1iw4dOkQul6t1jtC0adOic+fOceCBB0bjxo3j1FNPjcmTJ9dJ3s29R7z00ktRXFwcu+22W61lmjRpEp06dap1jtAVV1wRvXr1igMOOCAuvvjimDVrVnzwwQf5eRdffHEMHDgwOnXqFL17947/+Z//iRtvvLFO1uPDPu1r8dhjj42ysrIa56LdcsstUVZWVusX1vVh43fV+tyuI5St5I488shYuXJlzJ49Ox599NHYZ599on379tGrV6+YPXt2/rcse+yxR3Tq1Km+426xLMvyv2G64oororKyMiZNmhQHHHBATJo0Kfbbb794/vnnk/38m2++OZo3bx4LFy6MxYsX15o/fvz4eOaZZ+Lee++NV199NYYPH56ft2HDhqiuro5f//rX8dWvfjUqKipi8uTJ8fDDD8eCBQvy4z76G7SNe+4295u1rXH//fdHy5Yto2nTptGjR4844ogjYuLEidGiRYv4wx/+EK+88kr86Ec/ipYtW8aIESPiS1/6Uq2TUR999NGYM2dOTJo0KSZMmFDrN2Z1rS4yR0TceeedMWbMmLjrrruiffv2yfLuu+++MW/evHjyySfj+9//fgwcODBefPHFT1zuw9t448aN45ZbbonFixfHVVddFWVlZXHFFVfEgQceGEuWLEmWfWuf6/Xr10f//v3j0ksvrfMvn9tzPerbJ73P3HXXXTFv3rz429/+FnfddVfcd999myxl29PmnusPb887gm3dJqqqqqJly5bRokWLKC8vjzVr1sTdd98dTZo0qdOcn7XP8I9uA08//XTMmzcvDjzwwKiurq7XC7xs9EkZN/rBD34Q8+bNi+eeey7+/Oc/R0TE17/+9Vi/fn1+zOTJk+P000/P3z/99NPj7rvvzl8tclt90nvEpmzqtXjQQQfl/72xpC1dujQiIubOnRuXXXZZvnC2bNkyBg8eHEuWLKmT98lteS02btw4Bg4cGFOmTIkNGzZElmVx6623xplnnhmNGzfe5mzbauNzXe/bddKDFMmyLMs6dOiQXXHFFdnIkSOz73//+/np++yzT/bAAw9kFRUV2ZlnnpllWdYgztnKsizr2rVr9vWvf32T86qrq7MDDjggO+OMM5LkmjVrVlZQUJDNmDEj6927d3bUUUd97DHYjz76aBYR2dtvv51lWZb95Cc/yQoKCmqMWbVqVRYR2YMPPphlWZZ99atfzS644IIaY+6+++6soKAgW7NmTZ2sx8CBA7Njjjkme/nll7PXX3/9Ex/3tddeywoKCrKbb755s2P+53/+J9tnn33qJN+m1FXmadOmZc2aNcvuv//+ZFk35+ijj87OPvvsLMs2f87WunXrsl122SU777zzNvs4//73v7N27dplP/nJT5Lk3JbneuP5H40bN87fcrlcftqf//znJJk3JcV2vj183PvM5s7ZGjduXFZQUJCtXr26HhJ//HN9wQUXZC1btqyz969tsa3bxC233JK1atUqe/nll7NXX311s+f31JW6/Ay/+uqrN3n+58ZtKtXFgv71r39luVyuxvlnH7bxvfDuu+/OIiKbNWtWkhwfZ0szZtmmz9l64oknapxr+8ILL2QRkTVq1KjGe2FEZNdff/02593ce8Q111yTRUT21ltv1Vqmuro6a9GiRX49Prq9ZFmWPfvss1lEZAsXLsyyLMuaNm2aXXnlldnLL79c67Z+/fptWoe6eH9+5ZVXslwul82YMSObMWNGlsvlsldeeWWbcn0aW/JdtT636yxzztZ2ceSRR8YjjzwSjzzySFRUVOSn9+rVKx544IF48sknd+jDDz7qL3/5Szz//PO1Lnu6UZMmTeLzn/98jcsN15XVq1fHwIED45xzzoljjjkmfvWrX8Xs2bM/dnd69v9/o7HxN2KHH354rFu3Ll599dX8mI279Pfcc8+IiOjRo0fMmDGjxuM8+OCD0b179zo9DKdFixax9957x5577vmJj7vXXntF8+bNP/Z5zbIs+SFY25r5zjvvjDPPPDPuuOOO+PrXv54066ZsyXN06623xrJlyza7jUdE7LLLLrHbbrsl2c432trnunXr1vH888/HvHnz8rchQ4bk9/Jt7/OK6no7T21r3mci/vNb3nXr1sWaNWu2U9LaNvdc9+/fP1asWBHXX3/9Jperq9/0b6lt3SYaNWoUe++9d3Tq1Gmz5/fUlbr8DN9vv/1i8eLFUVlZWWP67Nmz8+uUQtu2baN3795x3XXXfexrq0+fPtGuXbu46qqrNjk/5XaypRk3Z+OelNWrV0fEf/ZqHXHEEfG3v/2txnvhqFGjtvlQwo97j/j2t78dBQUFcfXVV9dabtKkSbFy5co47bTTtvhnffGLX4wFCxbE3nvvXevWqNG2f43f1tfi5z//+ejVq1fccsstcfPNN0dFRUV8/vOf3+Zc2+rD31Xrc7uOiNhxDuT/DDvyyCPjvPPOi7Vr19a4eEGvXr3i+9//fnzwwQc7bNmqrq6OysrKWL9+fbzzzjsxffr0GDduXPTt2zfOOOOMuP/++2PatGlx6qmnxj777BNZlsXvf//7+OMf/xi33HJLnee5+OKLY8OGDXHllVdGRMQee+wRV199dQwfPjyOO+64ePHFF+Odd96JQw89NFq2bBkvvvhijBo1Kg4//PDYa6+9IiLimGOOiS9+8Yvxve99LyZMmBAbNmyI8847L3r37p0/5GrIkCFx3XXXxfDhw2Pw4MHxxBNPxOTJk5MforfRmDFjYtWqVfG1r30t9txzz3jvvffiF7/4RaxduzZ69+4dERH/5//8n9hjjz3yxyA/9thj8fOf/zyGDh26XTJuTeY777wzzjjjjLj22mvjy1/+cv4LR7NmzfJ/l6Yu/fCHP4zjjz8+ysvL4/33349p06bFI488EtOnT8+PWbVqVVRWVsa6devirbfeirvvvjvGjx8f3//+9/OvyxtvvDHmzZsX3/rWt+Lzn/98fPDBB/HrX/86XnjhhZg4cWKd5/4kn/RcN2rUKLp06VJjmY1/B++j0+vTlmwz9eGT3mc2evfdd/PbzvPPPx/XXnttHHnkkdG6dev6ir5Zhx12WIwaNSpGjBgRb731VnzrW9+KsrKyeOWVV2LSpEnxla98JS688ML6jrlDbhN1+Rnep0+f2H///ePUU0+NK664IsrKyuK5556LkSNHxpAhQ6JVq1apViOuv/76OPzww6N79+4xZsyYOOigg6JRo0Yxe/bs+Mc//hHdunWLFi1axK9+9as4+eST48QTT4wLLrgg9t577/jXv/4V//f//t948803Y9q0afWacaP3338/KisrI8uyWLRoUYwaNSratWsXPXv2jLVr18Ztt90Wl112Wa33vLPOOiuuuuqq+Nvf/hYHH3zwVuX8pPeIq666KkaOHBlNmzaNAQMGRGFhYdx3333xwx/+MEaMGPGpfuH1k5/8JPr27Rvl5eVx8sknR6NGjeK5556L559/Pi6//PKtyr8lPs1rcdCgQTF48OCIiBrnyG8vn/RdtXHjxvW6XTuMcDvYeHjARy8lvmjRoiwiss9//vP5aTvaYYQRkUVEVlBQkO26667ZMccck9188835XdevvvpqNnjw4GyfffbJmjVrln3uc5/LDj300OyWW26p8zyPPPJI1rhx4+zRRx+tNa9Pnz7ZUUcdlf3lL3/JevTokRUXF2dNmzbNOnfunF100UW1Luv51ltvZSeddFLWsmXLrKSkJDvzzDOzd999t9bPO+SQQ7ImTZpke+21V3bDDTfU6fp83K7vv/zlL9m3v/3trLy8PGvSpElWUlKSHXfccTXW/Re/+EV24IEHZs2bN89at26dHXLIIdn111+/zYcVpMzcq1ev/Db14dvAgQOT5P3e976X7bnnnlmTJk2yXXfdNTv66KPzh4p+NE+TJk2y3XbbLevbt292991313icZ555Jjv99NOzjh07ZkVFRVnbtm2zI444Ivvd736XJHeWbftz/VE70qXfN9qa9UhtS95nXnvttRrbb+PGjbMOHTpkgwcP3i5/V2ZzPu653uiuu+7KjjjiiKxVq1ZZixYtsoMOOii77LLL6v3S7xttyTaxvT8X6/ozfMmSJdl//dd/ZXvuuWfWrFmzbL/99ssuu+yy7IMPPki9Ktnbb7+dnX/++VnHjh2zwsLCrGXLltmXvvSl7Gc/+1mNvxs2e/bs7KSTTsp23XXXrKioKNt7772zs88+O3v55Zd3iIx77rlnjdfgrrvumn3ta1/LH9r729/+NmvUqFFWWVm5yZ/RtWvXbOjQoVuVb0veIzZs2JDdd9992Ve/+tWsRYsWWdOmTbNu3brVOjx6Sw4jzLIsmz59etazZ8+sWbNmWevWrbMvfelL2S9/+cutyv9hdfX+vGrVqqy4uDgrLi7OVq1atc25Po0t+a66UX1t17ksq++zxgAAAD57nLMFAACQgLIFAACQgLIFAACQgLIFAACQgLIFAACQgLIFAACQgLIFAACQgLIFwGfWI488ErlcLt57771tfqzHH388unbtGoWFhfHNb35zmx8PgM8+ZQuABu3MM8+MXC4XuVwuCgsLo1OnTjFy5MhYuXLlVj1eRUVFDBs2rNb04cOHxxe+8IVYuHBhTJkyZdtCA7BTKKjvAACwrY477ri45ZZbYu3atfHoo4/GWWedFStXroxTTjmlzn7Gq6++GkOGDIkOHTps9WOsWbMmmjRpUmeZANix2bMFQINXVFQUpaWlUV5eHv3794/vfve7ce+999Ya9+6778Zpp50WHTp0iObNm0fXrl3jzjvvzM8/88wzY+bMmXHttdfm95a9/vrrkcvl4t13343vfe97kcvl8nu2Zs6cGV/60peiqKgodtttt7j44otj3bp1+cerqKiI888/P4YPHx7t2rWL3r175w9tfOCBB+KQQw6JZs2axVFHHRVLly6NP/3pT7H//vtH69at47TTTotVq1alfuoASEjZAuAzp1mzZrF27dpa0z/44IPo1q1b3H///TF//vw4++yzY8CAAfHUU09FRMS1114bPXr0iMGDB8eSJUtiyZIlUV5eHkuWLInWrVvHhAkTYsmSJXHKKafEW2+9FV/72tfi0EMPjb/97W9xww03xOTJk+Pyyy+v8TNvvfXWKCgoiMcffzxuvPHG/PQxY8bEddddF7NmzYpFixZFv379YsKECXHHHXfEH/7wh5gxY0ZMnDgx7RMFQFIOIwTgM+Xpp5+OO+64I44++uha83bfffcYOXJk/v7QoUNj+vTp8Zvf/CYOO+ywKC4ujiZNmkTz5s2jtLQ0P660tDRyuVwUFxfnp19//fVRXl4e1113XeRyudhvv/3i7bffjosuuih+8pOfRKNG//l95t577x1XXXVV/rEqKysjIuLyyy+Pww8/PCIiBg0aFKNHj45XX301OnXqFBER3/nOd+Lhhx+Oiy66qI6fIQC2F3u2AGjw7r///mjZsmU0bdo0evToEUccccQm9wqtX78+rrjiijjooIOibdu20bJly3jwwQfjzTff/NQ/8+9//3v06NEjcrlcftrhhx8eK1asiMWLF+ende/efZPLH3TQQfl/l5SURPPmzfNFa+O0pUuXfupcAOw47NkCoME78sgj44YbbojCwsIoKyuLwsLCiIh48cUXa4y7+uqrY/z48TFhwoTo2rVrtGjRIoYNGxZr1qz51D8zy7IaRWvjtIioMb1FixabXH5jxo3jP3x/47QNGzZ86lwA7DiULQAavBYtWsTee+/9ieMeffTR+MY3vhGnn356RERs2LAhXn755dh///3zY5o0aRLr16//xMc64IAD4n//939rlK5Zs2ZFq1atYvfdd9/KNQHgs8RhhADsNPbee++YMWNGzJo1K/7+97/HOeeckz+HaqO99tornnrqqXj99dfjX//612b3Lp177rmxaNGiGDp0aPzjH/+I++67L37605/G8OHD8+drAbBz82kAwE7jxz/+cXzxi1+MY489NioqKqK0tDS++c1v1hgzcuTIaNy4cRxwwAGx6667bvZ8rt133z3++Mc/xtNPPx0HH3xwDBkyJAYNGhQ/+tGPtsOaANAQ5LKNB5gDAABQZ+zZAgAASEDZAgAASEDZAgAASEDZAgAASEDZAgAASEDZAgAASEDZAgAASEDZAgAASEDZAgAASEDZAgAASEDZAgAASEDZAgAASOD/Affm7/5LRuGNAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#The above table shows the number of unique values in each of the variables. \n", + "#We will use Platform, Genre and Rating for the variable example below.\n", + "#Let's chart these variables.\n", + "\n", + "#check the number of occurances for each variable \n", + "import seaborn as sb\n", + "import matplotlib.pyplot as plt\n", + "\n", + "plt.rcParams['figure.figsize'] = 10, 8\n", + "\n", + "sb.countplot(x='Platform',data=df, palette='hls')" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1sAAAKnCAYAAABwG1fTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAABPX0lEQVR4nO3de5iN9f7/8ddixpoxM8ZxTpkGjWOGfmhrqBzCICTtEEk5JSJJbLuEctjZOVQK2Y6F1Ea1KZGQyDETMoTYaZuJNA0jxmE+vz/6zn1ZczLGfIwxz8d1reuadd+fda/35z6tea37sFzGGCMAAAAAQJ4qkt8FAAAAAMDNiLAFAAAAABYQtgAAAADAAsIWAAAAAFhA2AIAAAAACwhbAAAAAGABYQsAAAAALCBsAQAAAIAFXvldQEGRmpqqY8eOKSAgQC6XK7/LAQAAAJBPjDE6ffq0wsLCVKRI1sevCFs5dOzYMYWHh+d3GQAAAABuEEePHlX58uWzHE/YyqGAgABJf87QEiVK5HM1AAAAAPLLqVOnFB4e7mSErBC2cijt1MESJUoQtgAAAABc8fIibpABAAAAABYQtgAAAADAAsIWAAAAAFhA2AIAAAAACwhbAAAAAGABYQsAAAAALCBsAQAAAIAFhC0AAAAAsICwBQAAAAAWELYAAAAAwALCFgAAAABYQNgCAAAAAAsIWwAAAABgAWELAAAAACwgbAEAAACABYQtAAAAALCAsAUAAAAAFhC2AAAAAMACwhYAAAAAWEDYAgAAAAALCFsAAAAAYAFhCwAAAAAsIGwBAAAAgAWELQAAAACwgLAFAAAAABYQtgAAAADAAq/8LgAAbhZ9tw/M7xLyzPR6b+R3CQAAFHgc2QIAAAAACwhbAAAAAGABYQsAAAAALCBsAQAAAIAFhC0AAAAAsICwBQAAAAAWELYAAAAAwALCFgAAAABYQNgCAAAAAAsIWwAAAABgAWELAAAAACwgbAEAAACABYQtAAAAALCAsAUAAAAAFhC2AAAAAMACwhYAAAAAWEDYAgAAAAALCFsAAAAAYAFhCwAAAAAsIGwBAAAAgAWELQAAAACwgLAFAAAAABYQtgAAAADAAsIWAAAAAFhA2AIAAAAACwhbAAAAAGABYQsAAAAALCBsAQAAAIAFhC0AAAAAsICwBQAAAAAWELYAAAAAwALCFgAAAABYQNgCAAAAAAsIWwAAAABgAWELAAAAACwgbAEAAACABYQtAAAAALCAsAUAAAAAFhC2AAAAAMACwhYAAAAAWEDYAgAAAAALCFsAAAAAYAFhCwAAAAAsyNewNX78eN15550KCAhQUFCQ2rdvr/3793u0McZo1KhRCgsLk6+vrxo3bqzvv//eo01KSooGDBigsmXLys/PT+3atdPPP//s0SYxMVHdunVTYGCgAgMD1a1bN/3++++2uwgAAACgkMrXsLV+/Xr1799fmzdv1urVq3Xx4kW1aNFCZ86ccdpMmDBBkyZN0tSpU7Vt2zaFhISoefPmOn36tNNm0KBBWrZsmd5//319/fXXSk5OVps2bXTp0iWnTZcuXRQbG6uVK1dq5cqVio2NVbdu3a5rfwEAAAAUHi5jjMnvItKcOHFCQUFBWr9+ve69914ZYxQWFqZBgwZp2LBhkv48ihUcHKxXX31VTz75pJKSklSuXDm9++676tSpkyTp2LFjCg8P16effqqYmBjFxcWpRo0a2rx5s+rXry9J2rx5s6Kjo7Vv3z5VrVr1irWdOnVKgYGBSkpKUokSJezNBAAFVt/tA/O7hDwzvd4b+V0CAAA3rJxmgxvqmq2kpCRJUunSpSVJhw8fVkJCglq0aOG0cbvdatSokTZt2iRJ2rFjhy5cuODRJiwsTDVr1nTafPPNNwoMDHSCliTdddddCgwMdNqkl5KSolOnTnk8AAAAACCnbpiwZYzR4MGDdffdd6tmzZqSpISEBElScHCwR9vg4GBnXEJCgooVK6ZSpUpl2yYoKCjDewYFBTlt0hs/frxzfVdgYKDCw8OvrYMAAAAACpUbJmw9/fTT2rVrlxYtWpRhnMvl8nhujMkwLL30bTJrn910hg8frqSkJOdx9OjRnHQDAAAAACTdIGFrwIAB+uSTT7R27VqVL1/eGR4SEiJJGY4+HT9+3DnaFRISovPnzysxMTHbNr/88kuG9z1x4kSGo2Zp3G63SpQo4fEAAAAAgJzK17BljNHTTz+tpUuX6ssvv1TFihU9xlesWFEhISFavXq1M+z8+fNav369GjRoIEmqW7euvL29PdrEx8drz549Tpvo6GglJSVp69atTpstW7YoKSnJaQMAAAAAeckrP9+8f//+WrhwoT7++GMFBAQ4R7ACAwPl6+srl8ulQYMGady4capcubIqV66scePGqXjx4urSpYvTtmfPnnruuedUpkwZlS5dWkOGDFFUVJSaNWsmSapevbpatmyp3r17a8aMGZKkPn36qE2bNjm6EyEAAAAAXK18DVvTpk2TJDVu3Nhj+Jw5c/T4449LkoYOHaqzZ8+qX79+SkxMVP369bVq1SoFBAQ47SdPniwvLy917NhRZ8+e1X333ae5c+eqaNGiTpsFCxZo4MCBzl0L27Vrp6lTp9rtIAAAAIBC64b6na0bGb+zBeBK+J0tAAAKhwL5O1sAAAAAcLMgbAEAAACABYQtAAAAALCAsAUAAAAAFhC2AAAAAMACwhYAAAAAWEDYAgAAAAALCFsAAAAAYAFhCwAAAAAsIGwBAAAAgAWELQAAAACwgLAFAAAAABYQtgAAAADAAsIWAAAAAFhA2AIAAAAACwhbAAAAAGABYQsAAAAALCBsAQAAAIAFhC0AAAAAsICwBQAAAAAWELYAAAAAwALCFgAAAABYQNgCAAAAAAsIWwAAAABgAWELAAAAACwgbAEAAACABYQtAAAAALCAsAUAAAAAFhC2AAAAAMACwhYAAAAAWEDYAgAAAAALCFsAAAAAYAFhCwAAAAAsIGwBAAAAgAWELQAAAACwgLAFAAAAABYQtgAAAADAAsIWAAAAAFhA2AIAAAAACwhbAAAAAGABYQsAAAAALCBsAQAAAIAFhC0AAAAAsICwBQAAAAAWELYAAAAAwALCFgAAAABYQNgCAAAAAAsIWwAAAABgAWELAAAAACwgbAEAAACABYQtAAAAALCAsAUAAAAAFhC2AAAAAMACwhYAAAAAWEDYAgAAAAALCFsAAAAAYAFhCwAAAAAsIGwBAAAAgAWELQAAAACwgLAFAAAAABYQtgAAAADAAsIWAAAAAFhA2AIAAAAACwhbAAAAAGABYQsAAAAALCBsAQAAAIAFhC0AAAAAsICwBQAAAAAWELYAAAAAwALCFgAAAABYQNgCAAAAAAsIWwAAAABgAWELAAAAACwgbAEAAACABYQtAAAAALCAsAUAAAAAFhC2AAAAAMACwhYAAAAAWEDYAgAAAAALCFsAAAAAYAFhCwAAAAAsIGwBAAAAgAWELQAAAACwgLAFAAAAABYQtgAAAADAAsIWAAAAAFhA2AIAAAAACwhbAAAAAGABYQsAAAAALCBsAQAAAIAFhC0AAAAAsICwBQAAAAAWELYAAAAAwALCFgAAAABYQNgCAAAAAAsIWwAAAABgAWELAAAAACwgbAEAAACABYQtAAAAALCAsAUAAAAAFhC2AAAAAMACwhYAAAAAWEDYAgAAAAALCFsAAAAAYAFhCwAAAAAsIGwBAAAAgAWELQAAAACwgLAFAAAAABYQtgAAAADAAsIWAAAAAFhA2AIAAAAACwhbAAAAAGABYQsAAAAALCBsAQAAAIAFhC0AAAAAsICwBQAAAAAWELYAAAAAwALCFgAAAABYQNgCAAAAAAsIWwAAAABgAWELAAAAACwgbAEAAACABYQtAAAAALAgX8PWV199pbZt2yosLEwul0sfffSRx/jHH39cLpfL43HXXXd5tElJSdGAAQNUtmxZ+fn5qV27dvr555892iQmJqpbt24KDAxUYGCgunXrpt9//91y7wAAAAAUZvkats6cOaPatWtr6tSpWbZp2bKl4uPjncenn37qMX7QoEFatmyZ3n//fX399ddKTk5WmzZtdOnSJadNly5dFBsbq5UrV2rlypWKjY1Vt27drPULAAAAALzy881btWqlVq1aZdvG7XYrJCQk03FJSUmaNWuW3n33XTVr1kyS9N577yk8PFxffPGFYmJiFBcXp5UrV2rz5s2qX7++JGnmzJmKjo7W/v37VbVq1bztFAAAAACoAFyztW7dOgUFBalKlSrq3bu3jh8/7ozbsWOHLly4oBYtWjjDwsLCVLNmTW3atEmS9M033ygwMNAJWpJ01113KTAw0GmTmZSUFJ06dcrjAQAAAAA5la9Htq6kVatWevjhhxUREaHDhw9rxIgRatq0qXbs2CG3262EhAQVK1ZMpUqV8nhdcHCwEhISJEkJCQkKCgrKMO2goCCnTWbGjx+v0aNH56jO7QP7XkWvbnz13pie3yUAAAAABd4NHbY6derk/F2zZk3Vq1dPERERWrFihTp06JDl64wxcrlczvPL/86qTXrDhw/X4MGDneenTp1SeHj41XYBAAAAQCF1w59GeLnQ0FBFRETowIEDkqSQkBCdP39eiYmJHu2OHz+u4OBgp80vv/ySYVonTpxw2mTG7XarRIkSHg8AAAAAyKkCFbZOnjypo0ePKjQ0VJJUt25deXt7a/Xq1U6b+Ph47dmzRw0aNJAkRUdHKykpSVu3bnXabNmyRUlJSU4bAAAAAMhr+XoaYXJysg4e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3Om0yenyTf/ZtHjxYnP33XcbHx8fU69ePbN//36zdetWU7duXePn52diYmLM8ePHs5xXxhiP/WFany6fVxMnTjQ1a9Y0xYsXN+XLlzdPPfWU879C2nK9/DFy5MhMp/Pf//7XtGvXznh5eRkvLy/z8MMPm4SEBGPMn5/jvr6+pnbt2mbu3LkmMDDQuFwuU6RIERMVFWU+++wzZzppfb98/n3//femVatWxs/PzwQFBZlHH33UnDhxIst5mdW8aNasmbnrrruMMRn3hQcPHjTt2rUzQUFBxs/Pz9SrV8+sXr3aGT969GhTs2bNDO9Tp04dM2LECGNMxnW4UaNGZsCAAeb55583pUqVMsHBwWb48OEe+/Snn37aNGzY0LjdblO9enXTs2dPI8n4+PiYHj16mGHDhpnatWsbY4xZuXKlcbvdzv8GaQYMGGDuvfde5/nGjRvNPffcY3x8fEz58uXNgAEDTHJysjP+Sut1dvvNnKxfr7zyiunevbspUaKEeeyxx65Y05W2j4iICI96IiIijDHGjBw50tSuXdvMmjXLVKxY0bhcLpOammo+++wz07BhQxMYGGhKly5t7r//fnPw4MEr9s8YY2bPnm2qVatm3G63qVq1qnnrrbc8aslue09NTTW33Xab+ec//+nxmt27dxuXy+VRQ05xGqEl/v7+8vf310cffaSUlJQs240YMUIPPfSQvvvuOz366KN65JFHFBcXJ0n6448/1LJlS5UqVUrbtm3Thx9+qC+++EJPP/20xzTWrFmjuLg4rV69WsuXL9fSpUtVvnx5vfzyy4qPj1d8fLwkqX///kpJSdFXX32l3bt369VXX5W/v7+9mfB/fvzxR61cudL5piI1NVXly5fXBx98oL179+qll17S3//+d33wwQfOa6ZNm6b+/furT58+2r17tz755BNFRkZm+z4vvPCChgwZotjYWFWpUkWPPPKILl68KOnPa5769u2rZ555RrGxsWrevLnGjh1rpb++vr66cOFChuHnzp1T3bp1tXz5cu3Zs0d9+vRRt27dtGXLFkl/nroQHR2t3r17O8stPDxc8fHxKlGihKZMmaL4+Hh16tRJ//vf/9S6dWvdeeed+u677zRt2jTNmjVLY8aM8XjPefPmycvLSxs3btSMGTOc4aNGjdLUqVO1adMmHT16VB07dtSUKVO0cOFCrVixQqtXr9abb75pZf6k98QTT3h8Cz579mz16NEjy/bbt2/XwIED9fLLL2v//v1auXKl7r33Xmf88OHD9eqrr2rEiBHau3evFi5cqODgYKt9uJLFixeratWqqlq1qh599FHNmTNH5v9+4nDFihXq0KGD7r//fu3cuVNr1qxRvXr1JCnLbTm9ZcuW6ZlnntFzzz2nPXv26Mknn9QTTzyhtWvXerQbPXq0OnbsqF27dql169bq2rVrvhxxyWobSS9t/U977Ny5U2XKlHGW99KlSz3Gd+jQQVWrVs10ef/xxx9q0qSJ/P399dVXX+nrr7+Wv7+/WrZsqfPnz+dJv3K6389uOeRk2x46dKiWLFmiefPm6dtvv1VkZKRiYmL022+/KTw8XEuWLJEk7d+/X/Hx8Xr99dclSS+++KLmzJmjadOm6fvvv9ezzz6rRx99VOvXr/eob+jQoRo/frzi4uJUq1atPJk36T322GM6duyY1q1bpyVLluidd97R8ePHczyvsutnZiZOnKh69epp586d6tevn5566int27dPknT69Gm1bdtWUVFR+vbbb/XKK69ketQkp8s3vZEjR+rFF1/Ut99+Ky8vLz3yyCMaOnSoXn/9dW3YsEGHDh3SSy+9lOPpZaZIkSJ64403tGfPHs2bN09ffvmlhg4dKklq0KCBpkyZohIlSjjbypAhQzJMwxij9u3b67ffflPLli3VoEEDHTp0SJ06dXI+x4sUKaJDhw5p4sSJunTpkl566SWVLl1afn5+ateunQ4cOJBpffHx8WrUqJHuuOMObd++XStXrtQvv/yijh07XnVfs9t/JCcnq3Xr1vriiy+0c+dOxcTEqG3btvrpp58kST169NDevXu1bds25zW7du3Szp07ndPWMzNv3jz5+flpy5YtmjBhgsaPH6/Q0FBVrVpVXbp00YwZM+Tr66stW7aoc+fOmj17tiTptddeU2hoqN5++21nWs2aNVPJkiWd9VeSLl26pA8++EBdu3aVJO3evVsxMTHq0KGDdu3apcWLF+vrr7/O8P9fduv11q1bJUlffPGF4uPjtXTp0pzOYknSP//5T9WsWVM7duzQiBEjrljTlbaPtHk+Z84cxcfHeyyDgwcP6oMPPtCSJUuc0wLPnDmjwYMHa9u2bVqzZo2KFCmiBx98UKmpqdn2b+bMmXrhhRc0duxYxcXFady4cRox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G1WkSJEsv71NU6xYsUxvjRoeHq6+fftq6dKleu655zRz5sxr6U6OjRw5Uq+99pqOHTumDRs2qEGDBurXr5/+3//7f4qMjPT4ZjUgIEAVKlTQmjVr8uz9q1Wr5pzfm2b79u15Mu20D6SIiIhs76CzYcMGPfDAA3r00UdVu3ZtVapUKcP57Vktt/Rq1KihTZs2eewgNm3apICAgAz/SBUEadfNnD9/XjExMVds7+XlpWbNmmnChAnatWuXjhw5oi+//FKVK1eWr69vnq471+LixYuaP3++Jk6c6PFN/3fffaeIiAgtWLBAtWrVyrbenKwT1atX19dff+0xbNOmTapevXqe9ONaZbWNlCtXLsN1aOlv47tkyRK9/PLL+uCDDzKcK3/y5Em1bdtWHTp00LPPPpttDXXq1NGBAwcUFBSkyMhIj0dO7z6WW+n3+1dqm922HRkZqWLFinks7wsXLmj79u3O8k470+Hy9aZGjRpyu9366aefMvQ/7UjG9VKtWjVdvHhRO3fudIYdPHjwqm9Vn1k/c1vPrl27PK4zuZrPh6tZvjmRfru4dOmS9uzZk2X77du36+LFi5o4caLuuusuValSxTlikiYn+5EaNWrop59+0tGjR51he/fuVVJSkqpXr66RI0fqm2++UWpqqsLCwq5qn1OnTh19//33qlChQob1L+2I5eXDLv8SKjAw0FlPr3RHyw0bNujxxx/Xgw8+qKioKIWEhOjIkSMebby8vNS9e3fNmTNHc+bMUefOnXP8T3TaPv32229X27ZtFRsbq7feektFixZV+fLltWDBAlWvXl0rVqzweF36//UkqUuXLlqwYIH+85//qEiRIrr//vszzK/08ypt+8+JrLaPq12/rrWmy7cPb2/vHG2vJ0+eVFxcnF588UXdd999ql69eoYgm1n/goODdcstt+jHH3/MUGPakbGcbu+tW7eWn5+fpk2bps8+++yKRz+zQ9iy5OTJk2ratKnee+897dq1S4cPH9aHH36oCRMm6IEHHnDaffjhh5o9e7Z++OEHjRw5Ulu3bnW+4e/atat8fHzUvXt37dmzR2vXrtWAAQPUrVu3K17wX6FCBX311Vf63//+p19//VWSNGjQIH3++ec6fPiwvv32W3355ZfX7Z+xxo0b6/bbb9e4ceMUGRmp7du36/PPP9cPP/ygESNGeFwoKf15A4eJ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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#Now plot for Genre\n", + "sb.countplot(x='Genre',data=df, palette='hls')\t\n" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1sAAAKnCAYAAABwG1fTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAABBgElEQVR4nO3df5jVdZ3//8fEjwERzoo4DORI9hFJBauVPjB8Kn8hwoZkummLzaVJmFH4IXQ1dTPcDMrP+qPk8zFDzF8Yem2ZZTaKmWyEKLLN+otVS03dGEF3GERpUJzvH309lyOgiLw5wtxu13Wua877PM/7vN5zYOTu+5wzVe3t7e0BAABgm3pfpRcAAACwMxJbAAAABRBbAAAABRBbAAAABRBbAAAABRBbAAAABRBbAAAABRBbAAAABeha6QXsKF577bX8+c9/Tu/evVNVVVXp5QAAABXS3t6eF198MQMHDsz73rf581diawv9+c9/Tl1dXaWXAQAAvEc888wz2XPPPTd7u9jaQr17907y129onz59KrwaAACgUtasWZO6urpyI2yO2NpCr790sE+fPmILAAB427cX+YAMAACAAogtAACAAogtAACAAogtAACAAogtAACAAogtAACAAogtAACAAogtAACAAogtAACAAogtAACAAogtAACAAogtAACAAogtAACAAogtAACAArxnYmvWrFmpqqrKtGnTytva29szY8aMDBw4MD179swhhxyShx9+uMP92traMnXq1PTr1y+9evXKhAkT8uyzz3aYaWlpSUNDQ0qlUkqlUhoaGrJ69ertcFQAAEBn9Z6IraVLl+aHP/xhDjzwwA7bL7zwwlx88cWZPXt2li5dmtra2hxxxBF58cUXyzPTpk3LzTffnPnz52fRokVZu3Ztxo8fnw0bNpRnJk6cmKampjQ2NqaxsTFNTU1paGjYbscHAAB0PhWPrbVr1+aEE07InDlzsttuu5W3t7e359JLL825556bY445JkOHDs0111yTl19+OTfccEOSpLW1NXPnzs1FF12U0aNH56Mf/Wiuv/76PPjgg7nzzjuTJMuXL09jY2OuvPLK1NfXp76+PnPmzMmtt96aRx99tCLHDAAA7PwqHltf+cpX8qlPfSqjR4/usP3JJ59Mc3NzxowZU95WXV2dgw8+OIsXL06SLFu2LK+88kqHmYEDB2bo0KHlmXvuuSelUikjRowoz4wcOTKlUqk8syltbW1Zs2ZNhwsAAMCW6lrJB58/f37+/d//PUuXLt3otubm5iRJ//79O2zv379//vSnP5Vnunfv3uGM2Oszr9+/ubk5NTU1G+2/pqamPLMps2bNyvnnn//ODggAAOD/V7EzW88880z+9//+37n++uvTo0ePzc5VVVV1uN7e3r7Rtjd788ym5t9uP2effXZaW1vLl2eeeeYtHxMAAOCNKhZby5Yty8qVK3PQQQela9eu6dq1axYuXJjvf//76dq1a/mM1pvPPq1cubJ8W21tbdavX5+Wlpa3nHnuuec2evxVq1ZtdNbsjaqrq9OnT58OFwAAgC1Vsdg6/PDD8+CDD6apqal8GT58eE444YQ0NTXlgx/8YGpra7NgwYLyfdavX5+FCxdm1KhRSZKDDjoo3bp16zCzYsWKPPTQQ+WZ+vr6tLa25r777ivP3HvvvWltbS3PAAAAbGsVe89W7969M3To0A7bevXqld133728fdq0aZk5c2YGDx6cwYMHZ+bMmdlll10yceLEJEmpVMqkSZNy+umnZ/fdd0/fvn1zxhlnZNiwYeUP3Nhvv/0yduzYTJ48OVdccUWS5JRTTsn48eMzZMiQ7XjEAABAZ1LRD8h4O2eeeWbWrVuXKVOmpKWlJSNGjMgdd9yR3r17l2cuueSSdO3aNccdd1zWrVuXww8/PFdffXW6dOlSnpk3b15OO+208qcWTpgwIbNnz97uxwMAAHQeVe3t7e2VXsSOYM2aNSmVSmltbfX+LQAA6MS2tA0q/nu2AAAAdkbv6ZcR7ojuP+3USi9hhzT8+z+o9BIAAGCbcmYLAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgAGILAACgABWNrcsvvzwHHnhg+vTpkz59+qS+vj6/+tWvyrefdNJJqaqq6nAZOXJkh320tbVl6tSp6devX3r16pUJEybk2Wef7TDT0tKShoaGlEqllEqlNDQ0ZPXq1dvjEAEAgE6qorG155575jvf+U7uv//+3H///TnssMPy6U9/Og8//HB5ZuzYsVmxYkX5ctttt3XYx7Rp03LzzTdn/vz5WbRoUdauXZvx48dnw4YN5ZmJEyemqakpjY2NaWxsTFNTUxoaGrbbcQIAAJ1P10o++FFHHdXh+re//e1cfvnlWbJkSQ444IAkSXV1dWprazd5/9bW1sydOzfXXXddRo8enSS5/vrrU1dXlzvvvDNHHnlkli9fnsbGxixZsiQjRoxIksyZMyf19fV59NFHM2TIkAKPEAAA6KzeM+/Z2rBhQ+bPn5+XXnop9fX15e133313ampqsu+++2by5MlZuXJl+bZly5bllVdeyZgxY8rbBg4cmKFDh2bx4sVJknvuuSelUqkcWkkycuTIlEql8symtLW1Zc2aNR0uAAAAW6risfXggw9m1113TXV1dU499dTcfPPN2X///ZMk48aNy7x583LXXXfloosuytKlS3PYYYelra0tSdLc3Jzu3btnt91267DP/v37p7m5uTxTU1Oz0ePW1NSUZzZl1qxZ5fd4lUql1NXVbatDBgAAOoGKvowwSYYMGZKmpqasXr06P/nJT3LiiSdm4cKF2X///XP88ceX54YOHZrhw4dn0KBB+eUvf5ljjjlms/tsb29PVVVV+fobv97czJudffbZmT59evn6mjVrBBcAALDFKh5b3bt3zz777JMkGT58eJYuXZrvfe97ueKKKzaaHTBgQAYNGpTHH388SVJbW5v169enpaWlw9mtlStXZtSoUeWZ5557bqN9rVq1Kv3799/suqqrq1NdXf2ujg0AAOi8Kv4ywjdrb28vv0zwzV544YU888wzGTBgQJLkoIMOSrdu3bJgwYLyzIoVK/LQQw+VY6u+vj6tra257777yjP33ntvWltbyzMAAADbWkXPbJ1z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PPnkk2lubs6YMWPKM9XV1Tn44IOzePHiJMmyZcvyyiuvdJgZOHBghg4dWp655557UiqVMmLEiPLMyJEjUyqVyjMAAADb0lZ9QMbLL7+c/v37b7S9pqbmHb2M8I3a29szffr0fPzjH8/QoUOTJM3NzUmy0WP1798/f/rTn8oz3bt3z2677bbRzOv3b25uTk1NzSbX+/rMm7W1taWtra18fc2aNVt1XAAAQOe0VWe26uvr881vfjN/+ctfytvWrVuX888/P/X19Vu1kK9+9at54IEH8uMf/3ij26qqqjpcb29v32jbm715ZlPzb7WfWbNmlT9Mo1Qqpa6ubksOAwAAIMlWxtall16axYsXZ88998zhhx+e0aNHp66uLr/73e/yve997x3vb+rUqfn5z3+e3/zmN9lzzz3L22tra5Nko7NPK1euLJ/tqq2tzfr169PS0vKWM88999xGj7tq1apNnqFLkrPPPjutra3lyzPPPPOOjwsAAOi8tiq2hg0blscffzyzZs3KRz7ykRx44IH5zne+kz/84Q854IADtng/7e3t+epXv5qf/vSnueuuu7L33nt3uH3vvfdObW1tFixYUN62fv36LFy4MKNGjUqSHHTQQenWrVuHmRUrVuShhx4qz9TX16e1tTX33Xdfeebee+9Na2treebNqqury+9He/0CAACwpbbqPVuzZs1K//79M3ny5A7br7rqqqxatSpnnXXWFu3nK1/5Sm644Ybccsst6d27d/kMVqlUSs+ePVNVVZVp06Zl5syZGTx4cAYPHpyZM2dml112ycSJE8uzkyZNyumnn57dd989ffv2zRlnnJFhw4Zl9OjRSZL99tsvY8eOzeTJk3PFFVckSU455ZSMHz8+Q4YM2ZpvAQAAwFvaqjNbV1xxRT70oQ9ttP2AAw7ID37wgy3ez+WXX57W1tYccsghGTBgQPly4403lmfOPPPMTJs2LVOmTMnw4cPzX//1X7njjjvSu3fv8swll1ySo48+Oscdd1z+1//6X9lll13yi1/8Il26dCnPzJs3L8OGDcuYMWMyZsyYHHjggbnuuuu25vABAADeVlV7e3v7O71Tjx49snz58o1e9vfEE09k//337/DBGTuLNWvWpFQqpbW19S1fUnj/aadux1XtPIZ/f8sjnfe+2ff7e7A1vjrc3wMA2BFsaRts1Zmt1z8M481+97vfZeDAgVuzSwAAgJ3KVr1n64tf/GKmTZuWV155JYcddliS5Ne//nXOPPPMnH766dt0gQAAADuirYqtM888M//93/+dKVOmZP369Un++tLCs846K2efffY2XSAAAMCOaKtiq6qqKt/97nfzjW98I8uXL0/Pnj0zePDgVFdXb+v1AQAA7JC2KrZet+uuu+ZjH/vYtloLAADATmOrPiADAACAtya2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACiC2AAAACtC10guAbe3+20+t9BJ2SMOP/EGllwAAsFNxZgsAAKAAYgsAAKAAYgsAAKAAYgsAAKAAFY2tf/u3f8tRRx2VgQMHpqqqKj/72c863H7SSSelqqqqw2XkyJEdZtra2jJ16tT069cvvXr1yoQJE/Lss892mGlpaUlDQ0NKpVJKpVIaGhqyevXqgo8OAADozCoaWy+99FI+/OEPZ/bs2ZudGTt2bFasWFG+3HbbbR1unzZtWm6++ebMnz8/ixYtytq1azN+/Phs2LChPDNx4sQ0NTWlsbExjY2NaWpqSkNDQ2HHBQAAUNGPfh83blzGjRv3ljPV1dWpra3d5G2tra2ZO3durrvuuowePTpJcv3116euri533nlnjjzyyCxfvjyNjY1ZsmRJRowYkSSZM2dO6uvr8+ijj2bIkCHb9qAAAACyA7xn6+67705NTU323XffTJ48OStXrizftmzZsrzyyisZM2ZMedvAgQMzdOjQLF68OElyzz33pFQqlUMrSUaOHJlSqVSe2ZS2trasWbOmwwUAAGBLvadja9y4cZk3b17uuuuuXHTRRVm6dGkOO+ywtLW1JUmam5vTvXv37Lbbbh3u179//zQ3N5dnampqNtp3TU1NeWZTZs2aVX6PV6lUSl1d3TY8MgAAYGdX0ZcRvp3jjz++/PXQoUMzfPjwDBo0KL/85S9zzDHHbPZ+7e3tqaqqKl9/49ebm3mzs88+O9OnTy9fX7NmjeACAAC22Hv6zNabDRgwIIMGDcrjjz+eJKmtrc369evT0tLSYW7lypXp379/eea5557baF+rVq0qz2xKdXV1+vTp0+ECAACwpXao2HrhhRfyzDPPZMCAAUmSgw46KN26dcuCBQvKMytWrMhDDz2UUaNGJUnq6+vT2tqa++67rzxz7733prW1tTwDAACwrVX0ZYRr167NH/7wh/L1J598Mk1NTenbt2/69u2bGTNm5Nhjj82AAQPy1FNP5Zxzzkm/fv3ymc98JklSKpUyadKknH766dl9993Tt2/fnHHGGRk2bFj50wn322+/jB07NpMnT84VV1yRJDnllFMyfvx4n0QIAAAUpqKxdf/99+fQQw8tX3/9PVInnnhiLr/88jz44IO59tprs3r16gwYMCCHHnpobrzxxvTu3bt8n0suuSRdu3bNcccdl3Xr1uXwww/P1VdfnS5dupRn5s2bl9NOO638qYUTJkx4y9/tBQAA8G5VNLYOOeSQtLe3b/b222+//W330aNHj1x22WW57LLLNjvTt2/fXH/99Vu1RgAAgK2xQ71nCwAAYEchtgAAAAogtgAAAAogtgAAAAogtgAAAAogtgAAAApQ0Y9+B6AYp94/q9JL2CH9YPjZlV4CADsRZ7YAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKUNHY+rd/+7ccddRRGThwYKqqqvKzn/2sw+3t7e2ZMWNGBg4cmJ49e+aQQw7Jww8/3GGmra0tU6dOTb9+/dKrV69MmDAhzz77bIeZlpaWNDQ0pFQqpVQqpaGhIatXry746AAAgM6sorH10ksv5cMf/nBmz569ydsvvPDCXHzxxZk9e3aWLl2a2traHHHEEXnxxRfLM9OmTcvNN9+c+fPnZ9GiRVm7dm3Gjx+fDRs2lGcmTpyYpqamNDY2prGxMU1NTWloaCj8+AAAgM6rayUffNy4cRk3btwmb2tvb8+ll16ac889N8ccc0yS5Jprrkn//v1zww035Etf+lJaW1szd+7cXHfddRk9enSS5Prrr09dXV3uvPPOHHnkkVm+fHkaGxuzZMmSjBgxIkkyZ86c1NfX59FHH82QIUO2z8ECAACdynv2PVtPPvlkmpubM2bMmPK26urqHHzwwVm8eHGSZNmyZXnllVc6zAwcODBDhw4tz9xzzz0plUrl0EqSkSNHplQqlWc2pa2tLWvWrOlwAQAA2FLv2dhqbm5OkvTv37/D9v79+5dva25uTvfu3bPbbru95UxNTc1G+6+pqSnPbMqsWbPK7/EqlUqpq6t7V8cDAAB0Lu/Z2HpdVVVVh+vt7e0bbXuzN89sav7t9nP22WentbW1fHnmmWfe4coBAIDO7D0bW7W1tUmy0dmnlStXls921dbWZv369WlpaXnLmeeee26j/a9atWqjs2ZvVF1dnT59+nS4AAAAbKn3bGztvffeqa2tzYIFC8rb1q9fn4ULF2bUqFFJkoMOOijdunXrMLNixYo89NBD5Zn6+vq0trbmvvvuK8/ce++9aW1tLc8AAABsaxX9NMK1a9fmD3/4Q/n6k08+maampvTt2zd77bVXpk2blpkzZ2bw4MEZPHhwZs6cmV122SUTJ05MkpRKpUyaNCmnn356dt999/Tt2zdnnHFGhg0bVv50wv322y9jx47N5MmTc8UVVyRJTjnllIwfP94nEQIAAIWpaGzdf//9OfTQQ8vXp0+fniQ58cQTc/XVV+fMM8/MunXrMmXKlLS0tGTEiBG544470rt37/J9LrnkknTt2jXHHXdc1q1bl8MPPzxXX311unTpUp6ZN29eTjvttPKnFk6YMGGzv9sLAABgW6hobB1yyCFpb2/f7O1VVVWZMWNGZsyYsdmZHj165LLLLstll1222Zm+ffvm+uuvfzdLBQAAeEfes+/ZAgAA2JGJLQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAKILQAAgAK8p2NrxowZqaqq6nCpra0t397e3p4ZM2Zk4MCB6dmzZw455JA8/PDDHfbR1taWqVOnpl+/funVq1cmTJiQZ599dnsfCgAA0Mm8p2MrSQ444ICsWLGifHnwwQfLt1144YW5+OKLM3v27CxdujS1tbU54ogj8uKLL5Znpk2blptvvjnz58/PokWLsnbt2owfPz4bNmyoxOEAAACdRNdKL+DtdO3atcPZrNe1t7fn0ksvzbnnnptjjjkmSXLNNdekf//+ueGGG/KlL30pra2tmTt3bq677rqMHj06SXL99denrq4ud955Z4488sjteiwAAEDn8Z4/s/X4449n4MCB2XvvvfO5z30uTzzxRJLkySefTHNzc8aMGVOera6uzsEHH5zFixcnSZYtW5ZXXnmlw8zAgQMzdOjQ8szmtLW1Zc2aNR0uAAAAW+o9HVsjRozItddem9tvvz1z5sxJc3NzRo0alRdeeCHNzc1Jkv79+3e4T//+/cu3NTc3p3v37tltt902O7M5s2bNSqlUKl/q6uq24ZEBAAA7u/d0bI0bNy7HHntshg0bltGjR+eXv/xlkr++XPB1VVVVHe7T3t6+0bY325KZs88+O62treXLM888s5VHAQAAdEbv6dh6s169emXYsGF5/PHHy+/jevMZqpUrV5bPdtXW1mb9+vVpaWnZ7MzmVFdXp0+fPh0uAAAAW2qHiq22trYsX748AwYMyN57753a2tosWLCgfPv69euzcOHCjBo1Kkly0EEHpVu3bh1mVqxYkYceeqg8AwAAUIT39KcRnnHGGTnqqKOy1157ZeXKlbnggguyZs2anHjiiamqqsq0adMyc+bMDB48OIMHD87MmTOzyy67ZOLEiUmSUqmUSZMm5fTTT8/uu++evn375owzzii/LBEAAKAo7+nYevbZZ/MP//APef7557PHHntk5MiRWbJkSQYNGpQkOfPMM7Nu3bpMmTIlLS0tGTFiRO6444707t27vI9LLrkkXbt2zXHHHZd169bl8MMPz9VXX50uXbpU6rAAAIBO4D0dW/Pnz3/L26uqqjJjxozMmDFjszM9evTIZZddlssuu2wbrw4AAGDzdqj3bAEAAOwoxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABxBYAAEABOlVs/b//9/+y9957p0ePHjnooIPy29/+ttJLAgAAdlKdJrZuvPHGTJs2Leeee25+//vf5xOf+ETGjRuXp59+utJLAwAAdkKdJrYuvvjiTJo0KV/84hez33775dJLL01dXV0uv/zySi8NAADYCXWK2Fq/fn2WLVuWMWPGdNg+ZsyYLF68uEKrAgAAdmZdK72A7eH555/Phg0b0r9//w7b+/fvn+bm5k3ep62tLW1tbeXrra2tSZI1a9a85WOtXb/+Xa62c3q77+s7sfYlz8HW2JbPwbq1noOtsS2fg/Vr/7LN9tWZbMvnYNq9/77N9tVZXDribyu9BLaxedP8PXinTrh02/49+Pdpt2zT/XUGf3vpp9925vX/XrS3t7/lXKeIrddVVVV1uN7e3r7RttfNmjUr559//kbb6+rqCllbp3fFjyq9AuI5qLQzPQcV96P8c6WX0Kn5GwDJFH8RKu8dPAcvvvhiSqXSZm/vFLHVr1+/dOnSZaOzWCtXrtzobNfrzj777EyfPr18/bXXXst///d/Z/fdd99soL2XrVmzJnV1dXnmmWfSp0+fSi+nU/IcVJ7noPI8B5XnOag8z0Fl+f5X3s7wHLS3t+fFF1/MwIED33KuU8RW9+7dc9BBB2XBggX5zGc+U96+YMGCfPrTmz5NWF1dnerq6g7b/uZv/qbIZW4Xffr02WH/UO8sPAeV5zmoPM9B5XkOKs9zUFm+/5W3oz8Hb3VG63WdIraSZPr06WloaMjw4cNTX1+fH/7wh3n66adz6qmnVnppAADATqjTxNbxxx+fF154If/8z/+cFStWZOjQobntttsyaNCgSi8NAADYCXWa2EqSKVOmZMqUKZVeRkVUV1fnm9/85kYvjWT78RxUnueg8jwHlec5qDzPQWX5/ldeZ3oOqtrf7vMKAQAAeMc6xS81BgAA2N7EFgAAQAHEFgAAQAHEFgAAQAHE1k7upJNOSlVV1UaXsWPHVnppO73Xv/eb+l1uU6ZMSVVVVU466aTtv7BOZlN//t948Rxsubf7efLDH/4whxxySPr06ZOqqqqsXr16o320tLSkoaEhpVIppVIpDQ0Nm5xj65x00kk5+uijO2z713/91/To0SMXXnjhJu+zbt267Lbbbunbt2/WrVu3HVbZeSxevDhdunTZ5H9z161bl29+85sZMmRIqqur069fv/z93/99Hn744QqsdOe0Jf8G+v3vf5/Pfvaz6d+/f3r06JF99903kydPzmOPPVbBle883vgcdO3aNXvttVe+/OUvp6WlpTzzgQ98oDyzyy67ZOjQobniiisquOptS2x1AmPHjs2KFSs6XH784x9XelmdQl1dXebPn9/hHzB/+ctf8uMf/zh77bVXBVfWebzxz/2ll16aPn36dNj2ve99r9JL3KG81c+Tl19+OWPHjs0555yz2ftPnDgxTU1NaWxsTGNjY5qamtLQ0LDZ+bvvvjsf+MAHtvVhdBpXXnllTjjhhMyePTtnnnnmJmd+8pOfZOjQodl///3z05/+dDuvcOd21VVXZerUqVm0aFGefvrp8va2traMHj06V111Vb71rW/lsccey2233ZYNGzZkxIgRWbJkSQVXvXN5q59Zt956a0aOHJm2trbMmzcvy5cvz3XXXZdSqZRvfOMbFV75zuP15+Cpp57KlVdemV/84hcb/Sqm138P7gMPPJCjjz46p556am688cYKrXjb6lS/Z6uzqq6uTm1tbaWX0Sn97d/+bZ544on89Kc/zQknnJAk+elPf5q6urp88IMfrPDqOoc3/tkvlUqpqqry9+FdeKufJ9OmTUvy10DalOXLl6exsTFLlizJiBEjkiRz5sxJfX19Hn300QwZMqSIJXdaF154Yc4777zccMMNOfbYYzc7N3fu3Hz+859Pe3t75s6dW/5Zxbvz0ksv5aabbsrSpUvT3Nycq6++Ouedd16S5NJLL80999yT3//+9/nwhz+cJBk0aFB+8pOfZMSIEZk0aVIeeuihVFVVVfIQdgqb+5n18ssv5wtf+EL+7u/+LjfffHN5+957750RI0Y4474NvfE52HPPPXP88cfn6quv7jDTu3fv8swFF1yQm266KT/72c9y/PHHb+/lbnPObEHBvvCFL+RHP/pR+fpVV12Vk08+uYIrgsq45557UiqVyqGVJCNHjkypVMrixYsruLKdz9e//vV861vfyq233vqWofXHP/4x99xzT4477rgcd9xxWbx4cZ544ontuNKd14033pghQ4ZkyJAh+fznP58f/ehHef1Xm95www054ogjyqH1uve973352te+lkceeST/8R//UYlldxq33357nn/++c2e8f2bv/mb7bugTuKJJ55IY2NjunXr9pZzPXr0yCuvvLKdVlUssdUJ3Hrrrdl11107XL71rW9VelmdRkNDQxYtWpSnnnoqf/rTn/K73/0un//85yu9LNgq7+bnSXNzc2pqajbaXlNTk+bm5m291E7rV7/6Vb773e/mlltuyejRo99y9qqrrsq4cePK79kaO3Zsrrrqqu200p3b62cMk7++jGrt2rX59a9/nSR57LHHst9++23yfq9v956hbWNzP7Mef/zxJMmHPvShCq9w5/f6c9CzZ8/8j//xP/LII4/krLPO2uTsq6++mquvvjoPPvhgDj/88O280mJ4GWEncOihh+byyy/vsK1v374VWk3n069fv3zqU5/KNddck/b29nzqU59Kv379Kr0s2Crv9ufJpl4W1d7e3mH7rrvuWv56w4YNaWtr67DtE5/4RH71q1+9k2V3KgceeGCef/75nHfeefnYxz6W3r17Z9y4cfntb3+b5K8vV3v44YezYcOGXHPNNR3et/j5z38+X/va13L++eenS5culTqEHd6jjz6a++67r/weuK5du+b444/PVVdd9bYB/PrZLy8h3DY29zNrzpw5FVpR5/P6c/Dyyy/nyiuvzGOPPZapU6d2mDnrrLPyT//0T2lra0v37t3zj//4j/nSl75UoRVvW2KrE+jVq1f22WefSi+jUzv55JPz1a9+NUnyf//v/63wamDrvZufJ7W1tXnuuec22r5q1ar079+/fL2pqan89b333puzzjqrw/vAevbsuVWP31m8//3vz09+8pMceuihGTt2bBobG3PllVeWP6jn9Zfv3H777fmv//qvjd4TsWHDhtxxxx0ZN27cdl/7zmLu3Ll59dVX8/73v7+8rb29Pd26dUtLS0v23XffPPLII5u873/+538mSQYPHrxd1rqz29zPrH333TfJX7/f9fX123tZncobn4Pvf//7OfTQQ3P++ed3eFXEP/7jP+akk07KLrvskgEDBuxU/7PBywhhOxg7dmzWr1+f9evX58gjj6z0cqAi6uvr09ramvvuu6+87d57701ra2tGjRpV3rbPPvuUL+9///vTtWvXjbbx1vbaa68sXLgwK1euzJgxY9K7d+/y92/QoEFJ/hoEn/vc59LU1NThcsIJJ2Tu3LkVPoId16uvvpprr702F110UYfv63/8x39k0KBBmTdvXj73uc/lzjvv3Oh9Wa+99louueSS7L///hu9n4tta8yYMenXr99mfyWCD8gozje/+c38y7/8S/785z+Xt/Xr1y/77LNPBg4cuFOFVuLMVqfQ1ta20fshunbt6qVs21GXLl2yfPny8tewo3qrnyfNzc1pbm7OH/7whyTJgw8+mN69e2evvfZK3759s99++2Xs2LGZPHly+XeonHLKKRk/frxPIizAnnvumbvvvjuHHnpoxowZk9tvvz2lUinJX88m/uIXv8jPf/7zDB06tMP9TjzxxHzqU5/KqlWrsscee1Ri6Tu0W2+9NS0tLZk0aVL5+/26v//7v8/cuXNzzz335JZbbslRRx2Viy66KCNGjMhzzz2XmTNnZvny5bnzzjt3un9wVspb/cy68sor89nPfjYTJkzIaaedln322SfPP/98brrppjz99NOZP39+hVa9czvkkENywAEHZObMmZk9e3all1M4Z7Y6gcbGxgwYMKDD5eMf/3ill9Xp9OnTJ3369Kn0MuBdeaufJz/4wQ/y0Y9+NJMnT06SfPKTn8xHP/rR/PznPy/ff968eRk2bFjGjBmTMWPG5MADD8x1111XkWPpDN7//vdn4cKFWb16dY444ojy/62/9tpr06tXr02+Af3QQw9N7969PS9bae7cuRk9evRGoZUkxx57bJqamvLII4/krrvuyoknnphzzjkn++yzT8aOHZsuXbpkyZIlGTlyZAVWvnN6q59Zn/70p7N48eJ069YtEydOzIc+9KH8wz/8Q1pbW3PBBRdUeOU7t+nTp2fOnDl55plnKr2UwlW1v/5OTAAAALYZZ7YAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYAAAAKILYA4B166qmnUlVVlaampkovBYD3MLEFwE7rpJNOSlVVVaqqqtK1a9fstdde+fKXv5yWlpZ3tI+jjz66w7a6urqsWLEiQ4cO3cYrBmBnIrYA2KmNHTs2K1asyFNPPZUrr7wyv/jFLzJlypR3tc8uXbqktrY2Xbt23UarBGBnJLYA2KlVV1entrY2e+65Z8aMGZPjjz8+d9xxR5Jkw4YNmTRpUvbee+/07NkzQ4YMyfe+973yfWfMmJFrrrkmt9xyS/kM2d13373RywjvvvvuVFVV5de//nWGDx+eXXbZJaNGjcqjjz7aYS0XXHBBampq0rt373zxi1/M17/+9XzkIx/ZXt8KALYzsQVAp/HEE0+ksbEx3bp1S5K89tpr2XPPPXPTTTflkUceyXnnnZdzzjknN910U5LkjDPOyHHHHVc+O7ZixYqMGjVqs/s/99xzc9FFF+X+++9P165dc/LJJ5dvmzdvXr797W/nu9/9bpYtW5a99torl19+ebEHDEBFef0DADu1W2+9Nbvuums2bNiQv/zlL0mSiy++OEnSrVu3nH/++eXZvffeO4sXL85NN92U4447Lrvuumt69uyZtra21NbWvu1jffvb387BBx+cJPn617+eT33qU/nLX/6SHj165LLLLsukSZPyhS98IUly3nnn5Y477sjatWu39SED8B7hzBYAO7VDDz00TU1NuffeezN16tQceeSRmTp1avn2H/zgBxk+fHj22GOP7LrrrpkzZ06efvrprXqsAw88sPz1gAEDkiQrV65Mkjz66KP5n//zf3aYf/N1AHYuYguAnVqvXr2yzz775MADD8z3v//9tLW1lc9m3XTTTfna176Wk08+OXfccUeampryhS98IevXr9+qx3r95YlJUlVVleSvL1V887bXtbe3b9XjALBjEFsAdCrf/OY38y//8i/585//nN/+9rcZNWpUpkyZko9+9KPZZ5998sc//rHDfPfu3bNhw4Z3/bhDhgzJfffd12Hb/fff/673C8B7l9gCoFM55JBDcsABB2TmzJnZZ599cv/99+f222/PY489lm984xtZunRph/kPfOADeeCBB/Loo4/m+eefzyuvvLJVjzt16tTMnTs311xzTR5//PFccMEFeeCBBzY62wXAzkNsAdDpTJ8+PXPmzMnRRx+dY445Jscff3xGjBiRF154YaPfwTV58uQMGTKk/L6u3/3ud1v1mCeccELOPvvsnHHGGfnbv/3bPPnkkznppJPSo0ePbXFIALwHVbV7wTgAVMQRRxyR2traXHfddZVeCgAF8NHvALAdvPzyy/nBD36QI488Ml26dMmPf/zj3HnnnVmwYEGllwZAQZzZAoDtYN26dTnqqKPy7//+72lra8uQIUPyT//0TznmmGMqvTQACiK2AAAACuADMgAAAAogtgAAAAogtgAAAAogtgAAAAogtgAAAAogtgAAAAogtgAAAAogtgAAAAogtgAAAArw/wFVlXLa1VoqbAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#Now for Rating\n", + "sb.countplot(x='Rating',data=df, palette='hls')\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1-One-hot Coding\n" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Name_ Tales of Xillia 2Name_.hack//Infection Part 1Name_.hack//Mutation Part 2Name_.hack//Outbreak Part 3Name_007 RacingName_007: Quantum of SolaceName_007: The World is not EnoughName_1 vs. 100Name_10 Minute SolutionName_100 All-Time Favorites...Developer_syn SophiaDeveloper_zSlideRating_AORating_ERating_E10+Rating_ECRating_K-ARating_MRating_RPRating_T
00000000000...0001000000
20000000000...0001000000
30000000000...0001000000
60000000000...0001000000
70000000000...0001000000
80000000000...0001000000
110000000000...0001000000
130000000000...0001000000
140000000000...0001000000
150000000000...0001000000
160000000000...0000000100
170000000000...0000000100
190000000000...0001000000
230000000000...0000000100
240000000000...0000000100
260000000000...0001000000
280000000000...0001000000
290000000000...0000000100
320000000000...0000000100
340000000000...0000000100
\n", + "

20 rows × 8138 columns

\n", + "
" + ], + "text/plain": [ + " Name_ Tales of Xillia 2 Name_.hack//Infection Part 1 \\\n", + "0 0 0 \n", + "2 0 0 \n", + "3 0 0 \n", + "6 0 0 \n", + "7 0 0 \n", + "8 0 0 \n", + "11 0 0 \n", + "13 0 0 \n", + "14 0 0 \n", + "15 0 0 \n", + "16 0 0 \n", + "17 0 0 \n", + "19 0 0 \n", + "23 0 0 \n", + "24 0 0 \n", + "26 0 0 \n", + "28 0 0 \n", + "29 0 0 \n", + "32 0 0 \n", + "34 0 0 \n", + "\n", + " Name_.hack//Mutation Part 2 Name_.hack//Outbreak Part 3 Name_007 Racing \\\n", + "0 0 0 0 \n", + "2 0 0 0 \n", + "3 0 0 0 \n", + "6 0 0 0 \n", + "7 0 0 0 \n", + "8 0 0 0 \n", + "11 0 0 0 \n", + "13 0 0 0 \n", + "14 0 0 0 \n", + "15 0 0 0 \n", + "16 0 0 0 \n", + "17 0 0 0 \n", + "19 0 0 0 \n", + "23 0 0 0 \n", + "24 0 0 0 \n", + "26 0 0 0 \n", + "28 0 0 0 \n", + "29 0 0 0 \n", + "32 0 0 0 \n", + "34 0 0 0 \n", + "\n", + " Name_007: Quantum of Solace Name_007: The World is not Enough \\\n", + "0 0 0 \n", + "2 0 0 \n", + "3 0 0 \n", + "6 0 0 \n", + "7 0 0 \n", + "8 0 0 \n", + "11 0 0 \n", + "13 0 0 \n", + "14 0 0 \n", + "15 0 0 \n", + "16 0 0 \n", + "17 0 0 \n", + "19 0 0 \n", + "23 0 0 \n", + "24 0 0 \n", + "26 0 0 \n", + "28 0 0 \n", + "29 0 0 \n", + "32 0 0 \n", + "34 0 0 \n", + "\n", + " Name_1 vs. 100 Name_10 Minute Solution Name_100 All-Time Favorites ... \\\n", + "0 0 0 0 ... \n", + "2 0 0 0 ... \n", + "3 0 0 0 ... \n", + "6 0 0 0 ... \n", + "7 0 0 0 ... \n", + "8 0 0 0 ... \n", + "11 0 0 0 ... \n", + "13 0 0 0 ... \n", + "14 0 0 0 ... \n", + "15 0 0 0 ... \n", + "16 0 0 0 ... \n", + "17 0 0 0 ... \n", + "19 0 0 0 ... \n", + "23 0 0 0 ... \n", + "24 0 0 0 ... \n", + "26 0 0 0 ... \n", + "28 0 0 0 ... \n", + "29 0 0 0 ... \n", + "32 0 0 0 ... \n", + "34 0 0 0 ... \n", + "\n", + " Developer_syn Sophia Developer_zSlide Rating_AO Rating_E Rating_E10+ \\\n", + "0 0 0 0 1 0 \n", + "2 0 0 0 1 0 \n", + "3 0 0 0 1 0 \n", + "6 0 0 0 1 0 \n", + "7 0 0 0 1 0 \n", + "8 0 0 0 1 0 \n", + "11 0 0 0 1 0 \n", + "13 0 0 0 1 0 \n", + "14 0 0 0 1 0 \n", + "15 0 0 0 1 0 \n", + "16 0 0 0 0 0 \n", + "17 0 0 0 0 0 \n", + "19 0 0 0 1 0 \n", + "23 0 0 0 0 0 \n", + "24 0 0 0 0 0 \n", + "26 0 0 0 1 0 \n", + "28 0 0 0 1 0 \n", + "29 0 0 0 0 0 \n", + "32 0 0 0 0 0 \n", + "34 0 0 0 0 0 \n", + "\n", + " Rating_EC Rating_K-A Rating_M Rating_RP Rating_T \n", + "0 0 0 0 0 0 \n", + "2 0 0 0 0 0 \n", + "3 0 0 0 0 0 \n", + "6 0 0 0 0 0 \n", + "7 0 0 0 0 0 \n", + "8 0 0 0 0 0 \n", + "11 0 0 0 0 0 \n", + "13 0 0 0 0 0 \n", + "14 0 0 0 0 0 \n", + "15 0 0 0 0 0 \n", + "16 0 0 1 0 0 \n", + "17 0 0 1 0 0 \n", + "19 0 0 0 0 0 \n", + "23 0 0 1 0 0 \n", + "24 0 0 1 0 0 \n", + "26 0 0 0 0 0 \n", + "28 0 0 0 0 0 \n", + "29 0 0 1 0 0 \n", + "32 0 0 1 0 0 \n", + "34 0 0 1 0 0 \n", + "\n", + "[20 rows x 8138 columns]" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#The first approach is to use the commonly used one-hot coding method. \n", + "#This will take a categorical variable and create a set of new variables corresponding \n", + "#with each distinct value in the variable, and then populate it with a binary value to \n", + "#indicate the original value.\n", + "\n", + "#apply one-hot-coding to all the categorical variables\n", + "# and create a new dataframe to store the results\n", + "\n", + "df2 = pd.get_dummies(df)\n", + "df2.head(20)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(9873, 8138)" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df2.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As you can see we now have 8138 variables in the pandas dataframe!\n", + "That is a lot and may not be workable for you. You may need to look at some feature reduction methods to reduce the number of variables." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2-Find and Replace - Manual Coding\n" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "E 3949\n", + "T 2939\n", + "M 1560\n", + "E10+ 1411\n", + "EC 8\n", + "K-A 3\n", + "RP 2\n", + "AO 1\n", + "Name: Rating, dtype: int64" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#In this example we will simple replace the values with defined values.\n", + "#Let’s have a look at values in the Ratings variable and their frequencies.\n", + "df['Rating'].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NamePlatformYear_of_ReleaseGenrePublisherNA_SalesEU_SalesJP_SalesOther_SalesGlobal_SalesCritic_ScoreCritic_CountUser_ScoreUser_CountDeveloperRating
0Wii SportsWii2006.0SportsNintendo41.3628.963.778.4582.5376.051.08322.0NintendoE
1Super Mario Bros.NES1985.0PlatformNintendo29.083.586.810.7740.24NaNNaNNaNNaNNaNNaN
2Mario Kart WiiWii2008.0RacingNintendo15.6812.763.793.2935.5282.073.08.3709.0NintendoE
3Wii Sports ResortWii2009.0SportsNintendo15.6110.933.282.9532.7780.073.08192.0NintendoE
4Pokemon Red/Pokemon BlueGB1996.0Role-PlayingNintendo11.278.8910.221.0031.37NaNNaNNaNNaNNaNNaN
5TetrisGB1989.0PuzzleNintendo23.202.264.220.5830.26NaNNaNNaNNaNNaNNaN
6New Super Mario Bros.DS2006.0PlatformNintendo11.289.146.502.8829.8089.065.08.5431.0NintendoE
7Wii PlayWii2006.0MiscNintendo13.969.182.932.8428.9258.041.06.6129.0NintendoE
8New Super Mario Bros. WiiWii2009.0PlatformNintendo14.446.944.702.2428.3287.080.08.4594.0NintendoE
9Duck HuntNES1984.0ShooterNintendo26.930.630.280.4728.31NaNNaNNaNNaNNaNNaN
\n", + "
" + ], + "text/plain": [ + " Name Platform Year_of_Release Genre \\\n", + "0 Wii Sports Wii 2006.0 Sports \n", + "1 Super Mario Bros. NES 1985.0 Platform \n", + "2 Mario Kart Wii Wii 2008.0 Racing \n", + "3 Wii Sports Resort Wii 2009.0 Sports \n", + "4 Pokemon Red/Pokemon Blue GB 1996.0 Role-Playing \n", + "5 Tetris GB 1989.0 Puzzle \n", + "6 New Super Mario Bros. DS 2006.0 Platform \n", + "7 Wii Play Wii 2006.0 Misc \n", + "8 New Super Mario Bros. Wii Wii 2009.0 Platform \n", + "9 Duck Hunt NES 1984.0 Shooter \n", + "\n", + " Publisher NA_Sales EU_Sales JP_Sales Other_Sales Global_Sales \\\n", + "0 Nintendo 41.36 28.96 3.77 8.45 82.53 \n", + "1 Nintendo 29.08 3.58 6.81 0.77 40.24 \n", + "2 Nintendo 15.68 12.76 3.79 3.29 35.52 \n", + "3 Nintendo 15.61 10.93 3.28 2.95 32.77 \n", + "4 Nintendo 11.27 8.89 10.22 1.00 31.37 \n", + "5 Nintendo 23.20 2.26 4.22 0.58 30.26 \n", + "6 Nintendo 11.28 9.14 6.50 2.88 29.80 \n", + "7 Nintendo 13.96 9.18 2.93 2.84 28.92 \n", + "8 Nintendo 14.44 6.94 4.70 2.24 28.32 \n", + "9 Nintendo 26.93 0.63 0.28 0.47 28.31 \n", + "\n", + " Critic_Score Critic_Count User_Score User_Count Developer Rating \n", + "0 76.0 51.0 8 322.0 Nintendo E \n", + "1 NaN NaN NaN NaN NaN NaN \n", + "2 82.0 73.0 8.3 709.0 Nintendo E \n", + "3 80.0 73.0 8 192.0 Nintendo E \n", + "4 NaN NaN NaN NaN NaN NaN \n", + "5 NaN NaN NaN NaN NaN NaN \n", + "6 89.0 65.0 8.5 431.0 Nintendo E \n", + "7 58.0 41.0 6.6 129.0 Nintendo E \n", + "8 87.0 80.0 8.4 594.0 Nintendo E \n", + "9 NaN NaN NaN NaN NaN NaN " + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "videoReview.head(10)\n", + "#df.head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NamePlatformGenrePublisherUser_ScoreDeveloperRating
0Wii SportsWiiSportsNintendo8Nintendo1
2Mario Kart WiiWiiRacingNintendo8.3Nintendo1
3Wii Sports ResortWiiSportsNintendo8Nintendo1
6New Super Mario Bros.DSPlatformNintendo8.5Nintendo1
7Wii PlayWiiMiscNintendo6.6Nintendo1
8New Super Mario Bros. WiiWiiPlatformNintendo8.4Nintendo1
11Mario Kart DSDSRacingNintendo8.6Nintendo1
13Wii FitWiiSportsNintendo7.7Nintendo1
14Kinect Adventures!X360MiscMicrosoft Game Studios6.3Good Science Studio1
15Wii Fit PlusWiiSportsNintendo7.4Nintendo1
\n", + "
" + ], + "text/plain": [ + " Name Platform Genre Publisher \\\n", + "0 Wii Sports Wii Sports Nintendo \n", + "2 Mario Kart Wii Wii Racing Nintendo \n", + "3 Wii Sports Resort Wii Sports Nintendo \n", + "6 New Super Mario Bros. DS Platform Nintendo \n", + "7 Wii Play Wii Misc Nintendo \n", + "8 New Super Mario Bros. Wii Wii Platform Nintendo \n", + "11 Mario Kart DS DS Racing Nintendo \n", + "13 Wii Fit Wii Sports Nintendo \n", + "14 Kinect Adventures! X360 Misc Microsoft Game Studios \n", + "15 Wii Fit Plus Wii Sports Nintendo \n", + "\n", + " User_Score Developer Rating \n", + "0 8 Nintendo 1 \n", + "2 8.3 Nintendo 1 \n", + "3 8 Nintendo 1 \n", + "6 8.5 Nintendo 1 \n", + "7 6.6 Nintendo 1 \n", + "8 8.4 Nintendo 1 \n", + "11 8.6 Nintendo 1 \n", + "13 7.7 Nintendo 1 \n", + "14 6.3 Good Science Studio 1 \n", + "15 7.4 Nintendo 1 " + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#The last 4 values listed have very small number of occurrences.\n", + "#We will group these into having one value/category\n", + "\n", + "find_replace = {\"Rating\" : {\"E\": 1, \"T\": 2, \"M\": 3, \"E10+\": 4, \"EC\": 5, \"K-A\": 5, \"RP\": 5, \"AO\": 5}}\n", + "df.replace(find_replace, inplace=True)\n", + "df.head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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AWILAACgALEFAABQgNgCAAAoQGwBAAAUILYAAAAKEFsAAAAFiC0AAIACxBYAAEABYgsAAKAAsQUAAFCA2AIAAChAbAEAABQgtgAAAAoQWwAAAAWILQAAgALEFgAAQAFiCwAAoACxBQAAUEBdY2v58uUZP358hg0blmHDhqW9vT3f+c53avsvvfTSNDQ09HlMnjy5zzF6e3szf/78jBw5MkOGDMmsWbPy5JNP9pnZtm1bOjo6UqlUUqlU0tHRke3btx+MUwQAAI5QdY2tE044IZ/+9KezYcOGbNiwIWeffXbe8Y535NFHH63NTJ8+PVu2bKk97rrrrj7HWLBgQVatWpWVK1dm7dq12blzZ2bOnJk9e/bUZmbPnp2urq50dnams7MzXV1d6ejoOGjnCQAAHHkG1vPNzz///D7PP/WpT2X58uVZt25dTj/99CRJY2NjWlpaXvL1PT09ufnmm3Pbbbdl6tSpSZLbb789bW1tueeee3LeeeflscceS2dnZ9atW5dJkyYlSVasWJH29vZs2rQpY8aMKXiGAADAkeqQ+c3Wnj17snLlyjz33HNpb2+vbb/33nvT1NSUN7zhDZk7d262bt1a27dx48Y8//zzmTZtWm1ba2trxo4dm/vuuy9Jcv/996dSqdRCK0kmT56cSqVSm3kpvb292bFjR58HAADAvqp7bD388MM59thj09jYmA984ANZtWpVTjvttCTJjBkzcscdd+R73/terrvuuqxfvz5nn312ent7kyTd3d0ZNGhQjjvuuD7HbG5uTnd3d22mqalpr/dtamqqzbyUpUuX1n7jValU0tbWdqBOGQAAOALU9WuESTJmzJh0dXVl+/bt+frXv55LLrkka9asyWmnnZaLL764Njd27NhMnDgxJ510Ur797W/nwgsvfNljVqvVNDQ01J7//r9fbubFrr766ixcuLD2fMeOHYILAADYZ3WPrUGDBuXkk09OkkycODHr16/P5z//+dx00017zY4aNSonnXRSHn/88SRJS0tLdu/enW3btvW5urV169ZMmTKlNvPUU0/tdaynn346zc3NL7uuxsbGNDY2/kHnBgAAHLnq/jXCF6tWq7WvCb7YM888k82bN2fUqFFJkgkTJuSoo47K6tWrazNbtmzJI488Uout9vb29PT05MEHH6zNPPDAA+np6anNAAAAHGh1vbJ1zTXX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rVixIh/84AczcuTItLS0pKGhobavoaFBbAEAAEe8/Yqta6+9Np/61Kfy4Q9/+ECvBwAAoF/Yr7+ztW3btvzpn/7pgV4LAABAv7FfsfWnf/qnufvuuw/0WgAAAPqN/foa4cknn5yPfexjWbduXcaNG5ejjjqqz/4rrrjigCwOAADgcLVfsfWlL30pxx57bNasWZM1a9b02dfQ0CC2AACAI95+xdYTTzxxoNcBAADQr+zXb7YAAAB4Zft1Zeu9733vK+7/m7/5m/1aDAAAQH+xX7G1bdu2Ps+ff/75PPLII9m+fXvOPvvsA7IwAACAw9l+xdaqVav22va73/0u8+bNy+tf//o/eFEAAACHuwP2m63Xve51+cu//MvccMMNB+qQAAAAh60DeoOMf/3Xf81vf/vbA3lIAACAw9J+fY1w4cKFfZ5Xq9Vs2bIl3/72t3PJJZcckIUBAAAczvYrtv7pn/6pz/PXve51Of7443Pddde96p0KAQAAjgT7FVvf//73D/Q6AAAA+pU/6DdbTz/9dNauXZsf/ehHefrpp1/z65cuXZo3v/nNGTp0aJqamnLBBRdk06ZNfWaq1WoWL16c1tbWDB48OGeeeWYeffTRPjO9vb2ZP39+Ro4cmSFDhmTWrFl58skn+8xs27YtHR0dqVQqqVQq6ejoyPbt21/zmgEAAPbFfsXWc889l/e+970ZNWpU3va2t+Wtb31rWltbM2fOnPz617/e5+OsWbMml19+edatW5fVq1fnt7/9baZNm5bnnnuuNvPZz342119/fZYtW5b169enpaUl5557bp599tnazIIFC7Jq1aqsXLkya9euzc6dOzNz5szs2bOnNjN79ux0dXWls7MznZ2d6erqSkdHx/6cPgAAwKtqqFar1df6ove///255557smzZsvzJn/xJkmTt2rW54oorcu6552b58uX7tZinn346TU1NWbNmTd72trelWq2mtbU1CxYsyIc//OEk/3EVq7m5OZ/5zGfy/ve/Pz09PTn++ONz22235eKLL06S/PKXv0xbW1vuuuuunHfeeXnsscdy2mmnZd26dZk0aVKSZN26dWlvb88///M/Z8yYMa+6th07dqRSqaSnpyfDhg17zee24YoPvObXcPia+IUv1u29v7XBZ+1IMmti/T5rAHCk2tc22K8rW1//+tdz8803Z8aMGRk2bFiGDRuW//E//kdWrFiR//t//+9+L7qnpydJMnz48CTJE088ke7u7kybNq0209jYmDPOOCP33XdfkmTjxo15/vnn+8y0trZm7NixtZn7778/lUqlFlpJMnny5FQqldoMAADAgbRfN8j49a9/nebm5r22NzU1vaavEf6+arWahQsX5i1veUvGjh2bJOnu7k6Svd6rubk5//Zv/1abGTRoUI477ri9Zl54fXd3d5qaml5yvS/MvFhvb296e3trz3fs2LFf5wUAAByZ9uvKVnt7ez7xiU/kN7/5TW3brl278slPfjLt7e37tZAPfehDeeihh/K3f/u3e+1raGjo87xare617cVePPNS8690nKVLl9ZuplGpVNLW1rYvpwEAAJBkP2Prc5/7XO67776ccMIJOeecczJ16tS0tbXlRz/6UT7/+c+/5uPNnz8/3/rWt/L9738/J5xwQm17S0tLkux19Wnr1q21q10tLS3ZvXt3tm3b9oozTz311F7v+/TTT7/kFbokufrqq9PT01N7bN68+TWfFwAAcOTar9gaN25cHn/88SxdujRvetObMn78+Hz605/OT3/605x++un7fJxqtZoPfehD+bu/+7t873vfy+jRo/vsHz16dFpaWrJ69eratt27d2fNmjWZMmVKkmTChAk56qij+sxs2bIljzzySG2mvb09PT09efDBB2szDzzwQHp6emozL9bY2Fj7PdoLDwAAgH21X7/ZWrp0aZqbmzN37tw+2//mb/4mTz/9dO3Oga/m8ssvz5133plvfvObGTp0aO0KVqVSyeDBg9PQ0JAFCxZkyZIlOeWUU3LKKadkyZIlOeaYYzJ79uza7Jw5c3LllVdmxIgRGT58eBYtWpRx48Zl6tSpSZJTTz0106dPz9y5c3PTTTclSS677LLMnDlzn+5ECAAA8Frt15Wtm266KX/0R3+01/bTTz89X/zivt+GePny5enp6cmZZ56ZUaNG1R5f/epXazNXXXVVFixYkHnz5mXixIn5f//v/+Xuu+/O0KFDazM33HBDLrjgglx00UX5kz/5kxxzzDH5+7//+wwYMKA2c8cdd2TcuHGZNm1apk2blvHjx+e2227bn9MHAAB4Vfv1d7aOPvroPPbYY3t97e9nP/tZTjvttD43zugv/J0tXgt/Z4uDxd/ZAoCDr+jf2XrhZhgv9qMf/Sitra37c0gA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hmTcuHF5/PHHa7/jevEVqq1bt9audrW0tGT37t3Ztm3by868nMbGxgwbNqzPAwAAYF8dVrHV29ubxx57LKNGjcro0aPT0tKS1atX1/bv3r07a9asyZQpU5IkEyZMyFFHHdVnZsuWLXnkkUdqMwAAACUc0ncjXLRoUc4///yceOKJ2bp1a6699trs2LEjl1xySRoaGrJgwYIsWbIkp5xySk455ZQsWbIkxxxzTGbPnp0kqVQqmTNnTq688sqMGDEiw4cPz6JFi2pfSwQAACjlkI6tJ598Mn/+53+eX/3qVzn++OMzefLkrFu3LieddFKS5KqrrsquXbsyb968bNu2LZMmTcrdd9+doUOH1o5xww03ZODAgbnooouya9eunHPOObnlllsyYMCAep0WAABwBDikY2vlypWvuL+hoSGLFy/O4sWLX3bm6KOPzo033pgbb7zxAK8OAADg5R1Wv9kCAAA4XIgtAACAAsQWAABAAWILAACgALEFAABQgNgCAAAoQGwBAAAUILYAAAAKEFsAAAAFiC0AAIACxBYAAEABYgsAAKAAsQUAAFCA2AIAAChAbAEAABQgtgAAAAoQWwAAAAWILQAAgALEFgAAQAFiCwAAoACxBQAAUIDYAgAAKEBsAQAAFCC2AAAAChBbAAAABYgtAACAAsQWAABAAWILAACgALEFAABQgNgCAAAoQGwBAAAUILYAAAAKEFsAAAAFiC0AAIACxBYAAEABYgsAAKAAsQUAAFCA2AIAAChAbAEAABQgtgAAAAoQWwAAAAWILQAAgALEFgAAQAFiCwAAoACxBQAAUIDYAgAAKEBsAQAAFCC2AAAAChBbAAAABYgtAACAAsQWAABAAWILAACgALEFAABQgNgCAAAoQGwBAAAUILYAAAAKEFsAAAAFiC0AAIACxBYAAEABYgsAAKAAsQUAAFCA2AIAAChAbAEAABRwRMXWX/3VX2X06NE5+uijM2HChPzwhz+s95IAAIB+6oiJra9+9atZsGBBPvrRj+af/umf8ta3vjUzZszIL37xi3ovDQAA6IeOmNi6/vrrM2fOnLzvfe/Lqaeems997nNpa2vL8uXL6700AACgHxpY7wUcDLt3787GjRvzkY98pM/2adOm5b777qvTqgAAOJR87wMb6r0EDqKzvzix+HscEbH1q1/9Knv27Elzc3Of7c3Nzenu7n7J1/T29qa3t7f2vKenJ0myY8eO/VrDzt279+t1HJ7293NyIPx6p8/akaSen7XdO3fV7b05+Or6WfvNzrq9NwdfPT9rz+32WTuS/CGftRdeW61WX3HuiIitFzQ0NPR5Xq1W99r2gqVLl+aTn/zkXtvb2tqKrI1+5qYv13sFHDF81jg4vpxF9V4CR4gvf6LeK+CIcQD+L/TZZ59NpVJ52f1HRGyNHDkyAwYM2Osq1tatW/e62vWCq6++OgsXLqw9/93vfpd///d/z4gRI1420Ohrx44daWtry+bNmzNs2LB6L4d+zGeNg8VnjYPFZ42DxWdt/1Sr1Tz77LNpbW19xbkjIrYGDRqUCRMmZPXq1XnnO99Z27569eq84x3veMnXNDY2prGxsc+2//Sf/lPJZfZbw4YN8z9eDgqfNQ4WnzUOFp81Dhaftdfula5oveCIiK0kWbhwYTo6OjJx4sS0t7fnS1/6Un7xi1/kAx/4QL2XBgAA9ENHTGxdfPHFeeaZZ/K//tf/ypYtWzJ27NjcddddOemkk+q9NAAAoB86YmIrSebNm5d58+bVexlHjMbGxnziE5/Y6+uYcKD5rHGw+KxxsPiscbD4rJXVUH21+xUCAADwmr2u3gsAAADoj8QWAABAAWILAACgALEFAABQgNjigPvBD36Q888/P62trWloaMg3vvGNei+Jfmrp0qV585vfnKFDh6apqSkXXHBBNm3aVO9l0Q8tX74848ePr/3Rz/b29nznO9+p97I4AixdujQNDQ1ZsGBBvZdCP7N48eI0NDT0ebS0tNR7Wf2O2OKAe+655/LGN74xy5Ytq/dS6OfWrFmTyy+/POvWrcvq1avz29/+NtOmTctzzz1X76XRz5xwwgn59Kc/nQ0bNmTDhg05++yz8453vCOPPvpovZdGP7Z+/fp86Utfyvjx4+u9FPqp008/PVu2bKk9Hn744Xovqd85ov7OFgfHjBkzMmPGjHovgyNAZ2dnn+df/vKX09TUlI0bN+Ztb3tbnVZFf3T++ef3ef6pT30qy5cvz7p163L66afXaVX0Zzt37sy73/3urFixItdee229l0M/NXDgQFezCnNlC+g3enp6kiTDhw+v80roz/bs2ZOVK1fmueeeS3t7e72XQz91+eWX5+1vf3umTp1a76XQjz3++ONpbW3N6NGj82d/9mf52c9+Vu8l9TuubAH9QrVazcKFC/OWt7wlY8eOrfdy6IcefvjhtLe35ze/+U2OPfbYrFq1Kqeddlq9l0U/tHLlyvz4xz/O+vXr670U+rFJkyblK1/5St7whjfkqaeeyrXXXpspU6bk0UcfzYgRI+q9vH5DbAH9woc+9KE89NBDWbt2bb2XQj81ZsyYdHV1Zfv27fn617+eSy65JGvWrBFcHFCbN2/OX/zFX+Tuu+/O0UcfXe/l0I/9/k8+xo0bl/b29vzX//pfc+utt2bhwoV1XFn/IraAw978+fPzrW99Kz/4wQ9ywgkn1Hs59FODBg3KySefnCSZOHFi1q9fn89//vO56aab6rwy+pONGzdm69atmTBhQm3bnj178oMf/CDLli1Lb29vBgwYUMcV0l8NGTIk48aNy+OPP17vpfQrYgs4bFWr1cyfPz+rVq3Kvffem9GjR9d7SRxBqtVqent7670M+plzzjlnrzvCvec978kf/dEf5cMf/rDQopje3t489thjeetb31rvpfQrYosDbufOnfnpT39ae/7EE0+kq6srw4cPz4knnljHldHfXH755bnzzjvzzW9+M0OHDk13d3eSpFKpZPDgwXVeHf3JNddckxkzZqStrS3PPvtsVq5cmXvvvXevO2LCH2ro0KF7/e50yJAhGTFihN+jckAtWrQo559/fk488cRs3bo11157bXbs2JFLLrmk3kvrV8QWB9yGDRty1lln1Z6/8L3fSy65JLfcckudVkV/tHz58iTJmWee2Wf7l7/85Vx66aUHf0H0W0899VQ6OjqyZcuWVCqVjB8/Pp2dnTn33HPrvTSA/fLkk0/mz//8z/OrX/0qxx9/fCZPnpx169blpJNOqvfS+pWGarVarfciAAAA+ht/ZwsAAKAAsQUAAFCA2AIAAChAbAEAABQgtgAAAAoQWwAAAAWILQAAgALEFgC8Rj//+c/T0NCQrq6uei8FgEOY2AKg37r00kvT0NCQhoaGDBw4MCeeeGI++MEPZtu2ba/pGBdccEGfbW1tbdmyZUvGjh17gFcMQH8itgDo16ZPn54tW7bk5z//ef76r/86f//3f5958+b9QcccMGBAWlpaMnDgwAO0SgD6I7EFQL/W2NiYlpaWnHDCCZk2bVouvvji3H333UmSPXv2ZM6cORk9enQGDx6cMWPG5POf/3zttYsXL86tt96ab37zm7UrZPfee+9eXyO8995709DQkH/8x3/MxIkTc8wxx2TKlCnZtGlTn7Vce+21aWpqytChQ/O+970vH/nIR/KmN73pYP2nAOAgE1sAHDF+9rOfpbOzM0cddVSS5He/+11OOOGEfO1rX8tPfvKTfPzjH88111yTr33ta0mSRYsW5aKLLqpdHduyZUumTJnyssf/6Ec/muuuuy4bNmzIwIED8973vre274477sinPvWpfOYzn8nGjRtz4oknZvny5WVPGIC68v0HAPq1f/iHf8ixxx6bPXv25De/+U2S5Prrr0+SHHXUUfnkJz9Zmx09enTuu+++fO1rX8tFF12UY489NoMHD05vb29aWlpe9b0+9alP5YwzzkiSfOQjH8nb3/72/OY3v8nRRx+dG2+8MXPmzMl73vOeJMnHP/7x3H333dm5c+eBPmUADhGubAHQr5111lnp6urKAw88kPnz5+e8887L/Pnza/u/+MUvZuLEiTn++ONz7LHHZsWKFfnFL36xX+81fvz42r9HjRqVJNm6dWuSZNOmTfnv//2/95l/8XMA+hexBUC/NmTIkJx88skZP358vvCFL6S3t7d2NetrX/ta/vIv/zLvfe97c/fdd6erqyvvec97snv37v16rxe+npgkDQ0NSf7jq4ov3vaCarW6X+8DwOFBbAFwRPnEJz6R//N//k9++ctf5oc//GGmTJmSefPm5Y//+I9z8skn51//9V/7zA8aNCh79uz5g993zJgxefDBB/ts27Bhwx98XAAOXWILgCPKmWeemdNPPz1LlizJySefnA0bNuS73/1u/uVf/iUf+9jHsn79+j7z/+W//Jc89NBD2bRpU371q1/l+eef36/3nT9/fm6++ebceuutefzxx3PttdfmoYce2utqFwD9h9gC4IizcOHCrFixIhdccEEuvPDCXHzxxZk0aVKeeeaZvf4G19y5czNmzJja77p+9KMf7dd7vvvd787VV1+dRYsW5b/9t/+WJ554IpdeemmOPvroA3FKAByCGqq+MA4AdXHuueempaUlt912W72XAkABbv0OAAfBr3/963zxi1/MeeedlwEDBuRv//Zvc88992T16tX1XhoAhbiyBQAHwa5du3L++efnxz/+cXp7ezNmzJj8z//5P3PhhRfWe2kAFCK2AAAACnCDDAAAgALEFgAAQAFiCwAAoACxBQAAUIDYAgAAKEBsAQAAFCC2AAAAChBbAAAABYgtAACAAv4/CYwlGHQeJP4AAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#Now plot the newly generated rating values and their frequencies.\n", + "sb.countplot(x='Rating',data=df, palette='hls')" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "#Question: How does this plot compare to plot of original data?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3 – Label encoding\n" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Name object\n", + "Platform object\n", + "Genre object\n", + "Publisher object\n", + "User_Score object\n", + "Developer object\n", + "Rating int64\n", + "dtype: object" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#With this technique where each distinct value in a categorical variable is converted to a number.\n", + "#In this scenario you don’t get to pick the numeric value assigned to the value. It is system determined.\n", + "\n", + "#let's check the data types again\n", + "df.dtypes" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Name object\n", + "Platform object\n", + "Genre object\n", + "Publisher object\n", + "User_Score object\n", + "Developer object\n", + "Rating int64\n", + "Platform_Category category\n", + "dtype: object" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Our categorical variables are of ‘object’ data type. \n", + "#We need to convert to a category data type.\n", + "#In this example ‘Platform’ has a large-ish number of values and we want a quick way of \n", + "# converting them we can illustrate this by creating a new variable.\n", + "df[\"Platform_Category\"] = df[\"Platform\"].astype('category')\n", + "df.dtypes" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NamePlatformGenrePublisherUser_ScoreDeveloperRatingPlatform_Category
0Wii SportsWiiSportsNintendo8Nintendo112
2Mario Kart WiiWiiRacingNintendo8.3Nintendo112
3Wii Sports ResortWiiSportsNintendo8Nintendo112
6New Super Mario Bros.DSPlatformNintendo8.5Nintendo12
7Wii PlayWiiMiscNintendo6.6Nintendo112
8New Super Mario Bros. WiiWiiPlatformNintendo8.4Nintendo112
11Mario Kart DSDSRacingNintendo8.6Nintendo12
13Wii FitWiiSportsNintendo7.7Nintendo112
14Kinect Adventures!X360MiscMicrosoft Game Studios6.3Good Science Studio114
15Wii Fit PlusWiiSportsNintendo7.4Nintendo112
16Grand Theft Auto VPS3ActionTake-Two Interactive8.2Rockstar North38
17Grand Theft Auto: San AndreasPS2ActionTake-Two Interactive9Rockstar North37
19Brain Age: Train Your Brain in Minutes a DayDSMiscNintendo7.9Nintendo12
23Grand Theft Auto VX360ActionTake-Two Interactive8.1Rockstar North314
24Grand Theft Auto: Vice CityPS2ActionTake-Two Interactive8.7Rockstar North37
26Brain Age 2: More Training in Minutes a DayDSPuzzleNintendo7.1Nintendo12
28Gran Turismo 3: A-SpecPS2RacingSony Computer Entertainment8.4Polyphony Digital17
29Call of Duty: Modern Warfare 3X360ShooterActivision3.4Infinity Ward, Sledgehammer Games314
32Call of Duty: Black OpsX360ShooterActivision6.3Treyarch314
34Call of Duty: Black Ops IIPS3ShooterActivision5.3Treyarch38
\n", + "
" + ], + "text/plain": [ + " Name Platform Genre \\\n", + "0 Wii Sports Wii Sports \n", + "2 Mario Kart Wii Wii Racing \n", + "3 Wii Sports Resort Wii Sports \n", + "6 New Super Mario Bros. DS Platform \n", + "7 Wii Play Wii Misc \n", + "8 New Super Mario Bros. Wii Wii Platform \n", + "11 Mario Kart DS DS Racing \n", + "13 Wii Fit Wii Sports \n", + "14 Kinect Adventures! X360 Misc \n", + "15 Wii Fit Plus Wii Sports \n", + "16 Grand Theft Auto V PS3 Action \n", + "17 Grand Theft Auto: San Andreas PS2 Action \n", + "19 Brain Age: Train Your Brain in Minutes a Day DS Misc \n", + "23 Grand Theft Auto V X360 Action \n", + "24 Grand Theft Auto: Vice City PS2 Action \n", + "26 Brain Age 2: More Training in Minutes a Day DS Puzzle \n", + "28 Gran Turismo 3: A-Spec PS2 Racing \n", + "29 Call of Duty: Modern Warfare 3 X360 Shooter \n", + "32 Call of Duty: Black Ops X360 Shooter \n", + "34 Call of Duty: Black Ops II PS3 Shooter \n", + "\n", + " Publisher User_Score Developer \\\n", + "0 Nintendo 8 Nintendo \n", + "2 Nintendo 8.3 Nintendo \n", + "3 Nintendo 8 Nintendo \n", + "6 Nintendo 8.5 Nintendo \n", + "7 Nintendo 6.6 Nintendo \n", + "8 Nintendo 8.4 Nintendo \n", + "11 Nintendo 8.6 Nintendo \n", + "13 Nintendo 7.7 Nintendo \n", + "14 Microsoft Game Studios 6.3 Good Science Studio \n", + "15 Nintendo 7.4 Nintendo \n", + "16 Take-Two Interactive 8.2 Rockstar North \n", + "17 Take-Two Interactive 9 Rockstar North \n", + "19 Nintendo 7.9 Nintendo \n", + "23 Take-Two Interactive 8.1 Rockstar North \n", + "24 Take-Two Interactive 8.7 Rockstar North \n", + "26 Nintendo 7.1 Nintendo \n", + "28 Sony Computer Entertainment 8.4 Polyphony Digital \n", + "29 Activision 3.4 Infinity Ward, Sledgehammer Games \n", + "32 Activision 6.3 Treyarch \n", + "34 Activision 5.3 Treyarch \n", + "\n", + " Rating Platform_Category \n", + "0 1 12 \n", + "2 1 12 \n", + "3 1 12 \n", + "6 1 2 \n", + "7 1 12 \n", + "8 1 12 \n", + "11 1 2 \n", + "13 1 12 \n", + "14 1 14 \n", + "15 1 12 \n", + "16 3 8 \n", + "17 3 7 \n", + "19 1 2 \n", + "23 3 14 \n", + "24 3 7 \n", + "26 1 2 \n", + "28 1 7 \n", + "29 3 14 \n", + "32 3 14 \n", + "34 3 8 " + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Now convert this new variable to numeric.\n", + "df[\"Platform_Category\"] = df[\"Platform_Category\"].cat.codes\n", + "df.head(20)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Platform\n", + "3DS 226\n", + "DC 14\n", + "DS 1255\n", + "GBA 517\n", + "GC 469\n", + "PC 760\n", + "PS 201\n", + "PS2 1478\n", + "PS3 947\n", + "PS4 252\n", + "PSP 543\n", + "PSV 149\n", + "Wii 997\n", + "WiiU 105\n", + "X360 1041\n", + "XB 733\n", + "XOne 186\n", + "Name: Platform, dtype: int64" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#The number assigned to the Platform_Category variable is based on the alphabetical \n", + "#ordering of the values in the Platform variable. \n", + "df.groupby(\"Platform\")[\"Platform\"].count()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4-Using SciKit-Learn transform\n" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/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", + "
GenreGenre_Code
0Sports10
2Racing6
3Sports10
6Platform4
7Misc3
8Platform4
11Racing6
13Sports10
14Misc3
15Sports10
\n", + "
" + ], + "text/plain": [ + " Genre Genre_Code\n", + "0 Sports 10\n", + "2 Racing 6\n", + "3 Sports 10\n", + "6 Platform 4\n", + "7 Misc 3\n", + "8 Platform 4\n", + "11 Racing 6\n", + "13 Sports 10\n", + "14 Misc 3\n", + "15 Sports 10" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#SciKit-Learn has a number of functions to help with data encodings. \n", + "#The one we will look at in this example is the ‘fit_transform’ function.\n", + "\n", + "#This will perform a similar task to what we have seen in a previous example\n", + "#Let's use the fit_tranforms function to encode the Genre variable\n", + "\n", + "from sklearn.preprocessing import LabelEncoder\n", + "\n", + "le_make = LabelEncoder()\n", + "df[\"Genre_Code\"] = le_make.fit_transform(df[\"Genre\"])\n", + "df[[\"Genre\", \"Genre_Code\"]].head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Genre_Code\n", + "0 2177\n", + "1 435\n", + "2 435\n", + "3 875\n", + "4 566\n", + "5 336\n", + "6 863\n", + "7 770\n", + "8 1017\n", + "9 564\n", + "10 1500\n", + "11 335\n", + "Name: Genre_Code, dtype: int64" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#And we can see this comparison when we look at the frequency counts.\n", + "df.groupby(\"Genre_Code\")[\"Genre_Code\"].count()" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NamePlatformGenrePublisherUser_ScoreDeveloperRatingPlatform_CategoryGenre_Code
0Wii SportsWiiSportsNintendo8Nintendo11210
2Mario Kart WiiWiiRacingNintendo8.3Nintendo1126
3Wii Sports ResortWiiSportsNintendo8Nintendo11210
6New Super Mario Bros.DSPlatformNintendo8.5Nintendo124
7Wii PlayWiiMiscNintendo6.6Nintendo1123
8New Super Mario Bros. WiiWiiPlatformNintendo8.4Nintendo1124
11Mario Kart DSDSRacingNintendo8.6Nintendo126
13Wii FitWiiSportsNintendo7.7Nintendo11210
14Kinect Adventures!X360MiscMicrosoft Game Studios6.3Good Science Studio1143
15Wii Fit PlusWiiSportsNintendo7.4Nintendo11210
\n", + "
" + ], + "text/plain": [ + " Name Platform Genre Publisher \\\n", + "0 Wii Sports Wii Sports Nintendo \n", + "2 Mario Kart Wii Wii Racing Nintendo \n", + "3 Wii Sports Resort Wii Sports Nintendo \n", + "6 New Super Mario Bros. DS Platform Nintendo \n", + "7 Wii Play Wii Misc Nintendo \n", + "8 New Super Mario Bros. Wii Wii Platform Nintendo \n", + "11 Mario Kart DS DS Racing Nintendo \n", + "13 Wii Fit Wii Sports Nintendo \n", + "14 Kinect Adventures! X360 Misc Microsoft Game Studios \n", + "15 Wii Fit Plus Wii Sports Nintendo \n", + "\n", + " User_Score Developer Rating Platform_Category Genre_Code \n", + "0 8 Nintendo 1 12 10 \n", + "2 8.3 Nintendo 1 12 6 \n", + "3 8 Nintendo 1 12 10 \n", + "6 8.5 Nintendo 1 2 4 \n", + "7 6.6 Nintendo 1 12 3 \n", + "8 8.4 Nintendo 1 12 4 \n", + "11 8.6 Nintendo 1 2 6 \n", + "13 7.7 Nintendo 1 12 10 \n", + "14 6.3 Good Science Studio 1 14 3 \n", + "15 7.4 Nintendo 1 12 10 " + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head(10)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NamePlatformPublisherUser_ScoreDeveloperRatingPlatform_CategoryGenre_Code
0Wii SportsWiiNintendo8Nintendo11210
2Mario Kart WiiWiiNintendo8.3Nintendo1126
3Wii Sports ResortWiiNintendo8Nintendo11210
6New Super Mario Bros.DSNintendo8.5Nintendo124
7Wii PlayWiiNintendo6.6Nintendo1123
8New Super Mario Bros. WiiWiiNintendo8.4Nintendo1124
11Mario Kart DSDSNintendo8.6Nintendo126
13Wii FitWiiNintendo7.7Nintendo11210
14Kinect Adventures!X360Microsoft Game Studios6.3Good Science Studio1143
15Wii Fit PlusWiiNintendo7.4Nintendo11210
\n", + "
" + ], + "text/plain": [ + " Name Platform Publisher User_Score \\\n", + "0 Wii Sports Wii Nintendo 8 \n", + "2 Mario Kart Wii Wii Nintendo 8.3 \n", + "3 Wii Sports Resort Wii Nintendo 8 \n", + "6 New Super Mario Bros. DS Nintendo 8.5 \n", + "7 Wii Play Wii Nintendo 6.6 \n", + "8 New Super Mario Bros. Wii Wii Nintendo 8.4 \n", + "11 Mario Kart DS DS Nintendo 8.6 \n", + "13 Wii Fit Wii Nintendo 7.7 \n", + "14 Kinect Adventures! X360 Microsoft Game Studios 6.3 \n", + "15 Wii Fit Plus Wii Nintendo 7.4 \n", + "\n", + " Developer Rating Platform_Category Genre_Code \n", + "0 Nintendo 1 12 10 \n", + "2 Nintendo 1 12 6 \n", + "3 Nintendo 1 12 10 \n", + "6 Nintendo 1 2 4 \n", + "7 Nintendo 1 12 3 \n", + "8 Nintendo 1 12 4 \n", + "11 Nintendo 1 2 6 \n", + "13 Nintendo 1 12 10 \n", + "14 Good Science Studio 1 14 3 \n", + "15 Nintendo 1 12 10 " + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#And now we can drop the Genre variable from the dataframe as it is no longer needed. \n", + "#BUT you will need to have recorded the mapping between the original Genre values and \n", + "#the numeric values for future reference.\n", + "df = df.drop('Genre', axis=1)\n", + "df.head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.9" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}