{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Web Scraping using Python\n", "\n", "### Project - Working with Multiple Pages and Items\n", "\n", "Let's show a more realistic example of scraping a full site. The website: http://books.toscrape.com/index.html is specifically designed for people to scrape it. Let's try to get the title of every book that has a 2 star rating and at the end just have a Python list with all titles.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Import Libraries" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "from bs4 import BeautifulSoup\n", "import requests\n", "import pandas as pd\n", "import re" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "
\n", " \n", "**1-**\n", "- Figure out the URL structure to go through every page\n", "- Scrap every page in the catalogue\n", " \n", "**Tips:**\n", "- start with the first page : http://books.toscrape.com/catalogue/page-1.html \n", "- make sure that each book has the product_pod class..\n", " \n", "
" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "#TBD" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "#TBD" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* grab the products (books) from the get request result:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "#TBD" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[
\n", "
\n", " \"A\n", "
\n", "

\n", " \n", " \n", " \n", " \n", " \n", "

\n", "

A Light in the ...

\n", "
\n", "

£51.77

\n", "

\n", " \n", " \n", " In stock\n", " \n", "

\n", "
\n", " \n", "
\n", "
\n", "
,\n", "
\n", "
\n", " \"Tipping\n", "
\n", "

\n", " \n", " \n", " \n", " \n", " \n", "

\n", "

Tipping the Velvet

\n", "
\n", "

£53.74

\n", "

\n", " \n", " \n", " In stock\n", " \n", "

\n", "
\n", " \n", "
\n", "
\n", "
,\n", "
\n", "
\n", " \"Soumission\"\n", "
\n", "

\n", " \n", " \n", " \n", " \n", " \n", "

\n", "

Soumission

\n", "
\n", "

£50.10

\n", "

\n", " \n", " \n", " In stock\n", " \n", "

\n", "
\n", " \n", "
\n", "
\n", "
,\n", "
\n", "
\n", " \"Sharp\n", "
\n", "

\n", " \n", " \n", " \n", " \n", " \n", "

\n", "

Sharp Objects

\n", "
\n", "

£47.82

\n", "

\n", " \n", " \n", " In stock\n", " \n", "

\n", "
\n", " \n", "
\n", "
\n", "
,\n", "
\n", "
\n", " \"Sapiens:\n", "
\n", "

\n", " \n", " \n", " \n", " \n", " \n", "

\n", "

Sapiens: A Brief History ...

\n", "
\n", "

£54.23

\n", "

\n", " \n", " \n", " In stock\n", " \n", "

\n", "
\n", " \n", "
\n", "
\n", "
,\n", "
\n", "
\n", " \"The\n", "
\n", "

\n", " \n", " \n", " \n", " \n", " \n", "

\n", "

The Requiem Red

\n", "
\n", "

£22.65

\n", "

\n", " \n", " \n", " In stock\n", " \n", "

\n", "
\n", " \n", "
\n", "
\n", "
,\n", "
\n", "
\n", " \"The\n", "
\n", "

\n", " \n", " \n", " \n", " \n", " \n", "

\n", "

The Dirty Little Secrets ...

\n", "
\n", "

£33.34

\n", "

\n", " \n", " \n", " In stock\n", " \n", "

\n", "
\n", " \n", "
\n", "
\n", "
,\n", "
\n", "
\n", " \"The\n", "
\n", "

\n", " \n", " \n", " \n", " \n", " \n", "

\n", "

The Coming Woman: A ...

\n", "
\n", "

£17.93

\n", "

\n", " \n", " \n", " In stock\n", " \n", "

\n", "
\n", " \n", "
\n", "
\n", "
,\n", "
\n", "
\n", " \"The\n", "
\n", "

\n", " \n", " \n", " \n", " \n", " \n", "

\n", "

The Boys in the ...

\n", "
\n", "

£22.60

\n", "

\n", " \n", " \n", " In stock\n", " \n", "

\n", "
\n", " \n", "
\n", "
\n", "
,\n", "
\n", "
\n", " \"The\n", "
\n", "

\n", " \n", " \n", " \n", " \n", " \n", "

\n", "

The Black Maria

\n", "
\n", "

£52.15

\n", "

\n", " \n", " \n", " In stock\n", " \n", "

\n", "
\n", " \n", "
\n", "
\n", "
,\n", "
\n", "
\n", " \"Starving\n", "
\n", "

\n", " \n", " \n", " \n", " \n", " \n", "

\n", "

Starving Hearts (Triangular Trade ...

\n", "
\n", "

£13.99

\n", "

\n", " \n", " \n", " In stock\n", " \n", "

\n", "
\n", " \n", "
\n", "
\n", "
,\n", "
\n", "
\n", " \"Shakespeare's\n", "
\n", "

\n", " \n", " \n", " \n", " \n", " \n", "

\n", "

Shakespeare's Sonnets

\n", "
\n", "

£20.66

\n", "

\n", " \n", " \n", " In stock\n", " \n", "

\n", "
\n", " \n", "
\n", "
\n", "
,\n", "
\n", "
\n", " \"Set\n", "
\n", "

\n", " \n", " \n", " \n", " \n", " \n", "

\n", "

Set Me Free

\n", "
\n", "

£17.46

\n", "

\n", " \n", " \n", " In stock\n", " \n", "

\n", "
\n", " \n", "
\n", "
\n", "
,\n", "
\n", "
\n", " \"Scott\n", "
\n", "

\n", " \n", " \n", " \n", " \n", " \n", "

\n", "

Scott Pilgrim's Precious Little ...

\n", "
\n", "

£52.29

\n", "

\n", " \n", " \n", " In stock\n", " \n", "

\n", "
\n", " \n", "
\n", "
\n", "
,\n", "
\n", "
\n", " \"Rip\n", "
\n", "

\n", " \n", " \n", " \n", " \n", " \n", "

\n", "

Rip it Up and ...

\n", "
\n", "

£35.02

\n", "

\n", " \n", " \n", " In stock\n", " \n", "

\n", "
\n", " \n", "
\n", "
\n", "
,\n", "
\n", "
\n", " \"Our\n", "
\n", "

\n", " \n", " \n", " \n", " \n", " \n", "

\n", "

Our Band Could Be ...

\n", "
\n", "

£57.25

\n", "

\n", " \n", " \n", " In stock\n", " \n", "

\n", "
\n", " \n", "
\n", "
\n", "
,\n", "
\n", "
\n", " \"Olio\"\n", "
\n", "

\n", " \n", " \n", " \n", " \n", " \n", "

\n", "

Olio

\n", "
\n", "

£23.88

\n", "

\n", " \n", " \n", " In stock\n", " \n", "

\n", "
\n", " \n", "
\n", "
\n", "
,\n", "
\n", "
\n", " \"Mesaerion:\n", "
\n", "

\n", " \n", " \n", " \n", " \n", " \n", "

\n", "

Mesaerion: The Best Science ...

\n", "
\n", "

£37.59

\n", "

\n", " \n", " \n", " In stock\n", " \n", "

\n", "
\n", " \n", "
\n", "
\n", "
,\n", "
\n", "
\n", " \"Libertarianism\n", "
\n", "

\n", " \n", " \n", " \n", " \n", " \n", "

\n", "

Libertarianism for Beginners

\n", "
\n", "

£51.33

\n", "

\n", " \n", " \n", " In stock\n", " \n", "

\n", "
\n", " \n", "
\n", "
\n", "
,\n", "
\n", "
\n", " \"It's\n", "
\n", "

\n", " \n", " \n", " \n", " \n", " \n", "

\n", "

It's Only the Himalayas

\n", "
\n", "

£45.17

\n", "

\n", " \n", " \n", " In stock\n", " \n", "

\n", "
\n", " \n", "
\n", "
\n", "
]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#TBD" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", " \n", "**2-**\n", "- Each book has the product_pod class -> you can select any tag with this class, and then further reduce it by its rating.\n", "- Figure out what tag/class represents the Star rating (two-stars,three-stars)\n", "- Filter by that star rating using an if statement\n", "- Store the results to a list\n", " \n", "**Tips:**\n", "- inspect the site and analyse the sub classes (tag-children) for the first book for example\n", "- inspect a book example sources to find the title element\n", "\n", " \n", "
" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "#TBD" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "example = products[0]" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "bs4.element.Tag" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(example)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'class': ['product_pod']}" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "example.attrs" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[

\n", " \n", " \n", " \n", " \n", " \n", "

]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#TBD" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "we are looking for 2 stars, so we'll be interested for the 10th book " ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[

\n", " \n", " \n", " \n", " \n", " \n", "

]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#TBD" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "let's get the title if we have a 2-star rating book:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[\"Starving,\n", " Starving Hearts (Triangular Trade ...]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#TBD" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Starving Hearts (Triangular Trade ..." ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#TBD" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Starving Hearts (Triangular Trade Trilogy, #1)'" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#TBD" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "let's now loop on all the website (this can take some seconds to complete running. Be aware a firwall may prevent this script from running. Also if you are getting a no response error, maybe try adding a sleep step with time.sleep(1)." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "#TBD" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "196" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(two_star_titles)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "203" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(three_star_titles)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['Starving Hearts (Triangular Trade Trilogy, #1)',\n", " 'Libertarianism for Beginners',\n", " \"It's Only the Himalayas\",\n", " 'How Music Works',\n", " 'Maude (1883-1993):She Grew Up with the country',\n", " \"You can't bury them all: Poems\",\n", " 'Reasons to Stay Alive',\n", " 'Without Borders (Wanderlove #1)',\n", " 'Soul Reader',\n", " 'Security',\n", " 'Saga, Volume 5 (Saga (Collected Editions) #5)',\n", " 'Reskilling America: Learning to Labor in the Twenty-First Century',\n", " 'Political Suicide: Missteps, Peccadilloes, Bad Calls, Backroom Hijinx, Sordid Pasts, Rotten Breaks, and Just Plain Dumb Mistakes in the Annals of American Politics',\n", " 'Obsidian (Lux #1)',\n", " 'My Paris Kitchen: Recipes and Stories',\n", " 'Masks and Shadows',\n", " 'Lumberjanes, Vol. 2: Friendship to the Max (Lumberjanes #5-8)',\n", " 'Lumberjanes Vol. 3: A Terrible Plan (Lumberjanes #9-12)',\n", " 'Judo: Seven Steps to Black Belt (an Introductory Guide for Beginners)',\n", " 'I Hate Fairyland, Vol. 1: Madly Ever After (I Hate Fairyland (Compilations) #1-5)',\n", " 'Giant Days, Vol. 2 (Giant Days #5-8)',\n", " 'Everydata: The Misinformation Hidden in the Little Data You Consume Every Day',\n", " \"Don't Be a Jerk: And Other Practical Advice from Dogen, Japan's Greatest Zen Master\",\n", " 'Bossypants',\n", " 'Bitch Planet, Vol. 1: Extraordinary Machine (Bitch Planet (Collected Editions))',\n", " 'Avatar: The Last Airbender: Smoke and Shadow, Part 3 (Smoke and Shadow #3)',\n", " 'Tuesday Nights in 1980',\n", " 'The Psychopath Test: A Journey Through the Madness Industry',\n", " 'The Power of Now: A Guide to Spiritual Enlightenment',\n", " \"The Omnivore's Dilemma: A Natural History of Four Meals\",\n", " 'The Love and Lemons Cookbook: An Apple-to-Zucchini Celebration of Impromptu Cooking',\n", " 'The Girl on the Train',\n", " 'The Emerald Mystery',\n", " 'The Argonauts',\n", " 'Suddenly in Love (Lake Haven #1)',\n", " 'Soft Apocalypse',\n", " \"So You've Been Publicly Shamed\",\n", " 'Shoe Dog: A Memoir by the Creator of NIKE',\n", " 'Louisa: The Extraordinary Life of Mrs. Adams',\n", " 'Large Print Heart of the Pride',\n", " 'Grumbles',\n", " 'Chasing Heaven: What Dying Taught Me About Living',\n", " 'Becoming Wise: An Inquiry into the Mystery and Art of Living',\n", " 'Beauty Restored (Riley Family Legacy Novellas #3)',\n", " 'Batman: The Long Halloween (Batman)',\n", " \"Ayumi's Violin\",\n", " 'Wild Swans',\n", " \"What's It Like in Space?: Stories from Astronauts Who've Been There\",\n", " 'Until Friday Night (The Field Party #1)',\n", " 'Unbroken: A World War II Story of Survival, Resilience, and Redemption',\n", " 'Twenty Yawns',\n", " 'Through the Woods',\n", " 'This Is Where It Ends',\n", " 'The Year of Magical Thinking',\n", " 'The Last Mile (Amos Decker #2)',\n", " 'The Immortal Life of Henrietta Lacks',\n", " 'The Hidden Oracle (The Trials of Apollo #1)',\n", " 'The Guilty (Will Robie #4)',\n", " 'Red Hood/Arsenal, Vol. 1: Open for Business (Red Hood/Arsenal #1)',\n", " 'Once Was a Time',\n", " 'No Dream Is Too High: Life Lessons From a Man Who Walked on the Moon',\n", " 'Naruto (3-in-1 Edition), Vol. 14: Includes Vols. 40, 41 & 42 (Naruto: Omnibus #14)',\n", " 'More Than Music (Chasing the Dream #1)',\n", " 'Lowriders to the Center of the Earth (Lowriders in Space #2)',\n", " 'Eat Fat, Get Thin',\n", " 'Doctor Sleep (The Shining #2)',\n", " 'Crazy Love: Overwhelmed by a Relentless God',\n", " 'Carrie',\n", " 'Batman: Europa',\n", " 'Angels Walking (Angels Walking #1)',\n", " 'Adulthood Is a Myth: A \"Sarah\\'s Scribbles\" Collection',\n", " 'A Study in Scarlet (Sherlock Holmes #1)',\n", " 'A Series of Catastrophes and Miracles: A True Story of Love, Science, and Cancer',\n", " \"A People's History of the United States\",\n", " 'My Kitchen Year: 136 Recipes That Saved My Life',\n", " 'The Lonely City: Adventures in the Art of Being Alone',\n", " 'The Dinner Party',\n", " 'Stars Above (The Lunar Chronicles #4.5)',\n", " 'Love, Lies and Spies',\n", " 'Troublemaker: Surviving Hollywood and Scientology',\n", " 'The Widow',\n", " 'Setting the World on Fire: The Brief, Astonishing Life of St. Catherine of Siena',\n", " 'Mothering Sunday',\n", " 'Lilac Girls',\n", " '10% Happier: How I Tamed the Voice in My Head, Reduced Stress Without Losing My Edge, and Found Self-Help That Actually Works',\n", " 'Underlying Notes',\n", " 'The Flowers Lied',\n", " 'Modern Day Fables',\n", " \"Chernobyl 01:23:40: The Incredible True Story of the World's Worst Nuclear Disaster\",\n", " '23 Degrees South: A Tropical Tale of Changing Whether...',\n", " 'When Breath Becomes Air',\n", " 'Vagabonding: An Uncommon Guide to the Art of Long-Term World Travel',\n", " 'The Martian (The Martian #1)',\n", " \"Miller's Valley\",\n", " \"Love That Boy: What Two Presidents, Eight Road Trips, and My Son Taught Me About a Parent's Expectations\",\n", " 'Left Behind (Left Behind #1)',\n", " 'Howl and Other Poems',\n", " \"Heaven is for Real: A Little Boy's Astounding Story of His Trip to Heaven and Back\",\n", " \"Brazen: The Courage to Find the You That's Been Hiding\",\n", " '32 Yolks',\n", " 'Wildlife of New York: A Five-Borough Coloring Book',\n", " 'Unreasonable Hope: Finding Faith in the God Who Brings Purpose to Your Pain',\n", " 'The Art Book',\n", " 'Steal Like an Artist: 10 Things Nobody Told You About Being Creative',\n", " 'Raymie Nightingale',\n", " 'Like Never Before (Walker Family #2)',\n", " 'How to Be a Domestic Goddess: Baking and the Art of Comfort Cooking',\n", " 'Finding God in the Ruins: How God Redeems Pain',\n", " 'Chronicles, Vol. 1',\n", " 'A Summer In Europe',\n", " 'The Rise and Fall of the Third Reich: A History of Nazi Germany',\n", " 'The Makings of a Fatherless Child',\n", " 'The Fellowship of the Ring (The Lord of the Rings #1)',\n", " \"Tell the Wolves I'm Home\",\n", " 'In the Woods (Dublin Murder Squad #1)',\n", " 'Give It Back',\n", " 'Why Save the Bankers?: And Other Essays on Our Economic and Political Crisis',\n", " 'The Raven King (The Raven Cycle #4)',\n", " 'The Expatriates',\n", " 'The 5th Wave (The 5th Wave #1)',\n", " 'Peak: Secrets from the New Science of Expertise',\n", " 'Logan Kade (Fallen Crest High #5.5)',\n", " \"I Know Why the Caged Bird Sings (Maya Angelou's Autobiography #1)\",\n", " 'Drama',\n", " \"America's War for the Greater Middle East: A Military History\",\n", " 'A Game of Thrones (A Song of Ice and Fire #1)',\n", " \"The Pilgrim's Progress\",\n", " 'The Hound of the Baskervilles (Sherlock Holmes #5)',\n", " \"The Geography of Bliss: One Grump's Search for the Happiest Places in the World\",\n", " 'The Demonists (Demonist #1)',\n", " 'The Demon Prince of Momochi House, Vol. 4 (The Demon Prince of Momochi House #4)',\n", " 'Misery',\n", " 'Far From True (Promise Falls Trilogy #2)',\n", " 'Confessions of a Shopaholic (Shopaholic #1)',\n", " 'Vegan Vegetarian Omnivore: Dinner for Everyone at the Table',\n", " 'Two Boys Kissing',\n", " 'Twilight (Twilight #1)',\n", " 'Twenties Girl',\n", " 'The Tipping Point: How Little Things Can Make a Big Difference',\n", " 'The Stand',\n", " 'The Picture of Dorian Gray',\n", " 'The Name of God is Mercy',\n", " \"The Lover's Dictionary\",\n", " 'The Last Painting of Sara de Vos',\n", " 'The Guns of August',\n", " 'The Girl Who Played with Fire (Millennium Trilogy #2)',\n", " 'The Da Vinci Code (Robert Langdon #2)',\n", " 'The Cat in the Hat (Beginner Books B-1)',\n", " 'The Book Thief',\n", " 'The Autobiography of Malcolm X',\n", " \"Surely You're Joking, Mr. Feynman!: Adventures of a Curious Character\",\n", " 'Soldier (Talon #3)',\n", " 'Shopaholic & Baby (Shopaholic #5)',\n", " 'Seven Days in the Art World',\n", " 'Rework',\n", " 'Packing for Mars: The Curious Science of Life in the Void',\n", " 'Orange Is the New Black',\n", " 'One for the Money (Stephanie Plum #1)',\n", " 'Midnight Riot (Peter Grant/ Rivers of London - books #1)',\n", " 'Me Talk Pretty One Day',\n", " 'Manuscript Found in Accra',\n", " 'Lust & Wonder',\n", " \"Life, the Universe and Everything (Hitchhiker's Guide to the Galaxy #3)\",\n", " 'Life After Life',\n", " 'I Am Malala: The Girl Who Stood Up for Education and Was Shot by the Taliban',\n", " 'House of Lost Worlds: Dinosaurs, Dynasties, and the Story of Life on Earth',\n", " 'Horrible Bear!',\n", " 'Holidays on Ice',\n", " 'Girl in the Blue Coat',\n", " 'Fruits Basket, Vol. 3 (Fruits Basket #3)',\n", " 'Cosmos',\n", " 'Civilization and Its Discontents',\n", " \"Catastrophic Happiness: Finding Joy in Childhood's Messy Years\",\n", " 'Career of Evil (Cormoran Strike #3)',\n", " 'Born to Run: A Hidden Tribe, Superathletes, and the Greatest Race the World Has Never Seen',\n", " \"Best of My Love (Fool's Gold #20)\",\n", " 'Beowulf',\n", " 'Awkward',\n", " 'And Then There Were None',\n", " 'A Storm of Swords (A Song of Ice and Fire #3)',\n", " 'The Suffragettes (Little Black Classics, #96)',\n", " 'Vampire Girl (Vampire Girl #1)',\n", " 'Three Wishes (River of Time: California #1)',\n", " 'The Wicked + The Divine, Vol. 1: The Faust Act (The Wicked + The Divine)',\n", " 'The Little Prince',\n", " 'The Last Girl (The Dominion Trilogy #1)',\n", " 'Taking Shots (Assassins #1)',\n", " 'Settling the Score (The Summer Games #1)',\n", " 'Rhythm, Chord & Malykhin',\n", " 'One Second (Seven #7)',\n", " \"Old Records Never Die: One Man's Quest for His Vinyl and His Past\",\n", " 'Of Mice and Men',\n", " 'My Perfect Mistake (Over the Top #1)',\n", " 'Meditations',\n", " 'Frankenstein',\n", " 'Emma']" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "two_star_titles" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['A Light in the Attic',\n", " 'The Coming Woman: A Novel Based on the Life of the Infamous Feminist, Victoria Woodhull',\n", " 'Our Band Could Be Your Life: Scenes from the American Indie Underground, 1981-1991',\n", " 'Foolproof Preserving: A Guide to Small Batch Jams, Jellies, Pickles, Condiments, and More: A Foolproof Guide to Making Small Batch Jams, Jellies, Pickles, Condiments, and More',\n", " 'Birdsong: A Story in Pictures',\n", " \"America's Cradle of Quarterbacks: Western Pennsylvania's Football Factory from Johnny Unitas to Joe Montana\",\n", " 'Aladdin and His Wonderful Lamp',\n", " 'The Five Love Languages: How to Express Heartfelt Commitment to Your Mate',\n", " 'Penny Maybe',\n", " 'Slow States of Collapse: Poems',\n", " 'Unicorn Tracks',\n", " 'Throwing Rocks at the Google Bus: How Growth Became the Enemy of Prosperity',\n", " 'The Natural History of Us (The Fine Art of Pretending #2)',\n", " 'The Murder That Never Was (Forensic Instincts #5)',\n", " 'The Life-Changing Magic of Tidying Up: The Japanese Art of Decluttering and Organizing',\n", " 'The Bulletproof Diet: Lose up to a Pound a Day, Reclaim Energy and Focus, Upgrade Your Life',\n", " 'The Art Forger',\n", " 'Saga, Volume 6 (Saga (Collected Editions) #6)',\n", " 'Rat Queens, Vol. 3: Demons (Rat Queens (Collected Editions) #11-15)',\n", " 'Patience',\n", " 'On a Midnight Clear',\n", " 'Lumberjanes, Vol. 1: Beware the Kitten Holy (Lumberjanes #1-4)',\n", " 'I am a Hero Omnibus Volume 1',\n", " 'Forever and Forever: The Courtship of Henry Longfellow and Fanny Appleton',\n", " 'Crown of Midnight (Throne of Glass #2)',\n", " 'Burning',\n", " 'Tracing Numbers on a Train',\n", " 'Throne of Glass (Throne of Glass #1)',\n", " 'The Mistake (Off-Campus #2)',\n", " \"The Bridge to Consciousness: I'm Writing the Bridge Between Science and Our Old and New Beliefs.\",\n", " 'The 10% Entrepreneur: Live Your Startup Dream Without Quitting Your Day Job',\n", " 'Shobu Samurai, Project Aryoku (#3)',\n", " 'Little Red',\n", " 'Doing It Over (Most Likely To #1)',\n", " 'Deliciously Ella Every Day: Quick and Easy Recipes for Gluten-Free Snacks, Packed Lunches, and Simple Meals',\n", " 'Daring Greatly: How the Courage to Be Vulnerable Transforms the Way We Live, Love, Parent, and Lead',\n", " 'Big Magic: Creative Living Beyond Fear',\n", " 'Amy Meets the Saints and Sages',\n", " 'Zealot: The Life and Times of Jesus of Nazareth',\n", " \"The Wedding Pact (The O'Malleys #2)\",\n", " 'The Power of Habit: Why We Do What We Do in Life and Business',\n", " 'The Literature Book (Big Ideas Simply Explained)',\n", " 'The Help Yourself Cookbook for Kids: 60 Easy Plant-Based Recipes Kids Can Make to Stay Healthy and Save the Earth',\n", " 'The First Hostage (J.B. Collins #2)',\n", " 'Take Me with You',\n", " 'Still Life with Bread Crumbs',\n", " 'See America: A Celebration of Our National Parks & Treasured Sites',\n", " 'Robin War',\n", " 'Rain Fish',\n", " 'Pet Sematary',\n", " 'Overload: How to Unplug, Unwind, and Unleash Yourself from the Pressure of Stress',\n", " 'My Mrs. Brown',\n", " 'Luis Paints the World',\n", " 'Luckiest Girl Alive',\n", " 'Hush, Hush (Hush, Hush #1)',\n", " 'Hamilton: The Revolution',\n", " 'Glory over Everything: Beyond The Kitchen House',\n", " 'Feathers: Displays of Brilliant Plumage',\n", " 'Every Last Word',\n", " 'Eligible (The Austen Project #4)',\n", " 'Cometh the Hour (The Clifton Chronicles #6)',\n", " 'Catching Jordan (Hundred Oaks)',\n", " 'Carry On, Warrior: Thoughts on Life Unarmed',\n", " 'Balloon Animals',\n", " 'Art Ops Vol. 1',\n", " 'Angels & Demons (Robert Langdon #1)',\n", " 'A Distant Mirror: The Calamitous 14th Century',\n", " '1491: New Revelations of the Americas Before Columbus',\n", " 'The Three Searches, Meaning, and the Story',\n", " \"Will You Won't You Want Me?\",\n", " 'The Diary of a Young Girl',\n", " 'The Children',\n", " 'Snatched: How A Drug Queen Went Undercover for the DEA and Was Kidnapped By Colombian Guerillas',\n", " 'Poisonous (Max Revere Novels #3)',\n", " 'Most Wanted',\n", " 'Boar Island (Anna Pigeon #19)',\n", " 'The Art of Startup Fundraising',\n", " 'Take Me Home Tonight (Rock Star Romance #3)',\n", " 'Playing with Fire',\n", " 'Off the Hook (Fishing for Trouble #1)',\n", " \"It Didn't Start with You: How Inherited Family Trauma Shapes Who We Are and How to End the Cycle\",\n", " 'Daredevils',\n", " 'Cravings: Recipes for What You Want to Eat',\n", " \"A Mother's Reckoning: Living in the Aftermath of Tragedy\",\n", " '11/22/63',\n", " 'The Book of Mormon',\n", " 'Dress Your Family in Corduroy and Denim',\n", " 'A Shard of Ice (The Black Symphony Saga #1)',\n", " \"A Hero's Curse (The Unseen Chronicles #1)\",\n", " 'Zero to One: Notes on Startups, or How to Build the Future',\n", " 'The New Drawing on the Right Side of the Brain',\n", " 'Silence in the Dark (Logan Point #4)',\n", " 'Rising Strong',\n", " \"Man's Search for Meaning\",\n", " 'Living Forward: A Proven Plan to Stop Drifting and Get the Life You Want',\n", " 'Brilliant Beacons: A History of the American Lighthouse',\n", " 'A Murder Over a Girl: Justice, Gender, Junior High',\n", " 'You Are a Badass: How to Stop Doubting Your Greatness and Start Living an Awesome Life',\n", " 'Under the Tuscan Sun',\n", " 'The Good Girl',\n", " 'The Drowning Girls',\n", " 'The Constant Princess (The Tudor Court #1)',\n", " 'Sit, Stay, Love',\n", " 'Shrunken Treasures: Literary Classics, Short, Sweet, and Silly',\n", " 'Meternity',\n", " 'Memoirs of a Geisha',\n", " 'For the Love: Fighting for Grace in a World of Impossible Standards',\n", " 'Benjamin Franklin: An American Life',\n", " 'The Perks of Being a Wallflower',\n", " 'The God Delusion',\n", " 'Ship Leaves Harbor: Essays on Travel by a Recovering Journeyman',\n", " 'Mere Christianity',\n", " 'Girl, Interrupted',\n", " 'Death Note, Vol. 6: Give-and-Take (Death Note #6)',\n", " 'Better Homes and Gardens New Cook Book',\n", " 'An Unquiet Mind: A Memoir of Moods and Madness',\n", " 'The Little Paris Bookshop',\n", " 'The Grand Design',\n", " 'The Firm',\n", " 'Tell the Wind and Fire',\n", " 'Remember Me?',\n", " 'Red Dragon (Hannibal Lecter #1)',\n", " 'Last One Home (New Beginnings #1)',\n", " 'Data, A Love Story: How I Gamed Online Dating to Meet My Match',\n", " 'A Clash of Kings (A Song of Ice and Fire #2)',\n", " 'The Shining (The Shining #1)',\n", " 'The Perfect Play (Play by Play #1)',\n", " 'The Jazz of Physics: The Secret Link Between Music and the Structure of the Universe',\n", " 'The Bone Hunters (Lexy Vaughan & Steven Macaulay #2)',\n", " 'Orchestra of Exiles: The Story of Bronislaw Huberman, the Israel Philharmonic, and the One Thousand Jews He Saved from Nazi Horrors',\n", " 'It',\n", " \"Harry Potter and the Sorcerer's Stone (Harry Potter #1)\",\n", " 'Gone with the Wind',\n", " 'Changing the Game (Play by Play #2)',\n", " 'Candide',\n", " 'Animal Farm',\n", " 'Wuthering Heights',\n", " 'Wild: From Lost to Found on the Pacific Crest Trail',\n", " \"We the People: The Modern-Day Figures Who Have Reshaped and Affirmed the Founding Fathers' Vision of America\",\n", " 'Walk the Edge (Thunder Road #2)',\n", " 'Very Good Lives: The Fringe Benefits of Failure and the Importance of Imagination',\n", " 'Three-Martini Lunch',\n", " 'The Wild Robot',\n", " 'The Wicked + The Divine, Vol. 3: Commercial Suicide (The Wicked + The Divine)',\n", " 'The Rise of Theodore Roosevelt (Theodore Roosevelt #1)',\n", " 'The Purpose Driven Life: What on Earth Am I Here for?',\n", " 'The Paris Wife',\n", " 'The New Guy (and Other Senior Year Distractions)',\n", " \"The Lean Startup: How Today's Entrepreneurs Use Continuous Innovation to Create Radically Successful Businesses\",\n", " \"The Hitchhiker's Guide to the Galaxy (Hitchhiker's Guide to the Galaxy #1)\",\n", " 'The Goldfinch',\n", " 'The Girl with All the Gifts',\n", " 'The Exiled',\n", " 'The Art of Simple Food: Notes, Lessons, and Recipes from a Delicious Revolution',\n", " 'Stiff: The Curious Lives of Human Cadavers',\n", " 'Rogue Lawyer (Rogue Lawyer #1)',\n", " 'Reservations for Two',\n", " 'Red: The True Story of Red Riding Hood',\n", " 'Prodigy: The Graphic Novel (Legend: The Graphic Novel #2)',\n", " 'Original Fake',\n", " 'Neither Here nor There: Travels in Europe',\n", " 'Naked',\n", " 'Lila (Gilead #3)',\n", " 'Is Everyone Hanging Out Without Me? (And Other Concerns)',\n", " \"In the Garden of Beasts: Love, Terror, and an American Family in Hitler's Berlin\",\n", " 'Hungry Girl Clean & Hungry: Easy All-Natural Recipes for Healthy Eating in the Real World',\n", " 'Friday Night Lights: A Town, a Team, and a Dream',\n", " 'Extreme Prey (Lucas Davenport #26)',\n", " 'Eragon (The Inheritance Cycle #1)',\n", " 'Dracula',\n", " 'Boy Meets Boy',\n", " 'Are We There Yet?',\n", " 'The Sense of an Ending',\n", " 'The Course of Love',\n", " 'Saga, Volume 2 (Saga (Collected Editions) #2)',\n", " \"Kindle Paperwhite User's Guide\",\n", " 'Where Lightning Strikes (Bleeding Stars #3)',\n", " \"When I'm Gone\",\n", " 'The Silent Twin (Detective Jennifer Knight #3)',\n", " 'The Secret Healer',\n", " 'The Sandman, Vol. 1: Preludes and Nocturnes (The Sandman (volumes) #1)',\n", " 'The Republic',\n", " 'The Odyssey',\n", " 'The Name of the Wind (The Kingkiller Chronicle #1)',\n", " 'The Girl In The Ice (DCI Erika Foster #1)',\n", " 'The Complete Maus (Maus #1-2)',\n", " 'The Communist Manifesto',\n", " 'The Bhagavad Gita',\n", " 'The Bette Davis Club',\n", " 'Starlark',\n", " 'Skip Beat!, Vol. 01 (Skip Beat! #1)',\n", " 'Sister Sable (The Mad Queen #1)',\n", " 'Shameless',\n", " 'Ouran High School Host Club, Vol. 1 (Ouran High School Host Club #1)',\n", " 'On the Road (Duluoz Legend)',\n", " 'Lord of the Flies',\n", " 'Listen to Me (Fusion #1)',\n", " 'Hawkeye, Vol. 1: My Life as a Weapon (Hawkeye #1)',\n", " 'Forever Rockers (The Rocker #12)',\n", " 'Fighting Fate (Fighting #6)',\n", " 'Eat, Pray, Love',\n", " 'Charlie and the Chocolate Factory (Charlie Bucket #1)',\n", " 'Blood Defense (Samantha Brinkman #1)']" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "three_star_titles" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "**3-**\n", "- Créer un dataframe qui stock tout les 1000 livres avec comme colonne le titre du livre(title), sa notation(rating), son prix (price) et sa disponibilité(availability).\n", "- Il existe environ 50 pages mais votre script doit prendre en compte une augmentation future de ce nombre de pages. \n", "
" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [], "source": [ "#BOUCLE POUR UNE PAGE\n", "#TBD\n", "#books_list" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [], "source": [ "#TBD" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [], "source": [ "#BOUCLE POUR TOUTES LES PAGES\n", "#TBD\n" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [], "source": [ "#TBD" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "**4-**\n", "- Est-ce que la moyenne des prix des livres notés 1 est différente de la moyenne des prix des livrés notés 5 ? \n", "
" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "35.374489795918365\n", "34.56119469026549\n" ] } ], "source": [ "from statistics import mean \n", "def StringToFloat(string):\n", " floating = float(string.replace('£',''))\n", " return floating\n", "\n", "#TBD" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "**5-**\n", "- Représentez sous forme de camembert la répartition des notes \n", "
" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAOsAAADnCAYAAAD/yKGuAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8GearUAAAgAElEQVR4nO2deXhU1d3HP2dmksk+CVkIIcAEAiTYAFVAcYVYbF9iq7hb28aldnlTrbX2bazWpos2rUtdqkarYtyqtlWrBtsqCooUFxAIkLAmCCRAICRkz2TmvH/cCSQmZJ2Ze+/M+TzPPLPdOeeb5Ttn+53fEVJKFAqF8bHoLUChUAwNZVaFwiQosyoUJkGZVaEwCcqsCoVJUGZVKEyCMqtCYRKUWRUKk6DMqlCYBGVWhcIkKLMqFCZBmVWhMAnKrAqFSVBmVShMgjKrQmESlFkVCpOgzKpQmARlVoXCJCizKhQmQZlVoTAJyqwKhUlQZlUoTIIyq0JhEpRZFQqToMyqUJgEm94CRoMQIhFY7n2aCriBOsAJ1EgpZ+gkTaHwOSJYjs8QQhQBzVLKe4QQTuBNKeWXBvmMTUrZFQB5CsWoMXXLOghWIcRfgNOBfcAFUso2IcQKYDVwBvC69/l9QAxwCLhaSlkrhJgCPAwkA63A9VLKysD/GD0ocliAycAkIAUY672l9LiPAKxoQxxLj8cCaALq+7kdAqqBHcAeihrdgfqRFEMnmM06FbhSSnm9EOJl4GLgOe978VLKc4QQYcBKNCPXCSEuB+4ErgUeB34gpdwuhDgVeATIDZj6Isck4Eve20ne+ywg0p/VSklrZuHrO91YtwKbvbePq4vzdvuzXsXgBLNZq6SU672P16KNY7t5yXs/Hc0EbwshQGuFaoUQMWgt8t+8rwPY/aq2yDEdWAAsBM5BG4MHHBe2A26sOUAOcEn3687Cst3A+2hfbiuri/N26KEvlAlms3b0eOymd4vU4r0XwGYp5fyeHxRCxAENUsrZflNX5EgGvoHWWi8A0vxW1zCow1EHZPTz1iTg294bzsKyGjTzLgdeqy7OOxQwkSFKMJt1KGwFkoUQ86WU//V2i6dJKTcLIaqEEJdKKf8mtOZ1ppRyw6hqK3IkABcBl6OZ1DraH8DX7PSktQ3x0jTgCu/tUWdh2XK0Hssr1cV5jf7SF8qEtFmllJ1CiEuAB4UQDrTfx/1o47SrgEeFELcDYcCLwPDNWuSIBZagGXSRtyzDskFOGcnauw34qvdW4iws+zfa7+v16uK8Zl/qC2WCZunGcBQ5pgE3APlArM5qhsy1nbdsfNdz8kwfFdcKPAPcX12ct9VHZYYsyqy+pMgh0FqXG4GvoY2JTcW89ofrDpKQ7ONiJbAMuK+6OO9dH5cdMiiz+oIihx1tuefHaDPMpkRKGjM6XnD4uZoNwJ+Av1YX53X6ua6gQpl1NBQ5wtBMehswQWc1o6ZJRm7O6XjypABVVwv8BvhLdXGeCsIYAiqQfyQUOQRFjiuBSqCEIDAqQI1MbAhgdeOAR4GNzsKy8wNYr2lRZh0uRY4FwMfAC2ihf0HDFjnJpUO1M4A3nIVly52FZV/WoX7TENJLN8NCC2L4E9qSTlDymSfTv1FaA5MLrHUWlj0H/KK6OG+vjloMiWpZh0KR4ztABUFsVID1nswknSUItAipLc7Csu/prMVwqAmmgShyTEYbky7SW4q/kRJPVsfTnR2ER+itpQf/Aa5TrayGaln7Q5tA+ilQTggYFaALa43BjApwHrDJWVh2td5CjIBqWb9IkSMReBb4H72lBJKD0rF2Xsejp+itYwDeAL5XXZy3X28heqFa1p4UOU4H1hNiRgWokuOMHsP7dWCzs7AsJHo6/aHM2k2R4xa0vZrpekvRg3LPZDOERo4B3nIWlt2stxA9UEs3RY54oBRtb2nIss4zNUZvDUPECtzrLCybBXy/ujivXW9BgSK0W9YixwRgFSFuVICNcrIumSlGwXeAlc7CMkNs2g8EoWvWIkcO8F+0/EYhjZS07pVJ4/TWMQLmAZ86C8tOG21BQoh0IcQ/hRDbhRA7hRAPCCHCfaDRZ4SmWYscC4EPgPF6SzECbdj3gDDDmLU/xgErnIVleSMtwJsJ5BXgNSnlVGAaWrbLO30j0TeEnlmLHFcA/wL8vRXMNOyXYw7rrWGU2IFXnIVlF47w87lAu5RyKYCU0g38BLhWCPG/QohXhBD/8ra6f+z+kBDiPCHEf4UQ64QQf/Mm2vMboWXWIkcBWgC+obo3elMpJwTDvtJw4G/OwrLLRvDZk9AyYB5DSnkU+BxtEnY2WlqeHOByIcQEIUQScDvwFSnlycCngF9nqUPHrEWO7wIPYcLsDf5mvSfT0HmhhoENeMFZWPatYX5OoGWzONHry6WUjVLKdmALWqbH09B2DH0ohFiPlr5n0oiVD4HQMGuR4yrgMZRR+2W9Z8oYvTX4ECtQ6iwsu2YYn9kMzOn5gjcd7QS0NLZfTGtrQ/tfeltKOdt7myGlvG500gcm+M1a5LgYbR01+H/WEbJZOoMtEMQCPOksLBuqeZYDUUKI7wAIIazAvcDTaEnf+mMNcIYQItP7mSghxLRRqR6E4P4HLnIsBv6KAfPzGgW3FAdaiDRN9sVhIIDHhpKFQmoB8kuAS4UQ24FtQDvwiwE+UwdcDfxVCLERzbxZPtB9QoI3kL/IcQbwDtpBTYoTUC9j15/c8Zj/Th7Qn1ZgYXVx3sd6CxktwdmyapFJr6CMOii7ZcpRvTX4mSjgTWdhWX9HgpiK4DNrkSMK+Cfa8YeKQdjkyQjSrlUvktHyPJm6ux98ZoWlgEq8NUTWeaZG6a0hQJwEvOgsLDPt/7xphfdLkeM2YCSL4iHLBjkllHogizFYCOFwCJ4JpiLH19G6v2otdYhISeeUjuesHiyhNFsuga+Y8RiP4GhZixypaN1fZdRh0EHYnhAzKmj/I884C8tMFwgSHGaFJ4FEvUWYjToZH6oHII8HntBbxHAxv1mLHD9AG4vowp5GDwtLW8h+uJmTHmnmgTVaZFp9m2TRsy1MfaiZRc+2cKSt73CjvUsy7y/NzCrRPvur944nPfj52+3MfLSZ77x6/GzjZzd0HivfF2yX44d6cHIwssRZWHa93iKGg7nNWuTIBO7RU4LNAveeF0FFQQxrrovm4U9cbKlzU7yqg3MzbGy/IYZzM2wUr+prMrsV3s2PZsMPYlj//Wj+tbOLNXu7aGyXrN7rZuMPY3BLSfkBN20uydMbXPzvXN9tGNrgmRLqaX3udxaWmebUP/OatchhRUsZGq2njHGxFk4epw37Yu2C7GQL+45K/rm1i/xZ2maW/FlhvLa1q89nhRDEhGvDbJcHXG5tQGUR0OmWSClpc0GYFe5e3cmN88IJs/puWL5OTg31Pb1RaLt0TPGlZV6zwi1o25QMQ3WDh89q3ZyabuVAs4dxsdqvd1yshYMtnn4/4/ZIZpc0k3J3E4sm2zg13UasXXBxdhhffqyFjHgLDrvgkxo3F2T5difbJo9TZcqAk4Ef6S1iKJhz6abIkQZsRUu9YQiaOyXnPN3CbWfZuSg7jPjiozQUxh17P+EPRzny87gTfr6hXbLkpVYe+p8IvpTSe4L2u6+3UTA3nLW1bv6zs4uZY63cfvbozpDySFE/ueN5082I+olGYFp1cd5BvYUMhFlb1j9gIKO63JKLX27lqpwwLsrWWr+xMRZqm7TWtLbJQ0r0wL/q+AjBgkk2/rWjd3f5s1rtnOFpiRae2eDi5Uuj2HTQzfbDozt/uInIfaMqILhwAL/XW8RgmM+sRY75GOg0Nykl173eTnaSlZvnH2/tvjHNRukG7bjT0g0uLpjed1hU1+KhoV3r2bS5JO9UdZGV1PtP8sv3OvjNQjsuD7i9nSCLgNZRnqS6VyY3jq6EoOMaZ2HZXL1FDIS5zFrkEMADGCj44cM9bp7d6OLdqi5mlzQzu6SZZdtdFJ4Zztu7upj6UDNv7+qi8EzNyDVNHhY/r+1nrm2WLCxtYeajzcz9SwuLJts4f9rxcelrlS7mpllJi7UQHyGYn24l59FmhIBZqaOLZdjsmdR3xiu0EcCfnYVlhvnf+iLmGrMWOa4BntJbRjBwq+u6j/7qPvdUvXUYkGuri/OW6i2iP8zTsmpb3+7SW0awsMEzRe+Dk43K752FZZF6i+gP85gVfgiY7YgHQyIl7u0yfYLeOgzKWMCvic9GijnMWuSIBH6mt4xgoQvrXhc2lTv5xPzMWVhmuPSspojceDDBceW1DUejYsw0vjYwh4k7iI9y3HYdreNQ2X24m48ghIWY2V8lbs4FHHnvKVp3fIyw2rDFp5K0+CYsEX1X2zztzRx+60E6D30OQNLiH2Mfn82RFUtp27WW8JQMks7/KQDNm97F095E3JwLfCF9ICYC30TLimkYDD/BlFOaEwbsFFLGntvatv5Xh+pnxXs8CXrrMjMfuk9aeZXrtnN8UVZXcz3u5nrsqZl4OlqpLb2J5Itux910iIhJsxAWK0dWaPM1CQv6pvI9VHYf9vSTiJ31VaTbhXR1gBAc/PuvSb3qj9S9cTeO0y7FFj+Oun/8mpRLf4OwBqSNqQROqi7O6z/0TAfM0A2+EpgghYh/JzpqwVkTx4ddn5q88oDVekBvYWZlo/Tdwcm2mDHYUzMBsNijCEucgLvpMJEZJyO8W2XtadPpauq7G8/T0Ur7ns3EzDwPAGEN87a+AunuQkqJ7OpEWKwc/fgVYk/5RqCMClpa0SWBqmwomMGst/R6JkTMmsjIc74yIS3+m+PGfrDbZtujky7Tss4z9cRxj6Ogq/EAnQd2YU/rvZGleePbRE6e0/f6hv1Yo+I4vOx+apbeyOG3HsTT2Y7FHkXU9NOpffpGbI6xCHs0nbXbiJoa8FDwWwNd4UAYuhucU5ozH1g94EVSdmW6XB/dVXc4NbvTNSUwyszNae1/PrCfMWN9Waans40DLxTimH85UdNPP/Z64+qX6Ni/neQltyG+cKpkR+129j/7U1K/dTf2tOnUv/MYlvAo4s/+dq/rDr/1ILEn59GxfwftVZ8RluIk/vQrfCl/IM6pLs57P1CVDYTRW9bBp9CFsO0IDz/jsrTUyV9LT/tord1eEQBdpkVKmnxtVOnuou7Vu4iesaCXUZvLl9O682OSvn5LH6MC2GKTsMYmHWuJo6afQeeBnb2u6X5uSxhPy6Z3Sb6wEFfdblz1AQttvjpQFQ2GYc2aU5oTzXAyFQoh9oXZTr06bWz2wgnj166IjNzgP3XmpYUInw4bpJQcfusBwhInEDfv+BCvbddajn70d1IuvgNLWP+51q0xCdjiknAd3gtA++4NhCVN7HVNwwfP4TjzKvB0gfTO9QgLsst3GTMG4RJnYZkh0rUaeenmMmBESZkP2ayn3JCaTKzbs/HW+vrOrze39h0whSi1MrHBl+V17NtCy+b3CEt2UrP0BgASzv4O9e88jnS7OPDS7YA2yZT41R/R1XSYw/96kLGX/hqAMV/5AYfevAfp7sIWn0ri4puOld267b+Ep07FFpvoLSOLmicLCEtxEp4y2Zc/xkDEAhcBzwWqwhNh2DFrTmnOKuAMX5QV6fFU/vhIQ8OVR5vnWQzcmwgEb7hPW3GD68YFeuswGe9UF+ct0luEIf9xc0pzpuMjowK0WSxZxYljTpvjnLC7JD5uVReE7I6TzzxTVeTS8Ml1FpbpfiymIc0KXOqPQl1CZDycEH/mHOeE/XePiX+/Q9A++KeCi888mSpl6/CxAMM9Td0vIozI1/1ZuFuI9GcccWfPnTSh6Y6kMSuahWjyZ31GQUpkpZyoAvhHhu5mNdyYNac0JxWoIYAbzIWUDee2tm2441B9ToLHE7R5ibqkpSaz47k0vXWYmInVxXm6BeEYsWXNI8CZILyhjOecPXG8PZhDGRuI2a+3BpNznp6VG9Gsfu0CD4gQ0cEcylglU5v11mBylFm7ySnNiQB0nyJHCHt5hP2s89PHjVsyPvXDivCwnYN/yPiUeyYba8xjPs7V83xXQ5kVOBMtS7ox6B3KuObTCPsWvSWNhnWeqYZJ32pSEoFT9KrcaGY9ffBLdEALZTztmnFjZ5g5lLFcZqi0OKNHt66w0cxqqOMw+sMbyjjr9InpG1+PifpEbz1DRUraP5cp4/TWEQToNkwzmlnn6S1gqDRZLTNvS06aO3dS+tbn42L+6wHDZBToj3bC90gsRvt7m5G5eo1bDfPHyynNmYoJD0Rut1imFyeOmW/0UMYDMiFUD072NVFAph4VG8asmKALPBA9Qxn/aMBQxm0yPWB7ykKAmXpUaiSzBkV2eLcQ6c96Qxl/mTRmpVFCGdd7Mg2XWtPEhLxZZ+gtwJdIIZJfi4055/RJ6e6fpCStPGKx1OupZ53MjNez/iAj5M2qyzjA3/QOZUxZud9q1SXkb7PHqfsWryBCF7MaIpA/pzTHDrRirC8P/yBlR05H50e/rzucMamrKyA7YNxS1E3peD45EHWFCBKIry7OOxrISo1ijskYR4t/0UIZzz4/fVzahQEKZTxKdI2/6wgxBJAd6EqNYpCg7AIPiBDWnQEKZdwjkwPaAoQIAd9qaBSzhm6+3x6hjAsmjF+3Iipyva+r2OxxGjpgw6T4NJ3rUDCKWZ16CzACh23Wk28Ymzzb16GM6+RUQ543anJSAl2hUcwatNkZRoKvQxk3eKaoySXfE7Itq0NvAUakZyjjo/Fxq1zgGm4ZUuLaKdNU3iXfE7JmVQv2A+ASIuORhPgz5zonHBxuKGMntr1uAnf0WgihzKo4MW4hxg83lPEQjrpAaAtBlFkVg9Mdyjh/UrrnppSkFQOFMu7wjG8NpLYQIuAHehvFrGrMOhKEcCyPjlowUCjjejnFqoe0ECDgQwujmNWutwBTI0T0msiIcxZNSEv45rix7/fMyviZZ6r6IvQPATerUSYe3HoLCAqOhzK6p7hcq++qO5yyqd2pknr7h5A1qyGzK5gWLZTx9GVbUlZcZ4874g6LMEoPKmiQ0BnoOpVZg5T8d9wr8z6VC/amvbFm27QrVNCJjxHaLrGAYpRvXGVWH5L/jntl3ifyHIDxNR+cavG4giJJucEI+NBNmTXI6GlUAAHCWb1MnXHjewKeY8soZh12GJ2iL180ajcT97xzqvC4g+rcHgMQ8DQ9RhmzHsHHO2/2PrmXpvVN2OJsTL1zKgBtn7dRU1qDp8NDeGI46T9IxxrZdxnS3eJm39J9tO9tRwjB+OvGE5UZxf6X99O0sYnIiZGkf0/LknLkwyO4W9wknZfkS/nD5kRGBbBIj23C3nerPp+4SMUI+46Am9UoLavPu2kJZybg/Kmz12s1S2tIvTSVqb+bStwpcRxa1n8q3doXaonJiWFa8TSm/HYK9nF23K1uWne0MvV3U5EeSfuedjydHhpWNZCYq2+644GM2s3kqjdPRXqC8ihLnVBm9RXR06OxRvduNTtqO4iarp17FX1SNEfX9k2g4G5z07K1hYSztWgyi82ilSNAdkmklEiXRFgFh946ROKiRIQtoMfJ9mIoRgWwyC57Wu3qykBoChEOB7pCo5g1IN/49nQ7TZ9pse9HPzmKq77vULnzYCe2WBv7ntjHjjt2sO+pfXg6PFgjrcTNiWPnHTsJSwrDEmWhbVcbcSfHBUJ6vwzVqN1k7nzlFKQ84k9NIYRqWf1J+rXpHF5+mB2/2oGn3YOw9tMieqBtdxtjcseQ+ZtMLHYLdW9qG1eSFyeT+dtMxl05joOvHCTlohTqV9bz+cOfc/D1g4H4EY4xXKMC2NwdMSl16zb6S1OIEfAhRUiZ1Z5mJ+NnGWT+OhPHaQ7CU8L7XGNLsBGWEEbUFK27HDcnjrbdbb2u6X5uT7XT8GEDEwsm0rG3g479gTmhYiRG7Wb6thdnIaUhTgkwOTsCXaFRzBqQVJldR7XlXOmR1L1ex5iFfQN7wuLDCEsMo6NWM17zlmYi0iJ6XXPwlYOkLElBdsnjCVcs4On0f16y0RgVIKyrNX5M/ZZ1vtQUogTcrAMu3QghEoHl3qepaFEb3ZuZ50kpfRUfudVH5Rxjz6N7aKlsoau5i8qfVJJyYQqeDg/1y7WhRtwpccSfpW2jdR1xsW/pPpw3OwEYd9U49jy2B9klCU8OJ/27x5PZH117lMiMSMIStKNjIjMj2X77diLSI4ic6N+8ZKM1ajfZW5/P/nD+ne0IETH41YoTEHCzDjkjvxCiCGiWUt7jDyE5pTmHUYnTToivjNrN2i/f/H6jY8rZviovxNhfUJIb8IOph9sNtggh1gIIIWYJIaQQYqL3+U4hRJQQYpIQYrkQYqP3fuIQy64YppaQwddGBZhR8cxkpFRhniMj4K0qDN+sHiBCCBEHnAV8CpwlhJgEHJRStgJ/Bp6RUs4EngceHGLZ5cPUEhL4w6gAke2H0mNa9q3xdbkhgi4Ny0gmmFYDZwBnA3d5788CPvC+Px94wfv4WeDMIZa7YQRaghp/GbWbGRWlaUipsvUPn4/1qHQkZv0AzZyTgH8Cs9AM+f4Jrh/qMXXKrD3wt1EBYlpqJke2H/rIn3UEKbr8zkZi1veBbwHbpfatXA8sBj70vr8auML7+Cpg1RDLXY8Ou++NSCCM2k12RWnAs/SZnGZgsx4VD9usUspq78PulnQV0CCPh7HdCFwjhNgIfBv48VDKLc8vb0OnbywjEUijAsQfrcoK72j4NFD1BQFrC0pydRk6DHmLnJSyqMfjiT0e34U2du1+Xg3kjlDPe2hd7JAk0EbtJrvyufANs34U6GrNim4NilEimLpZobcAvdDLqACJRypm2lwtas5gaAx1WOdzjGbW/wKBCbA1EHoatZvp219Sa66D0wG8q1flhjJreX55O5phQwYjGBVg7MG1p1i72lVgysC8X1CS26JX5UZJ69KT5cACvUUEAqMYtZspu15r3DbtisEvHITnVtzNpt1riI2M57bLngTgqbd/y4FGLQ1UW0czkfYYbr3k8T6ffa/8H6yuWIZEckZWHgtnXgzAa2seZ8uej0lPzOQ7uYUAfLztbVo6jrIw5+JRax4iywJVUX8YqmX18qreAgKB0YwKvktbetq0r1Kw+Pe9Xrt20S+59ZLHufWSx5k9+SxmZ/SNlampr2J1xTJ+tuRhbr3kL2z6fA0HG/fS1tFM1YHN/OLSJ/BID/sO76Kzq4M1W//N2TMuGK3c4aDM2pPy/PLNwBa9dfgTIxoVfJe2NDNtJlER/WfQkFKybudKTsnsu2Cw/8jnOMdmEx4WgdViJXPcTDZUrUIIC12eLqSUuLo6sFpsLN/wEgtylmAN3NGzOwpKcrcFqrL+MJxZvbystwB/YVSjduPvtKU7a8uJjUwgxZHe5720MU521G6kub2RTlc7mz//iCPNdUSERzE74yyK//F9EuNSiQyPZvfBrcx0nuEvmf3xWiAr6w8jjllBM2uR3iJ8jdGNCv5PW/rpzneZk7mw3/dSEyaxaPYV/Lns/7DbIhmfOAWrRUt6t2j2FSyarY2nn195D3lzr2Z1RRkVe9cyPnEyXzv5W/6Q25NSf1cwGIZsWcvzyyuATXrr8CVmMGo3/kpb6va42VD1ASdP6d+sAKdnLabw4sf4yQX3E22PJdkxvtf7ew5tByDFkc5H297mukV3UFNfxcHGvb6W25P1BSW5uv8/GtKsXl7SW4CvMJNRwX9pS7fuXcvY+IkkxCSf8JqmNi1qtb7pABuqVzHnC2PbNz9ZSt6cq3F73Mc2DAlhobPLr8vzz/iz8KFiZLOWEgTntprNqN2MJm3p0nd+x72v3cCBxj3c/tzlrK7UJlHX7nyvz8RSQ8shHll267HnT/yniN+9dA2P/et2LjvjRqLsscfe21C1iknJWcRHJxFlj8E5dgZ3/u27CATpiVNGInUouDm+5VNXhpzWRQ9ySnNeAZborWOkmNWo3Wyace3KgymnmFa/j1hWUJKbp7cIMHbLCvCQ3gJGitmNCiptqZeH9RbQjaHNWp5f/h467R0cDcFgVFBpS9HSt7ylt4huDG1WL4b5ZhsKwWLUbrK3Pp+NlAE/i9Qg/KmgJNcw40QzmPUZoFFvEUMh2IwKYO9sTHEc3aVLziGdOYiWQ8wwGN6s5fnlLZigdQ1Go3YTomlLHykoyTVUj8LwZvVyN9Cgt4gTEcxGhWNpS0Mp5U4L8IjeIr6IKcxanl/eANyrt47+CHajdjOjonRcCKUtva+gJLdu8MsCiynM6uV+oP+jynUiVIwKIZW29BBaT85wmMas5fnlzUCx3jq6CSWjdhMiaUvvLCjJNeTasmnM6uVhAnQ85ECEolEhJNKW7gYe1VvEiTCVWb05mgr11BCqRu0mu/K5vidQBw93FJTkGjZhn6nMClCeX/4sOmWYC3WjQlCnLV2NwdZVv4jpzOrlhwQ4Zaky6nGCMG1pF/BDI0Ur9YcpzVqeX74N+GOg6lNG7U0Qpi19oKAkd6PeIgbDlGb1chcBONTW30a9rbaWM3ds5xtVu469VtnezpW7q7mgqor/3buHZnf/23qPut3ctG8feVW7OL9qF+vb2gC4t+4gF1ZVUVh7fC7u9cZGnj1S7zPdU3a9ZooQ0CGwC7hjsIuEEG4hxPoeN6fflX0B05rVO9n0Q4Z+pOSwCUSLusTh4PH03umO7jiwn5uTU/hnRgbnxsby1AlM9vuDBzgzOpqyjMm84sxgcng4TW43n7W18VpGBm4J2zraafd4ePVoI1fE+27lxVdpSw3A9QUlua1DuK5NSjm7x616NJUKIYad/8y0ZgUozy9/By1YwucEqus7JyoKh7X3n6Gqs5M5kZEAnB4VzX+a+i77NbvdfNrWxsUOBwDhQhBntWIR4JISKSUd0oMNwVP19XwrPoEwIXym21dpS3XmoYKS3BFPVgohZgsh1gghNgohXhVCJHhfXyGEmON9nCSEqPY+vloI8TchxBvAf4Zbn6nN6qUQ8OmeS73HqFPD7bzb3AzAv5ua2O/qO5+zx+VijNXKbftruai6il/ur6XV4yHaYuW8mFgu2l3N+LAwYq1WNrW3cW5sbJ8yRou/05b6mfXAz4ZxfWSPLnB3IvpngJ9LKebtJ+oAAAeTSURBVGcC5cCvhlDOfCBfSjnskxZNb9by/PJOtMObm31Rnt5GBfhdaip/bTjCJdVVtHg8hPXTILqRbGlv5/L4BF5xZhApLDxRfxiA6xITedWZwc9TxvLgoTp+lJTM3xsa+EnNPkoO+y5iszttqc8KDBzNwOXDXFPt2Q1eIoRwAPFSypXe90uBs4dQzttSyhFNHpjerADl+eXbgYLRlmMEowJMttt5YsJE/u7MIC8ujonhfeMQxtrCGGuzMcvbXT4vNpYt7b13dHU/d4aH88+jjfwpbTzbOzqo7vTdAfP+SlvqZ37k5+z6XRz3VsQX3hvxwVZBYVaA8vzyZ4DnRvp5oxgV4HCX1u31SEnJ4UNcFh/f55pkm43UsDCqOrXGYU1rC1PC7b2ueehQHTckJdElJR7vNJwFQbvHd5tn/JW21I88V1CSO+qE3VLKRuCIEKL78O9vA92tbDVwivfxJaOtqxujZuQfKT8ATgK+PJwP6WnUW2r28XFrKw1uNwt37uBHiUm0Sg8vHNGygC6KjeWiOG0S6WCXi1/u389j3tnj21LG8n81tbikJD08jDtTxx0r952mJr4UEUmKLQyAWZGRXFBVxTS7nayIL37Zj46pO/4xp2bcGUfwTrAYmLXA931YXj5QIoSIQlsCusb7+j3Ay0KIb+PDaDtDpyIdCTmlOWloR8n3PUylH4zUopoZE6Qt3QfMKyjJ1X0jyEgJmm5wN+X55TXA+QxhwkkZ1XcYPG1pC3C+mY0KQWhWgPL88g1oM8QnzOivjOpbDJy21ANcWVCSu15vIaMlKM0KUJ5fXgbc1N97yqj+waBpS39aUJL7ht4ifEHQmhWgPL/8z0CvI7iVUf2HAdOW3lFQkuuXCDc9CGqzApTnl/8C+BMoowYCA6Ut/V1BSe5v9RbhS4LerADl+eU3X7zKc4cyqv8xSNrSPxSU5P5SZw0+J+iWbgaiIiv7PuAneusIdpqj03Z9POcXToTQozG4v6AkNyj/xiHRsnaTXVlxMwbKkBis6Ji29LfBalQIMbMCZFdW3Io2SxwqCat1IcBpS93A9wtKcgfdRG5mQs6sANmVFQ8AFzKKoGrFwAQwbWkrsKSgJPfxANSlKyFpVoDsyoo3gLPQwtAUfiAAaUsPAecGyzrqYISsWQGyKys+A05F24is8DF+Tlv6GXBqQUnuGj+VbzhC2qwA2ZUV+9Ba2Bf11hKM+Clt6ZPA6QUlubsGvTKICKmlm8GoyMq+FngIiNJbSzCx8sx7t7htETN8UFQbUFBQkrvUB2WZjpBvWXuSXVnxFNqm4WDMOK8bU3a95ovdODvQWtOQNCoos/Yhu7KiEm0c+2e9tQQL42s+mDeKtKUSeBCYFQw7Z0aD6gYPQEVW9mK0E7An6a3F7FRPPO/DXZMvOGOYH9sJXFNQkvuBPzSZDdWyDkB2ZcUyYAbaUR1GCE43LcNMWyqBB4CZyqjHUS3rEKnIyv4SUAIMt3VQeNkx+cL3P5+4aLB0nR8BN4XSksxQUS3rEMmurNiEtsRzPdpivGKYDJK2dA9wFTBfGbV/VMs6AiqysmPQ4ot/CvTNE6o4IZXTrlxZk3Zmz62KLcAfgHsKSnLbdJJlCpRZR0FFVnYCcAvwYyBaZzmmwG0Jb1l51n2dCBEJPA4UF5Tk1uqtywwos/qAiqzsZOBWtJy0KqBiYJq3ZV565970BU8XlOSa/WCrgKLM6kO8Le21aEd5ZOgsx2gcQFsvfSS7sqJBbzFmRJnVD1RkZVuAxcANwCLAd2ctmgsP2tGGTwKvZ1dW+O6QnRBEmdXPVGRlTweuAy4FnPqqCRhVwFLg6ezKCrMeCWk4lFkDSEVW9jzgMjTjTtRZjq/ZC7wB/AN4N7uyQv1j+RhlVh2oyMoWaPHHFwPnArMw35q3BD4B3gTeyK6sCOm43UCgzGoAvBNTZwMLvbccjDfO7QI2Amu8t7ezKyvUbG4AUWY1IBVZ2YnAPLQWdzaaeacCYQGS0IZ2hGEFWvjfR8Cn2ZUVKmhBR5RZTUJFVrYNmAxkAeOBVGCs9777lohmaBtg7aeYNqDBe2v03h8BdqPtF92BttNlnxpzGg9l1iDGa/Bu47rU0om5UWZVKEyC2WYgFYqQRZnVDwgh3EKI9T1uTiHEar11KcyN6gb7ASFEs5QyRm8diuBCtawBQgjR7L1/SQixuMfrTwshLhZCWIUQdwshPhFCbBRCfF8/tQojoszqHyJ7dIFf/cJ7LwKXAwghwtEimJahxQ83SinnAnOB64UQaueO4hg2vQUEKW1SytkneO8t4EEhhB34GvC+lLJNCHEeMFMIcYn3OgdaIESV/+UqzIAya4CRUrYLIVYAX0VrYf/qfUsAN0gp/62XNoWxUd1gfXgRuAYtAVu3Of8N/FAIEQYghJgmhFCpYhTHUC2rPvwHeAZ4XUrZHVX0BNp+13VCCAHUoZ0hq1AAaulGoTANqhusUJgEZVaFwiQosyoUJkGZVaEwCcqsCoVJUGZVKEyCMqtCYRKUWRUKk6DMqlCYBGVWhcIkKLMqFCZBmVWhMAnKrAqFSVBmVShMgjKrQmESlFkVCpOgzKpQmIT/B0GN4ibjIzcyAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#TBD" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Good Job!" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }