├── .gitattributes ├── .gitignore ├── Part 1 ├── census.csv ├── dictionaries.py ├── finance_functions.py ├── fizzbuzz.py ├── functions.py ├── happy_hour.py ├── happy_hour2.py ├── if.py ├── importing.py ├── input.py ├── lists.py ├── logic_practice.py ├── logic_practice_solutions.py ├── loops.py ├── math2.py ├── print.py ├── strings.py ├── tip_calculator.py └── variables.py ├── Part 2 ├── Chapter 5.ipynb ├── Chapter 5 │ ├── Summarized orders new.csv │ ├── df_students.pickle │ ├── items.pickle │ ├── orders.pickle │ ├── restaurants.pickle │ ├── students.pickle │ └── summarized_orders.pickle ├── Chapter 6.ipynb ├── Chapter 7.ipynb ├── Chapter 7 │ └── orders.pickle ├── Chapter 8.ipynb ├── Chapter 9.ipynb └── raw data │ ├── .DS_Store │ ├── Items.csv │ ├── Restaurants.csv │ ├── Simplified orders.csv │ ├── Simplified orders.zip │ ├── Students.xlsx │ ├── Summarized orders.csv │ ├── university.xlsx │ └── weather.csv └── README.md /.gitattributes: -------------------------------------------------------------------------------- 1 | *.zip filter=lfs diff=lfs merge=lfs -text 2 | *.csv filter=lfs diff=lfs merge=lfs -text 3 | *.pickle filter=lfs diff=lfs merge=lfs -text 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | pip-wheel-metadata/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | *.py,cover 51 | .hypothesis/ 52 | .pytest_cache/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | target/ 76 | 77 | # Jupyter Notebook 78 | .ipynb_checkpoints 79 | 80 | # IPython 81 | profile_default/ 82 | ipython_config.py 83 | 84 | # pyenv 85 | .python-version 86 | 87 | # pipenv 88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 91 | # install all needed dependencies. 92 | #Pipfile.lock 93 | 94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 95 | __pypackages__/ 96 | 97 | # Celery stuff 98 | celerybeat-schedule 99 | celerybeat.pid 100 | 101 | # SageMath parsed files 102 | *.sage.py 103 | 104 | # Environments 105 | .env 106 | .venv 107 | env/ 108 | venv/ 109 | ENV/ 110 | env.bak/ 111 | venv.bak/ 112 | 113 | # Spyder project settings 114 | .spyderproject 115 | .spyproject 116 | 117 | # Rope project settings 118 | .ropeproject 119 | 120 | # mkdocs documentation 121 | /site 122 | 123 | # mypy 124 | .mypy_cache/ 125 | .dmypy.json 126 | dmypy.json 127 | 128 | # Pyre type checker 129 | .pyre/ 130 | -------------------------------------------------------------------------------- /Part 1/census.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:d1e77c3c5473fd3dc88556c22f052068cf88b61d8d89500c7e2d52654942f424 3 | size 87660 4 | -------------------------------------------------------------------------------- /Part 1/dictionaries.py: -------------------------------------------------------------------------------- 1 | # Dictionaries let you label values using strings 2 | stock = {"name": "Microsoft", 3 | "ticker": "MSFT", 4 | "index": "NASDAQ"} 5 | 6 | print(f"{stock['name']}'s stock ticker is {stock['ticker']}") 7 | 8 | # Dictionary Challenge 9 | user = {'name': 'Mattan', 10 | 'height': 70, 11 | 'shoe size': 10.5, 12 | 'hair': 'Brown', 13 | 'eyes': 'Brown'} 14 | 15 | print(f"Name: {user['name']}") 16 | print(f"Height: {user['height']}") 17 | print(f"Shoe Size: {user['shoe size']}") 18 | print(f"Hair Color: {user['hair']}") 19 | print(f"Eye Color: {user['eyes']}") 20 | 21 | # Adding a Key/Value Pair to a Dictionary 22 | stock["open price"] = 108.25 23 | stock["close price"] = 106.03 24 | print(stock) 25 | 26 | # print(stock["Open Price"]) 27 | 28 | # Dictionary Challenge pt. 2 29 | user['favorite movies'] = ['Pulp Fiction', 'Magnolia', 'The Royal Tenenbaums'] 30 | print(f"Favorite Movies: {', '.join(user['favorite movies'])}") 31 | 32 | # Looping over a List of Dictionaries 33 | mattan = {'name': 'Mattan', 34 | 'height': 70, 35 | 'shoe size': 10.5, 36 | 'hair': 'Brown', 37 | 'eyes': 'Brown', 38 | 'favorite movies': ['Pulp Fiction', 39 | 'Magnolia', 40 | 'The Royal Tenenbaums']} 41 | 42 | chris = {'name': 'Chris', 43 | 'height': 72, 44 | 'shoe size': 11, 45 | 'hair': 'Blonde', 46 | 'eyes': 'Blue', 47 | 'favorite movies': ['Shawshank Redemption', 48 | 'Lord of the Rings']} 49 | 50 | lisa = {'name': 'Lisa', 51 | 'height': 64, 52 | 'shoe size': 6.5, 53 | 'hair': 'Black', 54 | 'eyes': 'Brown', 55 | 'favorite movies': ['Crazy Rich Asians', 56 | 'Avengers', 57 | 'Lord of the Rings']} 58 | 59 | users = [mattan, chris, lisa] 60 | 61 | for user in users: 62 | print(f"{user['name']}'s shoe size is {user['shoe size']}") 63 | 64 | # Using If to Get a Subset of a List 65 | large_shoes = [] 66 | for user in users: 67 | if user['shoe size'] > 10: 68 | large_shoes.append(user) 69 | 70 | print(large_shoes) 71 | 72 | lord_of_the_rings_lovers = [] 73 | for user in users: 74 | if 'Lord of the Rings' in user['favorite movies']: 75 | lord_of_the_rings_lovers.append(user) 76 | 77 | print(lord_of_the_rings_lovers) 78 | 79 | # VLOOKUP Challenge 80 | for user in users: 81 | if user['name'] == 'Chris': 82 | print(', '.join(user['favorite movies'])) 83 | -------------------------------------------------------------------------------- /Part 1/finance_functions.py: -------------------------------------------------------------------------------- 1 | # Function Challenge #3 2 | def future_value(present_value, rate, periods=1): 3 | return round(present_value * (1 + rate) ** periods, 2) 4 | 5 | print(future_value(present_value=1000, rate=.1, periods=5)) 6 | -------------------------------------------------------------------------------- /Part 1/fizzbuzz.py: -------------------------------------------------------------------------------- 1 | # FizzBuzz 2 | for number in range(1, 101): 3 | if ((number % 3) == 0) and ((number % 5) == 0): 4 | print("FizzBuzz") 5 | elif (number % 3) == 0: 6 | print("Fizz") 7 | elif (number % 5) == 0: 8 | print("Buzz") 9 | else: 10 | print(number) -------------------------------------------------------------------------------- /Part 1/functions.py: -------------------------------------------------------------------------------- 1 | # Functions are little snippets of code 2 | # that we can reuse over and over 3 | def average(numbers): 4 | return sum(numbers) / len(numbers) 5 | 6 | grades = [90, 85, 74] 7 | prices = [12.99, 9.99, 5.49, 7.50] 8 | 9 | print(average(grades)) 10 | print(average(prices)) 11 | print(average([0, 1, -1])) 12 | 13 | 14 | def get_city(address): 15 | return address.split(', ')[1] 16 | 17 | columbia = "3022 Broadway, New York, NY 10027, USA" 18 | city = get_city(columbia) 19 | print(city) 20 | 21 | 22 | # Function Challenge #1 23 | def get_state(address): 24 | return address.split(', ')[2].split()[0] 25 | 26 | state = get_state(columbia) 27 | print(state) 28 | 29 | 30 | def divisible_by(number, divisor): 31 | return number % divisor == 0 32 | 33 | print(divisible_by(number=15, divisor=3)) 34 | print(divisible_by(number=20, divisor=3)) 35 | 36 | 37 | # Function Challenge #2 38 | def uppercase_and_reverse(text): 39 | return text.upper()[::-1] 40 | 41 | print(uppercase_and_reverse('Banana')) 42 | -------------------------------------------------------------------------------- /Part 1/happy_hour.py: -------------------------------------------------------------------------------- 1 | import random 2 | 3 | bars = ["McSorley's Old Ale House", 4 | "Death & Company", 5 | "The Back Room", 6 | "PDT"] 7 | 8 | people = ["Mattan", 9 | "Sarah", 10 | "that person you forgot to text back", 11 | "Samule L. Jackson"] 12 | 13 | random_bar = random.choice(bars) 14 | random_person = random.choice(people) 15 | 16 | print(f"How about you go to {random_bar} with {random_person}?") 17 | -------------------------------------------------------------------------------- /Part 1/happy_hour2.py: -------------------------------------------------------------------------------- 1 | import random 2 | 3 | bars = ["McSorley's Old Ale House", 4 | "Death & Company", 5 | "The Back Room", 6 | "PDT"] 7 | 8 | people = ["Mattan", 9 | "Sarah", 10 | "that person you forgot to text back", 11 | "Samuel L. Jackson", 12 | "Daniel"] 13 | 14 | random_bar = random.choice(bars) 15 | random_person = random.choice(people) 16 | random_person2 = random.choice(people) 17 | 18 | print(f"How about you go to {random_bar} with {random_person} and {random_person2}?") 19 | -------------------------------------------------------------------------------- /Part 1/if.py: -------------------------------------------------------------------------------- 1 | answer = input("Do you want to hear a joke? ") 2 | 3 | if answer.lower() in ["yes", "y"]: 4 |     print("What's loud and sounds like an apple?") 5 |     print("AN APPLE") 6 | elif answer.lower() in ["no", "n"]: 7 |     print("Fine.") 8 | else: 9 |     print("I don't understand.") -------------------------------------------------------------------------------- /Part 1/importing.py: -------------------------------------------------------------------------------- 1 | import statistics 2 | 3 | print(statistics.mean([90, 85, 74])) 4 | print(statistics.mean([12.99, 9.99, 5.49, 7.50])) 5 | 6 | import statistics as st 7 | 8 | print(st.mean([90, 85, 74])) 9 | print(st.mean([12.99, 9.99, 5.49, 7.50])) 10 | 11 | from statistics import mean 12 | 13 | print(mean([90, 85, 74])) 14 | print(mean([12.99, 9.99, 5.49, 7.50])) 15 | -------------------------------------------------------------------------------- /Part 1/input.py: -------------------------------------------------------------------------------- 1 | name = input("What's your name? ") 2 | age = int(input("How old are you? ")) 3 | age_in_dog_years = age * 7 4 | 5 | print(f"Hi {name}! You're {age_in_dog_years} in dog years. Woof!") -------------------------------------------------------------------------------- /Part 1/lists.py: -------------------------------------------------------------------------------- 1 | # In Python, lists are a way of grouping 2 | # (usually) similar things together 3 | the_count = [1, 2, 3, 4, 5] 4 | stocks = ["FB", "AAPL", "NFLX", "GOOG"] 5 | random_things = [55, 1/2, "Puppies", stocks] 6 | 7 | print(random_things) 8 | 9 | # You can start with an empty list 10 | # and append or remove 11 | people = [] 12 | 13 | people.append("Mattan") 14 | people.append("Sarah") 15 | people.append("Daniel") 16 | people.remove("Sarah") 17 | 18 | print(people) 19 | 20 | # Use split() to turn a string into a list 21 | cities = "New York, San Francisco, London".split(", ") 22 | print(cities) 23 | 24 | # Use join() to turn a list into a string 25 | groceries = ["Milk", "Eggs", "Cheese"] 26 | print(" and ".join(groceries)) 27 | 28 | # Access elements of a list using [ ] 29 | first_city = cities[0] 30 | second_city = cities[1] 31 | last_city = cities[-1] 32 | first_two_cities = cities[0:2] 33 | print(first_two_cities) 34 | -------------------------------------------------------------------------------- /Part 1/logic_practice.py: -------------------------------------------------------------------------------- 1 | True and True 2 | False and True 3 | (1 == 1) and (2 == 1) 4 | "love" == "love" 5 | (1 == 1) or (2 != 1) 6 | True and (1 == 1) 7 | False and (0 != 0) 8 | True or (1 == 1) 9 | "time" == "money" 10 | (1 != 0) and (2 == 1) 11 | "I Can't Believe It's Not Butter!" != "butter" 12 | "one" == 1 13 | not (True and False) 14 | not ((1 == 1) and (0 != 1)) 15 | not ((10 == 1) or (1000 == 1000)) 16 | not ((1 != 10) or (3 == 4)) 17 | not (("love" == "love") and ("time" == "money")) 18 | (1 == 1) and (not (("one" == 1) or (1 == 0))) 19 | ("chunky" == "bacon") and (not ((3 == 4) or (3 == 3))) 20 | (3 == 3) and (not (("love" == "love") or ("Python" == "Fun"))) 21 | -------------------------------------------------------------------------------- /Part 1/logic_practice_solutions.py: -------------------------------------------------------------------------------- 1 | True and True # True 2 | False and True # False 3 | (1 == 1) and (2 == 1) # False 4 | "love" == "love" # True 5 | (1 == 1) or (2 != 1) # True 6 | True and (1 == 1) # True 7 | False and (0 != 0) # False 8 | True or (1 == 1) # True 9 | "time" == "money" # False 10 | (1 != 0) and (2 == 1) # False 11 | "I Can't Believe It's Not Butter!" != "butter" # True 12 | "one" == 1 # False 13 | not (True and False) # True 14 | not ((1 == 1) and (0 != 1)) # False 15 | not ((10 == 1) or (1000 == 1000)) # False 16 | not ((1 != 10) or (3 == 4)) # False 17 | not (("love" == "love") and ("time" == "money")) # True 18 | (1 == 1) and (not (("one" == 1) or (1 == 0))) # True 19 | ("chunky" == "bacon") and (not ((3 == 4) or (3 == 3))) # False 20 | (3 == 3) and (not (("love" == "love") or ("Python" == "Fun"))) # False 21 | -------------------------------------------------------------------------------- /Part 1/loops.py: -------------------------------------------------------------------------------- 1 | # Use for to loop over a list 2 | numbers = [1, 2, 3] 3 | for number in numbers: 4 | print(number) 5 | 6 | stocks = ["fb", "aapl", "nflx", "goog"] 7 | for stock in stocks: 8 | print(stock.upper()) 9 | 10 | # Looping Challenge 11 | for number in range(1, 11): 12 | print(number, "squared is", number * number) 13 | 14 | squares = [] 15 | for number in range(1, 11): 16 | squares.append(number * number) 17 | print(squares) 18 | -------------------------------------------------------------------------------- /Part 1/math2.py: -------------------------------------------------------------------------------- 1 | # In Python you can do math using these symbols: 2 | # + addition 3 | # - subtraction 4 | # * multiplication 5 | # / division 6 | # ** exponents (not ^) 7 | 8 | answer = int((40 + 30 - 7) * 2 / 3) 9 | print("What is the answer to life, the universe, and everything?", answer) 10 | print("Is it true that 5 * 2 > 3 * 4?") 11 | print(5 * 2 > 3 * 4) 12 | -------------------------------------------------------------------------------- /Part 1/print.py: -------------------------------------------------------------------------------- 1 | # "Since feeling is first" by e e cummings 2 | print("since feeling is first") 3 | print("who pays any attention") 4 | print("to the syntax of things") 5 | print("will never wholly kiss you;") 6 | print("wholly to be a fool") 7 | print("while Spring is in the world") 8 | 9 | print("my blood approves") 10 | print("and kisses are a better fate") 11 | print("than wisdom") 12 | print("lady i swear by all flowers. Don't cry") # I love this line 13 | print("—the best gesture of my brain is less than") 14 | print("your eyelids' flutter which says") 15 | 16 | print("we are for each other: then") 17 | print("laugh, leaning back in my arms") 18 | print("for life's not a paragraph") 19 | 20 | print("and death i think is no parenthesis") 21 | -------------------------------------------------------------------------------- /Part 1/strings.py: -------------------------------------------------------------------------------- 1 | # Strings are text surrounded by quotes 2 | # Both single (' ') and double (" ") can be used 3 | 4 | kanye_quote = ('My greatest pain in life is that I will never ' 5 | 'be able to see myself perform live.') 6 | print(kanye_quote) 7 | 8 | # Switch to single quotes if your string uses double-quotes 9 | hamilton_quote = 'Well, the word got around, they said, "This kid is insane, man"' 10 | print(hamilton_quote) 11 | 12 | # A few string functions 13 | print(kanye_quote.upper()) 14 | print(kanye_quote.lower()) 15 | print("ok fine".replace("fine", "great").upper()) 16 | 17 | # F-Strings let you write Python code directly inside of a string 18 | # inside of curly brackets ({ }) 19 | print(f"1 + 1 equals {1 + 1}") 20 | name = "mattan griffel" 21 | print(f"{name.title()}, the total will be ${200 + 121.8 :,.2f}") 22 | -------------------------------------------------------------------------------- /Part 1/tip_calculator.py: -------------------------------------------------------------------------------- 1 | # Tip Calculator by Mattan Griffel and Daniel Guetta 2 | 3 | # Convert the user's input into a float 4 | amount = float(input("How much was your bill? ")) 5 | 6 | # Calculate the tip amounts 7 | print(f"18%: ${amount * .18 :,.2f}") 8 | print(f"20%: ${amount * .20 :,.2f}") 9 | print(f"25%: ${amount * .25 :,.2f}") 10 | -------------------------------------------------------------------------------- /Part 1/variables.py: -------------------------------------------------------------------------------- 1 | # Variables are just nicknames 2 | # they're plain, lowercase words 3 | 4 | name = "Mattan Griffel" 5 | orphan_fee = 200 6 | teddy_bear_fee = 121.80 7 | total = orphan_fee + teddy_bear_fee 8 | 9 | print(name, "the total will be", total) 10 | 11 | # This will produce an error unless you've already defined subtotal 12 | # print(subtotal) 13 | 14 | # You can use an f-string to put a variable directly into a string 15 | print(f"{name}, the total will be ${total:,.2f}") -------------------------------------------------------------------------------- /Part 2/Chapter 5.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Chapter 5" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": {}, 13 | "source": [ 14 | "## Section 5.5" 15 | ] 16 | }, 17 | { 18 | "cell_type": "markdown", 19 | "metadata": {}, 20 | "source": [ 21 | "### Section 5.5.1" 22 | ] 23 | }, 24 | { 25 | "cell_type": "code", 26 | "execution_count": 1, 27 | "metadata": {}, 28 | "outputs": [], 29 | "source": [ 30 | "import pandas as pd" 31 | ] 32 | }, 33 | { 34 | "cell_type": "code", 35 | "execution_count": 2, 36 | "metadata": {}, 37 | "outputs": [], 38 | "source": [ 39 | "students = (\n", 40 | " {'FIRST_NAME': ['Daniel', 'Ben', 'Kavita', 'Linda', \n", 41 | " 'Omar','Jane', 'Felicia', 'Rachel', \n", 42 | " 'Bob'],\n", 43 | " 'LAST_NAME': ['Smith', 'Leibstrom', 'Kanabar', 'Thiel',\n", 44 | " 'Reichel', 'OConner', 'Rao', 'Crock', \n", 45 | " 'McDonald'],\n", 46 | " 'YEAR': [1, 1, 1, 4, 2, 2, 3, 1, 1],\n", 47 | " 'HOME_STATE': ['NY', 'NY', 'PA', 'CA', 'OK', 'HI', \n", 48 | " 'NY','FL', 'FL'],\n", 49 | " 'AGE': [18, 19, 19, 22, 21, 19, 20, 17, 18],\n", 50 | " 'CALC_101_FINAL': [90, 80, None, 60, 70, None,None, \n", 51 | " None, 98],\n", 52 | " 'ENGLISH_101_FINAL': [80, None, None, 40, 50, None,\n", 53 | " None, 60, 65]} )\n", 54 | "df_students = pd.DataFrame(students)" 55 | ] 56 | }, 57 | { 58 | "cell_type": "code", 59 | "execution_count": 3, 60 | "metadata": {}, 61 | "outputs": [ 62 | { 63 | "data": { 64 | "text/html": [ 65 | "
\n", 66 | "\n", 79 | "\n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | "
FIRST_NAMELAST_NAMEYEARHOME_STATEAGECALC_101_FINALENGLISH_101_FINAL
0DanielSmith1NY1890.080.0
1BenLeibstrom1NY1980.0NaN
2KavitaKanabar1PA19NaNNaN
3LindaThiel4CA2260.040.0
4OmarReichel2OK2170.050.0
5JaneOConner2HI19NaNNaN
6FeliciaRao3NY20NaNNaN
7RachelCrock1FL17NaN60.0
8BobMcDonald1FL1898.065.0
\n", 185 | "
" 186 | ], 187 | "text/plain": [ 188 | " FIRST_NAME LAST_NAME YEAR HOME_STATE AGE CALC_101_FINAL \\\n", 189 | "0 Daniel Smith 1 NY 18 90.0 \n", 190 | "1 Ben Leibstrom 1 NY 19 80.0 \n", 191 | "2 Kavita Kanabar 1 PA 19 NaN \n", 192 | "3 Linda Thiel 4 CA 22 60.0 \n", 193 | "4 Omar Reichel 2 OK 21 70.0 \n", 194 | "5 Jane OConner 2 HI 19 NaN \n", 195 | "6 Felicia Rao 3 NY 20 NaN \n", 196 | "7 Rachel Crock 1 FL 17 NaN \n", 197 | "8 Bob McDonald 1 FL 18 98.0 \n", 198 | "\n", 199 | " ENGLISH_101_FINAL \n", 200 | "0 80.0 \n", 201 | "1 NaN \n", 202 | "2 NaN \n", 203 | "3 40.0 \n", 204 | "4 50.0 \n", 205 | "5 NaN \n", 206 | "6 NaN \n", 207 | "7 60.0 \n", 208 | "8 65.0 " 209 | ] 210 | }, 211 | "execution_count": 3, 212 | "metadata": {}, 213 | "output_type": "execute_result" 214 | } 215 | ], 216 | "source": [ 217 | "df_students" 218 | ] 219 | }, 220 | { 221 | "cell_type": "markdown", 222 | "metadata": {}, 223 | "source": [ 224 | "### Section 5.5.2" 225 | ] 226 | }, 227 | { 228 | "cell_type": "code", 229 | "execution_count": 4, 230 | "metadata": {}, 231 | "outputs": [ 232 | { 233 | "data": { 234 | "text/plain": [ 235 | "0 Daniel\n", 236 | "1 Ben\n", 237 | "2 Kavita\n", 238 | "3 Linda\n", 239 | "4 Omar\n", 240 | "5 Jane\n", 241 | "6 Felicia\n", 242 | "7 Rachel\n", 243 | "8 Bob\n", 244 | "Name: FIRST_NAME, dtype: object" 245 | ] 246 | }, 247 | "execution_count": 4, 248 | "metadata": {}, 249 | "output_type": "execute_result" 250 | } 251 | ], 252 | "source": [ 253 | "df_students['FIRST_NAME']" 254 | ] 255 | }, 256 | { 257 | "cell_type": "code", 258 | "execution_count": 5, 259 | "metadata": {}, 260 | "outputs": [ 261 | { 262 | "data": { 263 | "text/plain": [ 264 | "0 Daniel\n", 265 | "1 Ben\n", 266 | "2 Kavita\n", 267 | "3 Linda\n", 268 | "4 Omar\n", 269 | "5 Jane\n", 270 | "6 Felicia\n", 271 | "7 Rachel\n", 272 | "8 Bob\n", 273 | "Name: FIRST_NAME, dtype: object" 274 | ] 275 | }, 276 | "execution_count": 5, 277 | "metadata": {}, 278 | "output_type": "execute_result" 279 | } 280 | ], 281 | "source": [ 282 | "df_students.FIRST_NAME" 283 | ] 284 | }, 285 | { 286 | "cell_type": "code", 287 | "execution_count": 6, 288 | "metadata": {}, 289 | "outputs": [ 290 | { 291 | "data": { 292 | "text/plain": [ 293 | "0 NY\n", 294 | "1 NY\n", 295 | "2 PA\n", 296 | "3 CA\n", 297 | "4 OK\n", 298 | "5 HI\n", 299 | "6 NY\n", 300 | "7 FL\n", 301 | "8 FL\n", 302 | "Name: HOME_STATE, dtype: object" 303 | ] 304 | }, 305 | "execution_count": 6, 306 | "metadata": {}, 307 | "output_type": "execute_result" 308 | } 309 | ], 310 | "source": [ 311 | "i = 'HOME_STATE'\n", 312 | "df_students[i]" 313 | ] 314 | }, 315 | { 316 | "cell_type": "code", 317 | "execution_count": 7, 318 | "metadata": {}, 319 | "outputs": [ 320 | { 321 | "data": { 322 | "text/html": [ 323 | "
\n", 324 | "\n", 337 | "\n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | "
FIRST_NAME
0Daniel
1Ben
2Kavita
3Linda
4Omar
5Jane
6Felicia
7Rachel
8Bob
\n", 383 | "
" 384 | ], 385 | "text/plain": [ 386 | " FIRST_NAME\n", 387 | "0 Daniel\n", 388 | "1 Ben\n", 389 | "2 Kavita\n", 390 | "3 Linda\n", 391 | "4 Omar\n", 392 | "5 Jane\n", 393 | "6 Felicia\n", 394 | "7 Rachel\n", 395 | "8 Bob" 396 | ] 397 | }, 398 | "execution_count": 7, 399 | "metadata": {}, 400 | "output_type": "execute_result" 401 | } 402 | ], 403 | "source": [ 404 | "df_students[['FIRST_NAME']]" 405 | ] 406 | }, 407 | { 408 | "cell_type": "code", 409 | "execution_count": 8, 410 | "metadata": {}, 411 | "outputs": [ 412 | { 413 | "data": { 414 | "text/html": [ 415 | "
\n", 416 | "\n", 429 | "\n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | " \n", 435 | " \n", 436 | " \n", 437 | " \n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | " \n", 444 | " \n", 445 | " \n", 446 | " \n", 447 | " \n", 448 | " \n", 449 | " \n", 450 | " \n", 451 | " \n", 452 | " \n", 453 | " \n", 454 | " \n", 455 | " \n", 456 | " \n", 457 | " \n", 458 | " \n", 459 | " \n", 460 | " \n", 461 | " \n", 462 | " \n", 463 | " \n", 464 | " \n", 465 | " \n", 466 | " \n", 467 | " \n", 468 | " \n", 469 | " \n", 470 | " \n", 471 | " \n", 472 | " \n", 473 | " \n", 474 | " \n", 475 | " \n", 476 | " \n", 477 | " \n", 478 | " \n", 479 | " \n", 480 | " \n", 481 | " \n", 482 | " \n", 483 | " \n", 484 | "
FIRST_NAMELAST_NAME
0DanielSmith
1BenLeibstrom
2KavitaKanabar
3LindaThiel
4OmarReichel
5JaneOConner
6FeliciaRao
7RachelCrock
8BobMcDonald
\n", 485 | "
" 486 | ], 487 | "text/plain": [ 488 | " FIRST_NAME LAST_NAME\n", 489 | "0 Daniel Smith\n", 490 | "1 Ben Leibstrom\n", 491 | "2 Kavita Kanabar\n", 492 | "3 Linda Thiel\n", 493 | "4 Omar Reichel\n", 494 | "5 Jane OConner\n", 495 | "6 Felicia Rao\n", 496 | "7 Rachel Crock\n", 497 | "8 Bob McDonald" 498 | ] 499 | }, 500 | "execution_count": 8, 501 | "metadata": {}, 502 | "output_type": "execute_result" 503 | } 504 | ], 505 | "source": [ 506 | "df_students[['FIRST_NAME', 'LAST_NAME']]" 507 | ] 508 | }, 509 | { 510 | "cell_type": "code", 511 | "execution_count": 9, 512 | "metadata": {}, 513 | "outputs": [ 514 | { 515 | "ename": "KeyError", 516 | "evalue": "('FIRST_NAME', 'LAST_NAME')", 517 | "output_type": "error", 518 | "traceback": [ 519 | "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", 520 | "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", 521 | "\u001b[1;32m~\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\pandas\\core\\indexes\\base.py\u001b[0m in \u001b[0;36mget_loc\u001b[1;34m(self, key, method, tolerance)\u001b[0m\n\u001b[0;32m 2896\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2897\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2898\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 522 | "\u001b[1;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n", 523 | "\u001b[1;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n", 524 | "\u001b[1;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n", 525 | "\u001b[1;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n", 526 | "\u001b[1;31mKeyError\u001b[0m: ('FIRST_NAME', 'LAST_NAME')", 527 | "\nDuring handling of the above exception, another exception occurred:\n", 528 | "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", 529 | "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mdf_students\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'FIRST_NAME'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'LAST_NAME'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", 530 | "\u001b[1;32m~\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\pandas\\core\\frame.py\u001b[0m in \u001b[0;36m__getitem__\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m 2993\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mnlevels\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2994\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_getitem_multilevel\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2995\u001b[1;33m \u001b[0mindexer\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2996\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mis_integer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mindexer\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2997\u001b[0m \u001b[0mindexer\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mindexer\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 531 | "\u001b[1;32m~\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\pandas\\core\\indexes\\base.py\u001b[0m in \u001b[0;36mget_loc\u001b[1;34m(self, key, method, tolerance)\u001b[0m\n\u001b[0;32m 2897\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2898\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2899\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_maybe_cast_indexer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2900\u001b[0m \u001b[0mindexer\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_indexer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mmethod\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtolerance\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mtolerance\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2901\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mindexer\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mndim\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m1\u001b[0m \u001b[1;32mor\u001b[0m \u001b[0mindexer\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msize\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 532 | "\u001b[1;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n", 533 | "\u001b[1;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n", 534 | "\u001b[1;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n", 535 | "\u001b[1;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n", 536 | "\u001b[1;31mKeyError\u001b[0m: ('FIRST_NAME', 'LAST_NAME')" 537 | ] 538 | } 539 | ], 540 | "source": [ 541 | "df_students['FIRST_NAME', 'LAST_NAME']" 542 | ] 543 | }, 544 | { 545 | "cell_type": "markdown", 546 | "metadata": {}, 547 | "source": [ 548 | "### Section 5.5.3" 549 | ] 550 | }, 551 | { 552 | "cell_type": "code", 553 | "execution_count": 10, 554 | "metadata": {}, 555 | "outputs": [], 556 | "source": [ 557 | "df_students.columns = ['FIRST_NAME', 'LAST_NAME', 'YEAR',\n", 558 | " 'HOME_STATE', 'AGE', 'CALC_101_FINAL',\n", 559 | " 'ENGLISH_101_FINAL_SCORE']" 560 | ] 561 | }, 562 | { 563 | "cell_type": "code", 564 | "execution_count": 11, 565 | "metadata": {}, 566 | "outputs": [ 567 | { 568 | "data": { 569 | "text/html": [ 570 | "
\n", 571 | "\n", 584 | "\n", 585 | " \n", 586 | " \n", 587 | " \n", 588 | " \n", 589 | " \n", 590 | " \n", 591 | " \n", 592 | " \n", 593 | " \n", 594 | " \n", 595 | " \n", 596 | " \n", 597 | " \n", 598 | " \n", 599 | " \n", 600 | " \n", 601 | " \n", 602 | " \n", 603 | " \n", 604 | " \n", 605 | " \n", 606 | " \n", 607 | " \n", 608 | " \n", 609 | " \n", 610 | " \n", 611 | " \n", 612 | " \n", 613 | " \n", 614 | " \n", 615 | " \n", 616 | " \n", 617 | " \n", 618 | " \n", 619 | " \n", 620 | " \n", 621 | " \n", 622 | " \n", 623 | " \n", 624 | " \n", 625 | " \n", 626 | " \n", 627 | " \n", 628 | " \n", 629 | " \n", 630 | " \n", 631 | " \n", 632 | " \n", 633 | " \n", 634 | " \n", 635 | " \n", 636 | " \n", 637 | " \n", 638 | " \n", 639 | " \n", 640 | " \n", 641 | " \n", 642 | " \n", 643 | " \n", 644 | " \n", 645 | " \n", 646 | " \n", 647 | " \n", 648 | " \n", 649 | " \n", 650 | " \n", 651 | " \n", 652 | " \n", 653 | " \n", 654 | " \n", 655 | " \n", 656 | " \n", 657 | " \n", 658 | " \n", 659 | " \n", 660 | " \n", 661 | " \n", 662 | " \n", 663 | " \n", 664 | " \n", 665 | " \n", 666 | " \n", 667 | " \n", 668 | " \n", 669 | " \n", 670 | " \n", 671 | " \n", 672 | " \n", 673 | " \n", 674 | " \n", 675 | " \n", 676 | " \n", 677 | " \n", 678 | " \n", 679 | " \n", 680 | " \n", 681 | " \n", 682 | " \n", 683 | " \n", 684 | " \n", 685 | " \n", 686 | " \n", 687 | " \n", 688 | " \n", 689 | "
FIRST_NAMELAST_NAMEYEARHOME_STATEAGECALC_101_FINALENGLISH_101_FINAL_SCORE
0DanielSmith1NY1890.080.0
1BenLeibstrom1NY1980.0NaN
2KavitaKanabar1PA19NaNNaN
3LindaThiel4CA2260.040.0
4OmarReichel2OK2170.050.0
5JaneOConner2HI19NaNNaN
6FeliciaRao3NY20NaNNaN
7RachelCrock1FL17NaN60.0
8BobMcDonald1FL1898.065.0
\n", 690 | "
" 691 | ], 692 | "text/plain": [ 693 | " FIRST_NAME LAST_NAME YEAR HOME_STATE AGE CALC_101_FINAL \\\n", 694 | "0 Daniel Smith 1 NY 18 90.0 \n", 695 | "1 Ben Leibstrom 1 NY 19 80.0 \n", 696 | "2 Kavita Kanabar 1 PA 19 NaN \n", 697 | "3 Linda Thiel 4 CA 22 60.0 \n", 698 | "4 Omar Reichel 2 OK 21 70.0 \n", 699 | "5 Jane OConner 2 HI 19 NaN \n", 700 | "6 Felicia Rao 3 NY 20 NaN \n", 701 | "7 Rachel Crock 1 FL 17 NaN \n", 702 | "8 Bob McDonald 1 FL 18 98.0 \n", 703 | "\n", 704 | " ENGLISH_101_FINAL_SCORE \n", 705 | "0 80.0 \n", 706 | "1 NaN \n", 707 | "2 NaN \n", 708 | "3 40.0 \n", 709 | "4 50.0 \n", 710 | "5 NaN \n", 711 | "6 NaN \n", 712 | "7 60.0 \n", 713 | "8 65.0 " 714 | ] 715 | }, 716 | "execution_count": 11, 717 | "metadata": {}, 718 | "output_type": "execute_result" 719 | } 720 | ], 721 | "source": [ 722 | "df_students" 723 | ] 724 | }, 725 | { 726 | "cell_type": "code", 727 | "execution_count": 12, 728 | "metadata": {}, 729 | "outputs": [], 730 | "source": [ 731 | "df_students.index = [1,2,3,4,5,6,7,8,9]" 732 | ] 733 | }, 734 | { 735 | "cell_type": "code", 736 | "execution_count": 13, 737 | "metadata": {}, 738 | "outputs": [ 739 | { 740 | "data": { 741 | "text/html": [ 742 | "
\n", 743 | "\n", 756 | "\n", 757 | " \n", 758 | " \n", 759 | " \n", 760 | " \n", 761 | " \n", 762 | " \n", 763 | " \n", 764 | " \n", 765 | " \n", 766 | " \n", 767 | " \n", 768 | " \n", 769 | " \n", 770 | " \n", 771 | " \n", 772 | " \n", 773 | " \n", 774 | " \n", 775 | " \n", 776 | " \n", 777 | " \n", 778 | " \n", 779 | " \n", 780 | " \n", 781 | " \n", 782 | " \n", 783 | " \n", 784 | " \n", 785 | " \n", 786 | " \n", 787 | " \n", 788 | " \n", 789 | " \n", 790 | " \n", 791 | " \n", 792 | " \n", 793 | " \n", 794 | " \n", 795 | " \n", 796 | " \n", 797 | " \n", 798 | " \n", 799 | " \n", 800 | " \n", 801 | " \n", 802 | " \n", 803 | " \n", 804 | " \n", 805 | " \n", 806 | " \n", 807 | " \n", 808 | " \n", 809 | " \n", 810 | " \n", 811 | " \n", 812 | " \n", 813 | " \n", 814 | " \n", 815 | " \n", 816 | " \n", 817 | " \n", 818 | " \n", 819 | " \n", 820 | " \n", 821 | " \n", 822 | " \n", 823 | " \n", 824 | " \n", 825 | " \n", 826 | " \n", 827 | " \n", 828 | " \n", 829 | " \n", 830 | " \n", 831 | " \n", 832 | " \n", 833 | " \n", 834 | " \n", 835 | " \n", 836 | " \n", 837 | " \n", 838 | " \n", 839 | " \n", 840 | " \n", 841 | " \n", 842 | " \n", 843 | " \n", 844 | " \n", 845 | " \n", 846 | " \n", 847 | " \n", 848 | " \n", 849 | " \n", 850 | " \n", 851 | " \n", 852 | " \n", 853 | " \n", 854 | " \n", 855 | " \n", 856 | " \n", 857 | " \n", 858 | " \n", 859 | " \n", 860 | " \n", 861 | "
FIRST_NAMELAST_NAMEYEARHOME_STATEAGECALC_101_FINALENGLISH_101_FINAL_SCORE
1DanielSmith1NY1890.080.0
2BenLeibstrom1NY1980.0NaN
3KavitaKanabar1PA19NaNNaN
4LindaThiel4CA2260.040.0
5OmarReichel2OK2170.050.0
6JaneOConner2HI19NaNNaN
7FeliciaRao3NY20NaNNaN
8RachelCrock1FL17NaN60.0
9BobMcDonald1FL1898.065.0
\n", 862 | "
" 863 | ], 864 | "text/plain": [ 865 | " FIRST_NAME LAST_NAME YEAR HOME_STATE AGE CALC_101_FINAL \\\n", 866 | "1 Daniel Smith 1 NY 18 90.0 \n", 867 | "2 Ben Leibstrom 1 NY 19 80.0 \n", 868 | "3 Kavita Kanabar 1 PA 19 NaN \n", 869 | "4 Linda Thiel 4 CA 22 60.0 \n", 870 | "5 Omar Reichel 2 OK 21 70.0 \n", 871 | "6 Jane OConner 2 HI 19 NaN \n", 872 | "7 Felicia Rao 3 NY 20 NaN \n", 873 | "8 Rachel Crock 1 FL 17 NaN \n", 874 | "9 Bob McDonald 1 FL 18 98.0 \n", 875 | "\n", 876 | " ENGLISH_101_FINAL_SCORE \n", 877 | "1 80.0 \n", 878 | "2 NaN \n", 879 | "3 NaN \n", 880 | "4 40.0 \n", 881 | "5 50.0 \n", 882 | "6 NaN \n", 883 | "7 NaN \n", 884 | "8 60.0 \n", 885 | "9 65.0 " 886 | ] 887 | }, 888 | "execution_count": 13, 889 | "metadata": {}, 890 | "output_type": "execute_result" 891 | } 892 | ], 893 | "source": [ 894 | "df_students" 895 | ] 896 | }, 897 | { 898 | "cell_type": "code", 899 | "execution_count": 14, 900 | "metadata": {}, 901 | "outputs": [ 902 | { 903 | "data": { 904 | "text/html": [ 905 | "
\n", 906 | "\n", 919 | "\n", 920 | " \n", 921 | " \n", 922 | " \n", 923 | " \n", 924 | " \n", 925 | " \n", 926 | " \n", 927 | " \n", 928 | " \n", 929 | " \n", 930 | " \n", 931 | " \n", 932 | " \n", 933 | " \n", 934 | " \n", 935 | " \n", 936 | " \n", 937 | " \n", 938 | " \n", 939 | " \n", 940 | " \n", 941 | " \n", 942 | " \n", 943 | " \n", 944 | " \n", 945 | " \n", 946 | " \n", 947 | " \n", 948 | " \n", 949 | " \n", 950 | " \n", 951 | " \n", 952 | " \n", 953 | " \n", 954 | " \n", 955 | " \n", 956 | " \n", 957 | " \n", 958 | " \n", 959 | " \n", 960 | " \n", 961 | " \n", 962 | " \n", 963 | " \n", 964 | " \n", 965 | " \n", 966 | " \n", 967 | " \n", 968 | " \n", 969 | " \n", 970 | " \n", 971 | " \n", 972 | " \n", 973 | " \n", 974 | " \n", 975 | " \n", 976 | " \n", 977 | " \n", 978 | " \n", 979 | " \n", 980 | " \n", 981 | " \n", 982 | " \n", 983 | " \n", 984 | " \n", 985 | " \n", 986 | " \n", 987 | " \n", 988 | " \n", 989 | " \n", 990 | " \n", 991 | " \n", 992 | " \n", 993 | " \n", 994 | " \n", 995 | " \n", 996 | " \n", 997 | " \n", 998 | " \n", 999 | " \n", 1000 | " \n", 1001 | " \n", 1002 | " \n", 1003 | " \n", 1004 | " \n", 1005 | " \n", 1006 | " \n", 1007 | " \n", 1008 | " \n", 1009 | " \n", 1010 | " \n", 1011 | " \n", 1012 | " \n", 1013 | " \n", 1014 | " \n", 1015 | " \n", 1016 | " \n", 1017 | " \n", 1018 | " \n", 1019 | " \n", 1020 | " \n", 1021 | " \n", 1022 | " \n", 1023 | " \n", 1024 | "
FIRST_NAMELAST_NAMEYEARHOME_STATEAGECALC_101_FINALENGLISH_101_FINAL
1DanielSmith1NY1890.080.0
2BenLeibstrom1NY1980.0NaN
3KavitaKanabar1PA19NaNNaN
4LindaThiel4CA2260.040.0
5OmarReichel2OK2170.050.0
6JaneOConner2HI19NaNNaN
7FeliciaRao3NY20NaNNaN
8RachelCrock1FL17NaN60.0
9BobMcDonald1FL1898.065.0
\n", 1025 | "
" 1026 | ], 1027 | "text/plain": [ 1028 | " FIRST_NAME LAST_NAME YEAR HOME_STATE AGE CALC_101_FINAL \\\n", 1029 | "1 Daniel Smith 1 NY 18 90.0 \n", 1030 | "2 Ben Leibstrom 1 NY 19 80.0 \n", 1031 | "3 Kavita Kanabar 1 PA 19 NaN \n", 1032 | "4 Linda Thiel 4 CA 22 60.0 \n", 1033 | "5 Omar Reichel 2 OK 21 70.0 \n", 1034 | "6 Jane OConner 2 HI 19 NaN \n", 1035 | "7 Felicia Rao 3 NY 20 NaN \n", 1036 | "8 Rachel Crock 1 FL 17 NaN \n", 1037 | "9 Bob McDonald 1 FL 18 98.0 \n", 1038 | "\n", 1039 | " ENGLISH_101_FINAL \n", 1040 | "1 80.0 \n", 1041 | "2 NaN \n", 1042 | "3 NaN \n", 1043 | "4 40.0 \n", 1044 | "5 50.0 \n", 1045 | "6 NaN \n", 1046 | "7 NaN \n", 1047 | "8 60.0 \n", 1048 | "9 65.0 " 1049 | ] 1050 | }, 1051 | "execution_count": 14, 1052 | "metadata": {}, 1053 | "output_type": "execute_result" 1054 | } 1055 | ], 1056 | "source": [ 1057 | "df_students.rename(columns={'ENGLISH_101_FINAL_SCORE'\n", 1058 | " :'ENGLISH_101_FINAL'})" 1059 | ] 1060 | }, 1061 | { 1062 | "cell_type": "code", 1063 | "execution_count": 15, 1064 | "metadata": {}, 1065 | "outputs": [ 1066 | { 1067 | "data": { 1068 | "text/html": [ 1069 | "
\n", 1070 | "\n", 1083 | "\n", 1084 | " \n", 1085 | " \n", 1086 | " \n", 1087 | " \n", 1088 | " \n", 1089 | " \n", 1090 | " \n", 1091 | " \n", 1092 | " \n", 1093 | " \n", 1094 | " \n", 1095 | " \n", 1096 | " \n", 1097 | " \n", 1098 | " \n", 1099 | " \n", 1100 | " \n", 1101 | " \n", 1102 | " \n", 1103 | " \n", 1104 | " \n", 1105 | " \n", 1106 | " \n", 1107 | " \n", 1108 | " \n", 1109 | " \n", 1110 | " \n", 1111 | " \n", 1112 | " \n", 1113 | " \n", 1114 | " \n", 1115 | " \n", 1116 | " \n", 1117 | " \n", 1118 | " \n", 1119 | " \n", 1120 | " \n", 1121 | " \n", 1122 | " \n", 1123 | " \n", 1124 | " \n", 1125 | " \n", 1126 | " \n", 1127 | " \n", 1128 | " \n", 1129 | " \n", 1130 | " \n", 1131 | " \n", 1132 | " \n", 1133 | " \n", 1134 | " \n", 1135 | " \n", 1136 | " \n", 1137 | " \n", 1138 | " \n", 1139 | " \n", 1140 | " \n", 1141 | " \n", 1142 | " \n", 1143 | " \n", 1144 | " \n", 1145 | " \n", 1146 | " \n", 1147 | " \n", 1148 | " \n", 1149 | " \n", 1150 | " \n", 1151 | " \n", 1152 | " \n", 1153 | " \n", 1154 | " \n", 1155 | " \n", 1156 | " \n", 1157 | " \n", 1158 | " \n", 1159 | " \n", 1160 | " \n", 1161 | " \n", 1162 | " \n", 1163 | " \n", 1164 | " \n", 1165 | " \n", 1166 | " \n", 1167 | " \n", 1168 | " \n", 1169 | " \n", 1170 | " \n", 1171 | " \n", 1172 | " \n", 1173 | " \n", 1174 | " \n", 1175 | " \n", 1176 | " \n", 1177 | " \n", 1178 | " \n", 1179 | " \n", 1180 | " \n", 1181 | " \n", 1182 | " \n", 1183 | " \n", 1184 | " \n", 1185 | " \n", 1186 | " \n", 1187 | " \n", 1188 | "
FIRST_NAMELAST_NAMEYEARHOME_STATEAGECALC_101_FINALENGLISH_101_FINAL_SCORE
1DanielSmith1NY1890.080.0
2BenLeibstrom1NY1980.0NaN
3KavitaKanabar1PA19NaNNaN
4LindaThiel4CA2260.040.0
5OmarReichel2OK2170.050.0
6JaneOConner2HI19NaNNaN
7FeliciaRao3NY20NaNNaN
8RachelCrock1FL17NaN60.0
9BobMcDonald1FL1898.065.0
\n", 1189 | "
" 1190 | ], 1191 | "text/plain": [ 1192 | " FIRST_NAME LAST_NAME YEAR HOME_STATE AGE CALC_101_FINAL \\\n", 1193 | "1 Daniel Smith 1 NY 18 90.0 \n", 1194 | "2 Ben Leibstrom 1 NY 19 80.0 \n", 1195 | "3 Kavita Kanabar 1 PA 19 NaN \n", 1196 | "4 Linda Thiel 4 CA 22 60.0 \n", 1197 | "5 Omar Reichel 2 OK 21 70.0 \n", 1198 | "6 Jane OConner 2 HI 19 NaN \n", 1199 | "7 Felicia Rao 3 NY 20 NaN \n", 1200 | "8 Rachel Crock 1 FL 17 NaN \n", 1201 | "9 Bob McDonald 1 FL 18 98.0 \n", 1202 | "\n", 1203 | " ENGLISH_101_FINAL_SCORE \n", 1204 | "1 80.0 \n", 1205 | "2 NaN \n", 1206 | "3 NaN \n", 1207 | "4 40.0 \n", 1208 | "5 50.0 \n", 1209 | "6 NaN \n", 1210 | "7 NaN \n", 1211 | "8 60.0 \n", 1212 | "9 65.0 " 1213 | ] 1214 | }, 1215 | "execution_count": 15, 1216 | "metadata": {}, 1217 | "output_type": "execute_result" 1218 | } 1219 | ], 1220 | "source": [ 1221 | "df_students" 1222 | ] 1223 | }, 1224 | { 1225 | "cell_type": "code", 1226 | "execution_count": 16, 1227 | "metadata": {}, 1228 | "outputs": [ 1229 | { 1230 | "data": { 1231 | "text/plain": [ 1232 | "'DANIEL'" 1233 | ] 1234 | }, 1235 | "execution_count": 16, 1236 | "metadata": {}, 1237 | "output_type": "execute_result" 1238 | } 1239 | ], 1240 | "source": [ 1241 | "name = 'Daniel'\n", 1242 | "name.upper()" 1243 | ] 1244 | }, 1245 | { 1246 | "cell_type": "code", 1247 | "execution_count": 17, 1248 | "metadata": {}, 1249 | "outputs": [ 1250 | { 1251 | "data": { 1252 | "text/plain": [ 1253 | "'Daniel'" 1254 | ] 1255 | }, 1256 | "execution_count": 17, 1257 | "metadata": {}, 1258 | "output_type": "execute_result" 1259 | } 1260 | ], 1261 | "source": [ 1262 | "name" 1263 | ] 1264 | }, 1265 | { 1266 | "cell_type": "code", 1267 | "execution_count": 18, 1268 | "metadata": {}, 1269 | "outputs": [], 1270 | "source": [ 1271 | "df_students = (\n", 1272 | " df_students.rename(columns={'ENGLISH_101_FINAL_SCORE'\n", 1273 | " :'ENGLISH_101_FINAL'}) )" 1274 | ] 1275 | }, 1276 | { 1277 | "cell_type": "code", 1278 | "execution_count": 19, 1279 | "metadata": {}, 1280 | "outputs": [], 1281 | "source": [ 1282 | "df_students = df_students.reset_index(drop=True)" 1283 | ] 1284 | }, 1285 | { 1286 | "cell_type": "markdown", 1287 | "metadata": {}, 1288 | "source": [ 1289 | "### Section 5.5.4" 1290 | ] 1291 | }, 1292 | { 1293 | "cell_type": "code", 1294 | "execution_count": 20, 1295 | "metadata": {}, 1296 | "outputs": [ 1297 | { 1298 | "data": { 1299 | "text/html": [ 1300 | "
\n", 1301 | "\n", 1314 | "\n", 1315 | " \n", 1316 | " \n", 1317 | " \n", 1318 | " \n", 1319 | " \n", 1320 | " \n", 1321 | " \n", 1322 | " \n", 1323 | " \n", 1324 | " \n", 1325 | " \n", 1326 | " \n", 1327 | " \n", 1328 | " \n", 1329 | " \n", 1330 | " \n", 1331 | " \n", 1332 | " \n", 1333 | " \n", 1334 | " \n", 1335 | " \n", 1336 | " \n", 1337 | " \n", 1338 | " \n", 1339 | " \n", 1340 | " \n", 1341 | " \n", 1342 | " \n", 1343 | " \n", 1344 | " \n", 1345 | " \n", 1346 | " \n", 1347 | " \n", 1348 | " \n", 1349 | " \n", 1350 | " \n", 1351 | " \n", 1352 | " \n", 1353 | " \n", 1354 | " \n", 1355 | " \n", 1356 | " \n", 1357 | " \n", 1358 | " \n", 1359 | " \n", 1360 | " \n", 1361 | " \n", 1362 | " \n", 1363 | " \n", 1364 | " \n", 1365 | " \n", 1366 | " \n", 1367 | " \n", 1368 | " \n", 1369 | " \n", 1370 | " \n", 1371 | " \n", 1372 | " \n", 1373 | " \n", 1374 | " \n", 1375 | " \n", 1376 | " \n", 1377 | " \n", 1378 | " \n", 1379 | "
FIRST_NAMELAST_NAMEYEARHOME_STATEAGECALC_101_FINALENGLISH_101_FINAL
0DanielSmith1NY1890.080.0
1BenLeibstrom1NY1980.0NaN
2KavitaKanabar1PA19NaNNaN
3LindaThiel4CA2260.040.0
4OmarReichel2OK2170.050.0
\n", 1380 | "
" 1381 | ], 1382 | "text/plain": [ 1383 | " FIRST_NAME LAST_NAME YEAR HOME_STATE AGE CALC_101_FINAL \\\n", 1384 | "0 Daniel Smith 1 NY 18 90.0 \n", 1385 | "1 Ben Leibstrom 1 NY 19 80.0 \n", 1386 | "2 Kavita Kanabar 1 PA 19 NaN \n", 1387 | "3 Linda Thiel 4 CA 22 60.0 \n", 1388 | "4 Omar Reichel 2 OK 21 70.0 \n", 1389 | "\n", 1390 | " ENGLISH_101_FINAL \n", 1391 | "0 80.0 \n", 1392 | "1 NaN \n", 1393 | "2 NaN \n", 1394 | "3 40.0 \n", 1395 | "4 50.0 " 1396 | ] 1397 | }, 1398 | "execution_count": 20, 1399 | "metadata": {}, 1400 | "output_type": "execute_result" 1401 | } 1402 | ], 1403 | "source": [ 1404 | "df_students.head()" 1405 | ] 1406 | }, 1407 | { 1408 | "cell_type": "code", 1409 | "execution_count": 21, 1410 | "metadata": {}, 1411 | "outputs": [ 1412 | { 1413 | "data": { 1414 | "text/plain": [ 1415 | "(9, 7)" 1416 | ] 1417 | }, 1418 | "execution_count": 21, 1419 | "metadata": {}, 1420 | "output_type": "execute_result" 1421 | } 1422 | ], 1423 | "source": [ 1424 | "df_students.shape" 1425 | ] 1426 | }, 1427 | { 1428 | "cell_type": "code", 1429 | "execution_count": 22, 1430 | "metadata": {}, 1431 | "outputs": [ 1432 | { 1433 | "ename": "TypeError", 1434 | "evalue": "'Series' object is not callable", 1435 | "output_type": "error", 1436 | "traceback": [ 1437 | "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", 1438 | "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", 1439 | "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mdf_students\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mFIRST_NAME\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", 1440 | "\u001b[1;31mTypeError\u001b[0m: 'Series' object is not callable" 1441 | ] 1442 | } 1443 | ], 1444 | "source": [ 1445 | "df_students.FIRST_NAME()" 1446 | ] 1447 | }, 1448 | { 1449 | "cell_type": "code", 1450 | "execution_count": 23, 1451 | "metadata": {}, 1452 | "outputs": [ 1453 | { 1454 | "ename": "TypeError", 1455 | "evalue": "'tuple' object is not callable", 1456 | "output_type": "error", 1457 | "traceback": [ 1458 | "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", 1459 | "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", 1460 | "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mdf_students\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", 1461 | "\u001b[1;31mTypeError\u001b[0m: 'tuple' object is not callable" 1462 | ] 1463 | } 1464 | ], 1465 | "source": [ 1466 | "df_students.shape()" 1467 | ] 1468 | }, 1469 | { 1470 | "cell_type": "code", 1471 | "execution_count": 24, 1472 | "metadata": {}, 1473 | "outputs": [ 1474 | { 1475 | "data": { 1476 | "text/plain": [ 1477 | "" 1498 | ] 1499 | }, 1500 | "execution_count": 24, 1501 | "metadata": {}, 1502 | "output_type": "execute_result" 1503 | } 1504 | ], 1505 | "source": [ 1506 | "df_students.reset_index" 1507 | ] 1508 | }, 1509 | { 1510 | "cell_type": "code", 1511 | "execution_count": 25, 1512 | "metadata": {}, 1513 | "outputs": [ 1514 | { 1515 | "data": { 1516 | "text/plain": [ 1517 | "0 Daniel\n", 1518 | "1 Ben\n", 1519 | "2 Kavita\n", 1520 | "3 Linda\n", 1521 | "4 Omar\n", 1522 | "5 Jane\n", 1523 | "6 Felicia\n", 1524 | "7 Rachel\n", 1525 | "8 Bob\n", 1526 | "Name: FIRST_NAME, dtype: object" 1527 | ] 1528 | }, 1529 | "execution_count": 25, 1530 | "metadata": {}, 1531 | "output_type": "execute_result" 1532 | } 1533 | ], 1534 | "source": [ 1535 | "df_students.reset_index().FIRST_NAME" 1536 | ] 1537 | }, 1538 | { 1539 | "cell_type": "code", 1540 | "execution_count": 26, 1541 | "metadata": {}, 1542 | "outputs": [ 1543 | { 1544 | "ename": "AttributeError", 1545 | "evalue": "'function' object has no attribute 'FIRST_NAME'", 1546 | "output_type": "error", 1547 | "traceback": [ 1548 | "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", 1549 | "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", 1550 | "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mdf_students\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mreset_index\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mFIRST_NAME\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", 1551 | "\u001b[1;31mAttributeError\u001b[0m: 'function' object has no attribute 'FIRST_NAME'" 1552 | ] 1553 | } 1554 | ], 1555 | "source": [ 1556 | "df_students.reset_index.FIRST_NAME" 1557 | ] 1558 | }, 1559 | { 1560 | "cell_type": "markdown", 1561 | "metadata": {}, 1562 | "source": [ 1563 | "### Section 5.5.5" 1564 | ] 1565 | }, 1566 | { 1567 | "cell_type": "code", 1568 | "execution_count": 27, 1569 | "metadata": {}, 1570 | "outputs": [], 1571 | "source": [ 1572 | "df_surfboard = 1" 1573 | ] 1574 | }, 1575 | { 1576 | "cell_type": "code", 1577 | "execution_count": 28, 1578 | "metadata": {}, 1579 | "outputs": [], 1580 | "source": [ 1581 | "def add_numbers(a, b):\n", 1582 | " return a+b" 1583 | ] 1584 | }, 1585 | { 1586 | "cell_type": "code", 1587 | "execution_count": 29, 1588 | "metadata": {}, 1589 | "outputs": [], 1590 | "source": [ 1591 | "def add_numbers(a, b):\n", 1592 | " '''\n", 1593 | " This function takes two numbers, a and b, and returns\n", 1594 | " the sum\n", 1595 | " '''\n", 1596 | " return a+b" 1597 | ] 1598 | }, 1599 | { 1600 | "cell_type": "code", 1601 | "execution_count": 30, 1602 | "metadata": {}, 1603 | "outputs": [ 1604 | { 1605 | "data": { 1606 | "text/plain": [ 1607 | "" 1608 | ] 1609 | }, 1610 | "execution_count": 30, 1611 | "metadata": {}, 1612 | "output_type": "execute_result" 1613 | } 1614 | ], 1615 | "source": [ 1616 | "add_numbers" 1617 | ] 1618 | }, 1619 | { 1620 | "cell_type": "markdown", 1621 | "metadata": {}, 1622 | "source": [ 1623 | "## Section 5.6" 1624 | ] 1625 | }, 1626 | { 1627 | "cell_type": "markdown", 1628 | "metadata": {}, 1629 | "source": [ 1630 | "### Section 5.6.1" 1631 | ] 1632 | }, 1633 | { 1634 | "cell_type": "code", 1635 | "execution_count": 32, 1636 | "metadata": {}, 1637 | "outputs": [], 1638 | "source": [ 1639 | "df_students = pd.read_excel('raw data/Students.xlsx')" 1640 | ] 1641 | }, 1642 | { 1643 | "cell_type": "code", 1644 | "execution_count": 33, 1645 | "metadata": {}, 1646 | "outputs": [ 1647 | { 1648 | "data": { 1649 | "text/html": [ 1650 | "
\n", 1651 | "\n", 1664 | "\n", 1665 | " \n", 1666 | " \n", 1667 | " \n", 1668 | " \n", 1669 | " \n", 1670 | " \n", 1671 | " \n", 1672 | " \n", 1673 | " \n", 1674 | " \n", 1675 | " \n", 1676 | " \n", 1677 | " \n", 1678 | " \n", 1679 | " \n", 1680 | " \n", 1681 | " \n", 1682 | " \n", 1683 | " \n", 1684 | " \n", 1685 | " \n", 1686 | " \n", 1687 | " \n", 1688 | " \n", 1689 | " \n", 1690 | " \n", 1691 | " \n", 1692 | " \n", 1693 | " \n", 1694 | " \n", 1695 | " \n", 1696 | " \n", 1697 | " \n", 1698 | " \n", 1699 | " \n", 1700 | " \n", 1701 | " \n", 1702 | " \n", 1703 | " \n", 1704 | " \n", 1705 | " \n", 1706 | " \n", 1707 | " \n", 1708 | " \n", 1709 | " \n", 1710 | " \n", 1711 | "
locationdaynumber of orderspercentage of deliveries
0Bryant Park2018-01-013730.0
1Bryant Park2018-01-027890.0
2Bryant Park2018-01-038180.0
3Bryant Park2018-01-047820.0
4Bryant Park2018-01-057190.0
\n", 1712 | "
" 1713 | ], 1714 | "text/plain": [ 1715 | " location day number of orders percentage of deliveries\n", 1716 | "0 Bryant Park 2018-01-01 373 0.0\n", 1717 | "1 Bryant Park 2018-01-02 789 0.0\n", 1718 | "2 Bryant Park 2018-01-03 818 0.0\n", 1719 | "3 Bryant Park 2018-01-04 782 0.0\n", 1720 | "4 Bryant Park 2018-01-05 719 0.0" 1721 | ] 1722 | }, 1723 | "execution_count": 33, 1724 | "metadata": {}, 1725 | "output_type": "execute_result" 1726 | } 1727 | ], 1728 | "source": [ 1729 | "df_summarized_orders = pd.read_csv(\n", 1730 | " 'raw data/Summarized orders.csv')\n", 1731 | "df_summarized_orders.head()" 1732 | ] 1733 | }, 1734 | { 1735 | "cell_type": "code", 1736 | "execution_count": 34, 1737 | "metadata": {}, 1738 | "outputs": [], 1739 | "source": [ 1740 | "df_summarized_orders.columns = ['RESTAURANT_NAME',\n", 1741 | " 'DATE', 'NUM_ORDERS',\n", 1742 | " 'PERC_DELIVERY']" 1743 | ] 1744 | }, 1745 | { 1746 | "cell_type": "code", 1747 | "execution_count": 35, 1748 | "metadata": {}, 1749 | "outputs": [], 1750 | "source": [ 1751 | "df_items = pd.read_csv('raw data/items.csv')\n", 1752 | "df_restaurants = pd.read_csv('raw data/restaurants.csv')" 1753 | ] 1754 | }, 1755 | { 1756 | "cell_type": "code", 1757 | "execution_count": 36, 1758 | "metadata": {}, 1759 | "outputs": [ 1760 | { 1761 | "data": { 1762 | "text/plain": [ 1763 | "(2387224, 10)" 1764 | ] 1765 | }, 1766 | "execution_count": 36, 1767 | "metadata": {}, 1768 | "output_type": "execute_result" 1769 | } 1770 | ], 1771 | "source": [ 1772 | "df_orders = pd.read_csv('raw data/Simplified orders.zip')\n", 1773 | "df_orders.shape" 1774 | ] 1775 | }, 1776 | { 1777 | "cell_type": "markdown", 1778 | "metadata": {}, 1779 | "source": [ 1780 | "### Section 5.6.2" 1781 | ] 1782 | }, 1783 | { 1784 | "cell_type": "code", 1785 | "execution_count": 37, 1786 | "metadata": {}, 1787 | "outputs": [], 1788 | "source": [ 1789 | "df_summarized_orders.to_csv('Chapter 5/Summarized orders new.csv')" 1790 | ] 1791 | }, 1792 | { 1793 | "cell_type": "code", 1794 | "execution_count": 38, 1795 | "metadata": {}, 1796 | "outputs": [], 1797 | "source": [ 1798 | "df_summarized_orders.to_csv('Chapter 5/Summarized orders new.csv',\n", 1799 | " index=False)" 1800 | ] 1801 | }, 1802 | { 1803 | "cell_type": "code", 1804 | "execution_count": 39, 1805 | "metadata": {}, 1806 | "outputs": [], 1807 | "source": [ 1808 | "df_students.to_pickle('Chapter 5/df_students.pickle')" 1809 | ] 1810 | }, 1811 | { 1812 | "cell_type": "code", 1813 | "execution_count": 40, 1814 | "metadata": {}, 1815 | "outputs": [ 1816 | { 1817 | "data": { 1818 | "text/html": [ 1819 | "
\n", 1820 | "\n", 1833 | "\n", 1834 | " \n", 1835 | " \n", 1836 | " \n", 1837 | " \n", 1838 | " \n", 1839 | " \n", 1840 | " \n", 1841 | " \n", 1842 | " \n", 1843 | " \n", 1844 | " \n", 1845 | " \n", 1846 | " \n", 1847 | " \n", 1848 | " \n", 1849 | " \n", 1850 | " \n", 1851 | " \n", 1852 | " \n", 1853 | " \n", 1854 | " \n", 1855 | " \n", 1856 | " \n", 1857 | " \n", 1858 | " \n", 1859 | " \n", 1860 | " \n", 1861 | " \n", 1862 | " \n", 1863 | " \n", 1864 | " \n", 1865 | " \n", 1866 | " \n", 1867 | " \n", 1868 | " \n", 1869 | " \n", 1870 | " \n", 1871 | " \n", 1872 | " \n", 1873 | " \n", 1874 | " \n", 1875 | " \n", 1876 | " \n", 1877 | " \n", 1878 | " \n", 1879 | " \n", 1880 | " \n", 1881 | " \n", 1882 | " \n", 1883 | " \n", 1884 | " \n", 1885 | " \n", 1886 | " \n", 1887 | " \n", 1888 | " \n", 1889 | " \n", 1890 | " \n", 1891 | " \n", 1892 | " \n", 1893 | " \n", 1894 | " \n", 1895 | " \n", 1896 | " \n", 1897 | " \n", 1898 | " \n", 1899 | " \n", 1900 | " \n", 1901 | " \n", 1902 | " \n", 1903 | " \n", 1904 | " \n", 1905 | " \n", 1906 | " \n", 1907 | " \n", 1908 | " \n", 1909 | " \n", 1910 | " \n", 1911 | " \n", 1912 | " \n", 1913 | " \n", 1914 | " \n", 1915 | " \n", 1916 | " \n", 1917 | " \n", 1918 | " \n", 1919 | " \n", 1920 | " \n", 1921 | " \n", 1922 | " \n", 1923 | " \n", 1924 | " \n", 1925 | " \n", 1926 | " \n", 1927 | " \n", 1928 | " \n", 1929 | " \n", 1930 | " \n", 1931 | " \n", 1932 | " \n", 1933 | " \n", 1934 | " \n", 1935 | " \n", 1936 | " \n", 1937 | " \n", 1938 | "
FIRST_NAMELAST_NAMEYEARHOME_STATEAGECALC_101_FINALENGLISH_101_FINAL
0DanielSmith1NY1890.080.0
1BenLeibstrom1NY1980.0NaN
2KavitaKanabar1PA19NaNNaN
3LindaThiel4CA2260.040.0
4OmarReichel2OK2170.050.0
5JaneOConner2HI19NaNNaN
6FeliciaRao3NY20NaNNaN
7RachelCrock1FL17NaN60.0
8BobMcDonald1FL1898.065.0
\n", 1939 | "
" 1940 | ], 1941 | "text/plain": [ 1942 | " FIRST_NAME LAST_NAME YEAR HOME_STATE AGE CALC_101_FINAL \\\n", 1943 | "0 Daniel Smith 1 NY 18 90.0 \n", 1944 | "1 Ben Leibstrom 1 NY 19 80.0 \n", 1945 | "2 Kavita Kanabar 1 PA 19 NaN \n", 1946 | "3 Linda Thiel 4 CA 22 60.0 \n", 1947 | "4 Omar Reichel 2 OK 21 70.0 \n", 1948 | "5 Jane OConner 2 HI 19 NaN \n", 1949 | "6 Felicia Rao 3 NY 20 NaN \n", 1950 | "7 Rachel Crock 1 FL 17 NaN \n", 1951 | "8 Bob McDonald 1 FL 18 98.0 \n", 1952 | "\n", 1953 | " ENGLISH_101_FINAL \n", 1954 | "0 80.0 \n", 1955 | "1 NaN \n", 1956 | "2 NaN \n", 1957 | "3 40.0 \n", 1958 | "4 50.0 \n", 1959 | "5 NaN \n", 1960 | "6 NaN \n", 1961 | "7 60.0 \n", 1962 | "8 65.0 " 1963 | ] 1964 | }, 1965 | "execution_count": 40, 1966 | "metadata": {}, 1967 | "output_type": "execute_result" 1968 | } 1969 | ], 1970 | "source": [ 1971 | "pd.read_pickle('Chapter 5/df_students.pickle')" 1972 | ] 1973 | }, 1974 | { 1975 | "cell_type": "markdown", 1976 | "metadata": {}, 1977 | "source": [ 1978 | "## Section 5.7" 1979 | ] 1980 | }, 1981 | { 1982 | "cell_type": "code", 1983 | "execution_count": 41, 1984 | "metadata": { 1985 | "scrolled": true 1986 | }, 1987 | "outputs": [ 1988 | { 1989 | "name": "stdout", 1990 | "output_type": "stream", 1991 | "text": [ 1992 | "\n", 1993 | "RangeIndex: 2387224 entries, 0 to 2387223\n", 1994 | "Data columns (total 10 columns):\n", 1995 | "ORDER_ID object\n", 1996 | "DATETIME object\n", 1997 | "RESTAURANT_ID object\n", 1998 | "TYPE object\n", 1999 | "DRINKS float64\n", 2000 | "COOKIES float64\n", 2001 | "MAIN object\n", 2002 | "BASE object\n", 2003 | "SIDE_1 object\n", 2004 | "SIDE_2 object\n", 2005 | "dtypes: float64(2), object(8)\n", 2006 | "memory usage: 182.1+ MB\n" 2007 | ] 2008 | } 2009 | ], 2010 | "source": [ 2011 | "df_orders.info()" 2012 | ] 2013 | }, 2014 | { 2015 | "cell_type": "code", 2016 | "execution_count": 42, 2017 | "metadata": {}, 2018 | "outputs": [], 2019 | "source": [ 2020 | "df_orders.DATETIME = pd.to_datetime(df_orders.DATETIME)" 2021 | ] 2022 | }, 2023 | { 2024 | "cell_type": "code", 2025 | "execution_count": 43, 2026 | "metadata": {}, 2027 | "outputs": [ 2028 | { 2029 | "name": "stdout", 2030 | "output_type": "stream", 2031 | "text": [ 2032 | "\n", 2033 | "RangeIndex: 2387224 entries, 0 to 2387223\n", 2034 | "Data columns (total 10 columns):\n", 2035 | "ORDER_ID object\n", 2036 | "DATETIME datetime64[ns]\n", 2037 | "RESTAURANT_ID object\n", 2038 | "TYPE object\n", 2039 | "DRINKS float64\n", 2040 | "COOKIES float64\n", 2041 | "MAIN object\n", 2042 | "BASE object\n", 2043 | "SIDE_1 object\n", 2044 | "SIDE_2 object\n", 2045 | "dtypes: datetime64[ns](1), float64(2), object(7)\n", 2046 | "memory usage: 182.1+ MB\n" 2047 | ] 2048 | } 2049 | ], 2050 | "source": [ 2051 | "df_orders.info()" 2052 | ] 2053 | }, 2054 | { 2055 | "cell_type": "code", 2056 | "execution_count": 44, 2057 | "metadata": {}, 2058 | "outputs": [ 2059 | { 2060 | "data": { 2061 | "text/html": [ 2062 | "
\n", 2063 | "\n", 2076 | "\n", 2077 | " \n", 2078 | " \n", 2079 | " \n", 2080 | " \n", 2081 | " \n", 2082 | " \n", 2083 | " \n", 2084 | " \n", 2085 | " \n", 2086 | " \n", 2087 | " \n", 2088 | " \n", 2089 | " \n", 2090 | " \n", 2091 | " \n", 2092 | " \n", 2093 | " \n", 2094 | " \n", 2095 | " \n", 2096 | " \n", 2097 | " \n", 2098 | " \n", 2099 | " \n", 2100 | " \n", 2101 | " \n", 2102 | " \n", 2103 | " \n", 2104 | " \n", 2105 | " \n", 2106 | " \n", 2107 | " \n", 2108 | " \n", 2109 | " \n", 2110 | " \n", 2111 | " \n", 2112 | " \n", 2113 | " \n", 2114 | " \n", 2115 | " \n", 2116 | " \n", 2117 | " \n", 2118 | " \n", 2119 | " \n", 2120 | " \n", 2121 | " \n", 2122 | " \n", 2123 | " \n", 2124 | " \n", 2125 | " \n", 2126 | " \n", 2127 | " \n", 2128 | " \n", 2129 | " \n", 2130 | " \n", 2131 | " \n", 2132 | " \n", 2133 | " \n", 2134 | " \n", 2135 | " \n", 2136 | " \n", 2137 | " \n", 2138 | " \n", 2139 | " \n", 2140 | " \n", 2141 | " \n", 2142 | " \n", 2143 | " \n", 2144 | " \n", 2145 | " \n", 2146 | " \n", 2147 | " \n", 2148 | " \n", 2149 | " \n", 2150 | " \n", 2151 | " \n", 2152 | " \n", 2153 | " \n", 2154 | " \n", 2155 | " \n", 2156 | " \n", 2157 | " \n", 2158 | " \n", 2159 | "
ORDER_IDDATETIMERESTAURANT_IDTYPEDRINKSCOOKIESMAINBASESIDE_1SIDE_2
0O18200602018-10-11 17:25:50R10002IN_STORE1.02.0NaNNaNNaNNaN
1O10111122018-05-31 11:35:00R10003IN_STORE0.00.0NaNNaNNaNNaN
2O7528542018-04-21 18:12:57R10001DELIVERY0.02.0I0I7I15I14
3O20768642018-11-17 12:50:52R10005PICKUP1.00.0I0I5I9I12
4O19888982018-11-04 18:37:24R10008IN_STORE0.00.0I1I7I9I9
\n", 2160 | "
" 2161 | ], 2162 | "text/plain": [ 2163 | " ORDER_ID DATETIME RESTAURANT_ID TYPE DRINKS COOKIES MAIN \\\n", 2164 | "0 O1820060 2018-10-11 17:25:50 R10002 IN_STORE 1.0 2.0 NaN \n", 2165 | "1 O1011112 2018-05-31 11:35:00 R10003 IN_STORE 0.0 0.0 NaN \n", 2166 | "2 O752854 2018-04-21 18:12:57 R10001 DELIVERY 0.0 2.0 I0 \n", 2167 | "3 O2076864 2018-11-17 12:50:52 R10005 PICKUP 1.0 0.0 I0 \n", 2168 | "4 O1988898 2018-11-04 18:37:24 R10008 IN_STORE 0.0 0.0 I1 \n", 2169 | "\n", 2170 | " BASE SIDE_1 SIDE_2 \n", 2171 | "0 NaN NaN NaN \n", 2172 | "1 NaN NaN NaN \n", 2173 | "2 I7 I15 I14 \n", 2174 | "3 I5 I9 I12 \n", 2175 | "4 I7 I9 I9 " 2176 | ] 2177 | }, 2178 | "execution_count": 44, 2179 | "metadata": {}, 2180 | "output_type": "execute_result" 2181 | } 2182 | ], 2183 | "source": [ 2184 | "df_orders.head()" 2185 | ] 2186 | }, 2187 | { 2188 | "cell_type": "code", 2189 | "execution_count": 45, 2190 | "metadata": {}, 2191 | "outputs": [ 2192 | { 2193 | "data": { 2194 | "text/plain": [ 2195 | "0 Thursday\n", 2196 | "1 Thursday\n", 2197 | "2 Saturday\n", 2198 | "3 Saturday\n", 2199 | "4 Sunday\n", 2200 | "Name: DATETIME, dtype: object" 2201 | ] 2202 | }, 2203 | "execution_count": 45, 2204 | "metadata": {}, 2205 | "output_type": "execute_result" 2206 | } 2207 | ], 2208 | "source": [ 2209 | "df_orders.DATETIME.dt.day_name().head()" 2210 | ] 2211 | }, 2212 | { 2213 | "cell_type": "code", 2214 | "execution_count": 46, 2215 | "metadata": {}, 2216 | "outputs": [ 2217 | { 2218 | "data": { 2219 | "text/html": [ 2220 | "
\n", 2221 | "\n", 2234 | "\n", 2235 | " \n", 2236 | " \n", 2237 | " \n", 2238 | " \n", 2239 | " \n", 2240 | " \n", 2241 | " \n", 2242 | " \n", 2243 | " \n", 2244 | " \n", 2245 | " \n", 2246 | " \n", 2247 | " \n", 2248 | " \n", 2249 | " \n", 2250 | " \n", 2251 | " \n", 2252 | " \n", 2253 | " \n", 2254 | " \n", 2255 | " \n", 2256 | " \n", 2257 | " \n", 2258 | " \n", 2259 | " \n", 2260 | " \n", 2261 | " \n", 2262 | " \n", 2263 | " \n", 2264 | " \n", 2265 | " \n", 2266 | " \n", 2267 | " \n", 2268 | " \n", 2269 | " \n", 2270 | " \n", 2271 | " \n", 2272 | " \n", 2273 | " \n", 2274 | " \n", 2275 | " \n", 2276 | " \n", 2277 | " \n", 2278 | " \n", 2279 | " \n", 2280 | " \n", 2281 | "
RESTAURANT_NAMEDATENUM_ORDERSPERC_DELIVERY
0Bryant Park2018-01-013730.0
1Bryant Park2018-01-027890.0
2Bryant Park2018-01-038180.0
3Bryant Park2018-01-047820.0
4Bryant Park2018-01-057190.0
\n", 2282 | "
" 2283 | ], 2284 | "text/plain": [ 2285 | " RESTAURANT_NAME DATE NUM_ORDERS PERC_DELIVERY\n", 2286 | "0 Bryant Park 2018-01-01 373 0.0\n", 2287 | "1 Bryant Park 2018-01-02 789 0.0\n", 2288 | "2 Bryant Park 2018-01-03 818 0.0\n", 2289 | "3 Bryant Park 2018-01-04 782 0.0\n", 2290 | "4 Bryant Park 2018-01-05 719 0.0" 2291 | ] 2292 | }, 2293 | "execution_count": 46, 2294 | "metadata": {}, 2295 | "output_type": "execute_result" 2296 | } 2297 | ], 2298 | "source": [ 2299 | "df_summarized_orders.head()" 2300 | ] 2301 | }, 2302 | { 2303 | "cell_type": "code", 2304 | "execution_count": 47, 2305 | "metadata": {}, 2306 | "outputs": [ 2307 | { 2308 | "data": { 2309 | "text/html": [ 2310 | "
\n", 2311 | "\n", 2324 | "\n", 2325 | " \n", 2326 | " \n", 2327 | " \n", 2328 | " \n", 2329 | " \n", 2330 | " \n", 2331 | " \n", 2332 | " \n", 2333 | " \n", 2334 | " \n", 2335 | " \n", 2336 | " \n", 2337 | " \n", 2338 | " \n", 2339 | " \n", 2340 | " \n", 2341 | " \n", 2342 | " \n", 2343 | " \n", 2344 | " \n", 2345 | " \n", 2346 | " \n", 2347 | " \n", 2348 | " \n", 2349 | " \n", 2350 | " \n", 2351 | " \n", 2352 | " \n", 2353 | " \n", 2354 | " \n", 2355 | " \n", 2356 | " \n", 2357 | " \n", 2358 | " \n", 2359 | " \n", 2360 | " \n", 2361 | " \n", 2362 | " \n", 2363 | " \n", 2364 | " \n", 2365 | " \n", 2366 | " \n", 2367 | " \n", 2368 | " \n", 2369 | " \n", 2370 | " \n", 2371 | "
RESTAURANT_NAMEDATENUM_ORDERSPERC_DELIVERY
0Bryant Park2018-01-013730.0
1Bryant Park2018-01-027890.0
2Bryant Park2018-01-038180.0
3Bryant Park2018-01-047820.0
4Bryant Park2018-01-057190.0
\n", 2372 | "
" 2373 | ], 2374 | "text/plain": [ 2375 | " RESTAURANT_NAME DATE NUM_ORDERS PERC_DELIVERY\n", 2376 | "0 Bryant Park 2018-01-01 373 0.0\n", 2377 | "1 Bryant Park 2018-01-02 789 0.0\n", 2378 | "2 Bryant Park 2018-01-03 818 0.0\n", 2379 | "3 Bryant Park 2018-01-04 782 0.0\n", 2380 | "4 Bryant Park 2018-01-05 719 0.0" 2381 | ] 2382 | }, 2383 | "execution_count": 47, 2384 | "metadata": {}, 2385 | "output_type": "execute_result" 2386 | } 2387 | ], 2388 | "source": [ 2389 | "df_summarized_orders.DATE = ( \n", 2390 | " pd.to_datetime(df_summarized_orders.DATE) )\n", 2391 | "df_summarized_orders.head()" 2392 | ] 2393 | }, 2394 | { 2395 | "cell_type": "markdown", 2396 | "metadata": {}, 2397 | "source": [ 2398 | "## Section 5.8" 2399 | ] 2400 | }, 2401 | { 2402 | "cell_type": "code", 2403 | "execution_count": 48, 2404 | "metadata": {}, 2405 | "outputs": [], 2406 | "source": [ 2407 | "df_students.to_pickle('Chapter 5/students.pickle')\n", 2408 | "df_orders.to_pickle('Chapter 5/orders.pickle')\n", 2409 | "df_summarized_orders.to_pickle( \n", 2410 | " 'Chapter 5/summarized_orders.pickle')\n", 2411 | "df_items.to_pickle('Chapter 5/items.pickle')\n", 2412 | "df_restaurants.to_pickle('Chapter 5/restaurants.pickle')" 2413 | ] 2414 | } 2415 | ], 2416 | "metadata": { 2417 | "kernelspec": { 2418 | "display_name": "Python 3", 2419 | "language": "python", 2420 | "name": "python3" 2421 | }, 2422 | "language_info": { 2423 | "codemirror_mode": { 2424 | "name": "ipython", 2425 | "version": 3 2426 | }, 2427 | "file_extension": ".py", 2428 | "mimetype": "text/x-python", 2429 | "name": "python", 2430 | "nbconvert_exporter": "python", 2431 | "pygments_lexer": "ipython3", 2432 | "version": "3.7.2" 2433 | } 2434 | }, 2435 | "nbformat": 4, 2436 | "nbformat_minor": 2 2437 | } 2438 | -------------------------------------------------------------------------------- /Part 2/Chapter 5/Summarized orders new.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:03fba6450cd743f39c6004949ebd69ef706f286eeb511b17a04a0f2ba9af4151 3 | size 127437 4 | -------------------------------------------------------------------------------- /Part 2/Chapter 5/df_students.pickle: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:66f72ba8d54fa5b7c7f57f392455bc1cfa3d3054915e1815de0afe43509d8fc0 3 | size 1539 4 | -------------------------------------------------------------------------------- /Part 2/Chapter 5/items.pickle: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:41e75b17d3a88d3d96f475352ba4b9cc1bfd0212232e68cf2e87e546c8c358ed 3 | size 1747 4 | -------------------------------------------------------------------------------- /Part 2/Chapter 5/orders.pickle: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:5ff2238af862580b8bc694c978c74eae66d48bc5961f05b18d0aedc759e4210a 3 | size 155894200 4 | -------------------------------------------------------------------------------- /Part 2/Chapter 5/restaurants.pickle: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:bd8fd653da390f59415ede72c8e69cbf6eec869b936b8ee52244efd4dbab1e3b 3 | size 1715 4 | -------------------------------------------------------------------------------- /Part 2/Chapter 5/students.pickle: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:66f72ba8d54fa5b7c7f57f392455bc1cfa3d3054915e1815de0afe43509d8fc0 3 | size 1539 4 | -------------------------------------------------------------------------------- /Part 2/Chapter 5/summarized_orders.pickle: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:27de33adf9f60cb77b4dfafda8c39a522137e09c8215781f0d1991e6c7ba76ea 3 | size 74201 4 | -------------------------------------------------------------------------------- /Part 2/Chapter 7.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Chapter 7" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": {}, 13 | "source": [ 14 | "## Section 7.2" 15 | ] 16 | }, 17 | { 18 | "cell_type": "code", 19 | "execution_count": 1, 20 | "metadata": {}, 21 | "outputs": [], 22 | "source": [ 23 | "import pandas as pd\n", 24 | "import matplotlib.pyplot as plt" 25 | ] 26 | }, 27 | { 28 | "cell_type": "code", 29 | "execution_count": 2, 30 | "metadata": {}, 31 | "outputs": [], 32 | "source": [ 33 | "df_orders = pd.read_pickle('Chapter 5/orders.pickle')\n", 34 | "df_items = pd.read_pickle('Chapter 5/items.pickle')\n", 35 | "df_restaurants = ( \n", 36 | " pd.read_pickle('Chapter 5/restaurants.pickle') ) " 37 | ] 38 | }, 39 | { 40 | "cell_type": "markdown", 41 | "metadata": {}, 42 | "source": [ 43 | "## Section 7.4" 44 | ] 45 | }, 46 | { 47 | "cell_type": "code", 48 | "execution_count": 3, 49 | "metadata": {}, 50 | "outputs": [], 51 | "source": [ 52 | "df_full_time = pd.read_excel('raw data/university.xlsx',\n", 53 | " sheet_name='full_time')\n", 54 | "df_part_time = pd.read_excel('raw data/university.xlsx',\n", 55 | " sheet_name='part_time')\n", 56 | "df_grades = pd.read_excel('raw data/university.xlsx',\n", 57 | " sheet_name='grades')" 58 | ] 59 | }, 60 | { 61 | "cell_type": "code", 62 | "execution_count": 4, 63 | "metadata": {}, 64 | "outputs": [ 65 | { 66 | "data": { 67 | "text/html": [ 68 | "
\n", 69 | "\n", 82 | "\n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | "
student_idfirst_namelast_nameadviser
01MelvinWareProf Duncan
12ThomasMooreProf Brown
23JosephPaulProf Alvarez
34SarahCruzProf Duncan
\n", 123 | "
" 124 | ], 125 | "text/plain": [ 126 | " student_id first_name last_name adviser\n", 127 | "0 1 Melvin Ware Prof Duncan\n", 128 | "1 2 Thomas Moore Prof Brown\n", 129 | "2 3 Joseph Paul Prof Alvarez\n", 130 | "3 4 Sarah Cruz Prof Duncan" 131 | ] 132 | }, 133 | "execution_count": 4, 134 | "metadata": {}, 135 | "output_type": "execute_result" 136 | } 137 | ], 138 | "source": [ 139 | "df_full_time" 140 | ] 141 | }, 142 | { 143 | "cell_type": "code", 144 | "execution_count": 5, 145 | "metadata": {}, 146 | "outputs": [ 147 | { 148 | "data": { 149 | "text/html": [ 150 | "
\n", 151 | "\n", 164 | "\n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | "
student_idfirst_namelast_nameadviser
05DavidFreemanProf Duncan
16ElizabethBrownProf Duncan
27AmandaSchultzProf Kennedy
38TannerPerkinsProf Alvarez
49AshleyGonzalesProf Kennedy
510LatonyaPorterProf Alvarez
611JacindaPetersonProf Alvarez
\n", 226 | "
" 227 | ], 228 | "text/plain": [ 229 | " student_id first_name last_name adviser\n", 230 | "0 5 David Freeman Prof Duncan\n", 231 | "1 6 Elizabeth Brown Prof Duncan\n", 232 | "2 7 Amanda Schultz Prof Kennedy\n", 233 | "3 8 Tanner Perkins Prof Alvarez\n", 234 | "4 9 Ashley Gonzales Prof Kennedy\n", 235 | "5 10 Latonya Porter Prof Alvarez\n", 236 | "6 11 Jacinda Peterson Prof Alvarez" 237 | ] 238 | }, 239 | "execution_count": 5, 240 | "metadata": {}, 241 | "output_type": "execute_result" 242 | } 243 | ], 244 | "source": [ 245 | "df_part_time" 246 | ] 247 | }, 248 | { 249 | "cell_type": "code", 250 | "execution_count": 6, 251 | "metadata": {}, 252 | "outputs": [ 253 | { 254 | "data": { 255 | "text/html": [ 256 | "
\n", 257 | "\n", 270 | "\n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | "
student_idfinal_grade
0195
1371
2676
3791
4875
51159
61586
\n", 316 | "
" 317 | ], 318 | "text/plain": [ 319 | " student_id final_grade\n", 320 | "0 1 95\n", 321 | "1 3 71\n", 322 | "2 6 76\n", 323 | "3 7 91\n", 324 | "4 8 75\n", 325 | "5 11 59\n", 326 | "6 15 86" 327 | ] 328 | }, 329 | "execution_count": 6, 330 | "metadata": {}, 331 | "output_type": "execute_result" 332 | } 333 | ], 334 | "source": [ 335 | "df_grades" 336 | ] 337 | }, 338 | { 339 | "cell_type": "markdown", 340 | "metadata": {}, 341 | "source": [ 342 | "## Section 7.5" 343 | ] 344 | }, 345 | { 346 | "cell_type": "markdown", 347 | "metadata": {}, 348 | "source": [ 349 | "### Section 7.5.1" 350 | ] 351 | }, 352 | { 353 | "cell_type": "code", 354 | "execution_count": 7, 355 | "metadata": {}, 356 | "outputs": [ 357 | { 358 | "data": { 359 | "text/html": [ 360 | "
\n", 361 | "\n", 374 | "\n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | " \n", 435 | " \n", 436 | " \n", 437 | " \n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | " \n", 444 | " \n", 445 | " \n", 446 | " \n", 447 | " \n", 448 | " \n", 449 | " \n", 450 | " \n", 451 | " \n", 452 | " \n", 453 | " \n", 454 | " \n", 455 | " \n", 456 | " \n", 457 | " \n", 458 | " \n", 459 | " \n", 460 | " \n", 461 | " \n", 462 | " \n", 463 | "
student_idfirst_namelast_nameadviser
01MelvinWareProf Duncan
12ThomasMooreProf Brown
23JosephPaulProf Alvarez
34SarahCruzProf Duncan
05DavidFreemanProf Duncan
16ElizabethBrownProf Duncan
27AmandaSchultzProf Kennedy
38TannerPerkinsProf Alvarez
49AshleyGonzalesProf Kennedy
510LatonyaPorterProf Alvarez
611JacindaPetersonProf Alvarez
\n", 464 | "
" 465 | ], 466 | "text/plain": [ 467 | " student_id first_name last_name adviser\n", 468 | "0 1 Melvin Ware Prof Duncan\n", 469 | "1 2 Thomas Moore Prof Brown\n", 470 | "2 3 Joseph Paul Prof Alvarez\n", 471 | "3 4 Sarah Cruz Prof Duncan\n", 472 | "0 5 David Freeman Prof Duncan\n", 473 | "1 6 Elizabeth Brown Prof Duncan\n", 474 | "2 7 Amanda Schultz Prof Kennedy\n", 475 | "3 8 Tanner Perkins Prof Alvarez\n", 476 | "4 9 Ashley Gonzales Prof Kennedy\n", 477 | "5 10 Latonya Porter Prof Alvarez\n", 478 | "6 11 Jacinda Peterson Prof Alvarez" 479 | ] 480 | }, 481 | "execution_count": 7, 482 | "metadata": {}, 483 | "output_type": "execute_result" 484 | } 485 | ], 486 | "source": [ 487 | "df_students = pd.concat([df_full_time, df_part_time])\n", 488 | "df_students" 489 | ] 490 | }, 491 | { 492 | "cell_type": "code", 493 | "execution_count": 8, 494 | "metadata": {}, 495 | "outputs": [ 496 | { 497 | "data": { 498 | "text/html": [ 499 | "
\n", 500 | "\n", 513 | "\n", 514 | " \n", 515 | " \n", 516 | " \n", 517 | " \n", 518 | " \n", 519 | " \n", 520 | " \n", 521 | " \n", 522 | " \n", 523 | " \n", 524 | " \n", 525 | " \n", 526 | " \n", 527 | " \n", 528 | " \n", 529 | " \n", 530 | " \n", 531 | " \n", 532 | " \n", 533 | " \n", 534 | " \n", 535 | " \n", 536 | " \n", 537 | " \n", 538 | " \n", 539 | " \n", 540 | " \n", 541 | " \n", 542 | " \n", 543 | " \n", 544 | " \n", 545 | " \n", 546 | " \n", 547 | " \n", 548 | " \n", 549 | " \n", 550 | " \n", 551 | " \n", 552 | " \n", 553 | " \n", 554 | " \n", 555 | " \n", 556 | " \n", 557 | " \n", 558 | " \n", 559 | " \n", 560 | " \n", 561 | " \n", 562 | " \n", 563 | " \n", 564 | " \n", 565 | " \n", 566 | " \n", 567 | " \n", 568 | " \n", 569 | " \n", 570 | " \n", 571 | " \n", 572 | " \n", 573 | " \n", 574 | " \n", 575 | " \n", 576 | " \n", 577 | " \n", 578 | " \n", 579 | " \n", 580 | " \n", 581 | " \n", 582 | " \n", 583 | " \n", 584 | " \n", 585 | " \n", 586 | " \n", 587 | " \n", 588 | " \n", 589 | " \n", 590 | " \n", 591 | " \n", 592 | " \n", 593 | " \n", 594 | " \n", 595 | " \n", 596 | " \n", 597 | " \n", 598 | " \n", 599 | " \n", 600 | " \n", 601 | " \n", 602 | "
student_idfirst_namelast_nameadviser
01MelvinWareProf Duncan
12ThomasMooreProf Brown
23JosephPaulProf Alvarez
34SarahCruzProf Duncan
45DavidFreemanProf Duncan
56ElizabethBrownProf Duncan
67AmandaSchultzProf Kennedy
78TannerPerkinsProf Alvarez
89AshleyGonzalesProf Kennedy
910LatonyaPorterProf Alvarez
1011JacindaPetersonProf Alvarez
\n", 603 | "
" 604 | ], 605 | "text/plain": [ 606 | " student_id first_name last_name adviser\n", 607 | "0 1 Melvin Ware Prof Duncan\n", 608 | "1 2 Thomas Moore Prof Brown\n", 609 | "2 3 Joseph Paul Prof Alvarez\n", 610 | "3 4 Sarah Cruz Prof Duncan\n", 611 | "4 5 David Freeman Prof Duncan\n", 612 | "5 6 Elizabeth Brown Prof Duncan\n", 613 | "6 7 Amanda Schultz Prof Kennedy\n", 614 | "7 8 Tanner Perkins Prof Alvarez\n", 615 | "8 9 Ashley Gonzales Prof Kennedy\n", 616 | "9 10 Latonya Porter Prof Alvarez\n", 617 | "10 11 Jacinda Peterson Prof Alvarez" 618 | ] 619 | }, 620 | "execution_count": 8, 621 | "metadata": {}, 622 | "output_type": "execute_result" 623 | } 624 | ], 625 | "source": [ 626 | "df_students = ( pd.concat([df_full_time, df_part_time])\n", 627 | " .reset_index(drop=True) )\n", 628 | "df_students" 629 | ] 630 | }, 631 | { 632 | "cell_type": "code", 633 | "execution_count": 9, 634 | "metadata": {}, 635 | "outputs": [ 636 | { 637 | "data": { 638 | "text/html": [ 639 | "
\n", 640 | "\n", 653 | "\n", 654 | " \n", 655 | " \n", 656 | " \n", 657 | " \n", 658 | " \n", 659 | " \n", 660 | " \n", 661 | " \n", 662 | " \n", 663 | " \n", 664 | " \n", 665 | " \n", 666 | " \n", 667 | " \n", 668 | " \n", 669 | " \n", 670 | " \n", 671 | " \n", 672 | " \n", 673 | " \n", 674 | " \n", 675 | " \n", 676 | " \n", 677 | " \n", 678 | " \n", 679 | " \n", 680 | " \n", 681 | " \n", 682 | " \n", 683 | " \n", 684 | " \n", 685 | " \n", 686 | " \n", 687 | " \n", 688 | " \n", 689 | " \n", 690 | " \n", 691 | " \n", 692 | " \n", 693 | " \n", 694 | " \n", 695 | " \n", 696 | " \n", 697 | " \n", 698 | " \n", 699 | " \n", 700 | " \n", 701 | " \n", 702 | " \n", 703 | " \n", 704 | " \n", 705 | " \n", 706 | " \n", 707 | " \n", 708 | " \n", 709 | " \n", 710 | " \n", 711 | " \n", 712 | " \n", 713 | " \n", 714 | " \n", 715 | " \n", 716 | " \n", 717 | " \n", 718 | " \n", 719 | " \n", 720 | " \n", 721 | " \n", 722 | " \n", 723 | " \n", 724 | " \n", 725 | " \n", 726 | " \n", 727 | " \n", 728 | " \n", 729 | " \n", 730 | " \n", 731 | " \n", 732 | " \n", 733 | " \n", 734 | " \n", 735 | " \n", 736 | " \n", 737 | " \n", 738 | " \n", 739 | " \n", 740 | " \n", 741 | " \n", 742 | " \n", 743 | " \n", 744 | " \n", 745 | " \n", 746 | " \n", 747 | " \n", 748 | " \n", 749 | " \n", 750 | " \n", 751 | " \n", 752 | " \n", 753 | " \n", 754 | "
student_idfirst_namelast_nameadviserstudent_type
01MelvinWareProf Duncanfull_time
12ThomasMooreProf Brownfull_time
23JosephPaulProf Alvarezfull_time
34SarahCruzProf Duncanfull_time
45DavidFreemanProf Duncanpart_time
56ElizabethBrownProf Duncanpart_time
67AmandaSchultzProf Kennedypart_time
78TannerPerkinsProf Alvarezpart_time
89AshleyGonzalesProf Kennedypart_time
910LatonyaPorterProf Alvarezpart_time
1011JacindaPetersonProf Alvarezpart_time
\n", 755 | "
" 756 | ], 757 | "text/plain": [ 758 | " student_id first_name last_name adviser student_type\n", 759 | "0 1 Melvin Ware Prof Duncan full_time\n", 760 | "1 2 Thomas Moore Prof Brown full_time\n", 761 | "2 3 Joseph Paul Prof Alvarez full_time\n", 762 | "3 4 Sarah Cruz Prof Duncan full_time\n", 763 | "4 5 David Freeman Prof Duncan part_time\n", 764 | "5 6 Elizabeth Brown Prof Duncan part_time\n", 765 | "6 7 Amanda Schultz Prof Kennedy part_time\n", 766 | "7 8 Tanner Perkins Prof Alvarez part_time\n", 767 | "8 9 Ashley Gonzales Prof Kennedy part_time\n", 768 | "9 10 Latonya Porter Prof Alvarez part_time\n", 769 | "10 11 Jacinda Peterson Prof Alvarez part_time" 770 | ] 771 | }, 772 | "execution_count": 9, 773 | "metadata": {}, 774 | "output_type": "execute_result" 775 | } 776 | ], 777 | "source": [ 778 | "df_full_time['student_type'] = 'full_time'\n", 779 | "df_part_time['student_type'] = 'part_time'\n", 780 | "pd.concat([df_full_time, df_part_time]).reset_index(drop=True)" 781 | ] 782 | }, 783 | { 784 | "cell_type": "markdown", 785 | "metadata": {}, 786 | "source": [ 787 | "## Section 7.6" 788 | ] 789 | }, 790 | { 791 | "cell_type": "code", 792 | "execution_count": 10, 793 | "metadata": {}, 794 | "outputs": [ 795 | { 796 | "data": { 797 | "text/html": [ 798 | "
\n", 799 | "\n", 812 | "\n", 813 | " \n", 814 | " \n", 815 | " \n", 816 | " \n", 817 | " \n", 818 | " \n", 819 | " \n", 820 | " \n", 821 | " \n", 822 | " \n", 823 | " \n", 824 | " \n", 825 | " \n", 826 | " \n", 827 | " \n", 828 | " \n", 829 | " \n", 830 | " \n", 831 | " \n", 832 | " \n", 833 | " \n", 834 | " \n", 835 | " \n", 836 | " \n", 837 | " \n", 838 | " \n", 839 | " \n", 840 | " \n", 841 | " \n", 842 | " \n", 843 | " \n", 844 | " \n", 845 | " \n", 846 | " \n", 847 | " \n", 848 | " \n", 849 | " \n", 850 | " \n", 851 | " \n", 852 | " \n", 853 | " \n", 854 | " \n", 855 | " \n", 856 | " \n", 857 | " \n", 858 | " \n", 859 | " \n", 860 | " \n", 861 | " \n", 862 | " \n", 863 | " \n", 864 | " \n", 865 | " \n", 866 | " \n", 867 | " \n", 868 | " \n", 869 | " \n", 870 | " \n", 871 | " \n", 872 | " \n", 873 | "
student_idfirst_namelast_nameadviserfinal_grade
01MelvinWareProf Duncan95
13JosephPaulProf Alvarez71
26ElizabethBrownProf Duncan76
37AmandaSchultzProf Kennedy91
48TannerPerkinsProf Alvarez75
511JacindaPetersonProf Alvarez59
\n", 874 | "
" 875 | ], 876 | "text/plain": [ 877 | " student_id first_name last_name adviser final_grade\n", 878 | "0 1 Melvin Ware Prof Duncan 95\n", 879 | "1 3 Joseph Paul Prof Alvarez 71\n", 880 | "2 6 Elizabeth Brown Prof Duncan 76\n", 881 | "3 7 Amanda Schultz Prof Kennedy 91\n", 882 | "4 8 Tanner Perkins Prof Alvarez 75\n", 883 | "5 11 Jacinda Peterson Prof Alvarez 59" 884 | ] 885 | }, 886 | "execution_count": 10, 887 | "metadata": {}, 888 | "output_type": "execute_result" 889 | } 890 | ], 891 | "source": [ 892 | "pd.merge(df_students,\n", 893 | " df_grades,\n", 894 | " left_on='student_id',\n", 895 | " right_on='student_id',\n", 896 | " how='inner')" 897 | ] 898 | }, 899 | { 900 | "cell_type": "code", 901 | "execution_count": 11, 902 | "metadata": {}, 903 | "outputs": [ 904 | { 905 | "data": { 906 | "text/html": [ 907 | "
\n", 908 | "\n", 921 | "\n", 922 | " \n", 923 | " \n", 924 | " \n", 925 | " \n", 926 | " \n", 927 | " \n", 928 | " \n", 929 | " \n", 930 | " \n", 931 | " \n", 932 | " \n", 933 | " \n", 934 | " \n", 935 | " \n", 936 | " \n", 937 | " \n", 938 | " \n", 939 | " \n", 940 | " \n", 941 | " \n", 942 | " \n", 943 | " \n", 944 | " \n", 945 | " \n", 946 | " \n", 947 | " \n", 948 | " \n", 949 | " \n", 950 | " \n", 951 | " \n", 952 | " \n", 953 | " \n", 954 | " \n", 955 | " \n", 956 | " \n", 957 | " \n", 958 | " \n", 959 | " \n", 960 | " \n", 961 | " \n", 962 | " \n", 963 | " \n", 964 | " \n", 965 | " \n", 966 | " \n", 967 | " \n", 968 | " \n", 969 | " \n", 970 | " \n", 971 | " \n", 972 | " \n", 973 | " \n", 974 | " \n", 975 | " \n", 976 | " \n", 977 | " \n", 978 | " \n", 979 | " \n", 980 | " \n", 981 | " \n", 982 | " \n", 983 | " \n", 984 | " \n", 985 | " \n", 986 | " \n", 987 | " \n", 988 | " \n", 989 | " \n", 990 | " \n", 991 | " \n", 992 | " \n", 993 | " \n", 994 | " \n", 995 | " \n", 996 | " \n", 997 | " \n", 998 | " \n", 999 | " \n", 1000 | " \n", 1001 | " \n", 1002 | " \n", 1003 | " \n", 1004 | " \n", 1005 | " \n", 1006 | " \n", 1007 | " \n", 1008 | " \n", 1009 | " \n", 1010 | "
student_idfinal_gradefirst_namelast_name
0195.0MelvinWare
1371.0JosephPaul
2676.0ElizabethBrown
3791.0AmandaSchultz
4875.0TannerPerkins
51159.0JacindaPeterson
62NaNThomasMoore
74NaNSarahCruz
85NaNDavidFreeman
99NaNAshleyGonzales
1010NaNLatonyaPorter
\n", 1011 | "
" 1012 | ], 1013 | "text/plain": [ 1014 | " student_id final_grade first_name last_name\n", 1015 | "0 1 95.0 Melvin Ware\n", 1016 | "1 3 71.0 Joseph Paul\n", 1017 | "2 6 76.0 Elizabeth Brown\n", 1018 | "3 7 91.0 Amanda Schultz\n", 1019 | "4 8 75.0 Tanner Perkins\n", 1020 | "5 11 59.0 Jacinda Peterson\n", 1021 | "6 2 NaN Thomas Moore\n", 1022 | "7 4 NaN Sarah Cruz\n", 1023 | "8 5 NaN David Freeman\n", 1024 | "9 9 NaN Ashley Gonzales\n", 1025 | "10 10 NaN Latonya Porter" 1026 | ] 1027 | }, 1028 | "execution_count": 11, 1029 | "metadata": {}, 1030 | "output_type": "execute_result" 1031 | } 1032 | ], 1033 | "source": [ 1034 | "pd.merge(df_grades,\n", 1035 | " df_students[['student_id', 'first_name', 'last_name']],\n", 1036 | " left_on='student_id',\n", 1037 | " right_on='student_id',\n", 1038 | " how='right')" 1039 | ] 1040 | }, 1041 | { 1042 | "cell_type": "markdown", 1043 | "metadata": {}, 1044 | "source": [ 1045 | "### Section 7.6.1" 1046 | ] 1047 | }, 1048 | { 1049 | "cell_type": "code", 1050 | "execution_count": 12, 1051 | "metadata": {}, 1052 | "outputs": [ 1053 | { 1054 | "data": { 1055 | "text/html": [ 1056 | "
\n", 1057 | "\n", 1070 | "\n", 1071 | " \n", 1072 | " \n", 1073 | " \n", 1074 | " \n", 1075 | " \n", 1076 | " \n", 1077 | " \n", 1078 | " \n", 1079 | " \n", 1080 | " \n", 1081 | " \n", 1082 | " \n", 1083 | " \n", 1084 | " \n", 1085 | " \n", 1086 | " \n", 1087 | " \n", 1088 | " \n", 1089 | " \n", 1090 | " \n", 1091 | " \n", 1092 | " \n", 1093 | " \n", 1094 | " \n", 1095 | " \n", 1096 | " \n", 1097 | " \n", 1098 | " \n", 1099 | " \n", 1100 | " \n", 1101 | " \n", 1102 | " \n", 1103 | "
final_grade
student_id
195
371
676
791
875
\n", 1104 | "
" 1105 | ], 1106 | "text/plain": [ 1107 | " final_grade\n", 1108 | "student_id \n", 1109 | "1 95\n", 1110 | "3 71\n", 1111 | "6 76\n", 1112 | "7 91\n", 1113 | "8 75" 1114 | ] 1115 | }, 1116 | "execution_count": 12, 1117 | "metadata": {}, 1118 | "output_type": "execute_result" 1119 | } 1120 | ], 1121 | "source": [ 1122 | "df_grades_2 = df_grades.copy().set_index('student_id')\n", 1123 | "df_grades_2.head()" 1124 | ] 1125 | }, 1126 | { 1127 | "cell_type": "code", 1128 | "execution_count": 13, 1129 | "metadata": {}, 1130 | "outputs": [ 1131 | { 1132 | "data": { 1133 | "text/html": [ 1134 | "
\n", 1135 | "\n", 1148 | "\n", 1149 | " \n", 1150 | " \n", 1151 | " \n", 1152 | " \n", 1153 | " \n", 1154 | " \n", 1155 | " \n", 1156 | " \n", 1157 | " \n", 1158 | " \n", 1159 | " \n", 1160 | " \n", 1161 | " \n", 1162 | " \n", 1163 | " \n", 1164 | " \n", 1165 | " \n", 1166 | " \n", 1167 | " \n", 1168 | " \n", 1169 | " \n", 1170 | " \n", 1171 | " \n", 1172 | " \n", 1173 | " \n", 1174 | " \n", 1175 | " \n", 1176 | " \n", 1177 | " \n", 1178 | " \n", 1179 | " \n", 1180 | " \n", 1181 | " \n", 1182 | " \n", 1183 | " \n", 1184 | " \n", 1185 | " \n", 1186 | " \n", 1187 | " \n", 1188 | " \n", 1189 | " \n", 1190 | " \n", 1191 | " \n", 1192 | " \n", 1193 | " \n", 1194 | " \n", 1195 | "
first_namelast_nameadviser
student_id
1MelvinWareProf Duncan
2ThomasMooreProf Brown
3JosephPaulProf Alvarez
4SarahCruzProf Duncan
5DavidFreemanProf Duncan
\n", 1196 | "
" 1197 | ], 1198 | "text/plain": [ 1199 | " first_name last_name adviser\n", 1200 | "student_id \n", 1201 | "1 Melvin Ware Prof Duncan\n", 1202 | "2 Thomas Moore Prof Brown\n", 1203 | "3 Joseph Paul Prof Alvarez\n", 1204 | "4 Sarah Cruz Prof Duncan\n", 1205 | "5 David Freeman Prof Duncan" 1206 | ] 1207 | }, 1208 | "execution_count": 13, 1209 | "metadata": {}, 1210 | "output_type": "execute_result" 1211 | } 1212 | ], 1213 | "source": [ 1214 | "df_students_2 = df_students.copy().set_index('student_id')\n", 1215 | "df_students_2.head()" 1216 | ] 1217 | }, 1218 | { 1219 | "cell_type": "code", 1220 | "execution_count": 14, 1221 | "metadata": {}, 1222 | "outputs": [ 1223 | { 1224 | "data": { 1225 | "text/html": [ 1226 | "
\n", 1227 | "\n", 1240 | "\n", 1241 | " \n", 1242 | " \n", 1243 | " \n", 1244 | " \n", 1245 | " \n", 1246 | " \n", 1247 | " \n", 1248 | " \n", 1249 | " \n", 1250 | " \n", 1251 | " \n", 1252 | " \n", 1253 | " \n", 1254 | " \n", 1255 | " \n", 1256 | " \n", 1257 | " \n", 1258 | " \n", 1259 | " \n", 1260 | " \n", 1261 | " \n", 1262 | " \n", 1263 | " \n", 1264 | " \n", 1265 | " \n", 1266 | " \n", 1267 | " \n", 1268 | " \n", 1269 | " \n", 1270 | " \n", 1271 | " \n", 1272 | " \n", 1273 | " \n", 1274 | " \n", 1275 | " \n", 1276 | " \n", 1277 | " \n", 1278 | " \n", 1279 | " \n", 1280 | " \n", 1281 | " \n", 1282 | " \n", 1283 | " \n", 1284 | " \n", 1285 | " \n", 1286 | " \n", 1287 | " \n", 1288 | " \n", 1289 | " \n", 1290 | " \n", 1291 | " \n", 1292 | " \n", 1293 | " \n", 1294 | " \n", 1295 | " \n", 1296 | " \n", 1297 | " \n", 1298 | " \n", 1299 | " \n", 1300 | " \n", 1301 | " \n", 1302 | " \n", 1303 | " \n", 1304 | " \n", 1305 | " \n", 1306 | " \n", 1307 | " \n", 1308 | " \n", 1309 | " \n", 1310 | " \n", 1311 | " \n", 1312 | " \n", 1313 | " \n", 1314 | " \n", 1315 | " \n", 1316 | " \n", 1317 | " \n", 1318 | " \n", 1319 | " \n", 1320 | " \n", 1321 | " \n", 1322 | " \n", 1323 | " \n", 1324 | " \n", 1325 | " \n", 1326 | " \n", 1327 | " \n", 1328 | " \n", 1329 | " \n", 1330 | " \n", 1331 | " \n", 1332 | " \n", 1333 | " \n", 1334 | " \n", 1335 | " \n", 1336 | "
first_namelast_nameadviserpython_grade
student_id
1MelvinWareProf Duncan95.0
2ThomasMooreProf BrownNaN
3JosephPaulProf Alvarez71.0
4SarahCruzProf DuncanNaN
5DavidFreemanProf DuncanNaN
6ElizabethBrownProf Duncan76.0
7AmandaSchultzProf Kennedy91.0
8TannerPerkinsProf Alvarez75.0
9AshleyGonzalesProf KennedyNaN
10LatonyaPorterProf AlvarezNaN
11JacindaPetersonProf Alvarez59.0
\n", 1337 | "
" 1338 | ], 1339 | "text/plain": [ 1340 | " first_name last_name adviser python_grade\n", 1341 | "student_id \n", 1342 | "1 Melvin Ware Prof Duncan 95.0\n", 1343 | "2 Thomas Moore Prof Brown NaN\n", 1344 | "3 Joseph Paul Prof Alvarez 71.0\n", 1345 | "4 Sarah Cruz Prof Duncan NaN\n", 1346 | "5 David Freeman Prof Duncan NaN\n", 1347 | "6 Elizabeth Brown Prof Duncan 76.0\n", 1348 | "7 Amanda Schultz Prof Kennedy 91.0\n", 1349 | "8 Tanner Perkins Prof Alvarez 75.0\n", 1350 | "9 Ashley Gonzales Prof Kennedy NaN\n", 1351 | "10 Latonya Porter Prof Alvarez NaN\n", 1352 | "11 Jacinda Peterson Prof Alvarez 59.0" 1353 | ] 1354 | }, 1355 | "execution_count": 14, 1356 | "metadata": {}, 1357 | "output_type": "execute_result" 1358 | } 1359 | ], 1360 | "source": [ 1361 | "df_students_2['python_grade'] = df_grades_2.final_grade\n", 1362 | "df_students_2" 1363 | ] 1364 | }, 1365 | { 1366 | "cell_type": "markdown", 1367 | "metadata": {}, 1368 | "source": [ 1369 | "## Section 7.7" 1370 | ] 1371 | }, 1372 | { 1373 | "cell_type": "markdown", 1374 | "metadata": {}, 1375 | "source": [ 1376 | "### Section 7.7.1" 1377 | ] 1378 | }, 1379 | { 1380 | "cell_type": "code", 1381 | "execution_count": 15, 1382 | "metadata": {}, 1383 | "outputs": [ 1384 | { 1385 | "name": "stdout", 1386 | "output_type": "stream", 1387 | "text": [ 1388 | "Warning! df_students is missing some students.\n" 1389 | ] 1390 | }, 1391 | { 1392 | "data": { 1393 | "text/html": [ 1394 | "
\n", 1395 | "\n", 1408 | "\n", 1409 | " \n", 1410 | " \n", 1411 | " \n", 1412 | " \n", 1413 | " \n", 1414 | " \n", 1415 | " \n", 1416 | " \n", 1417 | " \n", 1418 | " \n", 1419 | " \n", 1420 | " \n", 1421 | " \n", 1422 | " \n", 1423 | " \n", 1424 | " \n", 1425 | " \n", 1426 | " \n", 1427 | " \n", 1428 | " \n", 1429 | " \n", 1430 | " \n", 1431 | " \n", 1432 | " \n", 1433 | " \n", 1434 | " \n", 1435 | " \n", 1436 | " \n", 1437 | " \n", 1438 | " \n", 1439 | " \n", 1440 | " \n", 1441 | " \n", 1442 | " \n", 1443 | " \n", 1444 | " \n", 1445 | " \n", 1446 | " \n", 1447 | " \n", 1448 | " \n", 1449 | " \n", 1450 | " \n", 1451 | " \n", 1452 | " \n", 1453 | " \n", 1454 | " \n", 1455 | " \n", 1456 | " \n", 1457 | " \n", 1458 | " \n", 1459 | " \n", 1460 | " \n", 1461 | " \n", 1462 | "
student_idfinal_gradefirst_namelast_name
0195MelvinWare
1371JosephPaul
2676ElizabethBrown
3791AmandaSchultz
4875TannerPerkins
51159JacindaPeterson
\n", 1463 | "
" 1464 | ], 1465 | "text/plain": [ 1466 | " student_id final_grade first_name last_name\n", 1467 | "0 1 95 Melvin Ware\n", 1468 | "1 3 71 Joseph Paul\n", 1469 | "2 6 76 Elizabeth Brown\n", 1470 | "3 7 91 Amanda Schultz\n", 1471 | "4 8 75 Tanner Perkins\n", 1472 | "5 11 59 Jacinda Peterson" 1473 | ] 1474 | }, 1475 | "execution_count": 15, 1476 | "metadata": {}, 1477 | "output_type": "execute_result" 1478 | } 1479 | ], 1480 | "source": [ 1481 | "df_result = pd.merge(df_grades,\n", 1482 | " df_students[['student_id', 'first_name', 'last_name']],\n", 1483 | " left_on='student_id',\n", 1484 | " right_on='student_id',\n", 1485 | " how='left')\n", 1486 | "\n", 1487 | "if df_result.first_name.isnull().sum() > 0:\n", 1488 | " print('Warning! df_students is missing some students.')\n", 1489 | "\n", 1490 | "df_result = df_result[df_result.first_name.notnull()]\n", 1491 | "df_result" 1492 | ] 1493 | }, 1494 | { 1495 | "cell_type": "markdown", 1496 | "metadata": {}, 1497 | "source": [ 1498 | "## Section 7.8" 1499 | ] 1500 | }, 1501 | { 1502 | "cell_type": "code", 1503 | "execution_count": 16, 1504 | "metadata": {}, 1505 | "outputs": [ 1506 | { 1507 | "data": { 1508 | "text/html": [ 1509 | "
\n", 1510 | "\n", 1523 | "\n", 1524 | " \n", 1525 | " \n", 1526 | " \n", 1527 | " \n", 1528 | " \n", 1529 | " \n", 1530 | " \n", 1531 | " \n", 1532 | " \n", 1533 | " \n", 1534 | " \n", 1535 | " \n", 1536 | " \n", 1537 | " \n", 1538 | " \n", 1539 | " \n", 1540 | " \n", 1541 | " \n", 1542 | " \n", 1543 | " \n", 1544 | " \n", 1545 | " \n", 1546 | " \n", 1547 | " \n", 1548 | " \n", 1549 | " \n", 1550 | " \n", 1551 | " \n", 1552 | " \n", 1553 | " \n", 1554 | " \n", 1555 | " \n", 1556 | " \n", 1557 | " \n", 1558 | " \n", 1559 | " \n", 1560 | " \n", 1561 | " \n", 1562 | " \n", 1563 | " \n", 1564 | " \n", 1565 | " \n", 1566 | " \n", 1567 | " \n", 1568 | " \n", 1569 | " \n", 1570 | " \n", 1571 | " \n", 1572 | " \n", 1573 | " \n", 1574 | " \n", 1575 | " \n", 1576 | " \n", 1577 | " \n", 1578 | " \n", 1579 | " \n", 1580 | " \n", 1581 | " \n", 1582 | " \n", 1583 | " \n", 1584 | " \n", 1585 | " \n", 1586 | " \n", 1587 | " \n", 1588 | " \n", 1589 | " \n", 1590 | " \n", 1591 | " \n", 1592 | "
student_idfinal_gradefirst_namelast_nameadviser
0195MelvinWareProf Duncan
1371JosephPaulProf Alvarez
2676ElizabethBrownProf Duncan
3791AmandaSchultzProf Kennedy
4875TannerPerkinsProf Alvarez
51159JacindaPetersonProf Alvarez
61586NaNNaNNaN
\n", 1593 | "
" 1594 | ], 1595 | "text/plain": [ 1596 | " student_id final_grade first_name last_name adviser\n", 1597 | "0 1 95 Melvin Ware Prof Duncan\n", 1598 | "1 3 71 Joseph Paul Prof Alvarez\n", 1599 | "2 6 76 Elizabeth Brown Prof Duncan\n", 1600 | "3 7 91 Amanda Schultz Prof Kennedy\n", 1601 | "4 8 75 Tanner Perkins Prof Alvarez\n", 1602 | "5 11 59 Jacinda Peterson Prof Alvarez\n", 1603 | "6 15 86 NaN NaN NaN" 1604 | ] 1605 | }, 1606 | "execution_count": 16, 1607 | "metadata": {}, 1608 | "output_type": "execute_result" 1609 | } 1610 | ], 1611 | "source": [ 1612 | "pd.merge(df_grades,\n", 1613 | " df_students,\n", 1614 | " left_on='student_id',\n", 1615 | " right_on='student_id',\n", 1616 | " how='left',\n", 1617 | " validate='one_to_one')" 1618 | ] 1619 | }, 1620 | { 1621 | "cell_type": "markdown", 1622 | "metadata": {}, 1623 | "source": [ 1624 | "## Section 7.9" 1625 | ] 1626 | }, 1627 | { 1628 | "cell_type": "code", 1629 | "execution_count": 17, 1630 | "metadata": {}, 1631 | "outputs": [ 1632 | { 1633 | "data": { 1634 | "text/html": [ 1635 | "
\n", 1636 | "\n", 1649 | "\n", 1650 | " \n", 1651 | " \n", 1652 | " \n", 1653 | " \n", 1654 | " \n", 1655 | " \n", 1656 | " \n", 1657 | " \n", 1658 | " \n", 1659 | " \n", 1660 | " \n", 1661 | " \n", 1662 | " \n", 1663 | " \n", 1664 | " \n", 1665 | " \n", 1666 | " \n", 1667 | " \n", 1668 | " \n", 1669 | " \n", 1670 | " \n", 1671 | " \n", 1672 | " \n", 1673 | " \n", 1674 | " \n", 1675 | " \n", 1676 | " \n", 1677 | " \n", 1678 | " \n", 1679 | " \n", 1680 | " \n", 1681 | " \n", 1682 | " \n", 1683 | " \n", 1684 | " \n", 1685 | " \n", 1686 | " \n", 1687 | " \n", 1688 | " \n", 1689 | " \n", 1690 | " \n", 1691 | " \n", 1692 | " \n", 1693 | " \n", 1694 | " \n", 1695 | " \n", 1696 | " \n", 1697 | " \n", 1698 | " \n", 1699 | " \n", 1700 | " \n", 1701 | " \n", 1702 | " \n", 1703 | " \n", 1704 | " \n", 1705 | " \n", 1706 | " \n", 1707 | " \n", 1708 | " \n", 1709 | " \n", 1710 | " \n", 1711 | " \n", 1712 | " \n", 1713 | " \n", 1714 | " \n", 1715 | " \n", 1716 | " \n", 1717 | " \n", 1718 | " \n", 1719 | " \n", 1720 | " \n", 1721 | " \n", 1722 | " \n", 1723 | " \n", 1724 | " \n", 1725 | " \n", 1726 | " \n", 1727 | " \n", 1728 | " \n", 1729 | " \n", 1730 | " \n", 1731 | " \n", 1732 | "
ORDER_IDDATETIMERESTAURANT_IDTYPEDRINKSCOOKIESMAINBASESIDE_1SIDE_2
0O18200602018-10-11 17:25:50R10002IN_STORE1.02.0NaNNaNNaNNaN
1O10111122018-05-31 11:35:00R10003IN_STORE0.00.0NaNNaNNaNNaN
2O7528542018-04-21 18:12:57R10001DELIVERY0.02.0I0I7I15I14
3O20768642018-11-17 12:50:52R10005PICKUP1.00.0I0I5I9I12
4O19888982018-11-04 18:37:24R10008IN_STORE0.00.0I1I7I9I9
\n", 1733 | "
" 1734 | ], 1735 | "text/plain": [ 1736 | " ORDER_ID DATETIME RESTAURANT_ID TYPE DRINKS COOKIES MAIN \\\n", 1737 | "0 O1820060 2018-10-11 17:25:50 R10002 IN_STORE 1.0 2.0 NaN \n", 1738 | "1 O1011112 2018-05-31 11:35:00 R10003 IN_STORE 0.0 0.0 NaN \n", 1739 | "2 O752854 2018-04-21 18:12:57 R10001 DELIVERY 0.0 2.0 I0 \n", 1740 | "3 O2076864 2018-11-17 12:50:52 R10005 PICKUP 1.0 0.0 I0 \n", 1741 | "4 O1988898 2018-11-04 18:37:24 R10008 IN_STORE 0.0 0.0 I1 \n", 1742 | "\n", 1743 | " BASE SIDE_1 SIDE_2 \n", 1744 | "0 NaN NaN NaN \n", 1745 | "1 NaN NaN NaN \n", 1746 | "2 I7 I15 I14 \n", 1747 | "3 I5 I9 I12 \n", 1748 | "4 I7 I9 I9 " 1749 | ] 1750 | }, 1751 | "execution_count": 17, 1752 | "metadata": {}, 1753 | "output_type": "execute_result" 1754 | } 1755 | ], 1756 | "source": [ 1757 | "df_orders.head()" 1758 | ] 1759 | }, 1760 | { 1761 | "cell_type": "code", 1762 | "execution_count": 18, 1763 | "metadata": {}, 1764 | "outputs": [ 1765 | { 1766 | "data": { 1767 | "text/html": [ 1768 | "
\n", 1769 | "\n", 1782 | "\n", 1783 | " \n", 1784 | " \n", 1785 | " \n", 1786 | " \n", 1787 | " \n", 1788 | " \n", 1789 | " \n", 1790 | " \n", 1791 | " \n", 1792 | " \n", 1793 | " \n", 1794 | " \n", 1795 | " \n", 1796 | " \n", 1797 | " \n", 1798 | " \n", 1799 | " \n", 1800 | " \n", 1801 | " \n", 1802 | " \n", 1803 | " \n", 1804 | " \n", 1805 | " \n", 1806 | " \n", 1807 | " \n", 1808 | " \n", 1809 | " \n", 1810 | " \n", 1811 | " \n", 1812 | " \n", 1813 | " \n", 1814 | " \n", 1815 | " \n", 1816 | " \n", 1817 | " \n", 1818 | " \n", 1819 | " \n", 1820 | " \n", 1821 | " \n", 1822 | " \n", 1823 | "
ITEM_IDITEM_NAMEITEM_TYPE
0I7Farro with Summer VegetablesBases
1I39Spindrift LemonDrinks
2I5Classic Brown RiceBases
3I36KombuchaDrinks
4I8Cauliflower with Garlic and ParmesanMarket Sides
\n", 1824 | "
" 1825 | ], 1826 | "text/plain": [ 1827 | " ITEM_ID ITEM_NAME ITEM_TYPE\n", 1828 | "0 I7 Farro with Summer Vegetables Bases\n", 1829 | "1 I39 Spindrift Lemon Drinks\n", 1830 | "2 I5 Classic Brown Rice Bases\n", 1831 | "3 I36 Kombucha Drinks\n", 1832 | "4 I8 Cauliflower with Garlic and Parmesan Market Sides" 1833 | ] 1834 | }, 1835 | "execution_count": 18, 1836 | "metadata": {}, 1837 | "output_type": "execute_result" 1838 | } 1839 | ], 1840 | "source": [ 1841 | "df_items.head()" 1842 | ] 1843 | }, 1844 | { 1845 | "cell_type": "code", 1846 | "execution_count": 19, 1847 | "metadata": {}, 1848 | "outputs": [ 1849 | { 1850 | "data": { 1851 | "text/html": [ 1852 | "
\n", 1853 | "\n", 1866 | "\n", 1867 | " \n", 1868 | " \n", 1869 | " \n", 1870 | " \n", 1871 | " \n", 1872 | " \n", 1873 | " \n", 1874 | " \n", 1875 | " \n", 1876 | " \n", 1877 | " \n", 1878 | " \n", 1879 | " \n", 1880 | " \n", 1881 | " \n", 1882 | " \n", 1883 | " \n", 1884 | " \n", 1885 | " \n", 1886 | " \n", 1887 | " \n", 1888 | " \n", 1889 | " \n", 1890 | " \n", 1891 | " \n", 1892 | " \n", 1893 | " \n", 1894 | " \n", 1895 | " \n", 1896 | " \n", 1897 | " \n", 1898 | " \n", 1899 | " \n", 1900 | " \n", 1901 | " \n", 1902 | " \n", 1903 | " \n", 1904 | " \n", 1905 | " \n", 1906 | " \n", 1907 | " \n", 1908 | " \n", 1909 | " \n", 1910 | " \n", 1911 | " \n", 1912 | " \n", 1913 | " \n", 1914 | " \n", 1915 | " \n", 1916 | " \n", 1917 | " \n", 1918 | " \n", 1919 | " \n", 1920 | " \n", 1921 | " \n", 1922 | " \n", 1923 | " \n", 1924 | " \n", 1925 | " \n", 1926 | " \n", 1927 | " \n", 1928 | " \n", 1929 | " \n", 1930 | " \n", 1931 | "
RESTAURANT_IDNAMEADDRESSLATLONGOPENING_DATEDELIVERY_START
0R10001Columbia2884 Broadway, New York, NY 1002540.811470-73.9612308/9/20142017-01-01
1R10002Midtown1379 6th Ave, New York, NY 1001940.763640-73.9779603/19/20132018-05-01
2R10005Flatiron40 W 25th St, New York, NY 1001040.743600-73.99107011/14/20132016-03-05
3R10008Williamsburg45 S 3rd St, Brooklyn, NY 1124940.713749-73.96578210/12/20152017-01-01
4R10004NYU109 Macdougal St, New York, NY 1001240.729930-74.0008201/10/20142017-01-01
\n", 1932 | "
" 1933 | ], 1934 | "text/plain": [ 1935 | " RESTAURANT_ID NAME ADDRESS \\\n", 1936 | "0 R10001 Columbia 2884 Broadway, New York, NY 10025 \n", 1937 | "1 R10002 Midtown 1379 6th Ave, New York, NY 10019 \n", 1938 | "2 R10005 Flatiron 40 W 25th St, New York, NY 10010 \n", 1939 | "3 R10008 Williamsburg 45 S 3rd St, Brooklyn, NY 11249 \n", 1940 | "4 R10004 NYU 109 Macdougal St, New York, NY 10012 \n", 1941 | "\n", 1942 | " LAT LONG OPENING_DATE DELIVERY_START \n", 1943 | "0 40.811470 -73.961230 8/9/2014 2017-01-01 \n", 1944 | "1 40.763640 -73.977960 3/19/2013 2018-05-01 \n", 1945 | "2 40.743600 -73.991070 11/14/2013 2016-03-05 \n", 1946 | "3 40.713749 -73.965782 10/12/2015 2017-01-01 \n", 1947 | "4 40.729930 -74.000820 1/10/2014 2017-01-01 " 1948 | ] 1949 | }, 1950 | "execution_count": 19, 1951 | "metadata": {}, 1952 | "output_type": "execute_result" 1953 | } 1954 | ], 1955 | "source": [ 1956 | "df_restaurants.head()" 1957 | ] 1958 | }, 1959 | { 1960 | "cell_type": "code", 1961 | "execution_count": 20, 1962 | "metadata": {}, 1963 | "outputs": [], 1964 | "source": [ 1965 | "df_res = pd.merge(df_orders,\n", 1966 | " df_restaurants[['RESTAURANT_ID','NAME']],\n", 1967 | " left_on='RESTAURANT_ID',\n", 1968 | " right_on='RESTAURANT_ID',\n", 1969 | " how='left').rename(columns={'NAME':'RESTAURANT_NAME'})" 1970 | ] 1971 | }, 1972 | { 1973 | "cell_type": "code", 1974 | "execution_count": 21, 1975 | "metadata": {}, 1976 | "outputs": [ 1977 | { 1978 | "data": { 1979 | "text/html": [ 1980 | "
\n", 1981 | "\n", 1994 | "\n", 1995 | " \n", 1996 | " \n", 1997 | " \n", 1998 | " \n", 1999 | " \n", 2000 | " \n", 2001 | " \n", 2002 | " \n", 2003 | " \n", 2004 | " \n", 2005 | " \n", 2006 | " \n", 2007 | " \n", 2008 | " \n", 2009 | " \n", 2010 | " \n", 2011 | " \n", 2012 | " \n", 2013 | " \n", 2014 | " \n", 2015 | " \n", 2016 | " \n", 2017 | " \n", 2018 | " \n", 2019 | " \n", 2020 | " \n", 2021 | " \n", 2022 | " \n", 2023 | " \n", 2024 | " \n", 2025 | " \n", 2026 | " \n", 2027 | " \n", 2028 | " \n", 2029 | " \n", 2030 | " \n", 2031 | " \n", 2032 | " \n", 2033 | " \n", 2034 | " \n", 2035 | " \n", 2036 | " \n", 2037 | " \n", 2038 | " \n", 2039 | " \n", 2040 | " \n", 2041 | " \n", 2042 | " \n", 2043 | " \n", 2044 | " \n", 2045 | " \n", 2046 | " \n", 2047 | " \n", 2048 | " \n", 2049 | " \n", 2050 | " \n", 2051 | " \n", 2052 | " \n", 2053 | " \n", 2054 | " \n", 2055 | " \n", 2056 | " \n", 2057 | " \n", 2058 | " \n", 2059 | " \n", 2060 | " \n", 2061 | " \n", 2062 | " \n", 2063 | " \n", 2064 | " \n", 2065 | " \n", 2066 | " \n", 2067 | " \n", 2068 | " \n", 2069 | " \n", 2070 | " \n", 2071 | " \n", 2072 | " \n", 2073 | " \n", 2074 | " \n", 2075 | " \n", 2076 | " \n", 2077 | " \n", 2078 | " \n", 2079 | " \n", 2080 | " \n", 2081 | " \n", 2082 | " \n", 2083 | "
ORDER_IDDATETIMERESTAURANT_IDTYPEDRINKSCOOKIESMAINBASESIDE_1SIDE_2RESTAURANT_NAME
0O18200602018-10-11 17:25:50R10002IN_STORE1.02.0NaNNaNNaNNaNMidtown
1O10111122018-05-31 11:35:00R10003IN_STORE0.00.0NaNNaNNaNNaNBryant Park
2O7528542018-04-21 18:12:57R10001DELIVERY0.02.0I0I7I15I14Columbia
3O20768642018-11-17 12:50:52R10005PICKUP1.00.0I0I5I9I12Flatiron
4O19888982018-11-04 18:37:24R10008IN_STORE0.00.0I1I7I9I9Williamsburg
\n", 2084 | "
" 2085 | ], 2086 | "text/plain": [ 2087 | " ORDER_ID DATETIME RESTAURANT_ID TYPE DRINKS COOKIES MAIN \\\n", 2088 | "0 O1820060 2018-10-11 17:25:50 R10002 IN_STORE 1.0 2.0 NaN \n", 2089 | "1 O1011112 2018-05-31 11:35:00 R10003 IN_STORE 0.0 0.0 NaN \n", 2090 | "2 O752854 2018-04-21 18:12:57 R10001 DELIVERY 0.0 2.0 I0 \n", 2091 | "3 O2076864 2018-11-17 12:50:52 R10005 PICKUP 1.0 0.0 I0 \n", 2092 | "4 O1988898 2018-11-04 18:37:24 R10008 IN_STORE 0.0 0.0 I1 \n", 2093 | "\n", 2094 | " BASE SIDE_1 SIDE_2 RESTAURANT_NAME \n", 2095 | "0 NaN NaN NaN Midtown \n", 2096 | "1 NaN NaN NaN Bryant Park \n", 2097 | "2 I7 I15 I14 Columbia \n", 2098 | "3 I5 I9 I12 Flatiron \n", 2099 | "4 I7 I9 I9 Williamsburg " 2100 | ] 2101 | }, 2102 | "execution_count": 21, 2103 | "metadata": {}, 2104 | "output_type": "execute_result" 2105 | } 2106 | ], 2107 | "source": [ 2108 | "df_res.head()" 2109 | ] 2110 | }, 2111 | { 2112 | "cell_type": "code", 2113 | "execution_count": 22, 2114 | "metadata": {}, 2115 | "outputs": [ 2116 | { 2117 | "data": { 2118 | "text/html": [ 2119 | "
\n", 2120 | "\n", 2133 | "\n", 2134 | " \n", 2135 | " \n", 2136 | " \n", 2137 | " \n", 2138 | " \n", 2139 | " \n", 2140 | " \n", 2141 | " \n", 2142 | " \n", 2143 | " \n", 2144 | " \n", 2145 | " \n", 2146 | " \n", 2147 | " \n", 2148 | " \n", 2149 | " \n", 2150 | " \n", 2151 | " \n", 2152 | " \n", 2153 | " \n", 2154 | " \n", 2155 | " \n", 2156 | " \n", 2157 | " \n", 2158 | " \n", 2159 | " \n", 2160 | " \n", 2161 | " \n", 2162 | " \n", 2163 | " \n", 2164 | " \n", 2165 | " \n", 2166 | " \n", 2167 | " \n", 2168 | " \n", 2169 | " \n", 2170 | " \n", 2171 | " \n", 2172 | " \n", 2173 | " \n", 2174 | " \n", 2175 | " \n", 2176 | " \n", 2177 | " \n", 2178 | " \n", 2179 | " \n", 2180 | " \n", 2181 | " \n", 2182 | " \n", 2183 | " \n", 2184 | " \n", 2185 | " \n", 2186 | " \n", 2187 | " \n", 2188 | " \n", 2189 | " \n", 2190 | " \n", 2191 | " \n", 2192 | " \n", 2193 | " \n", 2194 | " \n", 2195 | " \n", 2196 | " \n", 2197 | " \n", 2198 | " \n", 2199 | " \n", 2200 | " \n", 2201 | " \n", 2202 | " \n", 2203 | " \n", 2204 | " \n", 2205 | " \n", 2206 | " \n", 2207 | " \n", 2208 | " \n", 2209 | " \n", 2210 | " \n", 2211 | " \n", 2212 | " \n", 2213 | " \n", 2214 | " \n", 2215 | " \n", 2216 | " \n", 2217 | " \n", 2218 | " \n", 2219 | " \n", 2220 | " \n", 2221 | " \n", 2222 | " \n", 2223 | " \n", 2224 | " \n", 2225 | " \n", 2226 | " \n", 2227 | " \n", 2228 | " \n", 2229 | " \n", 2230 | " \n", 2231 | " \n", 2232 | " \n", 2233 | " \n", 2234 | "
ORDER_IDDATETIMERESTAURANT_IDTYPEDRINKSCOOKIESMAINBASESIDE_1SIDE_2RESTAURANT_NAMEITEM_IDMAIN_NAME
0O18200602018-10-11 17:25:50R10002IN_STORE1.02.0NaNNaNNaNNaNMidtownNaNNaN
1O10111122018-05-31 11:35:00R10003IN_STORE0.00.0NaNNaNNaNNaNBryant ParkNaNNaN
2O7528542018-04-21 18:12:57R10001DELIVERY0.02.0I0I7I15I14ColumbiaI0Charred Chicken Marketbowl
3O20768642018-11-17 12:50:52R10005PICKUP1.00.0I0I5I9I12FlatironI0Charred Chicken Marketbowl
4O19888982018-11-04 18:37:24R10008IN_STORE0.00.0I1I7I9I9WilliamsburgI1Spicy Meatballs Marketbowl
\n", 2235 | "
" 2236 | ], 2237 | "text/plain": [ 2238 | " ORDER_ID DATETIME RESTAURANT_ID TYPE DRINKS COOKIES MAIN \\\n", 2239 | "0 O1820060 2018-10-11 17:25:50 R10002 IN_STORE 1.0 2.0 NaN \n", 2240 | "1 O1011112 2018-05-31 11:35:00 R10003 IN_STORE 0.0 0.0 NaN \n", 2241 | "2 O752854 2018-04-21 18:12:57 R10001 DELIVERY 0.0 2.0 I0 \n", 2242 | "3 O2076864 2018-11-17 12:50:52 R10005 PICKUP 1.0 0.0 I0 \n", 2243 | "4 O1988898 2018-11-04 18:37:24 R10008 IN_STORE 0.0 0.0 I1 \n", 2244 | "\n", 2245 | " BASE SIDE_1 SIDE_2 RESTAURANT_NAME ITEM_ID MAIN_NAME \n", 2246 | "0 NaN NaN NaN Midtown NaN NaN \n", 2247 | "1 NaN NaN NaN Bryant Park NaN NaN \n", 2248 | "2 I7 I15 I14 Columbia I0 Charred Chicken Marketbowl \n", 2249 | "3 I5 I9 I12 Flatiron I0 Charred Chicken Marketbowl \n", 2250 | "4 I7 I9 I9 Williamsburg I1 Spicy Meatballs Marketbowl " 2251 | ] 2252 | }, 2253 | "execution_count": 22, 2254 | "metadata": {}, 2255 | "output_type": "execute_result" 2256 | } 2257 | ], 2258 | "source": [ 2259 | "( pd.merge(df_res,\n", 2260 | " df_items[['ITEM_ID', 'ITEM_NAME']],\n", 2261 | " left_on='MAIN',\n", 2262 | " right_on='ITEM_ID',\n", 2263 | " how='left')\n", 2264 | " .rename(columns={'ITEM_NAME':'MAIN_NAME'}) ).head()" 2265 | ] 2266 | }, 2267 | { 2268 | "cell_type": "code", 2269 | "execution_count": 23, 2270 | "metadata": {}, 2271 | "outputs": [], 2272 | "source": [ 2273 | "df_res = ( pd.merge(df_res,\n", 2274 | " df_items[['ITEM_ID', 'ITEM_NAME']],\n", 2275 | " left_on='MAIN',\n", 2276 | " right_on='ITEM_ID',\n", 2277 | " how='left')\n", 2278 | " .rename(columns={'ITEM_NAME':'MAIN_NAME'})\n", 2279 | " .drop(columns='ITEM_ID') )" 2280 | ] 2281 | }, 2282 | { 2283 | "cell_type": "code", 2284 | "execution_count": 24, 2285 | "metadata": {}, 2286 | "outputs": [], 2287 | "source": [ 2288 | "df_res = ( pd.merge(df_res,\n", 2289 | " df_items[['ITEM_ID', 'ITEM_NAME']],\n", 2290 | " left_on='BASE',\n", 2291 | " right_on='ITEM_ID',\n", 2292 | " how='left')\n", 2293 | " .rename(columns={'ITEM_NAME':'BASE_NAME'})\n", 2294 | " .drop(columns='ITEM_ID') )\n", 2295 | "\n", 2296 | "df_res = ( pd.merge(df_res,\n", 2297 | " df_items[['ITEM_ID', 'ITEM_NAME']],\n", 2298 | " left_on='SIDE_1',\n", 2299 | " right_on='ITEM_ID',\n", 2300 | " how='left')\n", 2301 | " .rename(columns={'ITEM_NAME':'SIDE_1_NAME'})\n", 2302 | " .drop(columns='ITEM_ID') )\n", 2303 | "\n", 2304 | "df_res = ( pd.merge(df_res,\n", 2305 | " df_items[['ITEM_ID', 'ITEM_NAME']],\n", 2306 | " left_on='SIDE_2',\n", 2307 | " right_on='ITEM_ID',\n", 2308 | " how='left')\n", 2309 | " .rename(columns={'ITEM_NAME':'SIDE_2_NAME'})\n", 2310 | " .drop(columns='ITEM_ID') )" 2311 | ] 2312 | }, 2313 | { 2314 | "cell_type": "code", 2315 | "execution_count": 25, 2316 | "metadata": {}, 2317 | "outputs": [], 2318 | "source": [ 2319 | "# Optional cell to bring in order details using a loop\n", 2320 | "# ====================================================\n", 2321 | "\n", 2322 | "# We first bring in the restaurant name, as above\n", 2323 | "df_res = ( pd.merge(df_orders,\n", 2324 | " df_restaurants[['RESTAURANT_ID','NAME']],\n", 2325 | " left_on='RESTAURANT_ID',\n", 2326 | " right_on='RESTAURANT_ID',\n", 2327 | " how='left')\n", 2328 | " .rename(columns={'NAME':'RESTAURANT_NAME'}) )\n", 2329 | "\n", 2330 | "# We then loop through each \"item\" column we want to bring\n", 2331 | "# in. The variable c (which stands for \"column\") will contain\n", 2332 | "# the name of the column we are currently looping through. In\n", 2333 | "# each loop, we will simply apply the code we saw above, but\n", 2334 | "# in each loop, we\n", 2335 | "# - Replace the left_on argument with c\n", 2336 | "# - Put c into the name of the new column in the rename\n", 2337 | "# statement, using an f-string\n", 2338 | "for c in ['MAIN', 'BASE', 'SIDE_1', 'SIDE_2']:\n", 2339 | " df_res = ( pd.merge(df_res,\n", 2340 | " df_items[['ITEM_ID', 'ITEM_NAME']],\n", 2341 | " left_on=c,\n", 2342 | " right_on='ITEM_ID',\n", 2343 | " how='left')\n", 2344 | " .rename(columns={'ITEM_NAME':f'{c}_NAME'})\n", 2345 | " .drop(columns='ITEM_ID') )" 2346 | ] 2347 | }, 2348 | { 2349 | "cell_type": "code", 2350 | "execution_count": 26, 2351 | "metadata": {}, 2352 | "outputs": [ 2353 | { 2354 | "data": { 2355 | "text/html": [ 2356 | "
\n", 2357 | "\n", 2370 | "\n", 2371 | " \n", 2372 | " \n", 2373 | " \n", 2374 | " \n", 2375 | " \n", 2376 | " \n", 2377 | " \n", 2378 | " \n", 2379 | " \n", 2380 | " \n", 2381 | " \n", 2382 | " \n", 2383 | " \n", 2384 | " \n", 2385 | " \n", 2386 | " \n", 2387 | " \n", 2388 | " \n", 2389 | " \n", 2390 | " \n", 2391 | " \n", 2392 | " \n", 2393 | " \n", 2394 | " \n", 2395 | " \n", 2396 | " \n", 2397 | " \n", 2398 | " \n", 2399 | " \n", 2400 | " \n", 2401 | " \n", 2402 | " \n", 2403 | " \n", 2404 | " \n", 2405 | " \n", 2406 | " \n", 2407 | " \n", 2408 | " \n", 2409 | " \n", 2410 | " \n", 2411 | " \n", 2412 | " \n", 2413 | " \n", 2414 | " \n", 2415 | " \n", 2416 | " \n", 2417 | " \n", 2418 | " \n", 2419 | " \n", 2420 | " \n", 2421 | " \n", 2422 | " \n", 2423 | " \n", 2424 | " \n", 2425 | " \n", 2426 | " \n", 2427 | " \n", 2428 | " \n", 2429 | " \n", 2430 | " \n", 2431 | " \n", 2432 | " \n", 2433 | " \n", 2434 | " \n", 2435 | " \n", 2436 | " \n", 2437 | " \n", 2438 | " \n", 2439 | " \n", 2440 | " \n", 2441 | " \n", 2442 | " \n", 2443 | " \n", 2444 | " \n", 2445 | " \n", 2446 | " \n", 2447 | " \n", 2448 | " \n", 2449 | " \n", 2450 | " \n", 2451 | " \n", 2452 | " \n", 2453 | " \n", 2454 | " \n", 2455 | " \n", 2456 | " \n", 2457 | " \n", 2458 | " \n", 2459 | " \n", 2460 | " \n", 2461 | " \n", 2462 | " \n", 2463 | " \n", 2464 | " \n", 2465 | " \n", 2466 | " \n", 2467 | " \n", 2468 | " \n", 2469 | " \n", 2470 | " \n", 2471 | " \n", 2472 | " \n", 2473 | " \n", 2474 | " \n", 2475 | " \n", 2476 | " \n", 2477 | " \n", 2478 | " \n", 2479 | " \n", 2480 | " \n", 2481 | " \n", 2482 | " \n", 2483 | "
ORDER_IDDATETIMERESTAURANT_IDTYPEDRINKSCOOKIESMAINBASESIDE_1SIDE_2RESTAURANT_NAMEMAIN_NAMEBASE_NAMESIDE_1_NAMESIDE_2_NAME
0O18200602018-10-11 17:25:50R10002IN_STORE1.02.0NaNNaNNaNNaNMidtownNaNNaNNaNNaN
1O10111122018-05-31 11:35:00R10003IN_STORE0.00.0NaNNaNNaNNaNBryant ParkNaNNaNNaNNaN
2O7528542018-04-21 18:12:57R10001DELIVERY0.02.0I0I7I15I14ColumbiaCharred Chicken MarketbowlFarro with Summer VegetablesSnap PeasGreen Goddess Beans with Sesame
3O20768642018-11-17 12:50:52R10005PICKUP1.00.0I0I5I9I12FlatironCharred Chicken MarketbowlClassic Brown RiceJasper Hill Mac & CheeseCashew Kale Caesar
4O19888982018-11-04 18:37:24R10008IN_STORE0.00.0I1I7I9I9WilliamsburgSpicy Meatballs MarketbowlFarro with Summer VegetablesJasper Hill Mac & CheeseJasper Hill Mac & Cheese
\n", 2484 | "
" 2485 | ], 2486 | "text/plain": [ 2487 | " ORDER_ID DATETIME RESTAURANT_ID TYPE DRINKS COOKIES MAIN \\\n", 2488 | "0 O1820060 2018-10-11 17:25:50 R10002 IN_STORE 1.0 2.0 NaN \n", 2489 | "1 O1011112 2018-05-31 11:35:00 R10003 IN_STORE 0.0 0.0 NaN \n", 2490 | "2 O752854 2018-04-21 18:12:57 R10001 DELIVERY 0.0 2.0 I0 \n", 2491 | "3 O2076864 2018-11-17 12:50:52 R10005 PICKUP 1.0 0.0 I0 \n", 2492 | "4 O1988898 2018-11-04 18:37:24 R10008 IN_STORE 0.0 0.0 I1 \n", 2493 | "\n", 2494 | " BASE SIDE_1 SIDE_2 RESTAURANT_NAME MAIN_NAME \\\n", 2495 | "0 NaN NaN NaN Midtown NaN \n", 2496 | "1 NaN NaN NaN Bryant Park NaN \n", 2497 | "2 I7 I15 I14 Columbia Charred Chicken Marketbowl \n", 2498 | "3 I5 I9 I12 Flatiron Charred Chicken Marketbowl \n", 2499 | "4 I7 I9 I9 Williamsburg Spicy Meatballs Marketbowl \n", 2500 | "\n", 2501 | " BASE_NAME SIDE_1_NAME \\\n", 2502 | "0 NaN NaN \n", 2503 | "1 NaN NaN \n", 2504 | "2 Farro with Summer Vegetables Snap Peas \n", 2505 | "3 Classic Brown Rice Jasper Hill Mac & Cheese \n", 2506 | "4 Farro with Summer Vegetables Jasper Hill Mac & Cheese \n", 2507 | "\n", 2508 | " SIDE_2_NAME \n", 2509 | "0 NaN \n", 2510 | "1 NaN \n", 2511 | "2 Green Goddess Beans with Sesame \n", 2512 | "3 Cashew Kale Caesar \n", 2513 | "4 Jasper Hill Mac & Cheese " 2514 | ] 2515 | }, 2516 | "execution_count": 26, 2517 | "metadata": {}, 2518 | "output_type": "execute_result" 2519 | } 2520 | ], 2521 | "source": [ 2522 | "df_res.head()" 2523 | ] 2524 | }, 2525 | { 2526 | "cell_type": "code", 2527 | "execution_count": 27, 2528 | "metadata": {}, 2529 | "outputs": [ 2530 | { 2531 | "data": { 2532 | "text/plain": [ 2533 | "" 2534 | ] 2535 | }, 2536 | "execution_count": 27, 2537 | "metadata": {}, 2538 | "output_type": "execute_result" 2539 | }, 2540 | { 2541 | "data": { 2542 | "image/png": "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\n", 2543 | "text/plain": [ 2544 | "
" 2545 | ] 2546 | }, 2547 | "metadata": { 2548 | "needs_background": "light" 2549 | }, 2550 | "output_type": "display_data" 2551 | } 2552 | ], 2553 | "source": [ 2554 | "df_res.MAIN_NAME.value_counts().plot(kind='bar')" 2555 | ] 2556 | }, 2557 | { 2558 | "cell_type": "markdown", 2559 | "metadata": {}, 2560 | "source": [ 2561 | "## Section 7.10" 2562 | ] 2563 | }, 2564 | { 2565 | "cell_type": "code", 2566 | "execution_count": 28, 2567 | "metadata": {}, 2568 | "outputs": [], 2569 | "source": [ 2570 | "df_res.to_pickle('Chapter 7/orders.pickle')" 2571 | ] 2572 | } 2573 | ], 2574 | "metadata": { 2575 | "kernelspec": { 2576 | "display_name": "Python 3", 2577 | "language": "python", 2578 | "name": "python3" 2579 | }, 2580 | "language_info": { 2581 | "codemirror_mode": { 2582 | "name": "ipython", 2583 | "version": 3 2584 | }, 2585 | "file_extension": ".py", 2586 | "mimetype": "text/x-python", 2587 | "name": "python", 2588 | "nbconvert_exporter": "python", 2589 | "pygments_lexer": "ipython3", 2590 | "version": "3.7.2" 2591 | } 2592 | }, 2593 | "nbformat": 4, 2594 | "nbformat_minor": 2 2595 | } 2596 | -------------------------------------------------------------------------------- /Part 2/Chapter 7/orders.pickle: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:7990bbf6d9dbcdb42a3cae200d424435d47462b04bb203be7c69c2fcc7c3440c 3 | size 236490843 4 | -------------------------------------------------------------------------------- /Part 2/raw data/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danguetta/python-for-mbas/70075941ebc9286e4b7e1daa7698689622c483ab/Part 2/raw data/.DS_Store -------------------------------------------------------------------------------- /Part 2/raw data/Items.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:8e0170270ce0e68425bcfc1d6a9ab6a6b79b01a901fe857ec7ea73443ff167b4 3 | size 1151 4 | -------------------------------------------------------------------------------- /Part 2/raw data/Restaurants.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:41199304a4e2be98ae090c5b16b906c79688c4adb791e2ecc6b5e267936a0098 3 | size 867 4 | -------------------------------------------------------------------------------- /Part 2/raw data/Simplified orders.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:20da0a4ef00c03afacb1a5b8daaca7d5dab18f8761e2c72ee688bc6792c46aff 3 | size 158269130 4 | -------------------------------------------------------------------------------- /Part 2/raw data/Simplified orders.zip: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:6f32363a141bcd6ac02c6aa4b220133c0b1554d28b3be5daed051428115e35a2 3 | size 38501252 4 | -------------------------------------------------------------------------------- /Part 2/raw data/Students.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danguetta/python-for-mbas/70075941ebc9286e4b7e1daa7698689622c483ab/Part 2/raw data/Students.xlsx -------------------------------------------------------------------------------- /Part 2/raw data/Summarized orders.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:211c43d9e9ad24dbbdd415a54ebadd0dbb68ea25446299a87f897511628c8d64 3 | size 127606 4 | -------------------------------------------------------------------------------- /Part 2/raw data/university.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danguetta/python-for-mbas/70075941ebc9286e4b7e1daa7698689622c483ab/Part 2/raw data/university.xlsx -------------------------------------------------------------------------------- /Part 2/raw data/weather.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:91f21930834adbc2ee811ac320bcd1405f855f88cd32f1143341106888bb3fcf 3 | size 280881 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Python for MBAs 2 | 3 | This GitHub repository contains the code and data for "[Python for MBAs](http://www.pythonformbas.com)", by Mattan Griffel and Daniel Guetta. 4 | 5 | The book is available from [Amazon.com](https://www.amazon.com/dp/0231193939) and [Columbia University Press](https://cup.columbia.edu/book/python-for-mbas/9780231193931). 6 | 7 | The structure of this repository is described [here](https://www.pythonformbas.com/code.html). 8 | 9 | Please feel free to contact us with any questions, comments, suggestions, personal stories or jokes (or, more realistically, errata), at authors at pythonformbas.com. --------------------------------------------------------------------------------