├── .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 | " FIRST_NAME | \n",
84 | " LAST_NAME | \n",
85 | " YEAR | \n",
86 | " HOME_STATE | \n",
87 | " AGE | \n",
88 | " CALC_101_FINAL | \n",
89 | " ENGLISH_101_FINAL | \n",
90 | "
\n",
91 | " \n",
92 | " \n",
93 | " \n",
94 | " 0 | \n",
95 | " Daniel | \n",
96 | " Smith | \n",
97 | " 1 | \n",
98 | " NY | \n",
99 | " 18 | \n",
100 | " 90.0 | \n",
101 | " 80.0 | \n",
102 | "
\n",
103 | " \n",
104 | " 1 | \n",
105 | " Ben | \n",
106 | " Leibstrom | \n",
107 | " 1 | \n",
108 | " NY | \n",
109 | " 19 | \n",
110 | " 80.0 | \n",
111 | " NaN | \n",
112 | "
\n",
113 | " \n",
114 | " 2 | \n",
115 | " Kavita | \n",
116 | " Kanabar | \n",
117 | " 1 | \n",
118 | " PA | \n",
119 | " 19 | \n",
120 | " NaN | \n",
121 | " NaN | \n",
122 | "
\n",
123 | " \n",
124 | " 3 | \n",
125 | " Linda | \n",
126 | " Thiel | \n",
127 | " 4 | \n",
128 | " CA | \n",
129 | " 22 | \n",
130 | " 60.0 | \n",
131 | " 40.0 | \n",
132 | "
\n",
133 | " \n",
134 | " 4 | \n",
135 | " Omar | \n",
136 | " Reichel | \n",
137 | " 2 | \n",
138 | " OK | \n",
139 | " 21 | \n",
140 | " 70.0 | \n",
141 | " 50.0 | \n",
142 | "
\n",
143 | " \n",
144 | " 5 | \n",
145 | " Jane | \n",
146 | " OConner | \n",
147 | " 2 | \n",
148 | " HI | \n",
149 | " 19 | \n",
150 | " NaN | \n",
151 | " NaN | \n",
152 | "
\n",
153 | " \n",
154 | " 6 | \n",
155 | " Felicia | \n",
156 | " Rao | \n",
157 | " 3 | \n",
158 | " NY | \n",
159 | " 20 | \n",
160 | " NaN | \n",
161 | " NaN | \n",
162 | "
\n",
163 | " \n",
164 | " 7 | \n",
165 | " Rachel | \n",
166 | " Crock | \n",
167 | " 1 | \n",
168 | " FL | \n",
169 | " 17 | \n",
170 | " NaN | \n",
171 | " 60.0 | \n",
172 | "
\n",
173 | " \n",
174 | " 8 | \n",
175 | " Bob | \n",
176 | " McDonald | \n",
177 | " 1 | \n",
178 | " FL | \n",
179 | " 18 | \n",
180 | " 98.0 | \n",
181 | " 65.0 | \n",
182 | "
\n",
183 | " \n",
184 | "
\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 | " FIRST_NAME | \n",
342 | "
\n",
343 | " \n",
344 | " \n",
345 | " \n",
346 | " 0 | \n",
347 | " Daniel | \n",
348 | "
\n",
349 | " \n",
350 | " 1 | \n",
351 | " Ben | \n",
352 | "
\n",
353 | " \n",
354 | " 2 | \n",
355 | " Kavita | \n",
356 | "
\n",
357 | " \n",
358 | " 3 | \n",
359 | " Linda | \n",
360 | "
\n",
361 | " \n",
362 | " 4 | \n",
363 | " Omar | \n",
364 | "
\n",
365 | " \n",
366 | " 5 | \n",
367 | " Jane | \n",
368 | "
\n",
369 | " \n",
370 | " 6 | \n",
371 | " Felicia | \n",
372 | "
\n",
373 | " \n",
374 | " 7 | \n",
375 | " Rachel | \n",
376 | "
\n",
377 | " \n",
378 | " 8 | \n",
379 | " Bob | \n",
380 | "
\n",
381 | " \n",
382 | "
\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 | " FIRST_NAME | \n",
434 | " LAST_NAME | \n",
435 | "
\n",
436 | " \n",
437 | " \n",
438 | " \n",
439 | " 0 | \n",
440 | " Daniel | \n",
441 | " Smith | \n",
442 | "
\n",
443 | " \n",
444 | " 1 | \n",
445 | " Ben | \n",
446 | " Leibstrom | \n",
447 | "
\n",
448 | " \n",
449 | " 2 | \n",
450 | " Kavita | \n",
451 | " Kanabar | \n",
452 | "
\n",
453 | " \n",
454 | " 3 | \n",
455 | " Linda | \n",
456 | " Thiel | \n",
457 | "
\n",
458 | " \n",
459 | " 4 | \n",
460 | " Omar | \n",
461 | " Reichel | \n",
462 | "
\n",
463 | " \n",
464 | " 5 | \n",
465 | " Jane | \n",
466 | " OConner | \n",
467 | "
\n",
468 | " \n",
469 | " 6 | \n",
470 | " Felicia | \n",
471 | " Rao | \n",
472 | "
\n",
473 | " \n",
474 | " 7 | \n",
475 | " Rachel | \n",
476 | " Crock | \n",
477 | "
\n",
478 | " \n",
479 | " 8 | \n",
480 | " Bob | \n",
481 | " McDonald | \n",
482 | "
\n",
483 | " \n",
484 | "
\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 | " FIRST_NAME | \n",
589 | " LAST_NAME | \n",
590 | " YEAR | \n",
591 | " HOME_STATE | \n",
592 | " AGE | \n",
593 | " CALC_101_FINAL | \n",
594 | " ENGLISH_101_FINAL_SCORE | \n",
595 | "
\n",
596 | " \n",
597 | " \n",
598 | " \n",
599 | " 0 | \n",
600 | " Daniel | \n",
601 | " Smith | \n",
602 | " 1 | \n",
603 | " NY | \n",
604 | " 18 | \n",
605 | " 90.0 | \n",
606 | " 80.0 | \n",
607 | "
\n",
608 | " \n",
609 | " 1 | \n",
610 | " Ben | \n",
611 | " Leibstrom | \n",
612 | " 1 | \n",
613 | " NY | \n",
614 | " 19 | \n",
615 | " 80.0 | \n",
616 | " NaN | \n",
617 | "
\n",
618 | " \n",
619 | " 2 | \n",
620 | " Kavita | \n",
621 | " Kanabar | \n",
622 | " 1 | \n",
623 | " PA | \n",
624 | " 19 | \n",
625 | " NaN | \n",
626 | " NaN | \n",
627 | "
\n",
628 | " \n",
629 | " 3 | \n",
630 | " Linda | \n",
631 | " Thiel | \n",
632 | " 4 | \n",
633 | " CA | \n",
634 | " 22 | \n",
635 | " 60.0 | \n",
636 | " 40.0 | \n",
637 | "
\n",
638 | " \n",
639 | " 4 | \n",
640 | " Omar | \n",
641 | " Reichel | \n",
642 | " 2 | \n",
643 | " OK | \n",
644 | " 21 | \n",
645 | " 70.0 | \n",
646 | " 50.0 | \n",
647 | "
\n",
648 | " \n",
649 | " 5 | \n",
650 | " Jane | \n",
651 | " OConner | \n",
652 | " 2 | \n",
653 | " HI | \n",
654 | " 19 | \n",
655 | " NaN | \n",
656 | " NaN | \n",
657 | "
\n",
658 | " \n",
659 | " 6 | \n",
660 | " Felicia | \n",
661 | " Rao | \n",
662 | " 3 | \n",
663 | " NY | \n",
664 | " 20 | \n",
665 | " NaN | \n",
666 | " NaN | \n",
667 | "
\n",
668 | " \n",
669 | " 7 | \n",
670 | " Rachel | \n",
671 | " Crock | \n",
672 | " 1 | \n",
673 | " FL | \n",
674 | " 17 | \n",
675 | " NaN | \n",
676 | " 60.0 | \n",
677 | "
\n",
678 | " \n",
679 | " 8 | \n",
680 | " Bob | \n",
681 | " McDonald | \n",
682 | " 1 | \n",
683 | " FL | \n",
684 | " 18 | \n",
685 | " 98.0 | \n",
686 | " 65.0 | \n",
687 | "
\n",
688 | " \n",
689 | "
\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 | " FIRST_NAME | \n",
761 | " LAST_NAME | \n",
762 | " YEAR | \n",
763 | " HOME_STATE | \n",
764 | " AGE | \n",
765 | " CALC_101_FINAL | \n",
766 | " ENGLISH_101_FINAL_SCORE | \n",
767 | "
\n",
768 | " \n",
769 | " \n",
770 | " \n",
771 | " 1 | \n",
772 | " Daniel | \n",
773 | " Smith | \n",
774 | " 1 | \n",
775 | " NY | \n",
776 | " 18 | \n",
777 | " 90.0 | \n",
778 | " 80.0 | \n",
779 | "
\n",
780 | " \n",
781 | " 2 | \n",
782 | " Ben | \n",
783 | " Leibstrom | \n",
784 | " 1 | \n",
785 | " NY | \n",
786 | " 19 | \n",
787 | " 80.0 | \n",
788 | " NaN | \n",
789 | "
\n",
790 | " \n",
791 | " 3 | \n",
792 | " Kavita | \n",
793 | " Kanabar | \n",
794 | " 1 | \n",
795 | " PA | \n",
796 | " 19 | \n",
797 | " NaN | \n",
798 | " NaN | \n",
799 | "
\n",
800 | " \n",
801 | " 4 | \n",
802 | " Linda | \n",
803 | " Thiel | \n",
804 | " 4 | \n",
805 | " CA | \n",
806 | " 22 | \n",
807 | " 60.0 | \n",
808 | " 40.0 | \n",
809 | "
\n",
810 | " \n",
811 | " 5 | \n",
812 | " Omar | \n",
813 | " Reichel | \n",
814 | " 2 | \n",
815 | " OK | \n",
816 | " 21 | \n",
817 | " 70.0 | \n",
818 | " 50.0 | \n",
819 | "
\n",
820 | " \n",
821 | " 6 | \n",
822 | " Jane | \n",
823 | " OConner | \n",
824 | " 2 | \n",
825 | " HI | \n",
826 | " 19 | \n",
827 | " NaN | \n",
828 | " NaN | \n",
829 | "
\n",
830 | " \n",
831 | " 7 | \n",
832 | " Felicia | \n",
833 | " Rao | \n",
834 | " 3 | \n",
835 | " NY | \n",
836 | " 20 | \n",
837 | " NaN | \n",
838 | " NaN | \n",
839 | "
\n",
840 | " \n",
841 | " 8 | \n",
842 | " Rachel | \n",
843 | " Crock | \n",
844 | " 1 | \n",
845 | " FL | \n",
846 | " 17 | \n",
847 | " NaN | \n",
848 | " 60.0 | \n",
849 | "
\n",
850 | " \n",
851 | " 9 | \n",
852 | " Bob | \n",
853 | " McDonald | \n",
854 | " 1 | \n",
855 | " FL | \n",
856 | " 18 | \n",
857 | " 98.0 | \n",
858 | " 65.0 | \n",
859 | "
\n",
860 | " \n",
861 | "
\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 | " FIRST_NAME | \n",
924 | " LAST_NAME | \n",
925 | " YEAR | \n",
926 | " HOME_STATE | \n",
927 | " AGE | \n",
928 | " CALC_101_FINAL | \n",
929 | " ENGLISH_101_FINAL | \n",
930 | "
\n",
931 | " \n",
932 | " \n",
933 | " \n",
934 | " 1 | \n",
935 | " Daniel | \n",
936 | " Smith | \n",
937 | " 1 | \n",
938 | " NY | \n",
939 | " 18 | \n",
940 | " 90.0 | \n",
941 | " 80.0 | \n",
942 | "
\n",
943 | " \n",
944 | " 2 | \n",
945 | " Ben | \n",
946 | " Leibstrom | \n",
947 | " 1 | \n",
948 | " NY | \n",
949 | " 19 | \n",
950 | " 80.0 | \n",
951 | " NaN | \n",
952 | "
\n",
953 | " \n",
954 | " 3 | \n",
955 | " Kavita | \n",
956 | " Kanabar | \n",
957 | " 1 | \n",
958 | " PA | \n",
959 | " 19 | \n",
960 | " NaN | \n",
961 | " NaN | \n",
962 | "
\n",
963 | " \n",
964 | " 4 | \n",
965 | " Linda | \n",
966 | " Thiel | \n",
967 | " 4 | \n",
968 | " CA | \n",
969 | " 22 | \n",
970 | " 60.0 | \n",
971 | " 40.0 | \n",
972 | "
\n",
973 | " \n",
974 | " 5 | \n",
975 | " Omar | \n",
976 | " Reichel | \n",
977 | " 2 | \n",
978 | " OK | \n",
979 | " 21 | \n",
980 | " 70.0 | \n",
981 | " 50.0 | \n",
982 | "
\n",
983 | " \n",
984 | " 6 | \n",
985 | " Jane | \n",
986 | " OConner | \n",
987 | " 2 | \n",
988 | " HI | \n",
989 | " 19 | \n",
990 | " NaN | \n",
991 | " NaN | \n",
992 | "
\n",
993 | " \n",
994 | " 7 | \n",
995 | " Felicia | \n",
996 | " Rao | \n",
997 | " 3 | \n",
998 | " NY | \n",
999 | " 20 | \n",
1000 | " NaN | \n",
1001 | " NaN | \n",
1002 | "
\n",
1003 | " \n",
1004 | " 8 | \n",
1005 | " Rachel | \n",
1006 | " Crock | \n",
1007 | " 1 | \n",
1008 | " FL | \n",
1009 | " 17 | \n",
1010 | " NaN | \n",
1011 | " 60.0 | \n",
1012 | "
\n",
1013 | " \n",
1014 | " 9 | \n",
1015 | " Bob | \n",
1016 | " McDonald | \n",
1017 | " 1 | \n",
1018 | " FL | \n",
1019 | " 18 | \n",
1020 | " 98.0 | \n",
1021 | " 65.0 | \n",
1022 | "
\n",
1023 | " \n",
1024 | "
\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 | " FIRST_NAME | \n",
1088 | " LAST_NAME | \n",
1089 | " YEAR | \n",
1090 | " HOME_STATE | \n",
1091 | " AGE | \n",
1092 | " CALC_101_FINAL | \n",
1093 | " ENGLISH_101_FINAL_SCORE | \n",
1094 | "
\n",
1095 | " \n",
1096 | " \n",
1097 | " \n",
1098 | " 1 | \n",
1099 | " Daniel | \n",
1100 | " Smith | \n",
1101 | " 1 | \n",
1102 | " NY | \n",
1103 | " 18 | \n",
1104 | " 90.0 | \n",
1105 | " 80.0 | \n",
1106 | "
\n",
1107 | " \n",
1108 | " 2 | \n",
1109 | " Ben | \n",
1110 | " Leibstrom | \n",
1111 | " 1 | \n",
1112 | " NY | \n",
1113 | " 19 | \n",
1114 | " 80.0 | \n",
1115 | " NaN | \n",
1116 | "
\n",
1117 | " \n",
1118 | " 3 | \n",
1119 | " Kavita | \n",
1120 | " Kanabar | \n",
1121 | " 1 | \n",
1122 | " PA | \n",
1123 | " 19 | \n",
1124 | " NaN | \n",
1125 | " NaN | \n",
1126 | "
\n",
1127 | " \n",
1128 | " 4 | \n",
1129 | " Linda | \n",
1130 | " Thiel | \n",
1131 | " 4 | \n",
1132 | " CA | \n",
1133 | " 22 | \n",
1134 | " 60.0 | \n",
1135 | " 40.0 | \n",
1136 | "
\n",
1137 | " \n",
1138 | " 5 | \n",
1139 | " Omar | \n",
1140 | " Reichel | \n",
1141 | " 2 | \n",
1142 | " OK | \n",
1143 | " 21 | \n",
1144 | " 70.0 | \n",
1145 | " 50.0 | \n",
1146 | "
\n",
1147 | " \n",
1148 | " 6 | \n",
1149 | " Jane | \n",
1150 | " OConner | \n",
1151 | " 2 | \n",
1152 | " HI | \n",
1153 | " 19 | \n",
1154 | " NaN | \n",
1155 | " NaN | \n",
1156 | "
\n",
1157 | " \n",
1158 | " 7 | \n",
1159 | " Felicia | \n",
1160 | " Rao | \n",
1161 | " 3 | \n",
1162 | " NY | \n",
1163 | " 20 | \n",
1164 | " NaN | \n",
1165 | " NaN | \n",
1166 | "
\n",
1167 | " \n",
1168 | " 8 | \n",
1169 | " Rachel | \n",
1170 | " Crock | \n",
1171 | " 1 | \n",
1172 | " FL | \n",
1173 | " 17 | \n",
1174 | " NaN | \n",
1175 | " 60.0 | \n",
1176 | "
\n",
1177 | " \n",
1178 | " 9 | \n",
1179 | " Bob | \n",
1180 | " McDonald | \n",
1181 | " 1 | \n",
1182 | " FL | \n",
1183 | " 18 | \n",
1184 | " 98.0 | \n",
1185 | " 65.0 | \n",
1186 | "
\n",
1187 | " \n",
1188 | "
\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 | " FIRST_NAME | \n",
1319 | " LAST_NAME | \n",
1320 | " YEAR | \n",
1321 | " HOME_STATE | \n",
1322 | " AGE | \n",
1323 | " CALC_101_FINAL | \n",
1324 | " ENGLISH_101_FINAL | \n",
1325 | "
\n",
1326 | " \n",
1327 | " \n",
1328 | " \n",
1329 | " 0 | \n",
1330 | " Daniel | \n",
1331 | " Smith | \n",
1332 | " 1 | \n",
1333 | " NY | \n",
1334 | " 18 | \n",
1335 | " 90.0 | \n",
1336 | " 80.0 | \n",
1337 | "
\n",
1338 | " \n",
1339 | " 1 | \n",
1340 | " Ben | \n",
1341 | " Leibstrom | \n",
1342 | " 1 | \n",
1343 | " NY | \n",
1344 | " 19 | \n",
1345 | " 80.0 | \n",
1346 | " NaN | \n",
1347 | "
\n",
1348 | " \n",
1349 | " 2 | \n",
1350 | " Kavita | \n",
1351 | " Kanabar | \n",
1352 | " 1 | \n",
1353 | " PA | \n",
1354 | " 19 | \n",
1355 | " NaN | \n",
1356 | " NaN | \n",
1357 | "
\n",
1358 | " \n",
1359 | " 3 | \n",
1360 | " Linda | \n",
1361 | " Thiel | \n",
1362 | " 4 | \n",
1363 | " CA | \n",
1364 | " 22 | \n",
1365 | " 60.0 | \n",
1366 | " 40.0 | \n",
1367 | "
\n",
1368 | " \n",
1369 | " 4 | \n",
1370 | " Omar | \n",
1371 | " Reichel | \n",
1372 | " 2 | \n",
1373 | " OK | \n",
1374 | " 21 | \n",
1375 | " 70.0 | \n",
1376 | " 50.0 | \n",
1377 | "
\n",
1378 | " \n",
1379 | "
\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 | " location | \n",
1669 | " day | \n",
1670 | " number of orders | \n",
1671 | " percentage of deliveries | \n",
1672 | "
\n",
1673 | " \n",
1674 | " \n",
1675 | " \n",
1676 | " 0 | \n",
1677 | " Bryant Park | \n",
1678 | " 2018-01-01 | \n",
1679 | " 373 | \n",
1680 | " 0.0 | \n",
1681 | "
\n",
1682 | " \n",
1683 | " 1 | \n",
1684 | " Bryant Park | \n",
1685 | " 2018-01-02 | \n",
1686 | " 789 | \n",
1687 | " 0.0 | \n",
1688 | "
\n",
1689 | " \n",
1690 | " 2 | \n",
1691 | " Bryant Park | \n",
1692 | " 2018-01-03 | \n",
1693 | " 818 | \n",
1694 | " 0.0 | \n",
1695 | "
\n",
1696 | " \n",
1697 | " 3 | \n",
1698 | " Bryant Park | \n",
1699 | " 2018-01-04 | \n",
1700 | " 782 | \n",
1701 | " 0.0 | \n",
1702 | "
\n",
1703 | " \n",
1704 | " 4 | \n",
1705 | " Bryant Park | \n",
1706 | " 2018-01-05 | \n",
1707 | " 719 | \n",
1708 | " 0.0 | \n",
1709 | "
\n",
1710 | " \n",
1711 | "
\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 | " FIRST_NAME | \n",
1838 | " LAST_NAME | \n",
1839 | " YEAR | \n",
1840 | " HOME_STATE | \n",
1841 | " AGE | \n",
1842 | " CALC_101_FINAL | \n",
1843 | " ENGLISH_101_FINAL | \n",
1844 | "
\n",
1845 | " \n",
1846 | " \n",
1847 | " \n",
1848 | " 0 | \n",
1849 | " Daniel | \n",
1850 | " Smith | \n",
1851 | " 1 | \n",
1852 | " NY | \n",
1853 | " 18 | \n",
1854 | " 90.0 | \n",
1855 | " 80.0 | \n",
1856 | "
\n",
1857 | " \n",
1858 | " 1 | \n",
1859 | " Ben | \n",
1860 | " Leibstrom | \n",
1861 | " 1 | \n",
1862 | " NY | \n",
1863 | " 19 | \n",
1864 | " 80.0 | \n",
1865 | " NaN | \n",
1866 | "
\n",
1867 | " \n",
1868 | " 2 | \n",
1869 | " Kavita | \n",
1870 | " Kanabar | \n",
1871 | " 1 | \n",
1872 | " PA | \n",
1873 | " 19 | \n",
1874 | " NaN | \n",
1875 | " NaN | \n",
1876 | "
\n",
1877 | " \n",
1878 | " 3 | \n",
1879 | " Linda | \n",
1880 | " Thiel | \n",
1881 | " 4 | \n",
1882 | " CA | \n",
1883 | " 22 | \n",
1884 | " 60.0 | \n",
1885 | " 40.0 | \n",
1886 | "
\n",
1887 | " \n",
1888 | " 4 | \n",
1889 | " Omar | \n",
1890 | " Reichel | \n",
1891 | " 2 | \n",
1892 | " OK | \n",
1893 | " 21 | \n",
1894 | " 70.0 | \n",
1895 | " 50.0 | \n",
1896 | "
\n",
1897 | " \n",
1898 | " 5 | \n",
1899 | " Jane | \n",
1900 | " OConner | \n",
1901 | " 2 | \n",
1902 | " HI | \n",
1903 | " 19 | \n",
1904 | " NaN | \n",
1905 | " NaN | \n",
1906 | "
\n",
1907 | " \n",
1908 | " 6 | \n",
1909 | " Felicia | \n",
1910 | " Rao | \n",
1911 | " 3 | \n",
1912 | " NY | \n",
1913 | " 20 | \n",
1914 | " NaN | \n",
1915 | " NaN | \n",
1916 | "
\n",
1917 | " \n",
1918 | " 7 | \n",
1919 | " Rachel | \n",
1920 | " Crock | \n",
1921 | " 1 | \n",
1922 | " FL | \n",
1923 | " 17 | \n",
1924 | " NaN | \n",
1925 | " 60.0 | \n",
1926 | "
\n",
1927 | " \n",
1928 | " 8 | \n",
1929 | " Bob | \n",
1930 | " McDonald | \n",
1931 | " 1 | \n",
1932 | " FL | \n",
1933 | " 18 | \n",
1934 | " 98.0 | \n",
1935 | " 65.0 | \n",
1936 | "
\n",
1937 | " \n",
1938 | "
\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 | " ORDER_ID | \n",
2081 | " DATETIME | \n",
2082 | " RESTAURANT_ID | \n",
2083 | " TYPE | \n",
2084 | " DRINKS | \n",
2085 | " COOKIES | \n",
2086 | " MAIN | \n",
2087 | " BASE | \n",
2088 | " SIDE_1 | \n",
2089 | " SIDE_2 | \n",
2090 | "
\n",
2091 | " \n",
2092 | " \n",
2093 | " \n",
2094 | " 0 | \n",
2095 | " O1820060 | \n",
2096 | " 2018-10-11 17:25:50 | \n",
2097 | " R10002 | \n",
2098 | " IN_STORE | \n",
2099 | " 1.0 | \n",
2100 | " 2.0 | \n",
2101 | " NaN | \n",
2102 | " NaN | \n",
2103 | " NaN | \n",
2104 | " NaN | \n",
2105 | "
\n",
2106 | " \n",
2107 | " 1 | \n",
2108 | " O1011112 | \n",
2109 | " 2018-05-31 11:35:00 | \n",
2110 | " R10003 | \n",
2111 | " IN_STORE | \n",
2112 | " 0.0 | \n",
2113 | " 0.0 | \n",
2114 | " NaN | \n",
2115 | " NaN | \n",
2116 | " NaN | \n",
2117 | " NaN | \n",
2118 | "
\n",
2119 | " \n",
2120 | " 2 | \n",
2121 | " O752854 | \n",
2122 | " 2018-04-21 18:12:57 | \n",
2123 | " R10001 | \n",
2124 | " DELIVERY | \n",
2125 | " 0.0 | \n",
2126 | " 2.0 | \n",
2127 | " I0 | \n",
2128 | " I7 | \n",
2129 | " I15 | \n",
2130 | " I14 | \n",
2131 | "
\n",
2132 | " \n",
2133 | " 3 | \n",
2134 | " O2076864 | \n",
2135 | " 2018-11-17 12:50:52 | \n",
2136 | " R10005 | \n",
2137 | " PICKUP | \n",
2138 | " 1.0 | \n",
2139 | " 0.0 | \n",
2140 | " I0 | \n",
2141 | " I5 | \n",
2142 | " I9 | \n",
2143 | " I12 | \n",
2144 | "
\n",
2145 | " \n",
2146 | " 4 | \n",
2147 | " O1988898 | \n",
2148 | " 2018-11-04 18:37:24 | \n",
2149 | " R10008 | \n",
2150 | " IN_STORE | \n",
2151 | " 0.0 | \n",
2152 | " 0.0 | \n",
2153 | " I1 | \n",
2154 | " I7 | \n",
2155 | " I9 | \n",
2156 | " I9 | \n",
2157 | "
\n",
2158 | " \n",
2159 | "
\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 | " RESTAURANT_NAME | \n",
2239 | " DATE | \n",
2240 | " NUM_ORDERS | \n",
2241 | " PERC_DELIVERY | \n",
2242 | "
\n",
2243 | " \n",
2244 | " \n",
2245 | " \n",
2246 | " 0 | \n",
2247 | " Bryant Park | \n",
2248 | " 2018-01-01 | \n",
2249 | " 373 | \n",
2250 | " 0.0 | \n",
2251 | "
\n",
2252 | " \n",
2253 | " 1 | \n",
2254 | " Bryant Park | \n",
2255 | " 2018-01-02 | \n",
2256 | " 789 | \n",
2257 | " 0.0 | \n",
2258 | "
\n",
2259 | " \n",
2260 | " 2 | \n",
2261 | " Bryant Park | \n",
2262 | " 2018-01-03 | \n",
2263 | " 818 | \n",
2264 | " 0.0 | \n",
2265 | "
\n",
2266 | " \n",
2267 | " 3 | \n",
2268 | " Bryant Park | \n",
2269 | " 2018-01-04 | \n",
2270 | " 782 | \n",
2271 | " 0.0 | \n",
2272 | "
\n",
2273 | " \n",
2274 | " 4 | \n",
2275 | " Bryant Park | \n",
2276 | " 2018-01-05 | \n",
2277 | " 719 | \n",
2278 | " 0.0 | \n",
2279 | "
\n",
2280 | " \n",
2281 | "
\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 | " RESTAURANT_NAME | \n",
2329 | " DATE | \n",
2330 | " NUM_ORDERS | \n",
2331 | " PERC_DELIVERY | \n",
2332 | "
\n",
2333 | " \n",
2334 | " \n",
2335 | " \n",
2336 | " 0 | \n",
2337 | " Bryant Park | \n",
2338 | " 2018-01-01 | \n",
2339 | " 373 | \n",
2340 | " 0.0 | \n",
2341 | "
\n",
2342 | " \n",
2343 | " 1 | \n",
2344 | " Bryant Park | \n",
2345 | " 2018-01-02 | \n",
2346 | " 789 | \n",
2347 | " 0.0 | \n",
2348 | "
\n",
2349 | " \n",
2350 | " 2 | \n",
2351 | " Bryant Park | \n",
2352 | " 2018-01-03 | \n",
2353 | " 818 | \n",
2354 | " 0.0 | \n",
2355 | "
\n",
2356 | " \n",
2357 | " 3 | \n",
2358 | " Bryant Park | \n",
2359 | " 2018-01-04 | \n",
2360 | " 782 | \n",
2361 | " 0.0 | \n",
2362 | "
\n",
2363 | " \n",
2364 | " 4 | \n",
2365 | " Bryant Park | \n",
2366 | " 2018-01-05 | \n",
2367 | " 719 | \n",
2368 | " 0.0 | \n",
2369 | "
\n",
2370 | " \n",
2371 | "
\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 | " student_id | \n",
87 | " first_name | \n",
88 | " last_name | \n",
89 | " adviser | \n",
90 | "
\n",
91 | " \n",
92 | " \n",
93 | " \n",
94 | " 0 | \n",
95 | " 1 | \n",
96 | " Melvin | \n",
97 | " Ware | \n",
98 | " Prof Duncan | \n",
99 | "
\n",
100 | " \n",
101 | " 1 | \n",
102 | " 2 | \n",
103 | " Thomas | \n",
104 | " Moore | \n",
105 | " Prof Brown | \n",
106 | "
\n",
107 | " \n",
108 | " 2 | \n",
109 | " 3 | \n",
110 | " Joseph | \n",
111 | " Paul | \n",
112 | " Prof Alvarez | \n",
113 | "
\n",
114 | " \n",
115 | " 3 | \n",
116 | " 4 | \n",
117 | " Sarah | \n",
118 | " Cruz | \n",
119 | " Prof Duncan | \n",
120 | "
\n",
121 | " \n",
122 | "
\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 | " student_id | \n",
169 | " first_name | \n",
170 | " last_name | \n",
171 | " adviser | \n",
172 | "
\n",
173 | " \n",
174 | " \n",
175 | " \n",
176 | " 0 | \n",
177 | " 5 | \n",
178 | " David | \n",
179 | " Freeman | \n",
180 | " Prof Duncan | \n",
181 | "
\n",
182 | " \n",
183 | " 1 | \n",
184 | " 6 | \n",
185 | " Elizabeth | \n",
186 | " Brown | \n",
187 | " Prof Duncan | \n",
188 | "
\n",
189 | " \n",
190 | " 2 | \n",
191 | " 7 | \n",
192 | " Amanda | \n",
193 | " Schultz | \n",
194 | " Prof Kennedy | \n",
195 | "
\n",
196 | " \n",
197 | " 3 | \n",
198 | " 8 | \n",
199 | " Tanner | \n",
200 | " Perkins | \n",
201 | " Prof Alvarez | \n",
202 | "
\n",
203 | " \n",
204 | " 4 | \n",
205 | " 9 | \n",
206 | " Ashley | \n",
207 | " Gonzales | \n",
208 | " Prof Kennedy | \n",
209 | "
\n",
210 | " \n",
211 | " 5 | \n",
212 | " 10 | \n",
213 | " Latonya | \n",
214 | " Porter | \n",
215 | " Prof Alvarez | \n",
216 | "
\n",
217 | " \n",
218 | " 6 | \n",
219 | " 11 | \n",
220 | " Jacinda | \n",
221 | " Peterson | \n",
222 | " Prof Alvarez | \n",
223 | "
\n",
224 | " \n",
225 | "
\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 | " student_id | \n",
275 | " final_grade | \n",
276 | "
\n",
277 | " \n",
278 | " \n",
279 | " \n",
280 | " 0 | \n",
281 | " 1 | \n",
282 | " 95 | \n",
283 | "
\n",
284 | " \n",
285 | " 1 | \n",
286 | " 3 | \n",
287 | " 71 | \n",
288 | "
\n",
289 | " \n",
290 | " 2 | \n",
291 | " 6 | \n",
292 | " 76 | \n",
293 | "
\n",
294 | " \n",
295 | " 3 | \n",
296 | " 7 | \n",
297 | " 91 | \n",
298 | "
\n",
299 | " \n",
300 | " 4 | \n",
301 | " 8 | \n",
302 | " 75 | \n",
303 | "
\n",
304 | " \n",
305 | " 5 | \n",
306 | " 11 | \n",
307 | " 59 | \n",
308 | "
\n",
309 | " \n",
310 | " 6 | \n",
311 | " 15 | \n",
312 | " 86 | \n",
313 | "
\n",
314 | " \n",
315 | "
\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 | " student_id | \n",
379 | " first_name | \n",
380 | " last_name | \n",
381 | " adviser | \n",
382 | "
\n",
383 | " \n",
384 | " \n",
385 | " \n",
386 | " 0 | \n",
387 | " 1 | \n",
388 | " Melvin | \n",
389 | " Ware | \n",
390 | " Prof Duncan | \n",
391 | "
\n",
392 | " \n",
393 | " 1 | \n",
394 | " 2 | \n",
395 | " Thomas | \n",
396 | " Moore | \n",
397 | " Prof Brown | \n",
398 | "
\n",
399 | " \n",
400 | " 2 | \n",
401 | " 3 | \n",
402 | " Joseph | \n",
403 | " Paul | \n",
404 | " Prof Alvarez | \n",
405 | "
\n",
406 | " \n",
407 | " 3 | \n",
408 | " 4 | \n",
409 | " Sarah | \n",
410 | " Cruz | \n",
411 | " Prof Duncan | \n",
412 | "
\n",
413 | " \n",
414 | " 0 | \n",
415 | " 5 | \n",
416 | " David | \n",
417 | " Freeman | \n",
418 | " Prof Duncan | \n",
419 | "
\n",
420 | " \n",
421 | " 1 | \n",
422 | " 6 | \n",
423 | " Elizabeth | \n",
424 | " Brown | \n",
425 | " Prof Duncan | \n",
426 | "
\n",
427 | " \n",
428 | " 2 | \n",
429 | " 7 | \n",
430 | " Amanda | \n",
431 | " Schultz | \n",
432 | " Prof Kennedy | \n",
433 | "
\n",
434 | " \n",
435 | " 3 | \n",
436 | " 8 | \n",
437 | " Tanner | \n",
438 | " Perkins | \n",
439 | " Prof Alvarez | \n",
440 | "
\n",
441 | " \n",
442 | " 4 | \n",
443 | " 9 | \n",
444 | " Ashley | \n",
445 | " Gonzales | \n",
446 | " Prof Kennedy | \n",
447 | "
\n",
448 | " \n",
449 | " 5 | \n",
450 | " 10 | \n",
451 | " Latonya | \n",
452 | " Porter | \n",
453 | " Prof Alvarez | \n",
454 | "
\n",
455 | " \n",
456 | " 6 | \n",
457 | " 11 | \n",
458 | " Jacinda | \n",
459 | " Peterson | \n",
460 | " Prof Alvarez | \n",
461 | "
\n",
462 | " \n",
463 | "
\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 | " student_id | \n",
518 | " first_name | \n",
519 | " last_name | \n",
520 | " adviser | \n",
521 | "
\n",
522 | " \n",
523 | " \n",
524 | " \n",
525 | " 0 | \n",
526 | " 1 | \n",
527 | " Melvin | \n",
528 | " Ware | \n",
529 | " Prof Duncan | \n",
530 | "
\n",
531 | " \n",
532 | " 1 | \n",
533 | " 2 | \n",
534 | " Thomas | \n",
535 | " Moore | \n",
536 | " Prof Brown | \n",
537 | "
\n",
538 | " \n",
539 | " 2 | \n",
540 | " 3 | \n",
541 | " Joseph | \n",
542 | " Paul | \n",
543 | " Prof Alvarez | \n",
544 | "
\n",
545 | " \n",
546 | " 3 | \n",
547 | " 4 | \n",
548 | " Sarah | \n",
549 | " Cruz | \n",
550 | " Prof Duncan | \n",
551 | "
\n",
552 | " \n",
553 | " 4 | \n",
554 | " 5 | \n",
555 | " David | \n",
556 | " Freeman | \n",
557 | " Prof Duncan | \n",
558 | "
\n",
559 | " \n",
560 | " 5 | \n",
561 | " 6 | \n",
562 | " Elizabeth | \n",
563 | " Brown | \n",
564 | " Prof Duncan | \n",
565 | "
\n",
566 | " \n",
567 | " 6 | \n",
568 | " 7 | \n",
569 | " Amanda | \n",
570 | " Schultz | \n",
571 | " Prof Kennedy | \n",
572 | "
\n",
573 | " \n",
574 | " 7 | \n",
575 | " 8 | \n",
576 | " Tanner | \n",
577 | " Perkins | \n",
578 | " Prof Alvarez | \n",
579 | "
\n",
580 | " \n",
581 | " 8 | \n",
582 | " 9 | \n",
583 | " Ashley | \n",
584 | " Gonzales | \n",
585 | " Prof Kennedy | \n",
586 | "
\n",
587 | " \n",
588 | " 9 | \n",
589 | " 10 | \n",
590 | " Latonya | \n",
591 | " Porter | \n",
592 | " Prof Alvarez | \n",
593 | "
\n",
594 | " \n",
595 | " 10 | \n",
596 | " 11 | \n",
597 | " Jacinda | \n",
598 | " Peterson | \n",
599 | " Prof Alvarez | \n",
600 | "
\n",
601 | " \n",
602 | "
\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 | " student_id | \n",
658 | " first_name | \n",
659 | " last_name | \n",
660 | " adviser | \n",
661 | " student_type | \n",
662 | "
\n",
663 | " \n",
664 | " \n",
665 | " \n",
666 | " 0 | \n",
667 | " 1 | \n",
668 | " Melvin | \n",
669 | " Ware | \n",
670 | " Prof Duncan | \n",
671 | " full_time | \n",
672 | "
\n",
673 | " \n",
674 | " 1 | \n",
675 | " 2 | \n",
676 | " Thomas | \n",
677 | " Moore | \n",
678 | " Prof Brown | \n",
679 | " full_time | \n",
680 | "
\n",
681 | " \n",
682 | " 2 | \n",
683 | " 3 | \n",
684 | " Joseph | \n",
685 | " Paul | \n",
686 | " Prof Alvarez | \n",
687 | " full_time | \n",
688 | "
\n",
689 | " \n",
690 | " 3 | \n",
691 | " 4 | \n",
692 | " Sarah | \n",
693 | " Cruz | \n",
694 | " Prof Duncan | \n",
695 | " full_time | \n",
696 | "
\n",
697 | " \n",
698 | " 4 | \n",
699 | " 5 | \n",
700 | " David | \n",
701 | " Freeman | \n",
702 | " Prof Duncan | \n",
703 | " part_time | \n",
704 | "
\n",
705 | " \n",
706 | " 5 | \n",
707 | " 6 | \n",
708 | " Elizabeth | \n",
709 | " Brown | \n",
710 | " Prof Duncan | \n",
711 | " part_time | \n",
712 | "
\n",
713 | " \n",
714 | " 6 | \n",
715 | " 7 | \n",
716 | " Amanda | \n",
717 | " Schultz | \n",
718 | " Prof Kennedy | \n",
719 | " part_time | \n",
720 | "
\n",
721 | " \n",
722 | " 7 | \n",
723 | " 8 | \n",
724 | " Tanner | \n",
725 | " Perkins | \n",
726 | " Prof Alvarez | \n",
727 | " part_time | \n",
728 | "
\n",
729 | " \n",
730 | " 8 | \n",
731 | " 9 | \n",
732 | " Ashley | \n",
733 | " Gonzales | \n",
734 | " Prof Kennedy | \n",
735 | " part_time | \n",
736 | "
\n",
737 | " \n",
738 | " 9 | \n",
739 | " 10 | \n",
740 | " Latonya | \n",
741 | " Porter | \n",
742 | " Prof Alvarez | \n",
743 | " part_time | \n",
744 | "
\n",
745 | " \n",
746 | " 10 | \n",
747 | " 11 | \n",
748 | " Jacinda | \n",
749 | " Peterson | \n",
750 | " Prof Alvarez | \n",
751 | " part_time | \n",
752 | "
\n",
753 | " \n",
754 | "
\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 | " student_id | \n",
817 | " first_name | \n",
818 | " last_name | \n",
819 | " adviser | \n",
820 | " final_grade | \n",
821 | "
\n",
822 | " \n",
823 | " \n",
824 | " \n",
825 | " 0 | \n",
826 | " 1 | \n",
827 | " Melvin | \n",
828 | " Ware | \n",
829 | " Prof Duncan | \n",
830 | " 95 | \n",
831 | "
\n",
832 | " \n",
833 | " 1 | \n",
834 | " 3 | \n",
835 | " Joseph | \n",
836 | " Paul | \n",
837 | " Prof Alvarez | \n",
838 | " 71 | \n",
839 | "
\n",
840 | " \n",
841 | " 2 | \n",
842 | " 6 | \n",
843 | " Elizabeth | \n",
844 | " Brown | \n",
845 | " Prof Duncan | \n",
846 | " 76 | \n",
847 | "
\n",
848 | " \n",
849 | " 3 | \n",
850 | " 7 | \n",
851 | " Amanda | \n",
852 | " Schultz | \n",
853 | " Prof Kennedy | \n",
854 | " 91 | \n",
855 | "
\n",
856 | " \n",
857 | " 4 | \n",
858 | " 8 | \n",
859 | " Tanner | \n",
860 | " Perkins | \n",
861 | " Prof Alvarez | \n",
862 | " 75 | \n",
863 | "
\n",
864 | " \n",
865 | " 5 | \n",
866 | " 11 | \n",
867 | " Jacinda | \n",
868 | " Peterson | \n",
869 | " Prof Alvarez | \n",
870 | " 59 | \n",
871 | "
\n",
872 | " \n",
873 | "
\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 | " student_id | \n",
926 | " final_grade | \n",
927 | " first_name | \n",
928 | " last_name | \n",
929 | "
\n",
930 | " \n",
931 | " \n",
932 | " \n",
933 | " 0 | \n",
934 | " 1 | \n",
935 | " 95.0 | \n",
936 | " Melvin | \n",
937 | " Ware | \n",
938 | "
\n",
939 | " \n",
940 | " 1 | \n",
941 | " 3 | \n",
942 | " 71.0 | \n",
943 | " Joseph | \n",
944 | " Paul | \n",
945 | "
\n",
946 | " \n",
947 | " 2 | \n",
948 | " 6 | \n",
949 | " 76.0 | \n",
950 | " Elizabeth | \n",
951 | " Brown | \n",
952 | "
\n",
953 | " \n",
954 | " 3 | \n",
955 | " 7 | \n",
956 | " 91.0 | \n",
957 | " Amanda | \n",
958 | " Schultz | \n",
959 | "
\n",
960 | " \n",
961 | " 4 | \n",
962 | " 8 | \n",
963 | " 75.0 | \n",
964 | " Tanner | \n",
965 | " Perkins | \n",
966 | "
\n",
967 | " \n",
968 | " 5 | \n",
969 | " 11 | \n",
970 | " 59.0 | \n",
971 | " Jacinda | \n",
972 | " Peterson | \n",
973 | "
\n",
974 | " \n",
975 | " 6 | \n",
976 | " 2 | \n",
977 | " NaN | \n",
978 | " Thomas | \n",
979 | " Moore | \n",
980 | "
\n",
981 | " \n",
982 | " 7 | \n",
983 | " 4 | \n",
984 | " NaN | \n",
985 | " Sarah | \n",
986 | " Cruz | \n",
987 | "
\n",
988 | " \n",
989 | " 8 | \n",
990 | " 5 | \n",
991 | " NaN | \n",
992 | " David | \n",
993 | " Freeman | \n",
994 | "
\n",
995 | " \n",
996 | " 9 | \n",
997 | " 9 | \n",
998 | " NaN | \n",
999 | " Ashley | \n",
1000 | " Gonzales | \n",
1001 | "
\n",
1002 | " \n",
1003 | " 10 | \n",
1004 | " 10 | \n",
1005 | " NaN | \n",
1006 | " Latonya | \n",
1007 | " Porter | \n",
1008 | "
\n",
1009 | " \n",
1010 | "
\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 | " final_grade | \n",
1075 | "
\n",
1076 | " \n",
1077 | " student_id | \n",
1078 | " | \n",
1079 | "
\n",
1080 | " \n",
1081 | " \n",
1082 | " \n",
1083 | " 1 | \n",
1084 | " 95 | \n",
1085 | "
\n",
1086 | " \n",
1087 | " 3 | \n",
1088 | " 71 | \n",
1089 | "
\n",
1090 | " \n",
1091 | " 6 | \n",
1092 | " 76 | \n",
1093 | "
\n",
1094 | " \n",
1095 | " 7 | \n",
1096 | " 91 | \n",
1097 | "
\n",
1098 | " \n",
1099 | " 8 | \n",
1100 | " 75 | \n",
1101 | "
\n",
1102 | " \n",
1103 | "
\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 | " first_name | \n",
1153 | " last_name | \n",
1154 | " adviser | \n",
1155 | "
\n",
1156 | " \n",
1157 | " student_id | \n",
1158 | " | \n",
1159 | " | \n",
1160 | " | \n",
1161 | "
\n",
1162 | " \n",
1163 | " \n",
1164 | " \n",
1165 | " 1 | \n",
1166 | " Melvin | \n",
1167 | " Ware | \n",
1168 | " Prof Duncan | \n",
1169 | "
\n",
1170 | " \n",
1171 | " 2 | \n",
1172 | " Thomas | \n",
1173 | " Moore | \n",
1174 | " Prof Brown | \n",
1175 | "
\n",
1176 | " \n",
1177 | " 3 | \n",
1178 | " Joseph | \n",
1179 | " Paul | \n",
1180 | " Prof Alvarez | \n",
1181 | "
\n",
1182 | " \n",
1183 | " 4 | \n",
1184 | " Sarah | \n",
1185 | " Cruz | \n",
1186 | " Prof Duncan | \n",
1187 | "
\n",
1188 | " \n",
1189 | " 5 | \n",
1190 | " David | \n",
1191 | " Freeman | \n",
1192 | " Prof Duncan | \n",
1193 | "
\n",
1194 | " \n",
1195 | "
\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 | " first_name | \n",
1245 | " last_name | \n",
1246 | " adviser | \n",
1247 | " python_grade | \n",
1248 | "
\n",
1249 | " \n",
1250 | " student_id | \n",
1251 | " | \n",
1252 | " | \n",
1253 | " | \n",
1254 | " | \n",
1255 | "
\n",
1256 | " \n",
1257 | " \n",
1258 | " \n",
1259 | " 1 | \n",
1260 | " Melvin | \n",
1261 | " Ware | \n",
1262 | " Prof Duncan | \n",
1263 | " 95.0 | \n",
1264 | "
\n",
1265 | " \n",
1266 | " 2 | \n",
1267 | " Thomas | \n",
1268 | " Moore | \n",
1269 | " Prof Brown | \n",
1270 | " NaN | \n",
1271 | "
\n",
1272 | " \n",
1273 | " 3 | \n",
1274 | " Joseph | \n",
1275 | " Paul | \n",
1276 | " Prof Alvarez | \n",
1277 | " 71.0 | \n",
1278 | "
\n",
1279 | " \n",
1280 | " 4 | \n",
1281 | " Sarah | \n",
1282 | " Cruz | \n",
1283 | " Prof Duncan | \n",
1284 | " NaN | \n",
1285 | "
\n",
1286 | " \n",
1287 | " 5 | \n",
1288 | " David | \n",
1289 | " Freeman | \n",
1290 | " Prof Duncan | \n",
1291 | " NaN | \n",
1292 | "
\n",
1293 | " \n",
1294 | " 6 | \n",
1295 | " Elizabeth | \n",
1296 | " Brown | \n",
1297 | " Prof Duncan | \n",
1298 | " 76.0 | \n",
1299 | "
\n",
1300 | " \n",
1301 | " 7 | \n",
1302 | " Amanda | \n",
1303 | " Schultz | \n",
1304 | " Prof Kennedy | \n",
1305 | " 91.0 | \n",
1306 | "
\n",
1307 | " \n",
1308 | " 8 | \n",
1309 | " Tanner | \n",
1310 | " Perkins | \n",
1311 | " Prof Alvarez | \n",
1312 | " 75.0 | \n",
1313 | "
\n",
1314 | " \n",
1315 | " 9 | \n",
1316 | " Ashley | \n",
1317 | " Gonzales | \n",
1318 | " Prof Kennedy | \n",
1319 | " NaN | \n",
1320 | "
\n",
1321 | " \n",
1322 | " 10 | \n",
1323 | " Latonya | \n",
1324 | " Porter | \n",
1325 | " Prof Alvarez | \n",
1326 | " NaN | \n",
1327 | "
\n",
1328 | " \n",
1329 | " 11 | \n",
1330 | " Jacinda | \n",
1331 | " Peterson | \n",
1332 | " Prof Alvarez | \n",
1333 | " 59.0 | \n",
1334 | "
\n",
1335 | " \n",
1336 | "
\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 | " student_id | \n",
1413 | " final_grade | \n",
1414 | " first_name | \n",
1415 | " last_name | \n",
1416 | "
\n",
1417 | " \n",
1418 | " \n",
1419 | " \n",
1420 | " 0 | \n",
1421 | " 1 | \n",
1422 | " 95 | \n",
1423 | " Melvin | \n",
1424 | " Ware | \n",
1425 | "
\n",
1426 | " \n",
1427 | " 1 | \n",
1428 | " 3 | \n",
1429 | " 71 | \n",
1430 | " Joseph | \n",
1431 | " Paul | \n",
1432 | "
\n",
1433 | " \n",
1434 | " 2 | \n",
1435 | " 6 | \n",
1436 | " 76 | \n",
1437 | " Elizabeth | \n",
1438 | " Brown | \n",
1439 | "
\n",
1440 | " \n",
1441 | " 3 | \n",
1442 | " 7 | \n",
1443 | " 91 | \n",
1444 | " Amanda | \n",
1445 | " Schultz | \n",
1446 | "
\n",
1447 | " \n",
1448 | " 4 | \n",
1449 | " 8 | \n",
1450 | " 75 | \n",
1451 | " Tanner | \n",
1452 | " Perkins | \n",
1453 | "
\n",
1454 | " \n",
1455 | " 5 | \n",
1456 | " 11 | \n",
1457 | " 59 | \n",
1458 | " Jacinda | \n",
1459 | " Peterson | \n",
1460 | "
\n",
1461 | " \n",
1462 | "
\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 | " student_id | \n",
1528 | " final_grade | \n",
1529 | " first_name | \n",
1530 | " last_name | \n",
1531 | " adviser | \n",
1532 | "
\n",
1533 | " \n",
1534 | " \n",
1535 | " \n",
1536 | " 0 | \n",
1537 | " 1 | \n",
1538 | " 95 | \n",
1539 | " Melvin | \n",
1540 | " Ware | \n",
1541 | " Prof Duncan | \n",
1542 | "
\n",
1543 | " \n",
1544 | " 1 | \n",
1545 | " 3 | \n",
1546 | " 71 | \n",
1547 | " Joseph | \n",
1548 | " Paul | \n",
1549 | " Prof Alvarez | \n",
1550 | "
\n",
1551 | " \n",
1552 | " 2 | \n",
1553 | " 6 | \n",
1554 | " 76 | \n",
1555 | " Elizabeth | \n",
1556 | " Brown | \n",
1557 | " Prof Duncan | \n",
1558 | "
\n",
1559 | " \n",
1560 | " 3 | \n",
1561 | " 7 | \n",
1562 | " 91 | \n",
1563 | " Amanda | \n",
1564 | " Schultz | \n",
1565 | " Prof Kennedy | \n",
1566 | "
\n",
1567 | " \n",
1568 | " 4 | \n",
1569 | " 8 | \n",
1570 | " 75 | \n",
1571 | " Tanner | \n",
1572 | " Perkins | \n",
1573 | " Prof Alvarez | \n",
1574 | "
\n",
1575 | " \n",
1576 | " 5 | \n",
1577 | " 11 | \n",
1578 | " 59 | \n",
1579 | " Jacinda | \n",
1580 | " Peterson | \n",
1581 | " Prof Alvarez | \n",
1582 | "
\n",
1583 | " \n",
1584 | " 6 | \n",
1585 | " 15 | \n",
1586 | " 86 | \n",
1587 | " NaN | \n",
1588 | " NaN | \n",
1589 | " NaN | \n",
1590 | "
\n",
1591 | " \n",
1592 | "
\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 | " ORDER_ID | \n",
1654 | " DATETIME | \n",
1655 | " RESTAURANT_ID | \n",
1656 | " TYPE | \n",
1657 | " DRINKS | \n",
1658 | " COOKIES | \n",
1659 | " MAIN | \n",
1660 | " BASE | \n",
1661 | " SIDE_1 | \n",
1662 | " SIDE_2 | \n",
1663 | "
\n",
1664 | " \n",
1665 | " \n",
1666 | " \n",
1667 | " 0 | \n",
1668 | " O1820060 | \n",
1669 | " 2018-10-11 17:25:50 | \n",
1670 | " R10002 | \n",
1671 | " IN_STORE | \n",
1672 | " 1.0 | \n",
1673 | " 2.0 | \n",
1674 | " NaN | \n",
1675 | " NaN | \n",
1676 | " NaN | \n",
1677 | " NaN | \n",
1678 | "
\n",
1679 | " \n",
1680 | " 1 | \n",
1681 | " O1011112 | \n",
1682 | " 2018-05-31 11:35:00 | \n",
1683 | " R10003 | \n",
1684 | " IN_STORE | \n",
1685 | " 0.0 | \n",
1686 | " 0.0 | \n",
1687 | " NaN | \n",
1688 | " NaN | \n",
1689 | " NaN | \n",
1690 | " NaN | \n",
1691 | "
\n",
1692 | " \n",
1693 | " 2 | \n",
1694 | " O752854 | \n",
1695 | " 2018-04-21 18:12:57 | \n",
1696 | " R10001 | \n",
1697 | " DELIVERY | \n",
1698 | " 0.0 | \n",
1699 | " 2.0 | \n",
1700 | " I0 | \n",
1701 | " I7 | \n",
1702 | " I15 | \n",
1703 | " I14 | \n",
1704 | "
\n",
1705 | " \n",
1706 | " 3 | \n",
1707 | " O2076864 | \n",
1708 | " 2018-11-17 12:50:52 | \n",
1709 | " R10005 | \n",
1710 | " PICKUP | \n",
1711 | " 1.0 | \n",
1712 | " 0.0 | \n",
1713 | " I0 | \n",
1714 | " I5 | \n",
1715 | " I9 | \n",
1716 | " I12 | \n",
1717 | "
\n",
1718 | " \n",
1719 | " 4 | \n",
1720 | " O1988898 | \n",
1721 | " 2018-11-04 18:37:24 | \n",
1722 | " R10008 | \n",
1723 | " IN_STORE | \n",
1724 | " 0.0 | \n",
1725 | " 0.0 | \n",
1726 | " I1 | \n",
1727 | " I7 | \n",
1728 | " I9 | \n",
1729 | " I9 | \n",
1730 | "
\n",
1731 | " \n",
1732 | "
\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 | " ITEM_ID | \n",
1787 | " ITEM_NAME | \n",
1788 | " ITEM_TYPE | \n",
1789 | "
\n",
1790 | " \n",
1791 | " \n",
1792 | " \n",
1793 | " 0 | \n",
1794 | " I7 | \n",
1795 | " Farro with Summer Vegetables | \n",
1796 | " Bases | \n",
1797 | "
\n",
1798 | " \n",
1799 | " 1 | \n",
1800 | " I39 | \n",
1801 | " Spindrift Lemon | \n",
1802 | " Drinks | \n",
1803 | "
\n",
1804 | " \n",
1805 | " 2 | \n",
1806 | " I5 | \n",
1807 | " Classic Brown Rice | \n",
1808 | " Bases | \n",
1809 | "
\n",
1810 | " \n",
1811 | " 3 | \n",
1812 | " I36 | \n",
1813 | " Kombucha | \n",
1814 | " Drinks | \n",
1815 | "
\n",
1816 | " \n",
1817 | " 4 | \n",
1818 | " I8 | \n",
1819 | " Cauliflower with Garlic and Parmesan | \n",
1820 | " Market Sides | \n",
1821 | "
\n",
1822 | " \n",
1823 | "
\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 | " RESTAURANT_ID | \n",
1871 | " NAME | \n",
1872 | " ADDRESS | \n",
1873 | " LAT | \n",
1874 | " LONG | \n",
1875 | " OPENING_DATE | \n",
1876 | " DELIVERY_START | \n",
1877 | "
\n",
1878 | " \n",
1879 | " \n",
1880 | " \n",
1881 | " 0 | \n",
1882 | " R10001 | \n",
1883 | " Columbia | \n",
1884 | " 2884 Broadway, New York, NY 10025 | \n",
1885 | " 40.811470 | \n",
1886 | " -73.961230 | \n",
1887 | " 8/9/2014 | \n",
1888 | " 2017-01-01 | \n",
1889 | "
\n",
1890 | " \n",
1891 | " 1 | \n",
1892 | " R10002 | \n",
1893 | " Midtown | \n",
1894 | " 1379 6th Ave, New York, NY 10019 | \n",
1895 | " 40.763640 | \n",
1896 | " -73.977960 | \n",
1897 | " 3/19/2013 | \n",
1898 | " 2018-05-01 | \n",
1899 | "
\n",
1900 | " \n",
1901 | " 2 | \n",
1902 | " R10005 | \n",
1903 | " Flatiron | \n",
1904 | " 40 W 25th St, New York, NY 10010 | \n",
1905 | " 40.743600 | \n",
1906 | " -73.991070 | \n",
1907 | " 11/14/2013 | \n",
1908 | " 2016-03-05 | \n",
1909 | "
\n",
1910 | " \n",
1911 | " 3 | \n",
1912 | " R10008 | \n",
1913 | " Williamsburg | \n",
1914 | " 45 S 3rd St, Brooklyn, NY 11249 | \n",
1915 | " 40.713749 | \n",
1916 | " -73.965782 | \n",
1917 | " 10/12/2015 | \n",
1918 | " 2017-01-01 | \n",
1919 | "
\n",
1920 | " \n",
1921 | " 4 | \n",
1922 | " R10004 | \n",
1923 | " NYU | \n",
1924 | " 109 Macdougal St, New York, NY 10012 | \n",
1925 | " 40.729930 | \n",
1926 | " -74.000820 | \n",
1927 | " 1/10/2014 | \n",
1928 | " 2017-01-01 | \n",
1929 | "
\n",
1930 | " \n",
1931 | "
\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 | " ORDER_ID | \n",
1999 | " DATETIME | \n",
2000 | " RESTAURANT_ID | \n",
2001 | " TYPE | \n",
2002 | " DRINKS | \n",
2003 | " COOKIES | \n",
2004 | " MAIN | \n",
2005 | " BASE | \n",
2006 | " SIDE_1 | \n",
2007 | " SIDE_2 | \n",
2008 | " RESTAURANT_NAME | \n",
2009 | "
\n",
2010 | " \n",
2011 | " \n",
2012 | " \n",
2013 | " 0 | \n",
2014 | " O1820060 | \n",
2015 | " 2018-10-11 17:25:50 | \n",
2016 | " R10002 | \n",
2017 | " IN_STORE | \n",
2018 | " 1.0 | \n",
2019 | " 2.0 | \n",
2020 | " NaN | \n",
2021 | " NaN | \n",
2022 | " NaN | \n",
2023 | " NaN | \n",
2024 | " Midtown | \n",
2025 | "
\n",
2026 | " \n",
2027 | " 1 | \n",
2028 | " O1011112 | \n",
2029 | " 2018-05-31 11:35:00 | \n",
2030 | " R10003 | \n",
2031 | " IN_STORE | \n",
2032 | " 0.0 | \n",
2033 | " 0.0 | \n",
2034 | " NaN | \n",
2035 | " NaN | \n",
2036 | " NaN | \n",
2037 | " NaN | \n",
2038 | " Bryant Park | \n",
2039 | "
\n",
2040 | " \n",
2041 | " 2 | \n",
2042 | " O752854 | \n",
2043 | " 2018-04-21 18:12:57 | \n",
2044 | " R10001 | \n",
2045 | " DELIVERY | \n",
2046 | " 0.0 | \n",
2047 | " 2.0 | \n",
2048 | " I0 | \n",
2049 | " I7 | \n",
2050 | " I15 | \n",
2051 | " I14 | \n",
2052 | " Columbia | \n",
2053 | "
\n",
2054 | " \n",
2055 | " 3 | \n",
2056 | " O2076864 | \n",
2057 | " 2018-11-17 12:50:52 | \n",
2058 | " R10005 | \n",
2059 | " PICKUP | \n",
2060 | " 1.0 | \n",
2061 | " 0.0 | \n",
2062 | " I0 | \n",
2063 | " I5 | \n",
2064 | " I9 | \n",
2065 | " I12 | \n",
2066 | " Flatiron | \n",
2067 | "
\n",
2068 | " \n",
2069 | " 4 | \n",
2070 | " O1988898 | \n",
2071 | " 2018-11-04 18:37:24 | \n",
2072 | " R10008 | \n",
2073 | " IN_STORE | \n",
2074 | " 0.0 | \n",
2075 | " 0.0 | \n",
2076 | " I1 | \n",
2077 | " I7 | \n",
2078 | " I9 | \n",
2079 | " I9 | \n",
2080 | " Williamsburg | \n",
2081 | "
\n",
2082 | " \n",
2083 | "
\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 | " ORDER_ID | \n",
2138 | " DATETIME | \n",
2139 | " RESTAURANT_ID | \n",
2140 | " TYPE | \n",
2141 | " DRINKS | \n",
2142 | " COOKIES | \n",
2143 | " MAIN | \n",
2144 | " BASE | \n",
2145 | " SIDE_1 | \n",
2146 | " SIDE_2 | \n",
2147 | " RESTAURANT_NAME | \n",
2148 | " ITEM_ID | \n",
2149 | " MAIN_NAME | \n",
2150 | "
\n",
2151 | " \n",
2152 | " \n",
2153 | " \n",
2154 | " 0 | \n",
2155 | " O1820060 | \n",
2156 | " 2018-10-11 17:25:50 | \n",
2157 | " R10002 | \n",
2158 | " IN_STORE | \n",
2159 | " 1.0 | \n",
2160 | " 2.0 | \n",
2161 | " NaN | \n",
2162 | " NaN | \n",
2163 | " NaN | \n",
2164 | " NaN | \n",
2165 | " Midtown | \n",
2166 | " NaN | \n",
2167 | " NaN | \n",
2168 | "
\n",
2169 | " \n",
2170 | " 1 | \n",
2171 | " O1011112 | \n",
2172 | " 2018-05-31 11:35:00 | \n",
2173 | " R10003 | \n",
2174 | " IN_STORE | \n",
2175 | " 0.0 | \n",
2176 | " 0.0 | \n",
2177 | " NaN | \n",
2178 | " NaN | \n",
2179 | " NaN | \n",
2180 | " NaN | \n",
2181 | " Bryant Park | \n",
2182 | " NaN | \n",
2183 | " NaN | \n",
2184 | "
\n",
2185 | " \n",
2186 | " 2 | \n",
2187 | " O752854 | \n",
2188 | " 2018-04-21 18:12:57 | \n",
2189 | " R10001 | \n",
2190 | " DELIVERY | \n",
2191 | " 0.0 | \n",
2192 | " 2.0 | \n",
2193 | " I0 | \n",
2194 | " I7 | \n",
2195 | " I15 | \n",
2196 | " I14 | \n",
2197 | " Columbia | \n",
2198 | " I0 | \n",
2199 | " Charred Chicken Marketbowl | \n",
2200 | "
\n",
2201 | " \n",
2202 | " 3 | \n",
2203 | " O2076864 | \n",
2204 | " 2018-11-17 12:50:52 | \n",
2205 | " R10005 | \n",
2206 | " PICKUP | \n",
2207 | " 1.0 | \n",
2208 | " 0.0 | \n",
2209 | " I0 | \n",
2210 | " I5 | \n",
2211 | " I9 | \n",
2212 | " I12 | \n",
2213 | " Flatiron | \n",
2214 | " I0 | \n",
2215 | " Charred Chicken Marketbowl | \n",
2216 | "
\n",
2217 | " \n",
2218 | " 4 | \n",
2219 | " O1988898 | \n",
2220 | " 2018-11-04 18:37:24 | \n",
2221 | " R10008 | \n",
2222 | " IN_STORE | \n",
2223 | " 0.0 | \n",
2224 | " 0.0 | \n",
2225 | " I1 | \n",
2226 | " I7 | \n",
2227 | " I9 | \n",
2228 | " I9 | \n",
2229 | " Williamsburg | \n",
2230 | " I1 | \n",
2231 | " Spicy Meatballs Marketbowl | \n",
2232 | "
\n",
2233 | " \n",
2234 | "
\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 | " ORDER_ID | \n",
2375 | " DATETIME | \n",
2376 | " RESTAURANT_ID | \n",
2377 | " TYPE | \n",
2378 | " DRINKS | \n",
2379 | " COOKIES | \n",
2380 | " MAIN | \n",
2381 | " BASE | \n",
2382 | " SIDE_1 | \n",
2383 | " SIDE_2 | \n",
2384 | " RESTAURANT_NAME | \n",
2385 | " MAIN_NAME | \n",
2386 | " BASE_NAME | \n",
2387 | " SIDE_1_NAME | \n",
2388 | " SIDE_2_NAME | \n",
2389 | "
\n",
2390 | " \n",
2391 | " \n",
2392 | " \n",
2393 | " 0 | \n",
2394 | " O1820060 | \n",
2395 | " 2018-10-11 17:25:50 | \n",
2396 | " R10002 | \n",
2397 | " IN_STORE | \n",
2398 | " 1.0 | \n",
2399 | " 2.0 | \n",
2400 | " NaN | \n",
2401 | " NaN | \n",
2402 | " NaN | \n",
2403 | " NaN | \n",
2404 | " Midtown | \n",
2405 | " NaN | \n",
2406 | " NaN | \n",
2407 | " NaN | \n",
2408 | " NaN | \n",
2409 | "
\n",
2410 | " \n",
2411 | " 1 | \n",
2412 | " O1011112 | \n",
2413 | " 2018-05-31 11:35:00 | \n",
2414 | " R10003 | \n",
2415 | " IN_STORE | \n",
2416 | " 0.0 | \n",
2417 | " 0.0 | \n",
2418 | " NaN | \n",
2419 | " NaN | \n",
2420 | " NaN | \n",
2421 | " NaN | \n",
2422 | " Bryant Park | \n",
2423 | " NaN | \n",
2424 | " NaN | \n",
2425 | " NaN | \n",
2426 | " NaN | \n",
2427 | "
\n",
2428 | " \n",
2429 | " 2 | \n",
2430 | " O752854 | \n",
2431 | " 2018-04-21 18:12:57 | \n",
2432 | " R10001 | \n",
2433 | " DELIVERY | \n",
2434 | " 0.0 | \n",
2435 | " 2.0 | \n",
2436 | " I0 | \n",
2437 | " I7 | \n",
2438 | " I15 | \n",
2439 | " I14 | \n",
2440 | " Columbia | \n",
2441 | " Charred Chicken Marketbowl | \n",
2442 | " Farro with Summer Vegetables | \n",
2443 | " Snap Peas | \n",
2444 | " Green Goddess Beans with Sesame | \n",
2445 | "
\n",
2446 | " \n",
2447 | " 3 | \n",
2448 | " O2076864 | \n",
2449 | " 2018-11-17 12:50:52 | \n",
2450 | " R10005 | \n",
2451 | " PICKUP | \n",
2452 | " 1.0 | \n",
2453 | " 0.0 | \n",
2454 | " I0 | \n",
2455 | " I5 | \n",
2456 | " I9 | \n",
2457 | " I12 | \n",
2458 | " Flatiron | \n",
2459 | " Charred Chicken Marketbowl | \n",
2460 | " Classic Brown Rice | \n",
2461 | " Jasper Hill Mac & Cheese | \n",
2462 | " Cashew Kale Caesar | \n",
2463 | "
\n",
2464 | " \n",
2465 | " 4 | \n",
2466 | " O1988898 | \n",
2467 | " 2018-11-04 18:37:24 | \n",
2468 | " R10008 | \n",
2469 | " IN_STORE | \n",
2470 | " 0.0 | \n",
2471 | " 0.0 | \n",
2472 | " I1 | \n",
2473 | " I7 | \n",
2474 | " I9 | \n",
2475 | " I9 | \n",
2476 | " Williamsburg | \n",
2477 | " Spicy Meatballs Marketbowl | \n",
2478 | " Farro with Summer Vegetables | \n",
2479 | " Jasper Hill Mac & Cheese | \n",
2480 | " Jasper Hill Mac & Cheese | \n",
2481 | "
\n",
2482 | " \n",
2483 | "
\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.
--------------------------------------------------------------------------------