diff --git a/01_Billboard.ipynb b/01_Billboard.ipynb index 779a38c..ce5ea35 100644 --- a/01_Billboard.ipynb +++ b/01_Billboard.ipynb @@ -2,7 +2,6 @@ "cells": [ { "cell_type": "markdown", - "id": "adequate-aurora", "metadata": { "toc": true }, @@ -13,7 +12,6 @@ }, { "cell_type": "markdown", - "id": "together-terminology", "metadata": {}, "source": [ "## Import libraries" @@ -22,7 +20,6 @@ { "cell_type": "code", "execution_count": 1, - "id": "little-prophet", "metadata": {}, "outputs": [], "source": [ @@ -33,7 +30,6 @@ }, { "cell_type": "markdown", - "id": "political-wright", "metadata": {}, "source": [ "## Store the hot-100 songs list from billboard url in a variable" @@ -41,8 +37,7 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "promotional-algorithm", + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -51,7 +46,6 @@ }, { "cell_type": "markdown", - "id": "indian-fossil", "metadata": {}, "source": [ "## Download html with a get request" @@ -59,17 +53,29 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "civic-broad", + "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "200" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ + "get = requests.get(url)\n", + "get.status_code\n", + "\n", "# 200 status code means OK!" ] }, { "cell_type": "markdown", - "id": "arbitrary-patrick", "metadata": {}, "source": [ "## Parse html (create the 'soup')" @@ -77,15 +83,15 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "revised-digest", + "execution_count": 4, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "soup = BeautifulSoup(get.content, \"html.parser\")" + ] }, { "cell_type": "markdown", - "id": "damaged-watts", "metadata": {}, "source": [ "## Retrieve/extract the desired info" @@ -93,25 +99,28 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "falling-chambers", + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# song titles\n", + "song_titles = soup.find_all(\"span\", class_=\"chart-element__information__song text--truncate color--primary\")\n", "\n", "# artists\n", + "artists = soup.find_all(\"span\", class_=\"chart-element__information__artist text--truncate color--secondary\")\n", "\n", "# last week\n", + "last_week_ranks = soup.find_all(\"span\", class_= \"chart-element__meta text--center color--secondary text--last\")\n", "\n", "# peak rank\n", + "peak_ranks = soup.find_all(\"span\", class_= \"chart-element__meta text--center color--secondary text--peak\")\n", "\n", - "# weeks on chart\n" + "# weeks on chart\n", + "weeks_on_chart = soup.find_all(\"span\", class_= \"chart-element__meta text--center color--secondary text--week\")\n" ] }, { "cell_type": "markdown", - "id": "employed-chemistry", "metadata": {}, "source": [ "## Get the text" @@ -119,15 +128,794 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "amateur-protocol", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# function to return just the text from each of the html variables from above\n", + "# also takes a list of the html variables so I don't have to apply the function to each one individually\n", + "\n", + "def text_getter(list_of_html_elements):\n", + " for element in list_of_html_elements:\n", + " for datapoint in range(len(element)):\n", + " element[datapoint] = element[datapoint].get_text()\n", + " return(list_of_html_elements)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "# list of the above variables \n", + "\n", + "lsts = [song_titles, artists, last_week_ranks, peak_ranks, weeks_on_chart]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[['My Universe',\n", + " 'Stay',\n", + " 'Industry Baby',\n", + " 'Way 2 Sexy',\n", + " 'Fancy Like',\n", + " 'Bad Habits',\n", + " 'Good 4 U',\n", + " 'Kiss Me More',\n", + " 'Knife Talk',\n", + " 'Levitating',\n", + " 'Essence',\n", + " 'Save Your Tears',\n", + " 'Montero (Call Me By Your Name)',\n", + " 'Shivers',\n", + " 'Heat Waves',\n", + " 'Need To Know',\n", + " 'Girls Want Girls',\n", + " 'You Right',\n", + " \"Beggin'\",\n", + " 'Wockesha',\n", + " \"If I Didn't Love You\",\n", + " 'Take My Breath',\n", + " 'Fair Trade',\n", + " 'Thats What I Want',\n", + " 'Traitor',\n", + " 'Cold Beer Calling My Name',\n", + " 'Chasing After You',\n", + " 'Bad Morning',\n", + " 'Pepas',\n", + " 'Deja Vu',\n", + " 'Happier Than Ever',\n", + " 'Your Heart',\n", + " 'Leave The Door Open',\n", + " 'Hurricane',\n", + " 'A-O-K',\n", + " 'Butter',\n", + " 'On My Side',\n", + " 'Too Easy',\n", + " 'Leave Before You Love Me',\n", + " 'No Where',\n", + " 'Peaches',\n", + " 'Family Ties',\n", + " \"Memory I Don't Mess With\",\n", + " 'Late At Night',\n", + " 'Things A Man Oughta Know',\n", + " 'Cold Heart (PNAU Remix)',\n", + " 'Meet Me At Our Spot',\n", + " 'Life Support',\n", + " 'I Was On A Boat That Day',\n", + " 'Love Nwantiti (Ah Ah Ah)',\n", + " 'Wild Side',\n", + " 'Whole Lotta Money',\n", + " 'Hold Me Down',\n", + " 'Champagne Poetry',\n", + " 'Buy Dirt',\n", + " 'Have Mercy',\n", + " 'Love Again',\n", + " 'Nevada',\n", + " '50 Shots',\n", + " 'No Friends In The Industry',\n", + " 'Smoke Strong',\n", + " 'Break Or Make Me',\n", + " 'You Time',\n", + " 'Gyalis',\n", + " 'Cold As You',\n", + " 'My Boy',\n", + " 'Sincerely',\n", + " \"Drunk (And I Don't Wanna Go Home)\",\n", + " \"I Can't Take It Back\",\n", + " 'Waves',\n", + " 'Sharing Locations',\n", + " 'In The Bible',\n", + " 'Thot Shit',\n", + " 'Rumors',\n", + " 'Woman',\n", + " \"Thinking 'Bout You\",\n", + " 'Baddest',\n", + " '2055',\n", + " 'Memory',\n", + " 'Forgiato',\n", + " 'You Should Probably Leave',\n", + " \"Drinkin' Beer. Talkin' God. Amen.\",\n", + " 'Rich Shit',\n", + " 'TSU',\n", + " 'Volvi',\n", + " 'Todo de Ti',\n", + " 'Love All',\n", + " 'N 2 Deep',\n", + " 'Yonaguni',\n", + " 'Knowing You',\n", + " 'For Tonight',\n", + " 'Baddest Thing',\n", + " 'Summer Of Love',\n", + " 'Get Into It (Yuh)',\n", + " 'Same Boat',\n", + " 'Pipe Down',\n", + " \"Papi's Home\",\n", + " 'Chosen',\n", + " 'Toxic Punk',\n", + " 'Moon'],\n", + " ['Coldplay x BTS',\n", + " 'The Kid LAROI & Justin Bieber',\n", + " 'Lil Nas X & Jack Harlow',\n", + " 'Drake Featuring Future & Young Thug',\n", + " 'Walker Hayes',\n", + " 'Ed Sheeran',\n", + " 'Olivia Rodrigo',\n", + " 'Doja Cat Featuring SZA',\n", + " 'Drake Featuring 21 Savage & Project Pat',\n", + " 'Dua Lipa',\n", + " 'Wizkid Featuring Justin Bieber & Tems',\n", + " 'The Weeknd & Ariana Grande',\n", + " 'Lil Nas X',\n", + " 'Ed Sheeran',\n", + " 'Glass Animals',\n", + " 'Doja Cat',\n", + " 'Drake Featuring Lil Baby',\n", + " 'Doja Cat & The Weeknd',\n", + " 'Maneskin',\n", + " 'Moneybagg Yo',\n", + " 'Jason Aldean & Carrie Underwood',\n", + " 'The Weeknd',\n", + " 'Drake Featuring Travis Scott',\n", + " 'Lil Nas X',\n", + " 'Olivia Rodrigo',\n", + " 'Jameson Rodgers Featuring Luke Combs',\n", + " 'Ryan Hurd With Maren Morris',\n", + " 'YoungBoy Never Broke Again',\n", + " 'Farruko',\n", + " 'Olivia Rodrigo',\n", + " 'Billie Eilish',\n", + " 'Joyner Lucas & J. Cole',\n", + " 'Silk Sonic (Bruno Mars & Anderson .Paak)',\n", + " 'Kanye West',\n", + " 'Tai Verdes',\n", + " 'BTS',\n", + " 'YoungBoy Never Broke Again',\n", + " 'Gunna & Future',\n", + " 'Marshmello X Jonas Brothers',\n", + " 'YoungBoy Never Broke Again',\n", + " 'Justin Bieber Featuring Daniel Caesar & Giveon',\n", + " 'Baby Keem & Kendrick Lamar',\n", + " 'Lee Brice',\n", + " 'Roddy Ricch',\n", + " 'Lainey Wilson',\n", + " 'Elton John & Dua Lipa',\n", + " 'THE ANXIETY: WILLOW & Tyler Cole',\n", + " 'YoungBoy Never Broke Again',\n", + " 'Old Dominion',\n", + " 'CKay',\n", + " 'Normani Featuring Cardi B',\n", + " 'BIA Featuring Nicki Minaj',\n", + " 'YoungBoy Never Broke Again',\n", + " 'Drake',\n", + " 'Jordan Davis Featuring Luke Bryan',\n", + " 'Chloe',\n", + " 'Dua Lipa',\n", + " 'YoungBoy Never Broke Again',\n", + " 'YoungBoy Never Broke Again',\n", + " 'Drake',\n", + " 'YoungBoy Never Broke Again',\n", + " 'YoungBoy Never Broke Again',\n", + " 'Scotty McCreery',\n", + " 'Capella Grey',\n", + " 'Luke Combs',\n", + " 'Elvie Shane',\n", + " 'YoungBoy Never Broke Again',\n", + " 'Elle King & Miranda Lambert',\n", + " 'YoungBoy Never Broke Again',\n", + " 'Luke Bryan',\n", + " 'Meek Mill Featuring Lil Baby & Lil Durk',\n", + " 'Drake Featuring Lil Durk & Giveon',\n", + " 'Megan Thee Stallion',\n", + " 'Lizzo Featuring Cardi B',\n", + " 'Doja Cat',\n", + " 'Dustin Lynch Featuring Lauren Alaina Or MacKenzie Porter',\n", + " 'Yung Bleu, Chris Brown & 2 Chainz',\n", + " 'Sleepy Hallow',\n", + " 'Kane Brown X blackbear',\n", + " 'YoungBoy Never Broke Again',\n", + " 'Chris Stapleton',\n", + " 'Chase Rice Featuring Florida Georgia Line',\n", + " 'YoungBoy Never Broke Again',\n", + " 'Drake',\n", + " 'Aventura x Bad Bunny',\n", + " 'Rauw Alejandro',\n", + " 'Drake Featuring JAY-Z',\n", + " 'Drake Featuring Future',\n", + " 'Bad Bunny',\n", + " 'Kenny Chesney',\n", + " 'Giveon',\n", + " 'YoungBoy Never Broke Again',\n", + " 'Shawn Mendes & Tainy',\n", + " 'Doja Cat',\n", + " 'Zac Brown Band',\n", + " 'Drake',\n", + " 'Drake',\n", + " 'Blxst & Tyga Featuring Ty Dolla $ign',\n", + " 'YoungBoy Never Broke Again',\n", + " 'Kanye West'],\n", + " ['-',\n", + " '1',\n", + " '2',\n", + " '3',\n", + " '5',\n", + " '4',\n", + " '6',\n", + " '7',\n", + " '8',\n", + " '11',\n", + " '14',\n", + " '12',\n", + " '9',\n", + " '17',\n", + " '16',\n", + " '18',\n", + " '13',\n", + " '19',\n", + " '20',\n", + " '35',\n", + " '22',\n", + " '21',\n", + " '15',\n", + " '10',\n", + " '25',\n", + " '29',\n", + " '32',\n", + " '-',\n", + " '27',\n", + " '23',\n", + " '28',\n", + " '-',\n", + " '33',\n", + " '31',\n", + " '39',\n", + " '24',\n", + " '71',\n", + " '-',\n", + " '26',\n", + " '-',\n", + " '36',\n", + " '38',\n", + " '54',\n", + " '45',\n", + " '34',\n", + " '74',\n", + " '44',\n", + " '79',\n", + " '53',\n", + " '80',\n", + " '52',\n", + " '58',\n", + " '-',\n", + " '30',\n", + " '55',\n", + " '56',\n", + " '51',\n", + " '-',\n", + " '-',\n", + " '40',\n", + " '-',\n", + " '-',\n", + " '50',\n", + " '64',\n", + " '69',\n", + " '67',\n", + " '-',\n", + " '70',\n", + " '-',\n", + " '60',\n", + " '61',\n", + " '43',\n", + " '49',\n", + " '46',\n", + " '62',\n", + " '81',\n", + " '78',\n", + " '65',\n", + " '73',\n", + " '-',\n", + " '83',\n", + " '77',\n", + " '-',\n", + " '48',\n", + " '75',\n", + " '82',\n", + " '57',\n", + " '59',\n", + " '85',\n", + " '96',\n", + " '-',\n", + " '-',\n", + " '87',\n", + " '84',\n", + " '98',\n", + " '68',\n", + " '66',\n", + " '-',\n", + " '-',\n", + " '76'],\n", + " ['1',\n", + " '1',\n", + " '2',\n", + " '1',\n", + " '5',\n", + " '2',\n", + " '1',\n", + " '3',\n", + " '4',\n", + " '2',\n", + " '11',\n", + " '1',\n", + " '1',\n", + " '14',\n", + " '15',\n", + " '14',\n", + " '2',\n", + " '11',\n", + " '19',\n", + " '20',\n", + " '15',\n", + " '6',\n", + " '3',\n", + " '10',\n", + " '9',\n", + " '26',\n", + " '27',\n", + " '28',\n", + " '26',\n", + " '3',\n", + " '11',\n", + " '32',\n", + " '1',\n", + " '6',\n", + " '35',\n", + " '1',\n", + " '37',\n", + " '38',\n", + " '19',\n", + " '40',\n", + " '1',\n", + " '18',\n", + " '43',\n", + " '20',\n", + " '32',\n", + " '46',\n", + " '44',\n", + " '48',\n", + " '49',\n", + " '50',\n", + " '14',\n", + " '16',\n", + " '53',\n", + " '4',\n", + " '51',\n", + " '28',\n", + " '51',\n", + " '58',\n", + " '59',\n", + " '11',\n", + " '61',\n", + " '62',\n", + " '50',\n", + " '64',\n", + " '65',\n", + " '66',\n", + " '67',\n", + " '53',\n", + " '69',\n", + " '24',\n", + " '22',\n", + " '7',\n", + " '16',\n", + " '4',\n", + " '62',\n", + " '76',\n", + " '77',\n", + " '51',\n", + " '50',\n", + " '80',\n", + " '63',\n", + " '24',\n", + " '83',\n", + " '9',\n", + " '22',\n", + " '32',\n", + " '10',\n", + " '12',\n", + " '10',\n", + " '87',\n", + " '91',\n", + " '92',\n", + " '48',\n", + " '68',\n", + " '95',\n", + " '14',\n", + " '8',\n", + " '98',\n", + " '99',\n", + " '17'],\n", + " ['1',\n", + " '12',\n", + " '10',\n", + " '4',\n", + " '15',\n", + " '14',\n", + " '20',\n", + " '25',\n", + " '4',\n", + " '52',\n", + " '13',\n", + " '42',\n", + " '27',\n", + " '3',\n", + " '37',\n", + " '16',\n", + " '4',\n", + " '14',\n", + " '14',\n", + " '23',\n", + " '10',\n", + " '8',\n", + " '4',\n", + " '2',\n", + " '19',\n", + " '13',\n", + " '22',\n", + " '1',\n", + " '10',\n", + " '26',\n", + " '9',\n", + " '1',\n", + " '30',\n", + " '5',\n", + " '13',\n", + " '19',\n", + " '2',\n", + " '1',\n", + " '19',\n", + " '1',\n", + " '28',\n", + " '5',\n", + " '10',\n", + " '17',\n", + " '20',\n", + " '4',\n", + " '3',\n", + " '3',\n", + " '13',\n", + " '2',\n", + " '11',\n", + " '12',\n", + " '1',\n", + " '4',\n", + " '8',\n", + " '3',\n", + " '11',\n", + " '1',\n", + " '1',\n", + " '4',\n", + " '1',\n", + " '1',\n", + " '9',\n", + " '9',\n", + " '9',\n", + " '14',\n", + " '1',\n", + " '23',\n", + " '1',\n", + " '15',\n", + " '5',\n", + " '4',\n", + " '16',\n", + " '7',\n", + " '9',\n", + " '7',\n", + " '9',\n", + " '11',\n", + " '12',\n", + " '1',\n", + " '13',\n", + " '18',\n", + " '1',\n", + " '4',\n", + " '9',\n", + " '18',\n", + " '4',\n", + " '4',\n", + " '17',\n", + " '7',\n", + " '1',\n", + " '1',\n", + " '6',\n", + " '8',\n", + " '2',\n", + " '4',\n", + " '4',\n", + " '1',\n", + " '1',\n", + " '5']]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "text_getter(lsts)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['1',\n", + " '1',\n", + " '2',\n", + " '1',\n", + " '5',\n", + " '2',\n", + " '1',\n", + " '3',\n", + " '4',\n", + " '2',\n", + " '11',\n", + " '1',\n", + " '1',\n", + " '14',\n", + " '15',\n", + " '14',\n", + " '2',\n", + " '11',\n", + " '19',\n", + " '20',\n", + " '15',\n", + " '6',\n", + " '3',\n", + " '10',\n", + " '9',\n", + " '26',\n", + " '27',\n", + " '28',\n", + " '26',\n", + " '3',\n", + " '11',\n", + " '32',\n", + " '1',\n", + " '6',\n", + " '35',\n", + " '1',\n", + " '37',\n", + " '38',\n", + " '19',\n", + " '40',\n", + " '1',\n", + " '18',\n", + " '43',\n", + " '20',\n", + " '32',\n", + " '46',\n", + " '44',\n", + " '48',\n", + " '49',\n", + " '50',\n", + " '14',\n", + " '16',\n", + " '53',\n", + " '4',\n", + " '51',\n", + " '28',\n", + " '51',\n", + " '58',\n", + " '59',\n", + " '11',\n", + " '61',\n", + " '62',\n", + " '50',\n", + " '64',\n", + " '65',\n", + " '66',\n", + " '67',\n", + " '53',\n", + " '69',\n", + " '24',\n", + " '22',\n", + " '7',\n", + " '16',\n", + " '4',\n", + " '62',\n", + " '76',\n", + " '77',\n", + " '51',\n", + " '50',\n", + " '80',\n", + " '63',\n", + " '24',\n", + " '83',\n", + " '9',\n", + " '22',\n", + " '32',\n", + " '10',\n", + " '12',\n", + " '10',\n", + " '87',\n", + " '91',\n", + " '92',\n", + " '48',\n", + " '68',\n", + " '95',\n", + " '14',\n", + " '8',\n", + " '98',\n", + " '99',\n", + " '17']" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# testing a variable to see if the function worked\n", + "\n", + "peak_ranks" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Coldplay x BTS',\n", + " 'The Kid LAROI & Justin Bieber',\n", + " 'Lil Nas X & Jack Harlow',\n", + " 'Drake Featuring Future & Young Thug',\n", + " 'Walker Hayes',\n", + " 'Ed Sheeran',\n", + " 'Olivia Rodrigo',\n", + " 'Doja Cat Featuring SZA',\n", + " 'Drake Featuring 21 Savage & Project Pat',\n", + " 'Dua Lipa',\n", + " 'Wizkid Featuring Justin Bieber & Tems',\n", + " 'The Weeknd & Ariana Grande',\n", + " 'Lil Nas X',\n", + " 'Ed Sheeran',\n", + " 'Glass Animals',\n", + " 'Doja Cat',\n", + " 'Drake Featuring Lil Baby',\n", + " 'Doja Cat & The Weeknd',\n", + " 'Maneskin',\n", + " 'Moneybagg Yo',\n", + " 'Jason Aldean & Carrie Underwood',\n", + " 'The Weeknd',\n", + " 'Drake Featuring Travis Scott',\n", + " 'Lil Nas X',\n", + " 'Olivia Rodrigo',\n", + " 'Jameson Rodgers Featuring Luke Combs',\n", + " 'Ryan Hurd With Maren Morris',\n", + " 'YoungBoy Never Broke Again',\n", + " 'Farruko',\n", + " 'Olivia Rodrigo',\n", + " 'Billie Eilish',\n", + " 'Joyner Lucas & J. Cole',\n", + " 'Silk Sonic (Bruno Mars & Anderson .Paak)',\n", + " 'Kanye West',\n", + " 'Tai Verdes',\n", + " 'BTS',\n", + " 'YoungBoy Never Broke Again',\n", + " 'Gunna & Future',\n", + " 'Marshmello X Jonas Brothers',\n", + " 'YoungBoy Never Broke Again',\n", + " 'Justin Bieber Featuring Daniel Caesar & Giveon',\n", + " 'Baby Keem & Kendrick Lamar',\n", + " 'Lee Brice',\n", + " 'Roddy Ricch',\n", + " 'Lainey Wilson',\n", + " 'Elton John & Dua Lipa',\n", + " 'THE ANXIETY: WILLOW & Tyler Cole',\n", + " 'YoungBoy Never Broke Again',\n", + " 'Old Dominion',\n", + " 'CKay',\n", + " 'Normani Featuring Cardi B',\n", + " 'BIA Featuring Nicki Minaj',\n", + " 'YoungBoy Never Broke Again',\n", + " 'Drake',\n", + " 'Jordan Davis Featuring Luke Bryan',\n", + " 'Chloe',\n", + " 'Dua Lipa',\n", + " 'YoungBoy Never Broke Again',\n", + " 'YoungBoy Never Broke Again',\n", + " 'Drake',\n", + " 'YoungBoy Never Broke Again',\n", + " 'YoungBoy Never Broke Again',\n", + " 'Scotty McCreery',\n", + " 'Capella Grey',\n", + " 'Luke Combs',\n", + " 'Elvie Shane',\n", + " 'YoungBoy Never Broke Again',\n", + " 'Elle King & Miranda Lambert',\n", + " 'YoungBoy Never Broke Again',\n", + " 'Luke Bryan',\n", + " 'Meek Mill Featuring Lil Baby & Lil Durk',\n", + " 'Drake Featuring Lil Durk & Giveon',\n", + " 'Megan Thee Stallion',\n", + " 'Lizzo Featuring Cardi B',\n", + " 'Doja Cat',\n", + " 'Dustin Lynch Featuring Lauren Alaina Or MacKenzie Porter',\n", + " 'Yung Bleu, Chris Brown & 2 Chainz',\n", + " 'Sleepy Hallow',\n", + " 'Kane Brown X blackbear',\n", + " 'YoungBoy Never Broke Again',\n", + " 'Chris Stapleton',\n", + " 'Chase Rice Featuring Florida Georgia Line',\n", + " 'YoungBoy Never Broke Again',\n", + " 'Drake',\n", + " 'Aventura x Bad Bunny',\n", + " 'Rauw Alejandro',\n", + " 'Drake Featuring JAY-Z',\n", + " 'Drake Featuring Future',\n", + " 'Bad Bunny',\n", + " 'Kenny Chesney',\n", + " 'Giveon',\n", + " 'YoungBoy Never Broke Again',\n", + " 'Shawn Mendes & Tainy',\n", + " 'Doja Cat',\n", + " 'Zac Brown Band',\n", + " 'Drake',\n", + " 'Drake',\n", + " 'Blxst & Tyga Featuring Ty Dolla $ign',\n", + " 'YoungBoy Never Broke Again',\n", + " 'Kanye West']" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# testing a variable to see if the function worked\n", + "\n", + "artists" + ] }, { "cell_type": "markdown", - "id": "every-degree", "metadata": {}, "source": [ "## Build a dataframe" @@ -135,17 +923,192 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "external-instrumentation", + "execution_count": 11, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "charts = pd.DataFrame(\n", + " {\"song_titles\": song_titles,\n", + " \"artist\": artists,\n", + " \"last_week_rank\": last_week_ranks,\n", + " \"peak_rank\": peak_ranks,\n", + " \"weeks_on_chart\": weeks_on_chart}\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "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", + "
song_titlesartistlast_week_rankpeak_rankweeks_on_chart
0My UniverseColdplay x BTS-11
1StayThe Kid LAROI & Justin Bieber1112
2Industry BabyLil Nas X & Jack Harlow2210
3Way 2 SexyDrake Featuring Future & Young Thug314
4Fancy LikeWalker Hayes5515
..................
95Pipe DownDrake68144
96Papi's HomeDrake6684
97ChosenBlxst & Tyga Featuring Ty Dolla $ign-981
98Toxic PunkYoungBoy Never Broke Again-991
99MoonKanye West76175
\n", + "

100 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " song_titles artist last_week_rank \\\n", + "0 My Universe Coldplay x BTS - \n", + "1 Stay The Kid LAROI & Justin Bieber 1 \n", + "2 Industry Baby Lil Nas X & Jack Harlow 2 \n", + "3 Way 2 Sexy Drake Featuring Future & Young Thug 3 \n", + "4 Fancy Like Walker Hayes 5 \n", + ".. ... ... ... \n", + "95 Pipe Down Drake 68 \n", + "96 Papi's Home Drake 66 \n", + "97 Chosen Blxst & Tyga Featuring Ty Dolla $ign - \n", + "98 Toxic Punk YoungBoy Never Broke Again - \n", + "99 Moon Kanye West 76 \n", + "\n", + " peak_rank weeks_on_chart \n", + "0 1 1 \n", + "1 1 12 \n", + "2 2 10 \n", + "3 1 4 \n", + "4 5 15 \n", + ".. ... ... \n", + "95 14 4 \n", + "96 8 4 \n", + "97 98 1 \n", + "98 99 1 \n", + "99 17 5 \n", + "\n", + "[100 rows x 5 columns]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "charts" + ] } ], "metadata": { + "interpreter": { + "hash": "576841b4f7799d251ae57aad53f0bddb5c298a2c04b91f5151e4f2b208165af8" + }, "kernelspec": { - "display_name": "Python 3", - "language": "python", + "display_name": "Python 3.8.8 64-bit ('base': conda)", "name": "python3" }, "language_info": { @@ -158,7 +1121,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.5" + "version": "3.8.8" }, "toc": { "base_numbering": 1, diff --git a/02_Further_questions.ipynb b/02_Further_questions.ipynb index 66fb224..779d211 100644 --- a/02_Further_questions.ipynb +++ b/02_Further_questions.ipynb @@ -2,7 +2,6 @@ "cells": [ { "cell_type": "markdown", - "id": "classified-start", "metadata": { "toc": true }, @@ -13,15 +12,24 @@ }, { "cell_type": "markdown", - "id": "cellular-poster", "metadata": {}, "source": [ "As you've seen, scraping the internet is a skill that can get you all sorts of information. Here are some little challenges to gain more experience in the field" ] }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from bs4 import BeautifulSoup\n", + "import requests\n", + "import pandas as pd" + ] + }, { "cell_type": "markdown", - "id": "express-introduction", "metadata": {}, "source": [ "### Retrieve an arbitrary Wikipedia page of \"Python\" and create a list of links on that page" @@ -29,17 +37,346 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "appreciated-bubble", + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "url ='https://en.wikipedia.org/wiki/Python'" ] }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "200" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "get = requests.get(url)\n", + "get.status_code" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "soup = BeautifulSoup(get.content, \"html.parser\")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[Jump to navigation,\n", + " Jump to search,\n", + " Python,\n", + " python,\n", + " Pythonidae,\n", + " edit,\n", + " Python (programming language),\n", + " CMU Common Lisp,\n", + " PERQ 3,\n", + " edit,\n", + " Python of Aenus,\n", + " Python (painter),\n", + " Python of Byzantium,\n", + " Python of Catana,\n", + " Python Anghelo,\n", + " edit,\n", + " Python (Efteling),\n", + " Python (Busch Gardens Tampa Bay),\n", + " Python (Coney Island, Cincinnati, Ohio),\n", + " edit,\n", + " Python (automobile maker),\n", + " Python (Ford prototype),\n", + " edit,\n", + " Python (missile),\n", + " Python (nuclear primary),\n", + " Colt Python,\n", + " edit,\n", + " PYTHON,\n", + " Python (mythology),\n", + " Monty Python,\n", + " Python (Monty) Pictures,\n", + " edit,\n", + " Cython,\n", + " Pyton,\n", + " Pithon,\n", + " disambiguation,\n", + " internal link,\n", + " https://en.wikipedia.org/w/index.php?title=Python&oldid=1048703433,\n", + " Categories,\n", + " Disambiguation pages,\n", + " Human name disambiguation pages,\n", + " Disambiguation pages with given-name-holder lists,\n", + " Disambiguation pages with short descriptions,\n", + " Short description is different from Wikidata,\n", + " All article disambiguation pages,\n", + " All disambiguation pages,\n", + " Animal common name disambiguation pages,\n", + " Talk,\n", + " Contributions,\n", + " Create account,\n", + " Log in,\n", + " Article,\n", + " Talk,\n", + " Read,\n", + " Edit,\n", + " View history,\n", + " Main page,\n", + " Contents,\n", + " Current events,\n", + " Random article,\n", + " About Wikipedia,\n", + " Contact us,\n", + " Donate,\n", + " Help,\n", + " Learn to edit,\n", + " Community portal,\n", + " Recent changes,\n", + " Upload file,\n", + " What links here,\n", + " Related changes,\n", + " Upload file,\n", + " Special pages,\n", + " Permanent link,\n", + " Page information,\n", + " Cite this page,\n", + " Wikidata item,\n", + " Download as PDF,\n", + " Printable version,\n", + " Wikimedia Commons,\n", + " Afrikaans,\n", + " Alemannisch,\n", + " العربية,\n", + " Azərbaycanca,\n", + " বাংলা,\n", + " Беларуская,\n", + " Български,\n", + " Čeština,\n", + " Dansk,\n", + " Deutsch,\n", + " Esperanto,\n", + " Euskara,\n", + " فارسی,\n", + " Français,\n", + " 한국어,\n", + " Hrvatski,\n", + " Ido,\n", + " Bahasa Indonesia,\n", + " Interlingua,\n", + " Íslenska,\n", + " Italiano,\n", + " עברית,\n", + " ქართული,\n", + " Kongo,\n", + " Latina,\n", + " Lëtzebuergesch,\n", + " Magyar,\n", + " मराठी,\n", + " Nederlands,\n", + " 日本語,\n", + " Norsk bokmål,\n", + " Polski,\n", + " Português,\n", + " Русский,\n", + " Slovenčina,\n", + " Српски / srpski,\n", + " Srpskohrvatski / српскохрватски,\n", + " Suomi,\n", + " Svenska,\n", + " ไทย,\n", + " Türkçe,\n", + " Українська,\n", + " اردو,\n", + " Tiếng Việt,\n", + " 中文,\n", + " Edit links,\n", + " Creative Commons Attribution-ShareAlike License,\n", + " Terms of Use,\n", + " Privacy Policy,\n", + " Wikimedia Foundation, Inc.,\n", + " Privacy policy,\n", + " About Wikipedia,\n", + " Disclaimers,\n", + " Contact Wikipedia,\n", + " Mobile view,\n", + " Developers,\n", + " Statistics,\n", + " Cookie statement]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "wiki_data = soup.find_all(\"a\", href=True, text=True)\n", + "wiki_data" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "names = []\n", + "urls = []\n", + "\n", + "for x in soup.find_all('a', href=True):\n", + " urls.append(x['href'])\n", + " names.append(x.text) " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "wiki_df = pd.DataFrame(\n", + " {\"names\": names,\n", + " \"links\": urls,\n", + " }\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "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", + "
nameslinks
0Jump to navigation#mw-head
1Jump to search#searchInput
2Pythonhttps://en.wiktionary.org/wiki/Python
3pythonhttps://en.wiktionary.org/wiki/python
4Pythonidae/wiki/Pythonidae
.........
146Developershttps://www.mediawiki.org/wiki/Special:MyLangu...
147Statisticshttps://stats.wikimedia.org/#/en.wikipedia.org
148Cookie statementhttps://foundation.wikimedia.org/wiki/Cookie_s...
149https://wikimediafoundation.org/
150https://www.mediawiki.org/
\n", + "

151 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " names links\n", + "0 Jump to navigation #mw-head\n", + "1 Jump to search #searchInput\n", + "2 Python https://en.wiktionary.org/wiki/Python\n", + "3 python https://en.wiktionary.org/wiki/python\n", + "4 Pythonidae /wiki/Pythonidae\n", + ".. ... ...\n", + "146 Developers https://www.mediawiki.org/wiki/Special:MyLangu...\n", + "147 Statistics https://stats.wikimedia.org/#/en.wikipedia.org\n", + "148 Cookie statement https://foundation.wikimedia.org/wiki/Cookie_s...\n", + "149 https://wikimediafoundation.org/\n", + "150 https://www.mediawiki.org/\n", + "\n", + "[151 rows x 2 columns]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "wiki_df" + ] + }, { "cell_type": "markdown", - "id": "relevant-performer", "metadata": {}, "source": [ "### Find the number of titles that have changed in the United States Code since its last release point" @@ -47,17 +384,71 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "scenic-surgeon", + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "url = 'http://uscode.house.gov/download/download.shtml'" ] }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "200" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "get = requests.get(url)\n", + "get.status_code" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "soup = BeautifulSoup(get.content, \"html.parser\")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "changes_in_law = soup.find_all(\"div\", class_=\"usctitlechanged\")" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "8\n" + ] + } + ], + "source": [ + "print(len(changes_in_law))" + ] + }, { "cell_type": "markdown", - "id": "acute-necessity", "metadata": {}, "source": [ "### Create a Python list with the top ten FBI's Most Wanted names" @@ -65,17 +456,155 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "starting-blackberry", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "url = 'https://www.fbi.gov/wanted/topten'" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "200" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "get = requests.get(url)\n", + "get.status_code" + ] + }, + { + "cell_type": "code", + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ - "url = 'https://www.fbi.gov/wanted/topten" + "soup = BeautifulSoup(get.content, \"html.parser\")" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[

\n", + " JASON DEREK BROWN\n", + "

,\n", + "

\n", + " ALEXIS FLORES\n", + "

,\n", + "

\n", + " JOSE RODOLFO VILLARREAL-HERNANDEZ\n", + "

,\n", + "

\n", + " OCTAVIANO JUAREZ-CORRO\n", + "

,\n", + "

\n", + " EUGENE PALMER\n", + "

,\n", + "

\n", + " RAFAEL CARO-QUINTERO\n", + "

,\n", + "

\n", + " BHADRESHKUMAR CHETANBHAI PATEL\n", + "

,\n", + "

\n", + " ALEJANDRO ROSALES CASTILLO\n", + "

,\n", + "

\n", + " ROBERT WILLIAM FISHER\n", + "

,\n", + "

\n", + " ARNOLDO JIMENEZ\n", + "

]" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "most_wanted = soup.find_all(\"h3\", class_='title')\n", + "most_wanted" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['\\nJASON DEREK BROWN\\n',\n", + " '\\nALEXIS FLORES\\n',\n", + " '\\nJOSE RODOLFO VILLARREAL-HERNANDEZ\\n',\n", + " '\\nOCTAVIANO JUAREZ-CORRO\\n',\n", + " '\\nEUGENE PALMER\\n',\n", + " '\\nRAFAEL CARO-QUINTERO\\n',\n", + " '\\nBHADRESHKUMAR CHETANBHAI PATEL\\n',\n", + " '\\nALEJANDRO ROSALES CASTILLO\\n',\n", + " '\\nROBERT WILLIAM FISHER\\n',\n", + " '\\nARNOLDO JIMENEZ\\n']" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lst = [name.get_text() for name in most_wanted]\n", + "lst" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['JASON DEREK BROWN',\n", + " 'ALEXIS FLORES',\n", + " 'JOSE RODOLFO VILLARREAL-HERNANDEZ',\n", + " 'OCTAVIANO JUAREZ-CORRO',\n", + " 'EUGENE PALMER',\n", + " 'RAFAEL CARO-QUINTERO',\n", + " 'BHADRESHKUMAR CHETANBHAI PATEL',\n", + " 'ALEJANDRO ROSALES CASTILLO',\n", + " 'ROBERT WILLIAM FISHER',\n", + " 'ARNOLDO JIMENEZ']" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "most_wanted_names = [element.strip() for element in lst]\n", + "most_wanted_names\n" ] }, { "cell_type": "markdown", - "id": "joined-induction", "metadata": {}, "source": [ "### Display the 20 latest earthquakes info (date, time, latitude, longitude and region name) by the EMSC as a pandas dataframe" @@ -83,17 +612,1407 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "copyrighted-taiwan", + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "url = 'https://www.emsc-csem.org/Earthquake/'" ] }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "200" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "get = requests.get(url)\n", + "get.status_code" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "soup = BeautifulSoup(get.content, \"html.parser\")" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['2021-10-08 10:44:08.8',\n", + " '2021-10-08 10:34:32.0',\n", + " '2021-10-08 10:26:26.6',\n", + " '2021-10-08 10:22:05.6',\n", + " '2021-10-08 10:05:03.3',\n", + " '2021-10-08 10:04:53.2',\n", + " '2021-10-08 09:59:29.0',\n", + " '2021-10-08 09:58:56.0',\n", + " '2021-10-08 09:57:59.9',\n", + " '2021-10-08 09:52:26.4',\n", + " '2021-10-08 09:43:41.8',\n", + " '2021-10-08 09:41:48.0',\n", + " '2021-10-08 09:31:20.3',\n", + " '2021-10-08 09:30:00.4',\n", + " '2021-10-08 09:27:58.6',\n", + " '2021-10-08 09:27:56.0',\n", + " '2021-10-08 09:26:38.8',\n", + " '2021-10-08 09:24:35.1',\n", + " '2021-10-08 09:23:56.6',\n", + " '2021-10-08 09:15:40.1',\n", + " '2021-10-08 09:09:40.3',\n", + " '2021-10-08 09:08:49.8',\n", + " '2021-10-08 08:53:08.0',\n", + " '2021-10-08 08:42:56.1',\n", + " '2021-10-08 08:41:42.0',\n", + " '2021-10-08 08:41:38.2',\n", + " '2021-10-08 08:35:14.6',\n", + " '2021-10-08 08:11:04.8',\n", + " '2021-10-08 07:54:07.2',\n", + " '2021-10-08 07:42:11.0',\n", + " '2021-10-08 07:22:57.0',\n", + " '2021-10-08 07:19:53.8',\n", + " '2021-10-08 07:11:07.3',\n", + " '2021-10-08 07:03:22.8',\n", + " '2021-10-08 06:57:38.0',\n", + " '2021-10-08 06:56:23.0',\n", + " '2021-10-08 06:49:01.6',\n", + " '2021-10-08 06:47:22.0',\n", + " '2021-10-08 06:43:07.6',\n", + " '2021-10-08 06:37:33.7',\n", + " '2021-10-08 06:36:19.0',\n", + " '2021-10-08 06:32:54.0',\n", + " '2021-10-08 06:29:26.4',\n", + " '2021-10-08 06:26:50.5',\n", + " '2021-10-08 06:25:28.4',\n", + " '2021-10-08 06:25:04.3',\n", + " '2021-10-08 06:17:54.8',\n", + " '2021-10-08 06:17:08.4',\n", + " '2021-10-08 06:05:06.5',\n", + " '2021-10-08 06:02:09.0']" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# date & time have the same tag in html so first i will make a list of all the dates & times\n", + "# in the original text there are some symbols (\\xa0) which i replaced with the .replace() function\n", + "date_time = [x.a.get_text().replace('\\xa0', ' ') for x in soup.find_all(\"td\", class_='tabev6')]\n", + "date_time" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['28.58',\n", + " '17.83',\n", + " '1.39',\n", + " '122.54',\n", + " '28.56',\n", + " '17.85',\n", + " '19.16',\n", + " '155.47',\n", + " '28.55',\n", + " '17.82',\n", + " '4.47',\n", + " '95.33',\n", + " '15.65',\n", + " '71.91',\n", + " '5.83',\n", + " '124.54',\n", + " '35.40',\n", + " '3.69',\n", + " '19.16',\n", + " '155.47',\n", + " '42.41',\n", + " '2.32',\n", + " '14.10',\n", + " '74.49',\n", + " '34.88',\n", + " '97.67',\n", + " '62.92',\n", + " '150.89',\n", + " '49.15',\n", + " '124.84',\n", + " '15.64',\n", + " '71.92',\n", + " '28.56',\n", + " '17.83',\n", + " '43.17',\n", + " '0.71',\n", + " '28.58',\n", + " '17.86',\n", + " '37.82',\n", + " '27.01',\n", + " '28.55',\n", + " '17.84',\n", + " '44.13',\n", + " '12.15',\n", + " '15.88',\n", + " '95.20',\n", + " '28.55',\n", + " '17.86',\n", + " '0.11',\n", + " '122.35',\n", + " '37.63',\n", + " '1.71',\n", + " '19.12',\n", + " '67.63',\n", + " '38.06',\n", + " '42.82',\n", + " '17.89',\n", + " '66.96',\n", + " '13.86',\n", + " '120.49',\n", + " '16.15',\n", + " '73.75',\n", + " '28.36',\n", + " '13.98',\n", + " '31.66',\n", + " '104.39',\n", + " '28.56',\n", + " '17.84',\n", + " '19.18',\n", + " '155.49',\n", + " '14.47',\n", + " '83.09',\n", + " '28.56',\n", + " '17.84',\n", + " '38.97',\n", + " '26.03',\n", + " '23.92',\n", + " '66.77',\n", + " '28.56',\n", + " '17.85',\n", + " '19.19',\n", + " '155.47',\n", + " '19.22',\n", + " '155.43',\n", + " '28.56',\n", + " '17.84',\n", + " '35.20',\n", + " '25.22',\n", + " '28.56',\n", + " '17.85',\n", + " '19.21',\n", + " '155.48',\n", + " '37.26',\n", + " '179.79',\n", + " '28.58',\n", + " '17.84',\n", + " '28.57',\n", + " '17.83',\n", + " '3.97',\n", + " '96.71']" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# the latitude and longtitude are saved in the same tag in html (tabev2) so first save both to one list\n", + "\n", + "latitude_longtitude = [x.get_text().replace('\\xa0', '') for x in soup.find_all(\"td\", class_='tabev1')] \n", + "latitude_longtitude" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['N',\n", + " 'W',\n", + " '2.5',\n", + " 'N',\n", + " 'E',\n", + " '3.1',\n", + " 'N',\n", + " 'W',\n", + " '2.8',\n", + " 'N',\n", + " 'W',\n", + " '2.4',\n", + " 'N',\n", + " 'W',\n", + " '2.7',\n", + " 'N',\n", + " 'E',\n", + " '5.2',\n", + " 'S',\n", + " 'W',\n", + " '3.6',\n", + " 'N',\n", + " 'E',\n", + " '3.0',\n", + " 'N',\n", + " 'W',\n", + " '2.5',\n", + " 'N',\n", + " 'W',\n", + " '2.4',\n", + " 'N',\n", + " 'E',\n", + " '3.9',\n", + " 'S',\n", + " 'W',\n", + " '4.1',\n", + " 'N',\n", + " 'W',\n", + " '2.2',\n", + " 'N',\n", + " 'W',\n", + " '2.6',\n", + " 'S',\n", + " 'E',\n", + " '4.6',\n", + " 'S',\n", + " 'W',\n", + " '4.0',\n", + " 'N',\n", + " 'W',\n", + " '2.9',\n", + " 'N',\n", + " 'W',\n", + " '1.5',\n", + " 'N',\n", + " 'W',\n", + " '2.4',\n", + " 'N',\n", + " 'E',\n", + " '2.2',\n", + " 'N',\n", + " 'W',\n", + " '2.4',\n", + " 'N',\n", + " 'E',\n", + " '2.1',\n", + " 'N',\n", + " 'W',\n", + " '4.1',\n", + " 'N',\n", + " 'W',\n", + " '2.9',\n", + " 'S',\n", + " 'E',\n", + " '3.0',\n", + " 'N',\n", + " 'W',\n", + " '1.7',\n", + " 'N',\n", + " 'W',\n", + " '3.4',\n", + " 'N',\n", + " 'E',\n", + " '2.1',\n", + " 'N',\n", + " 'W',\n", + " '2.6',\n", + " 'N',\n", + " 'E',\n", + " '3.1',\n", + " 'S',\n", + " 'W',\n", + " '4.0',\n", + " 'N',\n", + " 'W',\n", + " '2.6',\n", + " 'N',\n", + " 'W',\n", + " '2.6',\n", + " 'N',\n", + " 'W',\n", + " '3.3',\n", + " 'N',\n", + " 'W',\n", + " '2.0',\n", + " 'N',\n", + " 'W',\n", + " '4.6',\n", + " 'N',\n", + " 'W',\n", + " '3.8',\n", + " 'N',\n", + " 'E',\n", + " '3.0',\n", + " 'S',\n", + " 'W',\n", + " '4.5',\n", + " 'N',\n", + " 'W',\n", + " '2.7',\n", + " 'N',\n", + " 'W',\n", + " '2.0',\n", + " 'N',\n", + " 'W',\n", + " '2.2',\n", + " 'N',\n", + " 'W',\n", + " '3.3',\n", + " 'N',\n", + " 'E',\n", + " '3.6',\n", + " 'N',\n", + " 'W',\n", + " '2.9',\n", + " 'N',\n", + " 'W',\n", + " '3.7',\n", + " 'S',\n", + " 'E',\n", + " '3.1',\n", + " 'N',\n", + " 'W',\n", + " '2.8',\n", + " 'N',\n", + " 'W',\n", + " '2.2',\n", + " 'N',\n", + " 'E',\n", + " '2.7']" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# this gets the direction (north, south etc) for the latitude and longtitude\n", + "direction = [x.get_text().replace('\\xa0', '') for x in soup.find_all(\"td\", class_='tabev2')] \n", + "direction" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['N',\n", + " 'W',\n", + " 'N',\n", + " 'E',\n", + " 'N',\n", + " 'W',\n", + " 'N',\n", + " 'W',\n", + " 'N',\n", + " 'W',\n", + " 'N',\n", + " 'E',\n", + " 'S',\n", + " 'W',\n", + " 'N',\n", + " 'E',\n", + " 'N',\n", + " 'W',\n", + " 'N',\n", + " 'W',\n", + " 'N',\n", + " 'E',\n", + " 'S',\n", + " 'W',\n", + " 'N',\n", + " 'W',\n", + " 'N',\n", + " 'W',\n", + " 'S',\n", + " 'E',\n", + " 'S',\n", + " 'W',\n", + " 'N',\n", + " 'W',\n", + " 'N',\n", + " 'W',\n", + " 'N',\n", + " 'W',\n", + " 'N',\n", + " 'E',\n", + " 'N',\n", + " 'W',\n", + " 'N',\n", + " 'E',\n", + " 'N',\n", + " 'W',\n", + " 'N',\n", + " 'W',\n", + " 'S',\n", + " 'E',\n", + " 'N',\n", + " 'W',\n", + " 'N',\n", + " 'W',\n", + " 'N',\n", + " 'E',\n", + " 'N',\n", + " 'W',\n", + " 'N',\n", + " 'E',\n", + " 'S',\n", + " 'W',\n", + " 'N',\n", + " 'W',\n", + " 'N',\n", + " 'W',\n", + " 'N',\n", + " 'W',\n", + " 'N',\n", + " 'W',\n", + " 'N',\n", + " 'W',\n", + " 'N',\n", + " 'W',\n", + " 'N',\n", + " 'E',\n", + " 'S',\n", + " 'W',\n", + " 'N',\n", + " 'W',\n", + " 'N',\n", + " 'W',\n", + " 'N',\n", + " 'W',\n", + " 'N',\n", + " 'W',\n", + " 'N',\n", + " 'E',\n", + " 'N',\n", + " 'W',\n", + " 'N',\n", + " 'W',\n", + " 'S',\n", + " 'E',\n", + " 'N',\n", + " 'W',\n", + " 'N',\n", + " 'W',\n", + " 'N',\n", + " 'E']" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# removing the float digits from the list because we only need the direction\n", + "\n", + "import re\n", + "\n", + "pattern = \"(\\d+\\.\\d+)\"\n", + "\n", + "direction_new = [re.sub(pattern,\"\", x) for x in direction]\n", + "\n", + "while(\"\" in direction_new):\n", + " direction_new.remove(\"\")\n", + "\n", + "direction_new" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['CANARY ISLANDS, SPAIN REGION',\n", + " 'MINAHASA, SULAWESI, INDONESIA',\n", + " 'CANARY ISLANDS, SPAIN REGION',\n", + " 'ISLAND OF HAWAII, HAWAII',\n", + " 'CANARY ISLANDS, SPAIN REGION',\n", + " 'NORTHERN SUMATRA, INDONESIA',\n", + " 'SOUTHERN PERU',\n", + " 'MINDANAO, PHILIPPINES',\n", + " 'STRAIT OF GIBRALTAR',\n", + " 'ISLAND OF HAWAII, HAWAII',\n", + " 'PYRENEES',\n", + " 'CENTRAL PERU',\n", + " 'OKLAHOMA',\n", + " 'CENTRAL ALASKA',\n", + " 'WESTERN INDIAN-ANTARCTIC RIDGE',\n", + " 'SOUTHERN PERU',\n", + " 'CANARY ISLANDS, SPAIN REGION',\n", + " 'PYRENEES',\n", + " 'CANARY ISLANDS, SPAIN REGION',\n", + " 'WESTERN TURKEY',\n", + " 'CANARY ISLANDS, SPAIN REGION',\n", + " 'NORTHERN ITALY',\n", + " 'OFFSHORE OAXACA, MEXICO',\n", + " 'CANARY ISLANDS, SPAIN REGION',\n", + " 'SULAWESI, INDONESIA',\n", + " 'SPAIN',\n", + " 'PUERTO RICO REGION',\n", + " 'EASTERN TURKEY',\n", + " 'PUERTO RICO REGION',\n", + " 'MINDORO, PHILIPPINES',\n", + " 'NEAR COAST OF SOUTHERN PERU',\n", + " 'CANARY ISLANDS, SPAIN REGION',\n", + " 'WESTERN TEXAS',\n", + " 'CANARY ISLANDS, SPAIN REGION',\n", + " 'ISLAND OF HAWAII, HAWAII',\n", + " 'NICARAGUA',\n", + " 'CANARY ISLANDS, SPAIN REGION',\n", + " 'NEAR THE COAST OF WESTERN TURKEY',\n", + " 'JUJUY, ARGENTINA',\n", + " 'CANARY ISLANDS, SPAIN REGION',\n", + " 'ISLAND OF HAWAII, HAWAII',\n", + " 'ISLAND OF HAWAII, HAWAII',\n", + " 'CANARY ISLANDS, SPAIN REGION',\n", + " 'CRETE, GREECE',\n", + " 'CANARY ISLANDS, SPAIN REGION',\n", + " 'ISLAND OF HAWAII, HAWAII',\n", + " 'OFF E. COAST OF N. ISLAND, N.Z.',\n", + " 'CANARY ISLANDS, SPAIN REGION',\n", + " 'CANARY ISLANDS, SPAIN REGION',\n", + " 'NORTHERN SUMATRA, INDONESIA']" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "region_name = [x.get_text().replace('\\xa0', '') for x in soup.find_all(\"td\", class_='tb_region')] \n", + "region_name" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "# this function splits a list into 2 lists with every other element going into 1 of the new lists\n", + "\n", + "def every_second_element(values):\n", + "\n", + " first_values = []\n", + " second_values = []\n", + "\n", + " for index in range(0, len(values), 2):\n", + " first_values.append(values[index])\n", + "\n", + " for index in range(1, len(values), 2):\n", + " second_values.append(values[index])\n", + "\n", + " return first_values, second_values " + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "# apply function to latitude and longtitude so we have 2 seperate lists\n", + "\n", + "latitude, longtitude = every_second_element(latitude_longtitude)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "# apply function to latitude and longtitude direction list so we have 2 seperate lists\n", + "\n", + "latitude_direction, longtitude_direction = every_second_element(direction_new)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['10:44:08.8',\n", + " '10:34:32.0',\n", + " '10:26:26.6',\n", + " '10:22:05.6',\n", + " '10:05:03.3',\n", + " '10:04:53.2',\n", + " '09:59:29.0',\n", + " '09:58:56.0',\n", + " '09:57:59.9',\n", + " '09:52:26.4',\n", + " '09:43:41.8',\n", + " '09:41:48.0',\n", + " '09:31:20.3',\n", + " '09:30:00.4',\n", + " '09:27:58.6',\n", + " '09:27:56.0',\n", + " '09:26:38.8',\n", + " '09:24:35.1',\n", + " '09:23:56.6',\n", + " '09:15:40.1',\n", + " '09:09:40.3',\n", + " '09:08:49.8',\n", + " '08:53:08.0',\n", + " '08:42:56.1',\n", + " '08:41:42.0',\n", + " '08:41:38.2',\n", + " '08:35:14.6',\n", + " '08:11:04.8',\n", + " '07:54:07.2',\n", + " '07:42:11.0',\n", + " '07:22:57.0',\n", + " '07:19:53.8',\n", + " '07:11:07.3',\n", + " '07:03:22.8',\n", + " '06:57:38.0',\n", + " '06:56:23.0',\n", + " '06:49:01.6',\n", + " '06:47:22.0',\n", + " '06:43:07.6',\n", + " '06:37:33.7',\n", + " '06:36:19.0',\n", + " '06:32:54.0',\n", + " '06:29:26.4',\n", + " '06:26:50.5',\n", + " '06:25:28.4',\n", + " '06:25:04.3',\n", + " '06:17:54.8',\n", + " '06:17:08.4',\n", + " '06:05:06.5',\n", + " '06:02:09.0']" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# date & time is one list so this just splits the date/time and appends the date to a new date list and time to a new time list\n", + "\n", + "date = []\n", + "time = []\n", + "\n", + "for x in date_time:\n", + " x = x.split()\n", + " date.append(x[0])\n", + " time.append(x[1])\n", + "time" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "# dataframe\n", + "\n", + "earthquakes = pd.DataFrame(\n", + " {\"date\": date,\n", + " \"time\": time,\n", + " \"latitude\": latitude,\n", + " \"latitude_direction\": latitude_direction,\n", + " \"longtitude\": longtitude,\n", + " \"longtitude_direction\": longtitude_direction,\n", + " \"region\": region_name\n", + " }\n", + ")" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
datetimelatitudelatitude_directionlongtitudelongtitude_directionregion
02021-10-0810:44:08.828.58N17.83WCANARY ISLANDS, SPAIN REGION
12021-10-0810:34:32.01.39N122.54EMINAHASA, SULAWESI, INDONESIA
22021-10-0810:26:26.628.56N17.85WCANARY ISLANDS, SPAIN REGION
32021-10-0810:22:05.619.16N155.47WISLAND OF HAWAII, HAWAII
42021-10-0810:05:03.328.55N17.82WCANARY ISLANDS, SPAIN REGION
52021-10-0810:04:53.24.47N95.33ENORTHERN SUMATRA, INDONESIA
62021-10-0809:59:29.015.65S71.91WSOUTHERN PERU
72021-10-0809:58:56.05.83N124.54EMINDANAO, PHILIPPINES
82021-10-0809:57:59.935.40N3.69WSTRAIT OF GIBRALTAR
92021-10-0809:52:26.419.16N155.47WISLAND OF HAWAII, HAWAII
102021-10-0809:43:41.842.41N2.32EPYRENEES
112021-10-0809:41:48.014.10S74.49WCENTRAL PERU
122021-10-0809:31:20.334.88N97.67WOKLAHOMA
132021-10-0809:30:00.462.92N150.89WCENTRAL ALASKA
142021-10-0809:27:58.649.15S124.84EWESTERN INDIAN-ANTARCTIC RIDGE
152021-10-0809:27:56.015.64S71.92WSOUTHERN PERU
162021-10-0809:26:38.828.56N17.83WCANARY ISLANDS, SPAIN REGION
172021-10-0809:24:35.143.17N0.71WPYRENEES
182021-10-0809:23:56.628.58N17.86WCANARY ISLANDS, SPAIN REGION
192021-10-0809:15:40.137.82N27.01EWESTERN TURKEY
202021-10-0809:09:40.328.55N17.84WCANARY ISLANDS, SPAIN REGION
212021-10-0809:08:49.844.13N12.15ENORTHERN ITALY
222021-10-0808:53:08.015.88N95.20WOFFSHORE OAXACA, MEXICO
232021-10-0808:42:56.128.55N17.86WCANARY ISLANDS, SPAIN REGION
242021-10-0808:41:42.00.11S122.35ESULAWESI, INDONESIA
252021-10-0808:41:38.237.63N1.71WSPAIN
262021-10-0808:35:14.619.12N67.63WPUERTO RICO REGION
272021-10-0808:11:04.838.06N42.82EEASTERN TURKEY
282021-10-0807:54:07.217.89N66.96WPUERTO RICO REGION
292021-10-0807:42:11.013.86N120.49EMINDORO, PHILIPPINES
302021-10-0807:22:57.016.15S73.75WNEAR COAST OF SOUTHERN PERU
312021-10-0807:19:53.828.36N13.98WCANARY ISLANDS, SPAIN REGION
322021-10-0807:11:07.331.66N104.39WWESTERN TEXAS
332021-10-0807:03:22.828.56N17.84WCANARY ISLANDS, SPAIN REGION
342021-10-0806:57:38.019.18N155.49WISLAND OF HAWAII, HAWAII
352021-10-0806:56:23.014.47N83.09WNICARAGUA
362021-10-0806:49:01.628.56N17.84WCANARY ISLANDS, SPAIN REGION
372021-10-0806:47:22.038.97N26.03ENEAR THE COAST OF WESTERN TURKEY
382021-10-0806:43:07.623.92S66.77WJUJUY, ARGENTINA
392021-10-0806:37:33.728.56N17.85WCANARY ISLANDS, SPAIN REGION
402021-10-0806:36:19.019.19N155.47WISLAND OF HAWAII, HAWAII
412021-10-0806:32:54.019.22N155.43WISLAND OF HAWAII, HAWAII
422021-10-0806:29:26.428.56N17.84WCANARY ISLANDS, SPAIN REGION
432021-10-0806:26:50.535.20N25.22ECRETE, GREECE
442021-10-0806:25:28.428.56N17.85WCANARY ISLANDS, SPAIN REGION
452021-10-0806:25:04.319.21N155.48WISLAND OF HAWAII, HAWAII
462021-10-0806:17:54.837.26S179.79EOFF E. COAST OF N. ISLAND, N.Z.
472021-10-0806:17:08.428.58N17.84WCANARY ISLANDS, SPAIN REGION
482021-10-0806:05:06.528.57N17.83WCANARY ISLANDS, SPAIN REGION
492021-10-0806:02:09.03.97N96.71ENORTHERN SUMATRA, INDONESIA
\n", + "
" + ], + "text/plain": [ + " date time latitude latitude_direction longtitude \\\n", + "0 2021-10-08 10:44:08.8 28.58 N 17.83 \n", + "1 2021-10-08 10:34:32.0 1.39 N 122.54 \n", + "2 2021-10-08 10:26:26.6 28.56 N 17.85 \n", + "3 2021-10-08 10:22:05.6 19.16 N 155.47 \n", + "4 2021-10-08 10:05:03.3 28.55 N 17.82 \n", + "5 2021-10-08 10:04:53.2 4.47 N 95.33 \n", + "6 2021-10-08 09:59:29.0 15.65 S 71.91 \n", + "7 2021-10-08 09:58:56.0 5.83 N 124.54 \n", + "8 2021-10-08 09:57:59.9 35.40 N 3.69 \n", + "9 2021-10-08 09:52:26.4 19.16 N 155.47 \n", + "10 2021-10-08 09:43:41.8 42.41 N 2.32 \n", + "11 2021-10-08 09:41:48.0 14.10 S 74.49 \n", + "12 2021-10-08 09:31:20.3 34.88 N 97.67 \n", + "13 2021-10-08 09:30:00.4 62.92 N 150.89 \n", + "14 2021-10-08 09:27:58.6 49.15 S 124.84 \n", + "15 2021-10-08 09:27:56.0 15.64 S 71.92 \n", + "16 2021-10-08 09:26:38.8 28.56 N 17.83 \n", + "17 2021-10-08 09:24:35.1 43.17 N 0.71 \n", + "18 2021-10-08 09:23:56.6 28.58 N 17.86 \n", + "19 2021-10-08 09:15:40.1 37.82 N 27.01 \n", + "20 2021-10-08 09:09:40.3 28.55 N 17.84 \n", + "21 2021-10-08 09:08:49.8 44.13 N 12.15 \n", + "22 2021-10-08 08:53:08.0 15.88 N 95.20 \n", + "23 2021-10-08 08:42:56.1 28.55 N 17.86 \n", + "24 2021-10-08 08:41:42.0 0.11 S 122.35 \n", + "25 2021-10-08 08:41:38.2 37.63 N 1.71 \n", + "26 2021-10-08 08:35:14.6 19.12 N 67.63 \n", + "27 2021-10-08 08:11:04.8 38.06 N 42.82 \n", + "28 2021-10-08 07:54:07.2 17.89 N 66.96 \n", + "29 2021-10-08 07:42:11.0 13.86 N 120.49 \n", + "30 2021-10-08 07:22:57.0 16.15 S 73.75 \n", + "31 2021-10-08 07:19:53.8 28.36 N 13.98 \n", + "32 2021-10-08 07:11:07.3 31.66 N 104.39 \n", + "33 2021-10-08 07:03:22.8 28.56 N 17.84 \n", + "34 2021-10-08 06:57:38.0 19.18 N 155.49 \n", + "35 2021-10-08 06:56:23.0 14.47 N 83.09 \n", + "36 2021-10-08 06:49:01.6 28.56 N 17.84 \n", + "37 2021-10-08 06:47:22.0 38.97 N 26.03 \n", + "38 2021-10-08 06:43:07.6 23.92 S 66.77 \n", + "39 2021-10-08 06:37:33.7 28.56 N 17.85 \n", + "40 2021-10-08 06:36:19.0 19.19 N 155.47 \n", + "41 2021-10-08 06:32:54.0 19.22 N 155.43 \n", + "42 2021-10-08 06:29:26.4 28.56 N 17.84 \n", + "43 2021-10-08 06:26:50.5 35.20 N 25.22 \n", + "44 2021-10-08 06:25:28.4 28.56 N 17.85 \n", + "45 2021-10-08 06:25:04.3 19.21 N 155.48 \n", + "46 2021-10-08 06:17:54.8 37.26 S 179.79 \n", + "47 2021-10-08 06:17:08.4 28.58 N 17.84 \n", + "48 2021-10-08 06:05:06.5 28.57 N 17.83 \n", + "49 2021-10-08 06:02:09.0 3.97 N 96.71 \n", + "\n", + " longtitude_direction region \n", + "0 W CANARY ISLANDS, SPAIN REGION \n", + "1 E MINAHASA, SULAWESI, INDONESIA \n", + "2 W CANARY ISLANDS, SPAIN REGION \n", + "3 W ISLAND OF HAWAII, HAWAII \n", + "4 W CANARY ISLANDS, SPAIN REGION \n", + "5 E NORTHERN SUMATRA, INDONESIA \n", + "6 W SOUTHERN PERU \n", + "7 E MINDANAO, PHILIPPINES \n", + "8 W STRAIT OF GIBRALTAR \n", + "9 W ISLAND OF HAWAII, HAWAII \n", + "10 E PYRENEES \n", + "11 W CENTRAL PERU \n", + "12 W OKLAHOMA \n", + "13 W CENTRAL ALASKA \n", + "14 E WESTERN INDIAN-ANTARCTIC RIDGE \n", + "15 W SOUTHERN PERU \n", + "16 W CANARY ISLANDS, SPAIN REGION \n", + "17 W PYRENEES \n", + "18 W CANARY ISLANDS, SPAIN REGION \n", + "19 E WESTERN TURKEY \n", + "20 W CANARY ISLANDS, SPAIN REGION \n", + "21 E NORTHERN ITALY \n", + "22 W OFFSHORE OAXACA, MEXICO \n", + "23 W CANARY ISLANDS, SPAIN REGION \n", + "24 E SULAWESI, INDONESIA \n", + "25 W SPAIN \n", + "26 W PUERTO RICO REGION \n", + "27 E EASTERN TURKEY \n", + "28 W PUERTO RICO REGION \n", + "29 E MINDORO, PHILIPPINES \n", + "30 W NEAR COAST OF SOUTHERN PERU \n", + "31 W CANARY ISLANDS, SPAIN REGION \n", + "32 W WESTERN TEXAS \n", + "33 W CANARY ISLANDS, SPAIN REGION \n", + "34 W ISLAND OF HAWAII, HAWAII \n", + "35 W NICARAGUA \n", + "36 W CANARY ISLANDS, SPAIN REGION \n", + "37 E NEAR THE COAST OF WESTERN TURKEY \n", + "38 W JUJUY, ARGENTINA \n", + "39 W CANARY ISLANDS, SPAIN REGION \n", + "40 W ISLAND OF HAWAII, HAWAII \n", + "41 W ISLAND OF HAWAII, HAWAII \n", + "42 W CANARY ISLANDS, SPAIN REGION \n", + "43 E CRETE, GREECE \n", + "44 W CANARY ISLANDS, SPAIN REGION \n", + "45 W ISLAND OF HAWAII, HAWAII \n", + "46 E OFF E. COAST OF N. ISLAND, N.Z. \n", + "47 W CANARY ISLANDS, SPAIN REGION \n", + "48 W CANARY ISLANDS, SPAIN REGION \n", + "49 E NORTHERN SUMATRA, INDONESIA " + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "earthquakes" + ] + }, { "cell_type": "markdown", - "id": "dominican-defeat", "metadata": {}, "source": [ "### List all language names and number of related articles in the order they appear in [wikipedia.org](wikipedia.org)" @@ -101,17 +2020,289 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "metric-vertex", + "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "url = 'https://www.wikipedia.org/'" ] }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "200" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "get = requests.get(url)\n", + "get.status_code" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "soup = BeautifulSoup(get.content, \"html.parser\")" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[English,\n", + " 日本語,\n", + " Español,\n", + " Deutsch,\n", + " Русский,\n", + " Français,\n", + " 中文,\n", + " Italiano,\n", + " Português,\n", + " Polski]" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# this gets us all the languages from the main wikipedia page\n", + "\n", + "language_info = soup.find_all(\"strong\", class_=False)\n", + "language_info\n" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['English',\n", + " '日本語',\n", + " 'Español',\n", + " 'Deutsch',\n", + " 'Русский',\n", + " 'Français',\n", + " '中文',\n", + " 'Italiano',\n", + " 'Português',\n", + " 'Polski']" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# remove strong tag and just get the text\n", + "\n", + "languages = []\n", + "for item in language_info:\n", + " languages.append(item.get_text())\n", + "\n", + "languages" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[6 383 000+ articles,\n", + " 1 292 000+ 記事,\n", + " 1 717 000+ artículos,\n", + " 2 617 000+ Artikel,\n", + " 1 756 000+ статей,\n", + " 2 362 000+ articles,\n", + " 1 231 000+ 條目,\n", + " 1 718 000+ voci,\n", + " 1 074 000+ artigos,\n", + " 1 490 000+ haseł]" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "number_of_articles = soup.find_all(\"small\", class_=False)\n", + "number_of_articles\n" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['6383000+ articles',\n", + " '1292000+ 記事',\n", + " '1717000+ artículos',\n", + " '2617000+ Artikel',\n", + " '1756000+ статей',\n", + " '2362000+ articles',\n", + " '1231000+ 條目',\n", + " '1718000+ voci',\n", + " '1074000+ artigos',\n", + " '1490000+ haseł']" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "article_count = []\n", + "for item in number_of_articles:\n", + " article_count.append(item.get_text().replace('\\xa0', ''))\n", + "\n", + "article_count" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "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", + "
languagenumber_of_articles
0English6383000+ articles
1日本語1292000+ 記事
2Español1717000+ artículos
3Deutsch2617000+ Artikel
4Русский1756000+ статей
5Français2362000+ articles
6中文1231000+ 條目
7Italiano1718000+ voci
8Português1074000+ artigos
9Polski1490000+ haseł
\n", + "
" + ], + "text/plain": [ + " language number_of_articles\n", + "0 English 6383000+ articles\n", + "1 日本語 1292000+ 記事\n", + "2 Español 1717000+ artículos\n", + "3 Deutsch 2617000+ Artikel\n", + "4 Русский 1756000+ статей\n", + "5 Français 2362000+ articles\n", + "6 中文 1231000+ 條目\n", + "7 Italiano 1718000+ voci\n", + "8 Português 1074000+ artigos\n", + "9 Polski 1490000+ haseł" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "wikipedia_languages = pd.DataFrame(\n", + " {\"language\" : languages,\n", + " \"number_of_articles\" : article_count}\n", + "\n", + ")\n", + "\n", + "wikipedia_languages" + ] + }, { "cell_type": "markdown", - "id": "split-cartridge", "metadata": {}, "source": [ "### A list with the different kind of datasets available in [data.gov.uk](data.gov.uk)\n" @@ -119,17 +2310,269 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "actual-parallel", + "execution_count": 42, + "metadata": {}, + "outputs": [], + "source": [ + "url = 'https://data.gov.uk/'" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "200" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "get = requests.get(url)\n", + "get.status_code" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [], + "source": [ + "soup = BeautifulSoup(get.content, \"html.parser\")" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [], + "source": [ + "# get title and info of the different datasets\n", + "\n", + "title = soup.find_all(\"h3\", class_=\"govuk-heading-s dgu-topics__heading\")\n", + "\n", + "info = soup.find_all(\"p\", class_=\"govuk-body\", href=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[

We use cookies to collect information about how you use data.gov.uk. We use this information to make the website work as well as possible.

,\n", + "

Small businesses, industry, imports, exports and trade

,\n", + "

Courts, police, prison, offenders, borders and immigration

,\n", + "

Armed forces, health and safety, search and rescue

,\n", + "

Students, training, qualifications and the National Curriculum

,\n", + "

Weather, flooding, rivers, air quality, geology and agriculture

,\n", + "

Staff numbers and pay, local councillors and department business plans

,\n", + "

Includes all payments by government departments over £25,000

,\n", + "

Includes smoking, drugs, alcohol, medicine performance and hospitals

,\n", + "

Addresses, boundaries, land ownership, aerial photographs, seabed and land terrain

,\n", + "

Employment, benefits, household finances, poverty and population

,\n", + "

Includes housing, urban planning, leisure, waste and energy, consumption

,\n", + "

Airports, roads, freight, electric vehicles, parking, buses and footpaths

,\n", + "

Cost, usage, completion rate, digital take-up, satisfaction

,\n", + "

Trusted data that is referenced and shared across government departments

]" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# the first element in this list is not necessary for our dataframe so will remove it later\n", + "\n", + "info" + ] + }, + { + "cell_type": "code", + "execution_count": 47, "metadata": {}, "outputs": [], "source": [ - "url = 'https://data.gov.uk/" + "# function to get the text from the above lists \n", + "\n", + "def text_get(values):\n", + "\n", + " new_list = []\n", + "\n", + " for x in values:\n", + " new_list.append(x.get_text())\n", + " \n", + " return new_list" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "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", + "
departmentdescription
0Business and economySmall businesses, industry, imports, exports a...
1Crime and justiceCourts, police, prison, offenders, borders and...
2DefenceArmed forces, health and safety, search and re...
3EducationStudents, training, qualifications and the Nat...
4EnvironmentWeather, flooding, rivers, air quality, geolog...
5GovernmentStaff numbers and pay, local councillors and d...
6Government spendingIncludes all payments by government department...
7HealthIncludes smoking, drugs, alcohol, medicine per...
8MappingAddresses, boundaries, land ownership, aerial ...
9SocietyEmployment, benefits, household finances, pove...
10Towns and citiesIncludes housing, urban planning, leisure, was...
11TransportAirports, roads, freight, electric vehicles, p...
12Digital service performanceCost, usage, completion rate, digital take-up,...
13Government reference dataTrusted data that is referenced and shared acr...
\n", + "
" + ], + "text/plain": [ + " department \\\n", + "0 Business and economy \n", + "1 Crime and justice \n", + "2 Defence \n", + "3 Education \n", + "4 Environment \n", + "5 Government \n", + "6 Government spending \n", + "7 Health \n", + "8 Mapping \n", + "9 Society \n", + "10 Towns and cities \n", + "11 Transport \n", + "12 Digital service performance \n", + "13 Government reference data \n", + "\n", + " description \n", + "0 Small businesses, industry, imports, exports a... \n", + "1 Courts, police, prison, offenders, borders and... \n", + "2 Armed forces, health and safety, search and re... \n", + "3 Students, training, qualifications and the Nat... \n", + "4 Weather, flooding, rivers, air quality, geolog... \n", + "5 Staff numbers and pay, local councillors and d... \n", + "6 Includes all payments by government department... \n", + "7 Includes smoking, drugs, alcohol, medicine per... \n", + "8 Addresses, boundaries, land ownership, aerial ... \n", + "9 Employment, benefits, household finances, pove... \n", + "10 Includes housing, urban planning, leisure, was... \n", + "11 Airports, roads, freight, electric vehicles, p... \n", + "12 Cost, usage, completion rate, digital take-up,... \n", + "13 Trusted data that is referenced and shared acr... " + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# pandas dataframe with the department name and info\n", + "\n", + "gov_uk = pd.DataFrame(\n", + " {\"department\": text_get(title),\n", + " \"description\": text_get(info[1:])\n", + " }\n", + ")\n", + "\n", + "\n", + "gov_uk" ] }, { "cell_type": "markdown", - "id": "potential-malpractice", "metadata": {}, "source": [ "### Display the top 10 languages by number of native speakers stored in a pandas dataframe" @@ -137,19 +2580,2150 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "adaptive-calculator", + "execution_count": 49, "metadata": {}, "outputs": [], "source": [ "url = 'https://en.wikipedia.org/wiki/List_of_languages_by_number_of_native_speakers'" ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "200" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "get = requests.get(url)\n", + "get.status_code" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [], + "source": [ + "soup = BeautifulSoup(get.content, \"html.parser\")" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1\n", + " ,\n", + " Mandarin Chinese\n", + " ,\n", + " 918\n", + " ,\n", + " 11.922%\n", + " ,\n", + " Sino-Tibetan\n", + " ,\n", + " Sinitic\n", + " ,\n", + " 2\n", + " ,\n", + " Spanish\n", + " ,\n", + " 480\n", + " ,\n", + " 5.994%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Romance\n", + " ,\n", + " 3\n", + " ,\n", + " English\n", + " ,\n", + " 379\n", + " ,\n", + " 4.922%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Germanic\n", + " ,\n", + " 4\n", + " ,\n", + " Hindi (sanskritised Hindustani)[9]\n", + " ,\n", + " 341\n", + " ,\n", + " 4.429%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Indo-Aryan\n", + " ,\n", + " 5\n", + " ,\n", + " Bengali\n", + " ,\n", + " 300\n", + " ,\n", + " 4.000%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Indo-Aryan\n", + " ,\n", + " 6\n", + " ,\n", + " Portuguese\n", + " ,\n", + " 221\n", + " ,\n", + " 2.870%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Romance\n", + " ,\n", + " 7\n", + " ,\n", + " Russian\n", + " ,\n", + " 154\n", + " ,\n", + " 2.000%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Balto-Slavic\n", + " ,\n", + " 8\n", + " ,\n", + " Japanese\n", + " ,\n", + " 128\n", + " ,\n", + " 1.662%\n", + " ,\n", + " Japonic\n", + " ,\n", + " Japanese\n", + " ,\n", + " 9\n", + " ,\n", + " Western Punjabi[10]\n", + " ,\n", + " 92.7\n", + " ,\n", + " 1.204%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Indo-Aryan\n", + " ,\n", + " 10\n", + " ,\n", + " Marathi\n", + " ,\n", + " 83.1\n", + " ,\n", + " 1.079%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Indo-Aryan\n", + " ,\n", + " 11\n", + " ,\n", + " Telugu\n", + " ,\n", + " 82.0\n", + " ,\n", + " 1.065%\n", + " ,\n", + " Dravidian\n", + " ,\n", + " South-Central\n", + " ,\n", + " 12\n", + " ,\n", + " Wu Chinese\n", + " ,\n", + " 81.4\n", + " ,\n", + " 1.057%\n", + " ,\n", + " Sino-Tibetan\n", + " ,\n", + " Sinitic\n", + " ,\n", + " 13\n", + " ,\n", + " Turkish\n", + " ,\n", + " 79.4\n", + " ,\n", + " 1.031%\n", + " ,\n", + " Turkic\n", + " ,\n", + " Oghuz\n", + " ,\n", + " 14\n", + " ,\n", + " Korean\n", + " ,\n", + " 77.3\n", + " ,\n", + " 1.004%\n", + " ,\n", + " Koreanic\n", + " ,\n", + " language isolate\n", + " ,\n", + " 15\n", + " ,\n", + " French\n", + " ,\n", + " 77.2\n", + " ,\n", + " 1.003%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Romance\n", + " ,\n", + " 16\n", + " ,\n", + " German (only Standard German)\n", + " ,\n", + " 76.1\n", + " ,\n", + " 0.988%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Germanic\n", + " ,\n", + " 17\n", + " ,\n", + " Vietnamese\n", + " ,\n", + " 76.0\n", + " ,\n", + " 0.987%\n", + " ,\n", + " Austroasiatic\n", + " ,\n", + " Vietic\n", + " ,\n", + " 18\n", + " ,\n", + " Tamil\n", + " ,\n", + " 75.0\n", + " ,\n", + " 0.974%\n", + " ,\n", + " Dravidian\n", + " ,\n", + " South\n", + " ,\n", + " 19\n", + " ,\n", + " Yue Chinese\n", + " ,\n", + " 73.1\n", + " ,\n", + " 0.949%\n", + " ,\n", + " Sino-Tibetan\n", + " ,\n", + " Sinitic\n", + " ,\n", + " 20\n", + " ,\n", + " Urdu (persianised Hindustani)[9]\n", + " ,\n", + " 68.6\n", + " ,\n", + " 0.891%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Indo-Aryan\n", + " ,\n", + " 21\n", + " ,\n", + " Javanese\n", + " ,\n", + " 68.3\n", + " ,\n", + " 0.887%\n", + " ,\n", + " Austronesian\n", + " ,\n", + " Malayo-Polynesian\n", + " ,\n", + " 22\n", + " ,\n", + " Italian\n", + " ,\n", + " 64.8\n", + " ,\n", + " 0.842%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Romance\n", + " ,\n", + " 23\n", + " ,\n", + " Egyptian Arabic\n", + " ,\n", + " 64.6\n", + " ,\n", + " 0.839%\n", + " ,\n", + " Afroasiatic\n", + " ,\n", + " Semitic\n", + " ,\n", + " 24\n", + " ,\n", + " Gujarati\n", + " ,\n", + " 56.4\n", + " ,\n", + " 0.732%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Indo-Aryan\n", + " ,\n", + " 25\n", + " ,\n", + " Iranian Persian\n", + " ,\n", + " 52.8\n", + " ,\n", + " 0.686%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Iranian\n", + " ,\n", + " 26\n", + " ,\n", + " Bhojpuri\n", + " ,\n", + " 52.2\n", + " ,\n", + " 0.678%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Indo-Aryan\n", + " ,\n", + " 27\n", + " ,\n", + " Southern Min\n", + " ,\n", + " 50.1\n", + " ,\n", + " 0.651%\n", + " ,\n", + " Sino-Tibetan\n", + " ,\n", + " Sinitic\n", + " ,\n", + " 28\n", + " ,\n", + " Hakka\n", + " ,\n", + " 48.2\n", + " ,\n", + " 0.626%\n", + " ,\n", + " Sino-Tibetan\n", + " ,\n", + " Sinitic\n", + " ,\n", + " 29\n", + " ,\n", + " Jin Chinese\n", + " ,\n", + " 46.9\n", + " ,\n", + " 0.609%\n", + " ,\n", + " Sino-Tibetan\n", + " ,\n", + " Sinitic\n", + " ,\n", + " 30\n", + " ,\n", + " Hausa\n", + " ,\n", + " 43.9\n", + " ,\n", + " 0.570%\n", + " ,\n", + " Afroasiatic\n", + " ,\n", + " Chadic\n", + " ,\n", + " 31\n", + " ,\n", + " Kannada\n", + " ,\n", + " 43.6\n", + " ,\n", + " 0.566%\n", + " ,\n", + " Dravidian\n", + " ,\n", + " South\n", + " ,\n", + " 32\n", + " ,\n", + " Indonesian\n", + " ,\n", + " 43.4\n", + " ,\n", + " 0.564%\n", + " ,\n", + " Austronesian\n", + " ,\n", + " Malayo-Polynesian\n", + " ,\n", + " 33\n", + " ,\n", + " Polish\n", + " ,\n", + " 39.7\n", + " ,\n", + " 0.516%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Balto-Slavic\n", + " ,\n", + " 34\n", + " ,\n", + " Yoruba\n", + " ,\n", + " 37.8\n", + " ,\n", + " 0.491%\n", + " ,\n", + " Niger–Congo\n", + " ,\n", + " Volta–Niger\n", + " ,\n", + " 35\n", + " ,\n", + " Xiang Chinese\n", + " ,\n", + " 37.3\n", + " ,\n", + " 0.484%\n", + " ,\n", + " Sino-Tibetan\n", + " ,\n", + " Sinitic\n", + " ,\n", + " 36\n", + " ,\n", + " Malayalam\n", + " ,\n", + " 37.1\n", + " ,\n", + " 0.482%\n", + " ,\n", + " Dravidian\n", + " ,\n", + " South\n", + " ,\n", + " 37\n", + " ,\n", + " Odia\n", + " ,\n", + " 34.5\n", + " ,\n", + " 0.448%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Indo-Aryan\n", + " ,\n", + " 38\n", + " ,\n", + " Maithili\n", + " ,\n", + " 33.9\n", + " ,\n", + " 0.440%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Indo-Aryan\n", + " ,\n", + " 39\n", + " ,\n", + " Burmese\n", + " ,\n", + " 32.9\n", + " ,\n", + " 0.427%\n", + " ,\n", + " Sino-Tibetan\n", + " ,\n", + " Lolo-Burmese\n", + " ,\n", + " 40\n", + " ,\n", + " Eastern Punjabi[10]\n", + " ,\n", + " 32.6\n", + " ,\n", + " 0.423%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Indo-Aryan\n", + " ,\n", + " 41\n", + " ,\n", + " Sunda\n", + " ,\n", + " 32.4\n", + " ,\n", + " 0.421%\n", + " ,\n", + " Austronesian\n", + " ,\n", + " Malayo-Polynesian\n", + " ,\n", + " 42\n", + " ,\n", + " Sudanese Arabic\n", + " ,\n", + " 31.9\n", + " ,\n", + " 0.414%\n", + " ,\n", + " Afroasiatic\n", + " ,\n", + " Semitic\n", + " ,\n", + " 43\n", + " ,\n", + " Algerian Arabic\n", + " ,\n", + " 29.4\n", + " ,\n", + " 0.382%\n", + " ,\n", + " Afroasiatic\n", + " ,\n", + " Semitic\n", + " ,\n", + " 44\n", + " ,\n", + " Moroccan Arabic\n", + " ,\n", + " 27.5\n", + " ,\n", + " 0.357%\n", + " ,\n", + " Afroasiatic\n", + " ,\n", + " Semitic\n", + " ,\n", + " 45\n", + " ,\n", + " Ukrainian\n", + " ,\n", + " 27.3\n", + " ,\n", + " 0.355%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Balto-Slavic\n", + " ,\n", + " 46\n", + " ,\n", + " Igbo\n", + " ,\n", + " 27.0\n", + " ,\n", + " 0.351%\n", + " ,\n", + " Niger–Congo\n", + " ,\n", + " Volta–Niger\n", + " ,\n", + " 47\n", + " ,\n", + " Northern Uzbek\n", + " ,\n", + " 25.1\n", + " ,\n", + " 0.326%\n", + " ,\n", + " Turkic\n", + " ,\n", + " Karluk\n", + " ,\n", + " 48\n", + " ,\n", + " Sindhi\n", + " ,\n", + " 24.6\n", + " ,\n", + " 0.319%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Indo-Aryan\n", + " ,\n", + " 49\n", + " ,\n", + " North Levantine Arabic\n", + " ,\n", + " 24.6\n", + " ,\n", + " 0.319%\n", + " ,\n", + " Afroasiatic\n", + " ,\n", + " Semitic\n", + " ,\n", + " 50\n", + " ,\n", + " Romanian\n", + " ,\n", + " 24.3\n", + " ,\n", + " 0.316%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Romance\n", + " ,\n", + " 51\n", + " ,\n", + " Tagalog\n", + " ,\n", + " 23.6\n", + " ,\n", + " 0.306%\n", + " ,\n", + " Austronesian\n", + " ,\n", + " Malayo-Polynesian\n", + " ,\n", + " 52\n", + " ,\n", + " Dutch\n", + " ,\n", + " 23.1\n", + " ,\n", + " 0.300%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Germanic\n", + " ,\n", + " 53\n", + " ,\n", + " Saʽidi Arabic\n", + " ,\n", + " 22.4\n", + " ,\n", + " 0.291%\n", + " ,\n", + " Afroasiatic\n", + " ,\n", + " Semitic\n", + " ,\n", + " 54\n", + " ,\n", + " Gan Chinese\n", + " ,\n", + " 22.1\n", + " ,\n", + " 0.287%\n", + " ,\n", + " Sino-Tibetan\n", + " ,\n", + " Sinitic\n", + " ,\n", + " 55\n", + " ,\n", + " Amharic\n", + " ,\n", + " 21.9\n", + " ,\n", + " 0.284%\n", + " ,\n", + " Afroasiatic\n", + " ,\n", + " Semitic\n", + " ,\n", + " 56\n", + " ,\n", + " Northern Pashto\n", + " ,\n", + " 20.9\n", + " ,\n", + " 0.271%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Iranian\n", + " ,\n", + " 57\n", + " ,\n", + " Magahi\n", + " ,\n", + " 20.7\n", + " ,\n", + " 0.269%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Indo-Aryan\n", + " ,\n", + " 58\n", + " ,\n", + " Thai\n", + " ,\n", + " 20.7\n", + " ,\n", + " 0.269%\n", + " ,\n", + " Kra–Dai\n", + " ,\n", + " Tai\n", + " ,\n", + " 59\n", + " ,\n", + " Saraiki\n", + " ,\n", + " 20.0\n", + " ,\n", + " 0.260%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Indo-Aryan\n", + " ,\n", + " 60\n", + " ,\n", + " Khmer\n", + " ,\n", + " 16.6\n", + " ,\n", + " 0.216%\n", + " ,\n", + " Austroasiatic\n", + " ,\n", + " Khmer\n", + " ,\n", + " 61\n", + " ,\n", + " Chhattisgarhi\n", + " ,\n", + " 16.3\n", + " ,\n", + " 0.212%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Indo-Aryan\n", + " ,\n", + " 62\n", + " ,\n", + " Somali\n", + " ,\n", + " 16.2\n", + " ,\n", + " 0.210%\n", + " ,\n", + " Afroasiatic\n", + " ,\n", + " Cushitic\n", + " ,\n", + " 63\n", + " ,\n", + " Malaysian (Malaysian Malay)\n", + " ,\n", + " 16.1\n", + " ,\n", + " 0.209%\n", + " ,\n", + " Austronesian\n", + " ,\n", + " Malayo-Polynesian\n", + " ,\n", + " 64\n", + " ,\n", + " Cebuano\n", + " ,\n", + " 15.9\n", + " ,\n", + " 0.206%\n", + " ,\n", + " Austronesian\n", + " ,\n", + " Malayo-Polynesian\n", + " ,\n", + " 65\n", + " ,\n", + " Nepali\n", + " ,\n", + " 15.8\n", + " ,\n", + " 0.205%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Indo-Aryan\n", + " ,\n", + " 66\n", + " ,\n", + " Mesopotamian Arabic\n", + " ,\n", + " 15.7\n", + " ,\n", + " 0.204%\n", + " ,\n", + " Afroasiatic\n", + " ,\n", + " Semitic\n", + " ,\n", + " 67\n", + " ,\n", + " Assamese\n", + " ,\n", + " 15.3\n", + " ,\n", + " 0.199%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Indo-Aryan\n", + " ,\n", + " 68\n", + " ,\n", + " Sinhalese\n", + " ,\n", + " 15.3\n", + " ,\n", + " 0.199%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Indo-Aryan\n", + " ,\n", + " 69\n", + " ,\n", + " Northern Kurdish\n", + " ,\n", + " 14.6\n", + " ,\n", + " 0.190%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Iranian\n", + " ,\n", + " 70\n", + " ,\n", + " Hejazi Arabic\n", + " ,\n", + " 14.5\n", + " ,\n", + " 0.188%\n", + " ,\n", + " Afroasiatic\n", + " ,\n", + " Semitic\n", + " ,\n", + " 71\n", + " ,\n", + " Nigerian Fulfulde\n", + " ,\n", + " 14.5\n", + " ,\n", + " 0.188%\n", + " ,\n", + " Niger–Congo\n", + " ,\n", + " Senegambian\n", + " ,\n", + " 72\n", + " ,\n", + " Bavarian\n", + " ,\n", + " 14.1\n", + " ,\n", + " 0.183%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Germanic\n", + " ,\n", + " 73\n", + " ,\n", + " South Azerbaijani\n", + " ,\n", + " 13.8\n", + " ,\n", + " 0.179%\n", + " ,\n", + " Turkic\n", + " ,\n", + " Oghuz\n", + " ,\n", + " 74\n", + " ,\n", + " Greek\n", + " ,\n", + " 13.1\n", + " ,\n", + " 0.170%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Hellenic\n", + " ,\n", + " 75\n", + " ,\n", + " Chittagonian\n", + " ,\n", + " 13.0\n", + " ,\n", + " 0.169%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Indo-Aryan\n", + " ,\n", + " 76\n", + " ,\n", + " Kazakh\n", + " ,\n", + " 12.9\n", + " ,\n", + " 0.168%\n", + " ,\n", + " Turkic\n", + " ,\n", + " Kipchak\n", + " ,\n", + " 77\n", + " ,\n", + " Deccan\n", + " ,\n", + " 12.8\n", + " ,\n", + " 0.166%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Indo-Aryan\n", + " ,\n", + " 78\n", + " ,\n", + " Hungarian\n", + " ,\n", + " 12.6\n", + " ,\n", + " 0.164%\n", + " ,\n", + " Uralic\n", + " ,\n", + " Finno-Ugric\n", + " ,\n", + " 79\n", + " ,\n", + " Kinyarwanda\n", + " ,\n", + " 12.1\n", + " ,\n", + " 0.157%\n", + " ,\n", + " Niger–Congo\n", + " ,\n", + " Bantu\n", + " ,\n", + " 80\n", + " ,\n", + " Zulu\n", + " ,\n", + " 12.1\n", + " ,\n", + " 0.157%\n", + " ,\n", + " Niger–Congo\n", + " ,\n", + " Bantu\n", + " ,\n", + " 81\n", + " ,\n", + " South Levantine Arabic\n", + " ,\n", + " 11.6\n", + " ,\n", + " 0.151%\n", + " ,\n", + " Afroasiatic\n", + " ,\n", + " Semitic\n", + " ,\n", + " 82\n", + " ,\n", + " Tunisian Arabic\n", + " ,\n", + " 11.6\n", + " ,\n", + " 0.151%\n", + " ,\n", + " Afroasiatic\n", + " ,\n", + " Semitic\n", + " ,\n", + " 83\n", + " ,\n", + " Sanaani Spoken Arabic\n", + " ,\n", + " 11.4\n", + " ,\n", + " 0.148%\n", + " ,\n", + " Afroasiatic\n", + " ,\n", + " Semitic\n", + " ,\n", + " 84\n", + " ,\n", + " Northern Min\n", + " ,\n", + " 11.0\n", + " ,\n", + " 0.143%\n", + " ,\n", + " Sino-Tibetan\n", + " ,\n", + " Sinitic\n", + " ,\n", + " 85\n", + " ,\n", + " Southern Pashto\n", + " ,\n", + " 10.9\n", + " ,\n", + " 0.142%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Iranian\n", + " ,\n", + " 86\n", + " ,\n", + " Rundi\n", + " ,\n", + " 10.8\n", + " ,\n", + " 0.140%\n", + " ,\n", + " Niger–Congo\n", + " ,\n", + " Bantu\n", + " ,\n", + " 87\n", + " ,\n", + " Czech\n", + " ,\n", + " 10.7\n", + " ,\n", + " 0.139%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Balto-Slavic\n", + " ,\n", + " 88\n", + " ,\n", + " Taʽizzi-Adeni Arabic\n", + " ,\n", + " 10.5\n", + " ,\n", + " 0.136%\n", + " ,\n", + " Afroasiatic\n", + " ,\n", + " Semitic\n", + " ,\n", + " 89\n", + " ,\n", + " Uyghur\n", + " ,\n", + " 10.4\n", + " ,\n", + " 0.135%\n", + " ,\n", + " Turkic\n", + " ,\n", + " Karluk\n", + " ,\n", + " 90\n", + " ,\n", + " Eastern Min\n", + " ,\n", + " 10.3\n", + " ,\n", + " 0.134%\n", + " ,\n", + " Sino-Tibetan\n", + " ,\n", + " Sinitic\n", + " ,\n", + " 91\n", + " ,\n", + " Sylheti\n", + " ,\n", + " 10.3\n", + " ,\n", + " 0.134%\n", + " ,\n", + " Indo-European\n", + " ,\n", + " Indo-Aryan\n", + " ,\n", + " 1,\n", + " Mandarin (entire branch),\n", + " 935 (955),\n", + " 14.1%\n", + " ,\n", + " 2,\n", + " Spanish,\n", + " 390 (405),\n", + " 5.85%\n", + " ,\n", + " 3,\n", + " English,\n", + " 365 (360),\n", + " 5.52%\n", + " ,\n", + " 4,\n", + " Hindi[a],\n", + " 295 (310),\n", + " 4.46%\n", + " ,\n", + " 5,\n", + " Arabic,\n", + " 280 (295),\n", + " 4.23%\n", + " ,\n", + " 6,\n", + " Portuguese,\n", + " 205 (215),\n", + " 3.08%\n", + " ,\n", + " 7,\n", + " Bengali,\n", + " 200 (205),\n", + " 3.05%\n", + " ,\n", + " 8,\n", + " Russian,\n", + " 160 (155),\n", + " 2.42%\n", + " ,\n", + " 9,\n", + " Japanese,\n", + " 125 (125),\n", + " 1.92%\n", + " ,\n", + " 10,\n", + " Punjabi,\n", + " 95 (100),\n", + " 1.44%\n", + " ,\n", + " 11,\n", + " German,\n", + " 92 (95),\n", + " 1.39%\n", + " ,\n", + " 12,\n", + " Javanese,\n", + " 82,\n", + " 1.25%\n", + " ,\n", + " 13,\n", + " Wu (inc. Shanghainese),\n", + " 80,\n", + " 1.20%\n", + " ,\n", + " 14,\n", + " Malay (inc. Indonesian and Malaysian),\n", + " 77,\n", + " 1.16%\n", + " ,\n", + " 15,\n", + " Telugu,\n", + " 76,\n", + " 1.15%\n", + " ,\n", + " 16,\n", + " Vietnamese,\n", + " 76,\n", + " 1.14%\n", + " ,\n", + " 17,\n", + " Korean,\n", + " 76,\n", + " 1.14%\n", + " ,\n", + " 18,\n", + " French,\n", + " 75,\n", + " 1.12%\n", + " ,\n", + " 19,\n", + " Marathi,\n", + " 73,\n", + " 1.10%\n", + " ,\n", + " 20,\n", + " Tamil,\n", + " 70,\n", + " 1.06%\n", + " ,\n", + " 21,\n", + " Urdu,\n", + " 66,\n", + " 0.99%\n", + " ,\n", + " 22,\n", + " Turkish,\n", + " 63,\n", + " 0.95%\n", + " ,\n", + " 23,\n", + " Italian,\n", + " 59,\n", + " 0.90%\n", + " ,\n", + " 24,\n", + " Yue (inc. Cantonese),\n", + " 59,\n", + " 0.89%\n", + " ,\n", + " 25,\n", + " Thai,\n", + " 56,\n", + " 0.85%\n", + " ,\n", + " 26,\n", + " Gujarati,\n", + " 49,\n", + " 0.74%\n", + " ,\n", + " 27,\n", + " Jin,\n", + " 48,\n", + " 0.72%\n", + " ,\n", + " 28,\n", + " Southern Min (inc. Hokkien and Teochew),\n", + " 47,\n", + " 0.71%\n", + " ,\n", + " 29,\n", + " Persian,\n", + " 45,\n", + " 0.68%\n", + " ,\n", + " 30,\n", + " Polish,\n", + " 40,\n", + " 0.61%\n", + " ,\n", + " 31,\n", + " Pashto,\n", + " 39,\n", + " 0.58%\n", + " ,\n", + " 32,\n", + " Kannada,\n", + " 38,\n", + " 0.58%\n", + " ,\n", + " 33,\n", + " Xiang,\n", + " 38,\n", + " 0.58%\n", + " ,\n", + " 34,\n", + " Malayalam,\n", + " 38,\n", + " 0.57%\n", + " ,\n", + " 35,\n", + " Sundanese,\n", + " 38,\n", + " 0.57%\n", + " ,\n", + " 36,\n", + " Hausa,\n", + " 34,\n", + " 0.52%\n", + " ,\n", + " 37,\n", + " Odia (Oriya),\n", + " 33,\n", + " 0.50%\n", + " ,\n", + " 38,\n", + " Burmese,\n", + " 33,\n", + " 0.50%\n", + " ,\n", + " 39,\n", + " Hakka,\n", + " 31,\n", + " 0.46%\n", + " ,\n", + " 40,\n", + " Ukrainian,\n", + " 30,\n", + " 0.46%\n", + " ,\n", + " 41,\n", + " Bhojpuri,\n", + " 29[b],\n", + " 0.43%\n", + " ,\n", + " 42,\n", + " Tagalog (Filipino),\n", + " 28,\n", + " 0.42%\n", + " ,\n", + " 43,\n", + " Yoruba,\n", + " 28,\n", + " 0.42%\n", + " ,\n", + " 44,\n", + " Maithili,\n", + " 27[b],\n", + " 0.41%\n", + " ,\n", + " 45,\n", + " Uzbek,\n", + " 26,\n", + " 0.39%\n", + " ,\n", + " 46,\n", + " Sindhi,\n", + " 26,\n", + " 0.39%\n", + " ,\n", + " 47,\n", + " Amharic,\n", + " 25,\n", + " 0.37%\n", + " ,\n", + " 48,\n", + " Fula,\n", + " 24,\n", + " 0.37%\n", + " ,\n", + " 49,\n", + " Romanian,\n", + " 24,\n", + " 0.37%\n", + " ,\n", + " 50,\n", + " Oromo,\n", + " 24,\n", + " 0.36%\n", + " ,\n", + " 51,\n", + " Igbo,\n", + " 24,\n", + " 0.36%\n", + " ,\n", + " 52,\n", + " Azerbaijani,\n", + " 23,\n", + " 0.34%\n", + " ,\n", + " 53,\n", + " Awadhi,\n", + " 22[b],\n", + " 0.33%\n", + " ,\n", + " 54,\n", + " Gan,\n", + " 22,\n", + " 0.33%\n", + " ,\n", + " 55,\n", + " Cebuano (Visayan),\n", + " 21,\n", + " 0.32%\n", + " ,\n", + " 56,\n", + " Dutch,\n", + " 21,\n", + " 0.32%\n", + " ,\n", + " 57,\n", + " Kurdish,\n", + " 21,\n", + " 0.31%\n", + " ,\n", + " 58,\n", + " Serbo-Croatian,\n", + " 19,\n", + " 0.28%\n", + " ,\n", + " 59,\n", + " Malagasy,\n", + " 18,\n", + " 0.28%\n", + " ,\n", + " 60,\n", + " Saraiki,\n", + " 17[c],\n", + " 0.26%\n", + " ,\n", + " 61,\n", + " Nepali,\n", + " 17,\n", + " 0.25%\n", + " ,\n", + " 62,\n", + " Sinhala,\n", + " 16,\n", + " 0.25%\n", + " ,\n", + " 63,\n", + " Chittagonian,\n", + " 16,\n", + " 0.24%\n", + " ,\n", + " 64,\n", + " Zhuang,\n", + " 16,\n", + " 0.24%\n", + " ,\n", + " 65,\n", + " Khmer,\n", + " 16,\n", + " 0.24%\n", + " ,\n", + " 66,\n", + " Turkmen,\n", + " 16,\n", + " 0.24%\n", + " ,\n", + " 67,\n", + " Assamese,\n", + " 15,\n", + " 0.23%\n", + " ,\n", + " 68,\n", + " Madurese,\n", + " 15,\n", + " 0.23%\n", + " ,\n", + " 69,\n", + " Somali,\n", + " 15,\n", + " 0.22%\n", + " ,\n", + " 70,\n", + " Marwari,\n", + " 14[b],\n", + " 0.21%\n", + " ,\n", + " 71,\n", + " Magahi,\n", + " 14[b],\n", + " 0.21%\n", + " ,\n", + " 72,\n", + " Haryanvi,\n", + " 14[b],\n", + " 0.21%\n", + " ,\n", + " 73,\n", + " Hungarian,\n", + " 13,\n", + " 0.19%\n", + " ,\n", + " 74,\n", + " Chhattisgarhi,\n", + " 12[b],\n", + " 0.19%\n", + " ,\n", + " 75,\n", + " Greek,\n", + " 12,\n", + " 0.18%\n", + " ,\n", + " 76,\n", + " Chewa,\n", + " 12,\n", + " 0.17%\n", + " ,\n", + " 77,\n", + " Deccan,\n", + " 11,\n", + " 0.17%\n", + " ,\n", + " 78,\n", + " Akan,\n", + " 11,\n", + " 0.17%\n", + " ,\n", + " 79,\n", + " Kazakh,\n", + " 11,\n", + " 0.17%\n", + " ,\n", + " 80,\n", + " Northern Min[disputed discuss],\n", + " 10.9,\n", + " 0.16%\n", + " ,\n", + " 81,\n", + " Sylheti,\n", + " 10.7,\n", + " 0.16%\n", + " ,\n", + " 82,\n", + " Zulu,\n", + " 10.4,\n", + " 0.16%\n", + " ,\n", + " 83,\n", + " Czech,\n", + " 10.0,\n", + " 0.15%\n", + " ,\n", + " 84,\n", + " Kinyarwanda,\n", + " 9.8,\n", + " 0.15%\n", + " ,\n", + " 85,\n", + " Dhundhari,\n", + " 9.6[b],\n", + " 0.15%\n", + " ,\n", + " 86,\n", + " Haitian Creole,\n", + " 9.6,\n", + " 0.15%\n", + " ,\n", + " 87,\n", + " Eastern Min (inc. Fuzhou dialect),\n", + " 9.5,\n", + " 0.14%\n", + " ,\n", + " 88,\n", + " Ilocano,\n", + " 9.1,\n", + " 0.14%\n", + " ,\n", + " 89,\n", + " Quechua,\n", + " 8.9,\n", + " 0.13%\n", + " ,\n", + " 90,\n", + " Kirundi,\n", + " 8.8,\n", + " 0.13%\n", + " ,\n", + " 91,\n", + " Swedish,\n", + " 8.7,\n", + " 0.13%\n", + " ,\n", + " 92,\n", + " Hmong,\n", + " 8.4,\n", + " 0.13%\n", + " ,\n", + " 93,\n", + " Shona,\n", + " 8.3,\n", + " 0.13%\n", + " ,\n", + " 94,\n", + " Uyghur,\n", + " 8.2,\n", + " 0.12%\n", + " ,\n", + " 95,\n", + " Hiligaynon/Ilonggo (Visayan),\n", + " 8.2,\n", + " 0.12%\n", + " ,\n", + " 96,\n", + " Mossi,\n", + " 7.6,\n", + " 0.11%\n", + " ,\n", + " 97,\n", + " Xhosa,\n", + " 7.6,\n", + " 0.11%\n", + " ,\n", + " 98,\n", + " Belarusian,\n", + " 7.6[d],\n", + " 0.11%\n", + " ,\n", + " 99,\n", + " Balochi,\n", + " 7.6,\n", + " 0.11%\n", + " ,\n", + " 100,\n", + " Konkani,\n", + " 7.4,\n", + " 0.11%\n", + " ,\n", + " ,\n", + " 5,610,\n", + " 85%\n", + " ]" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# this gets us the language and amount of speakers\n", + "\n", + "info = soup.find_all(\"td\", class_=False)\n", + "info\n" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Mandarin Chinese',\n", + " 'Spanish',\n", + " 'English',\n", + " 'Hindi (sanskritised Hindustani)[9]',\n", + " 'Bengali',\n", + " 'Portuguese',\n", + " 'Russian',\n", + " 'Japanese',\n", + " 'Western Punjabi[10]',\n", + " 'Marathi',\n", + " 'Telugu',\n", + " 'Wu Chinese',\n", + " 'Turkish',\n", + " 'Korean',\n", + " 'French',\n", + " 'German (only Standard German)',\n", + " 'Vietnamese',\n", + " 'Tamil',\n", + " 'Yue Chinese',\n", + " 'Urdu (persianised Hindustani)[9]',\n", + " 'Javanese',\n", + " 'Italian',\n", + " 'Egyptian Arabic',\n", + " 'Gujarati',\n", + " 'Iranian Persian',\n", + " 'Bhojpuri',\n", + " 'Southern Min',\n", + " 'Hakka',\n", + " 'Jin Chinese',\n", + " 'Hausa',\n", + " 'Kannada',\n", + " 'Indonesian',\n", + " 'Polish',\n", + " 'Yoruba',\n", + " 'Xiang Chinese',\n", + " 'Malayalam',\n", + " 'Odia',\n", + " 'Maithili',\n", + " 'Burmese',\n", + " 'Eastern Punjabi[10]',\n", + " 'Sunda',\n", + " 'Sudanese Arabic',\n", + " 'Algerian Arabic',\n", + " 'Moroccan Arabic',\n", + " 'Ukrainian',\n", + " 'Igbo',\n", + " 'Northern Uzbek',\n", + " 'Sindhi',\n", + " 'North Levantine Arabic',\n", + " 'Romanian',\n", + " 'Tagalog',\n", + " 'Dutch',\n", + " 'Saʽidi Arabic',\n", + " 'Gan Chinese',\n", + " 'Amharic',\n", + " 'Northern Pashto',\n", + " 'Magahi',\n", + " 'Thai',\n", + " 'Saraiki',\n", + " 'Khmer',\n", + " 'Chhattisgarhi',\n", + " 'Somali',\n", + " 'Malaysian (Malaysian Malay)',\n", + " 'Cebuano',\n", + " 'Nepali',\n", + " 'Mesopotamian Arabic',\n", + " 'Assamese',\n", + " 'Sinhalese',\n", + " 'Northern Kurdish',\n", + " 'Hejazi Arabic',\n", + " 'Nigerian Fulfulde',\n", + " 'Bavarian',\n", + " 'South Azerbaijani',\n", + " 'Greek',\n", + " 'Chittagonian',\n", + " 'Kazakh',\n", + " 'Deccan',\n", + " 'Hungarian',\n", + " 'Kinyarwanda',\n", + " 'Zulu',\n", + " 'South Levantine Arabic',\n", + " 'Tunisian Arabic',\n", + " 'Sanaani Spoken Arabic',\n", + " 'Northern Min',\n", + " 'Southern Pashto',\n", + " 'Rundi',\n", + " 'Czech',\n", + " 'Taʽizzi-Adeni Arabic',\n", + " 'Uyghur',\n", + " 'Eastern Min',\n", + " 'Sylheti',\n", + " 'Mandarin (entire branch)',\n", + " '5.85%',\n", + " 'Hindi[a]',\n", + " '4.23%',\n", + " 'Bengali',\n", + " '2.42%',\n", + " 'Punjabi',\n", + " '1.39%',\n", + " 'Wu (inc. Shanghainese)',\n", + " '1.16%',\n", + " 'Vietnamese',\n", + " '1.14%',\n", + " 'Marathi',\n", + " '1.06%',\n", + " 'Turkish',\n", + " '0.90%',\n", + " 'Thai',\n", + " '0.74%',\n", + " 'Southern Min (inc. Hokkien and Teochew)',\n", + " '0.68%',\n", + " 'Pashto',\n", + " '0.58%',\n", + " 'Malayalam',\n", + " '0.57%',\n", + " 'Odia (Oriya)',\n", + " '0.50%',\n", + " 'Ukrainian',\n", + " '0.43%',\n", + " 'Yoruba',\n", + " '0.41%',\n", + " 'Sindhi',\n", + " '0.37%',\n", + " 'Romanian',\n", + " '0.36%',\n", + " 'Azerbaijani',\n", + " '0.33%',\n", + " 'Cebuano (Visayan)',\n", + " '0.32%',\n", + " 'Serbo-Croatian',\n", + " '0.28%',\n", + " 'Nepali',\n", + " '0.25%',\n", + " 'Zhuang',\n", + " '0.24%',\n", + " 'Assamese',\n", + " '0.23%',\n", + " 'Marwari',\n", + " '0.21%',\n", + " 'Hungarian',\n", + " '0.19%',\n", + " 'Chewa',\n", + " '0.17%',\n", + " 'Kazakh',\n", + " '0.16%',\n", + " 'Zulu',\n", + " '0.15%',\n", + " 'Dhundhari',\n", + " '0.15%',\n", + " 'Ilocano',\n", + " '0.13%',\n", + " 'Swedish',\n", + " '0.13%',\n", + " 'Uyghur',\n", + " '0.12%',\n", + " 'Xhosa',\n", + " '0.11%',\n", + " 'Konkani']" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# here we can extract the language name from the above list\n", + "\n", + "languages = []\n", + "\n", + "for x in range(1,len(info), 6):\n", + " languages.append(info[x].get_text().strip())\n", + "\n", + "languages" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['918',\n", + " '480',\n", + " '379',\n", + " '341',\n", + " '300',\n", + " '221',\n", + " '154',\n", + " '128',\n", + " '92.7',\n", + " '83.1',\n", + " '82.0',\n", + " '81.4',\n", + " '79.4',\n", + " '77.3',\n", + " '77.2',\n", + " '76.1',\n", + " '76.0',\n", + " '75.0',\n", + " '73.1',\n", + " '68.6',\n", + " '68.3',\n", + " '64.8',\n", + " '64.6',\n", + " '56.4',\n", + " '52.8',\n", + " '52.2',\n", + " '50.1',\n", + " '48.2',\n", + " '46.9',\n", + " '43.9',\n", + " '43.6',\n", + " '43.4',\n", + " '39.7',\n", + " '37.8',\n", + " '37.3',\n", + " '37.1',\n", + " '34.5',\n", + " '33.9',\n", + " '32.9',\n", + " '32.6',\n", + " '32.4',\n", + " '31.9',\n", + " '29.4',\n", + " '27.5',\n", + " '27.3',\n", + " '27.0',\n", + " '25.1',\n", + " '24.6',\n", + " '24.6',\n", + " '24.3',\n", + " '23.6',\n", + " '23.1',\n", + " '22.4',\n", + " '22.1',\n", + " '21.9',\n", + " '20.9',\n", + " '20.7',\n", + " '20.7',\n", + " '20.0',\n", + " '16.6',\n", + " '16.3',\n", + " '16.2',\n", + " '16.1',\n", + " '15.9',\n", + " '15.8',\n", + " '15.7',\n", + " '15.3',\n", + " '15.3',\n", + " '14.6',\n", + " '14.5',\n", + " '14.5',\n", + " '14.1',\n", + " '13.8',\n", + " '13.1',\n", + " '13.0',\n", + " '12.9',\n", + " '12.8',\n", + " '12.6',\n", + " '12.1',\n", + " '12.1',\n", + " '11.6',\n", + " '11.6',\n", + " '11.4',\n", + " '11.0',\n", + " '10.9',\n", + " '10.8',\n", + " '10.7',\n", + " '10.5',\n", + " '10.4',\n", + " '10.3',\n", + " '10.3',\n", + " '935 (955)',\n", + " '3',\n", + " '295 (310)',\n", + " '6',\n", + " '200 (205)',\n", + " '9',\n", + " '95 (100)',\n", + " '12',\n", + " '80',\n", + " '15',\n", + " '76',\n", + " '18',\n", + " '73',\n", + " '21',\n", + " '63',\n", + " '24',\n", + " '56',\n", + " '27',\n", + " '47',\n", + " '30',\n", + " '39',\n", + " '33',\n", + " '38',\n", + " '36',\n", + " '33',\n", + " '39',\n", + " '30',\n", + " '42',\n", + " '28',\n", + " '45',\n", + " '26',\n", + " '48',\n", + " '24',\n", + " '51',\n", + " '23',\n", + " '54',\n", + " '21',\n", + " '57',\n", + " '19',\n", + " '60',\n", + " '17',\n", + " '63',\n", + " '16',\n", + " '66',\n", + " '15',\n", + " '69',\n", + " '14[b]',\n", + " '72',\n", + " '13',\n", + " '75',\n", + " '12',\n", + " '78',\n", + " '11',\n", + " '81',\n", + " '10.4',\n", + " '84',\n", + " '9.6[b]',\n", + " '87',\n", + " '9.1',\n", + " '90',\n", + " '8.7',\n", + " '93',\n", + " '8.2',\n", + " '96',\n", + " '7.6',\n", + " '99',\n", + " '7.4']" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# and here we can extract the number of speakers from the above list\n", + "\n", + "speakers = []\n", + "\n", + "for x in range(2,len(info), 6):\n", + " speakers.append(info[x].get_text().strip())\n", + "\n", + "speakers" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "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", + "
languagespeakers(millions)
0Mandarin Chinese918
1Spanish480
2English379
3Hindi (sanskritised Hindustani)[9]341
4Bengali300
5Portuguese221
6Russian154
7Japanese128
8Western Punjabi[10]92.7
9Marathi83.1
\n", + "
" + ], + "text/plain": [ + " language speakers(millions)\n", + "0 Mandarin Chinese 918\n", + "1 Spanish 480\n", + "2 English 379\n", + "3 Hindi (sanskritised Hindustani)[9] 341\n", + "4 Bengali 300\n", + "5 Portuguese 221\n", + "6 Russian 154\n", + "7 Japanese 128\n", + "8 Western Punjabi[10] 92.7\n", + "9 Marathi 83.1" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "top_10_languages = pd.DataFrame(\n", + " {\"language\": languages[:10],\n", + " \"speakers(millions)\": speakers[:10]\n", + " }\n", + ")\n", + "\n", + "top_10_languages\n" + ] } ], "metadata": { + "interpreter": { + "hash": "576841b4f7799d251ae57aad53f0bddb5c298a2c04b91f5151e4f2b208165af8" + }, "kernelspec": { - "display_name": "Python 3", - "language": "python", + "display_name": "Python 3.8.8 64-bit ('base': conda)", "name": "python3" }, "language_info": { @@ -162,7 +4736,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.5" + "version": "3.8.8" }, "toc": { "base_numbering": 1,