2130 lines
97 KiB
Plaintext
2130 lines
97 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "90041b00-672b-4bd4-a8e8-0cab3f0548af",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Lab 04: Data Science Tools\n",
|
||
"\n",
|
||
"## 0. Jupyter Notebooks\n",
|
||
"\n",
|
||
"Welcome to your first Jupyter notebook! Notebooks are made up of cells. Some cells contain text (like this one) and others contain Python code. \n",
|
||
"\n",
|
||
"Each cell can be in two different modes: editing or running. To edit a cell, double-click on it. When you're done editing, press **shift+Enter** to run it. You can use [Markdown](https://www.markdownguide.org/cheat-sheet/) to add basic formatting to the text. Before you go on, try editing the text in this cell."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"id": "5923b0d7-c0e0-48fa-b765-4aa6002c2d4f",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"2"
|
||
]
|
||
},
|
||
"execution_count": 1,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Other cells are code cells, containing Python code. (This is a comment, of course!)\n",
|
||
"# Try running this cell (again, shift+Enter). You'll see the result of the final statement \n",
|
||
"# printed below the cell. \n",
|
||
"# Then try changing the Python code and re-run it.\n",
|
||
"\n",
|
||
"1+1"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "257ef44f-8f53-4136-9d0d-23a811ec53e9",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 0.1 Cells share state\n",
|
||
"\n",
|
||
"Even though code cells run one at a time, anything that happens in a cell (like declaring a variable or running a function) affects the whole notebook. Try running these two cells a few times, in different orders. What happens when you run *Cell B* over and over?"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 2,
|
||
"id": "0e2a2927-f6d1-4b13-97ae-ff97416723e9",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"10"
|
||
]
|
||
},
|
||
"execution_count": 2,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Cell A\n",
|
||
"x = 10\n",
|
||
"x"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"id": "69dd7908-b213-4d0f-8016-e46a4a491961",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"20"
|
||
]
|
||
},
|
||
"execution_count": 3,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Cell B\n",
|
||
"x = x * 2\n",
|
||
"x"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "adc581ac-db13-40a8-bcfc-bf5d6e5472c5",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 0.2 Saving your work\n",
|
||
"\n",
|
||
"When you finish working on a notebook, save your work using the icon in the menu bar above. Your notebook is stored in the file `lab_04.ipynb` in the lab directory. You can commit your changes to `ipynb` files just like any other file. Once you finish with Jupyter, you can stop the server by pressing **Control + C** in the Terminal. "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "c9c4aec2-949d-4a2e-b736-f5182b1f9ff7",
|
||
"metadata": {},
|
||
"source": [
|
||
"---\n",
|
||
"\n",
|
||
"## 1. Pandas\n",
|
||
"\n",
|
||
"Pandas is probably the most important Python library for data science. Pandas provides an object called a **DataFrame**, which is basically a table with rows and columns. Most of the time, you will load data into Pandas using a `.csv` file. CSV files can be exported from Excel or Google Sheets, and are a common format for public data sets. \n",
|
||
"\n",
|
||
"In this lab, we'll be working with two data sets: The first contains Pokémon characteristics and the second comes from a wide-scale survey conducted by the US Centers for Disease Control ([details](https://www.cdc.gov/brfss/annual_data/annual_2020.html)). We will demonstrate techniques with Pokémon; your job is to replicate these tasks with the CDC dataset. \n",
|
||
"\n",
|
||
"**Note:** Pandas has *extensive* capabilities, and there's no way we could possibly present them all here. If you have a clearly-formed idea of what you want to do with tabular data, there's a way to do it. This lab introduces *some* of what Pandas can do, but expect to spend time reading the documentation and Stack Overflow when you start working on new tasks. \n",
|
||
"\n",
|
||
"### 1.0 Getting started\n",
|
||
"\n",
|
||
"First, we'll import pandas (using the conventional variable name `pd`) and load the two datasets."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"id": "ba09a0f8-27d9-456f-aeff-3980e3362d5b",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import pandas as pd"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"id": "a29d508a-2d9a-4d62-9ff6-7a0ecfd5eba4",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"pokemon = pd.read_csv(\"pokemon.csv\")\n",
|
||
"people = pd.read_csv(\"brfss_2020.csv\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "d4e0b811-b8bf-4e9a-a934-3aad8f0520bb",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 1.1 A first look\n",
|
||
"\n",
|
||
"#### Demo\n",
|
||
"\n",
|
||
"Let's start by learning the *shape* of the data. How many columns are there? How many rows? What kinds of data are included?"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 6,
|
||
"id": "579d8dda-ca39-48b1-8819-b17651029729",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>name</th>\n",
|
||
" <th>type</th>\n",
|
||
" <th>subtype</th>\n",
|
||
" <th>total</th>\n",
|
||
" <th>hp</th>\n",
|
||
" <th>attack</th>\n",
|
||
" <th>defense</th>\n",
|
||
" <th>special_attack</th>\n",
|
||
" <th>special_defense</th>\n",
|
||
" <th>speed</th>\n",
|
||
" <th>generation</th>\n",
|
||
" <th>legendary</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>Bulbasaur</td>\n",
|
||
" <td>Grass</td>\n",
|
||
" <td>Poison</td>\n",
|
||
" <td>318</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>49</td>\n",
|
||
" <td>49</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>Ivysaur</td>\n",
|
||
" <td>Grass</td>\n",
|
||
" <td>Poison</td>\n",
|
||
" <td>405</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>62</td>\n",
|
||
" <td>63</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>Venusaur</td>\n",
|
||
" <td>Grass</td>\n",
|
||
" <td>Poison</td>\n",
|
||
" <td>525</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>82</td>\n",
|
||
" <td>83</td>\n",
|
||
" <td>100</td>\n",
|
||
" <td>100</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>VenusaurMega Venusaur</td>\n",
|
||
" <td>Grass</td>\n",
|
||
" <td>Poison</td>\n",
|
||
" <td>625</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>100</td>\n",
|
||
" <td>123</td>\n",
|
||
" <td>122</td>\n",
|
||
" <td>120</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>Charmander</td>\n",
|
||
" <td>Fire</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>309</td>\n",
|
||
" <td>39</td>\n",
|
||
" <td>52</td>\n",
|
||
" <td>43</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>795</th>\n",
|
||
" <td>Diancie</td>\n",
|
||
" <td>Rock</td>\n",
|
||
" <td>Fairy</td>\n",
|
||
" <td>600</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>100</td>\n",
|
||
" <td>150</td>\n",
|
||
" <td>100</td>\n",
|
||
" <td>150</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>True</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>796</th>\n",
|
||
" <td>DiancieMega Diancie</td>\n",
|
||
" <td>Rock</td>\n",
|
||
" <td>Fairy</td>\n",
|
||
" <td>700</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>160</td>\n",
|
||
" <td>110</td>\n",
|
||
" <td>160</td>\n",
|
||
" <td>110</td>\n",
|
||
" <td>110</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>True</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>797</th>\n",
|
||
" <td>HoopaHoopa Confined</td>\n",
|
||
" <td>Psychic</td>\n",
|
||
" <td>Ghost</td>\n",
|
||
" <td>600</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>110</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>150</td>\n",
|
||
" <td>130</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>True</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>798</th>\n",
|
||
" <td>HoopaHoopa Unbound</td>\n",
|
||
" <td>Psychic</td>\n",
|
||
" <td>Dark</td>\n",
|
||
" <td>680</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>160</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>170</td>\n",
|
||
" <td>130</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>True</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>799</th>\n",
|
||
" <td>Volcanion</td>\n",
|
||
" <td>Fire</td>\n",
|
||
" <td>Water</td>\n",
|
||
" <td>600</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>110</td>\n",
|
||
" <td>120</td>\n",
|
||
" <td>130</td>\n",
|
||
" <td>90</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>True</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>800 rows × 12 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" name type subtype total hp attack defense \\\n",
|
||
"0 Bulbasaur Grass Poison 318 45 49 49 \n",
|
||
"1 Ivysaur Grass Poison 405 60 62 63 \n",
|
||
"2 Venusaur Grass Poison 525 80 82 83 \n",
|
||
"3 VenusaurMega Venusaur Grass Poison 625 80 100 123 \n",
|
||
"4 Charmander Fire NaN 309 39 52 43 \n",
|
||
".. ... ... ... ... .. ... ... \n",
|
||
"795 Diancie Rock Fairy 600 50 100 150 \n",
|
||
"796 DiancieMega Diancie Rock Fairy 700 50 160 110 \n",
|
||
"797 HoopaHoopa Confined Psychic Ghost 600 80 110 60 \n",
|
||
"798 HoopaHoopa Unbound Psychic Dark 680 80 160 60 \n",
|
||
"799 Volcanion Fire Water 600 80 110 120 \n",
|
||
"\n",
|
||
" special_attack special_defense speed generation legendary \n",
|
||
"0 65 65 45 1 False \n",
|
||
"1 80 80 60 1 False \n",
|
||
"2 100 100 80 1 False \n",
|
||
"3 122 120 80 1 False \n",
|
||
"4 60 50 65 1 False \n",
|
||
".. ... ... ... ... ... \n",
|
||
"795 100 150 50 6 True \n",
|
||
"796 160 110 110 6 True \n",
|
||
"797 150 130 70 6 True \n",
|
||
"798 170 130 80 6 True \n",
|
||
"799 130 90 70 6 True \n",
|
||
"\n",
|
||
"[800 rows x 12 columns]"
|
||
]
|
||
},
|
||
"execution_count": 6,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pokemon"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "ee8b0718-56f9-4fc8-bd35-fa0ccb445179",
|
||
"metadata": {},
|
||
"source": [
|
||
"OK, 800 Pokémon, with 12 columns for each. And you can see all the columns. Not all the data is shown in this preview, of course. If there were more columns than could be displayed, you could see them all by typing `pokemon.columns`. \n",
|
||
"\n",
|
||
"#### Your turn\n",
|
||
"\n",
|
||
"Now do the same for your data set, `people`."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 7,
|
||
"id": "c9e5e4ec-b197-450c-ae2d-318006fa0a2f",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Your code here"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "7fab76ef-d453-4568-a916-4d4c29535a42",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 1.2 Descriptive Statistics\n",
|
||
"\n",
|
||
"#### Demo\n",
|
||
"\n",
|
||
"Let's get a sense of the data contained in some of the columns. For categorical data like `generation`, it makes sense to look at value counts--showing us how many of each category there are. You can use the optional keyword `normalize=True` to see percentage of total instead of frequencies. "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 8,
|
||
"id": "9afca362-9edc-423c-981b-dc42107d5de0",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"1 166\n",
|
||
"5 165\n",
|
||
"3 160\n",
|
||
"4 121\n",
|
||
"2 106\n",
|
||
"6 82\n",
|
||
"Name: generation, dtype: int64"
|
||
]
|
||
},
|
||
"execution_count": 8,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pokemon.generation.value_counts()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "a9b98eee-bdc2-4c63-bab2-ee82e2466d0f",
|
||
"metadata": {},
|
||
"source": [
|
||
"For numeric data, we could start by looking at the mean value. We can select multiple columns and get all the column means at once."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 9,
|
||
"id": "5fe580d0-5939-4152-9f8c-4c32d35a4479",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"hp 69.25875\n",
|
||
"attack 79.00125\n",
|
||
"defense 73.84250\n",
|
||
"speed 68.27750\n",
|
||
"dtype: float64"
|
||
]
|
||
},
|
||
"execution_count": 9,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pokemon[[\"hp\", \"attack\", \"defense\", \"speed\"]].mean()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "0d8e6e78-fcfc-4c38-a418-545fe4216a44",
|
||
"metadata": {},
|
||
"source": [
|
||
"We can also compute the mean of boolean data. In this case, True will map to 1 and False will map to 0. So the mean value equals the percentage of data which is True. "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 10,
|
||
"id": "dc69ef53-70cd-4ae0-80e7-c9c8e28de76f",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"0.08125"
|
||
]
|
||
},
|
||
"execution_count": 10,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pokemon.legendary.mean()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "69333e87-8df2-4b46-9005-2b8c9df3a7b4",
|
||
"metadata": {},
|
||
"source": [
|
||
"Just over 8% of Pokemon are legendary."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "f563d97d-d9d3-4f2d-a46a-5d5dfc6382de",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Your turn\n",
|
||
"\n",
|
||
"**1.2.0.** In this survey, people are grouped into age bands of 18-24, 25-34, 35-44, 45-54, 55-64, and 65+, with the lower bound reported. What percentage of people are in each age band? (When we talk about \"people\" in this lab, we're referring to the people who responded to the survey, not the whole US population.)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 11,
|
||
"id": "8fbcc766-8399-4f93-a6c8-e0607250a72a",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Your code here"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "38006e7b-4771-4c29-86a8-19d04a50fc25",
|
||
"metadata": {},
|
||
"source": [
|
||
"**1.2.1.** What are the mean height and weight of people in this survey?"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 12,
|
||
"id": "b7f910c8-3d40-49ae-b270-678734c04100",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Your code here"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "f74634bb-8664-46e4-b371-6f45cbb7c8ef",
|
||
"metadata": {},
|
||
"source": [
|
||
"**1.2.2.** The `exercise` column indicates whether a person has done any physical activity or exercise in the last 30 days, outside of work. What percentage of people have done exercise?"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 13,
|
||
"id": "f3891188-a85f-4089-8388-d4d81c7438ad",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Your code here"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "f6082e65-321c-4ee0-9457-74f9bb1b0363",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 1.3 Filtering\n",
|
||
"\n",
|
||
"Sometimes we're just interested in a selection of the data set. The way to do this is to create a boolean series, and then use this to select which rows you want to include. \n",
|
||
"\n",
|
||
"#### Demo\n",
|
||
"`pokemon.legendary` is already boolean, so we can use this to select just the legendary pokémon. "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 14,
|
||
"id": "12c0c6c9-c07b-4183-82f6-5e346c74aac9",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>name</th>\n",
|
||
" <th>type</th>\n",
|
||
" <th>subtype</th>\n",
|
||
" <th>total</th>\n",
|
||
" <th>hp</th>\n",
|
||
" <th>attack</th>\n",
|
||
" <th>defense</th>\n",
|
||
" <th>special_attack</th>\n",
|
||
" <th>special_defense</th>\n",
|
||
" <th>speed</th>\n",
|
||
" <th>generation</th>\n",
|
||
" <th>legendary</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>156</th>\n",
|
||
" <td>Articuno</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>Flying</td>\n",
|
||
" <td>580</td>\n",
|
||
" <td>90</td>\n",
|
||
" <td>85</td>\n",
|
||
" <td>100</td>\n",
|
||
" <td>95</td>\n",
|
||
" <td>125</td>\n",
|
||
" <td>85</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>True</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>157</th>\n",
|
||
" <td>Zapdos</td>\n",
|
||
" <td>Electric</td>\n",
|
||
" <td>Flying</td>\n",
|
||
" <td>580</td>\n",
|
||
" <td>90</td>\n",
|
||
" <td>90</td>\n",
|
||
" <td>85</td>\n",
|
||
" <td>125</td>\n",
|
||
" <td>90</td>\n",
|
||
" <td>100</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>True</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>158</th>\n",
|
||
" <td>Moltres</td>\n",
|
||
" <td>Fire</td>\n",
|
||
" <td>Flying</td>\n",
|
||
" <td>580</td>\n",
|
||
" <td>90</td>\n",
|
||
" <td>100</td>\n",
|
||
" <td>90</td>\n",
|
||
" <td>125</td>\n",
|
||
" <td>85</td>\n",
|
||
" <td>90</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>True</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>162</th>\n",
|
||
" <td>Mewtwo</td>\n",
|
||
" <td>Psychic</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>680</td>\n",
|
||
" <td>106</td>\n",
|
||
" <td>110</td>\n",
|
||
" <td>90</td>\n",
|
||
" <td>154</td>\n",
|
||
" <td>90</td>\n",
|
||
" <td>130</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>True</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>163</th>\n",
|
||
" <td>MewtwoMega Mewtwo X</td>\n",
|
||
" <td>Psychic</td>\n",
|
||
" <td>Fighting</td>\n",
|
||
" <td>780</td>\n",
|
||
" <td>106</td>\n",
|
||
" <td>190</td>\n",
|
||
" <td>100</td>\n",
|
||
" <td>154</td>\n",
|
||
" <td>100</td>\n",
|
||
" <td>130</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>True</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>795</th>\n",
|
||
" <td>Diancie</td>\n",
|
||
" <td>Rock</td>\n",
|
||
" <td>Fairy</td>\n",
|
||
" <td>600</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>100</td>\n",
|
||
" <td>150</td>\n",
|
||
" <td>100</td>\n",
|
||
" <td>150</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>True</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>796</th>\n",
|
||
" <td>DiancieMega Diancie</td>\n",
|
||
" <td>Rock</td>\n",
|
||
" <td>Fairy</td>\n",
|
||
" <td>700</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>160</td>\n",
|
||
" <td>110</td>\n",
|
||
" <td>160</td>\n",
|
||
" <td>110</td>\n",
|
||
" <td>110</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>True</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>797</th>\n",
|
||
" <td>HoopaHoopa Confined</td>\n",
|
||
" <td>Psychic</td>\n",
|
||
" <td>Ghost</td>\n",
|
||
" <td>600</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>110</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>150</td>\n",
|
||
" <td>130</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>True</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>798</th>\n",
|
||
" <td>HoopaHoopa Unbound</td>\n",
|
||
" <td>Psychic</td>\n",
|
||
" <td>Dark</td>\n",
|
||
" <td>680</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>160</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>170</td>\n",
|
||
" <td>130</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>True</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>799</th>\n",
|
||
" <td>Volcanion</td>\n",
|
||
" <td>Fire</td>\n",
|
||
" <td>Water</td>\n",
|
||
" <td>600</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>110</td>\n",
|
||
" <td>120</td>\n",
|
||
" <td>130</td>\n",
|
||
" <td>90</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>True</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>65 rows × 12 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" name type subtype total hp attack defense \\\n",
|
||
"156 Articuno Ice Flying 580 90 85 100 \n",
|
||
"157 Zapdos Electric Flying 580 90 90 85 \n",
|
||
"158 Moltres Fire Flying 580 90 100 90 \n",
|
||
"162 Mewtwo Psychic NaN 680 106 110 90 \n",
|
||
"163 MewtwoMega Mewtwo X Psychic Fighting 780 106 190 100 \n",
|
||
".. ... ... ... ... ... ... ... \n",
|
||
"795 Diancie Rock Fairy 600 50 100 150 \n",
|
||
"796 DiancieMega Diancie Rock Fairy 700 50 160 110 \n",
|
||
"797 HoopaHoopa Confined Psychic Ghost 600 80 110 60 \n",
|
||
"798 HoopaHoopa Unbound Psychic Dark 680 80 160 60 \n",
|
||
"799 Volcanion Fire Water 600 80 110 120 \n",
|
||
"\n",
|
||
" special_attack special_defense speed generation legendary \n",
|
||
"156 95 125 85 1 True \n",
|
||
"157 125 90 100 1 True \n",
|
||
"158 125 85 90 1 True \n",
|
||
"162 154 90 130 1 True \n",
|
||
"163 154 100 130 1 True \n",
|
||
".. ... ... ... ... ... \n",
|
||
"795 100 150 50 6 True \n",
|
||
"796 160 110 110 6 True \n",
|
||
"797 150 130 70 6 True \n",
|
||
"798 170 130 80 6 True \n",
|
||
"799 130 90 70 6 True \n",
|
||
"\n",
|
||
"[65 rows x 12 columns]"
|
||
]
|
||
},
|
||
"execution_count": 14,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"legendary = pokemon[pokemon.legendary]\n",
|
||
"legendary"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "b4ad804a-f5f0-441f-bb83-51f360c1c154",
|
||
"metadata": {},
|
||
"source": [
|
||
"Let's get all the ice pokemon. We can create a boolean series from another series..."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 15,
|
||
"id": "5d089acf-7b76-4f91-8803-42a4a9a11e3e",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"0 False\n",
|
||
"1 False\n",
|
||
"2 False\n",
|
||
"3 False\n",
|
||
"4 False\n",
|
||
" ... \n",
|
||
"795 False\n",
|
||
"796 False\n",
|
||
"797 False\n",
|
||
"798 False\n",
|
||
"799 False\n",
|
||
"Name: type, Length: 800, dtype: bool"
|
||
]
|
||
},
|
||
"execution_count": 15,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pokemon.type == \"Ice\""
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "a5ea9e89-f466-48de-9133-346c99f4a6c1",
|
||
"metadata": {},
|
||
"source": [
|
||
"And then use this series to select just the ice pokémon. "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 16,
|
||
"id": "510fa0fc-2b38-4725-9bbf-ec57d62792be",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>name</th>\n",
|
||
" <th>type</th>\n",
|
||
" <th>subtype</th>\n",
|
||
" <th>total</th>\n",
|
||
" <th>hp</th>\n",
|
||
" <th>attack</th>\n",
|
||
" <th>defense</th>\n",
|
||
" <th>special_attack</th>\n",
|
||
" <th>special_defense</th>\n",
|
||
" <th>speed</th>\n",
|
||
" <th>generation</th>\n",
|
||
" <th>legendary</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>133</th>\n",
|
||
" <td>Jynx</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>Psychic</td>\n",
|
||
" <td>455</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>35</td>\n",
|
||
" <td>115</td>\n",
|
||
" <td>95</td>\n",
|
||
" <td>95</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>156</th>\n",
|
||
" <td>Articuno</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>Flying</td>\n",
|
||
" <td>580</td>\n",
|
||
" <td>90</td>\n",
|
||
" <td>85</td>\n",
|
||
" <td>100</td>\n",
|
||
" <td>95</td>\n",
|
||
" <td>125</td>\n",
|
||
" <td>85</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>True</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>238</th>\n",
|
||
" <td>Swinub</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>Ground</td>\n",
|
||
" <td>250</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>40</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>239</th>\n",
|
||
" <td>Piloswine</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>Ground</td>\n",
|
||
" <td>450</td>\n",
|
||
" <td>100</td>\n",
|
||
" <td>100</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>243</th>\n",
|
||
" <td>Delibird</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>Flying</td>\n",
|
||
" <td>330</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>55</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>75</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>257</th>\n",
|
||
" <td>Smoochum</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>Psychic</td>\n",
|
||
" <td>305</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>15</td>\n",
|
||
" <td>85</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>395</th>\n",
|
||
" <td>Snorunt</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>300</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>396</th>\n",
|
||
" <td>Glalie</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>480</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>397</th>\n",
|
||
" <td>GlalieMega Glalie</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>580</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>120</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>120</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>100</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>398</th>\n",
|
||
" <td>Spheal</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>Water</td>\n",
|
||
" <td>290</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>40</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>55</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>25</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>399</th>\n",
|
||
" <td>Sealeo</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>Water</td>\n",
|
||
" <td>410</td>\n",
|
||
" <td>90</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>75</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>400</th>\n",
|
||
" <td>Walrein</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>Water</td>\n",
|
||
" <td>530</td>\n",
|
||
" <td>110</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>90</td>\n",
|
||
" <td>95</td>\n",
|
||
" <td>90</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>415</th>\n",
|
||
" <td>Regice</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>580</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>100</td>\n",
|
||
" <td>100</td>\n",
|
||
" <td>200</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>True</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>522</th>\n",
|
||
" <td>Glaceon</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>525</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>110</td>\n",
|
||
" <td>130</td>\n",
|
||
" <td>95</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>524</th>\n",
|
||
" <td>Mamoswine</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>Ground</td>\n",
|
||
" <td>530</td>\n",
|
||
" <td>110</td>\n",
|
||
" <td>130</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>530</th>\n",
|
||
" <td>Froslass</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>Ghost</td>\n",
|
||
" <td>480</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>110</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>643</th>\n",
|
||
" <td>Vanillite</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>305</td>\n",
|
||
" <td>36</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>44</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>644</th>\n",
|
||
" <td>Vanillish</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>395</td>\n",
|
||
" <td>51</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>75</td>\n",
|
||
" <td>59</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>645</th>\n",
|
||
" <td>Vanilluxe</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>535</td>\n",
|
||
" <td>71</td>\n",
|
||
" <td>95</td>\n",
|
||
" <td>85</td>\n",
|
||
" <td>110</td>\n",
|
||
" <td>95</td>\n",
|
||
" <td>79</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>674</th>\n",
|
||
" <td>Cubchoo</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>305</td>\n",
|
||
" <td>55</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>40</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>40</td>\n",
|
||
" <td>40</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>675</th>\n",
|
||
" <td>Beartic</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>485</td>\n",
|
||
" <td>95</td>\n",
|
||
" <td>110</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>676</th>\n",
|
||
" <td>Cryogonal</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>485</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>95</td>\n",
|
||
" <td>135</td>\n",
|
||
" <td>105</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>788</th>\n",
|
||
" <td>Bergmite</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>304</td>\n",
|
||
" <td>55</td>\n",
|
||
" <td>69</td>\n",
|
||
" <td>85</td>\n",
|
||
" <td>32</td>\n",
|
||
" <td>35</td>\n",
|
||
" <td>28</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>789</th>\n",
|
||
" <td>Avalugg</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>514</td>\n",
|
||
" <td>95</td>\n",
|
||
" <td>117</td>\n",
|
||
" <td>184</td>\n",
|
||
" <td>44</td>\n",
|
||
" <td>46</td>\n",
|
||
" <td>28</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" name type subtype total hp attack defense \\\n",
|
||
"133 Jynx Ice Psychic 455 65 50 35 \n",
|
||
"156 Articuno Ice Flying 580 90 85 100 \n",
|
||
"238 Swinub Ice Ground 250 50 50 40 \n",
|
||
"239 Piloswine Ice Ground 450 100 100 80 \n",
|
||
"243 Delibird Ice Flying 330 45 55 45 \n",
|
||
"257 Smoochum Ice Psychic 305 45 30 15 \n",
|
||
"395 Snorunt Ice NaN 300 50 50 50 \n",
|
||
"396 Glalie Ice NaN 480 80 80 80 \n",
|
||
"397 GlalieMega Glalie Ice NaN 580 80 120 80 \n",
|
||
"398 Spheal Ice Water 290 70 40 50 \n",
|
||
"399 Sealeo Ice Water 410 90 60 70 \n",
|
||
"400 Walrein Ice Water 530 110 80 90 \n",
|
||
"415 Regice Ice NaN 580 80 50 100 \n",
|
||
"522 Glaceon Ice NaN 525 65 60 110 \n",
|
||
"524 Mamoswine Ice Ground 530 110 130 80 \n",
|
||
"530 Froslass Ice Ghost 480 70 80 70 \n",
|
||
"643 Vanillite Ice NaN 305 36 50 50 \n",
|
||
"644 Vanillish Ice NaN 395 51 65 65 \n",
|
||
"645 Vanilluxe Ice NaN 535 71 95 85 \n",
|
||
"674 Cubchoo Ice NaN 305 55 70 40 \n",
|
||
"675 Beartic Ice NaN 485 95 110 80 \n",
|
||
"676 Cryogonal Ice NaN 485 70 50 30 \n",
|
||
"788 Bergmite Ice NaN 304 55 69 85 \n",
|
||
"789 Avalugg Ice NaN 514 95 117 184 \n",
|
||
"\n",
|
||
" special_attack special_defense speed generation legendary \n",
|
||
"133 115 95 95 1 False \n",
|
||
"156 95 125 85 1 True \n",
|
||
"238 30 30 50 2 False \n",
|
||
"239 60 60 50 2 False \n",
|
||
"243 65 45 75 2 False \n",
|
||
"257 85 65 65 2 False \n",
|
||
"395 50 50 50 3 False \n",
|
||
"396 80 80 80 3 False \n",
|
||
"397 120 80 100 3 False \n",
|
||
"398 55 50 25 3 False \n",
|
||
"399 75 70 45 3 False \n",
|
||
"400 95 90 65 3 False \n",
|
||
"415 100 200 50 3 True \n",
|
||
"522 130 95 65 4 False \n",
|
||
"524 70 60 80 4 False \n",
|
||
"530 80 70 110 4 False \n",
|
||
"643 65 60 44 5 False \n",
|
||
"644 80 75 59 5 False \n",
|
||
"645 110 95 79 5 False \n",
|
||
"674 60 40 40 5 False \n",
|
||
"675 70 80 50 5 False \n",
|
||
"676 95 135 105 5 False \n",
|
||
"788 32 35 28 6 False \n",
|
||
"789 44 46 28 6 False "
|
||
]
|
||
},
|
||
"execution_count": 16,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"ice = pokemon[pokemon.type == \"Ice\"]\n",
|
||
"ice"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "0af5f534-0bec-4577-beee-29b350102265",
|
||
"metadata": {},
|
||
"source": [
|
||
"Let's get the high-speed ice pokémon. You can join conditions together using the `&` (and) and `|` (or) operators. Due to order of operations, each condition needs to be wrapped in parentheses."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 17,
|
||
"id": "05d4c5c2-c6b4-4795-9799-c884b15445a1",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>name</th>\n",
|
||
" <th>type</th>\n",
|
||
" <th>subtype</th>\n",
|
||
" <th>total</th>\n",
|
||
" <th>hp</th>\n",
|
||
" <th>attack</th>\n",
|
||
" <th>defense</th>\n",
|
||
" <th>special_attack</th>\n",
|
||
" <th>special_defense</th>\n",
|
||
" <th>speed</th>\n",
|
||
" <th>generation</th>\n",
|
||
" <th>legendary</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>133</th>\n",
|
||
" <td>Jynx</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>Psychic</td>\n",
|
||
" <td>455</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>35</td>\n",
|
||
" <td>115</td>\n",
|
||
" <td>95</td>\n",
|
||
" <td>95</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>156</th>\n",
|
||
" <td>Articuno</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>Flying</td>\n",
|
||
" <td>580</td>\n",
|
||
" <td>90</td>\n",
|
||
" <td>85</td>\n",
|
||
" <td>100</td>\n",
|
||
" <td>95</td>\n",
|
||
" <td>125</td>\n",
|
||
" <td>85</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>True</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>396</th>\n",
|
||
" <td>Glalie</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>480</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>397</th>\n",
|
||
" <td>GlalieMega Glalie</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>580</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>120</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>120</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>100</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>524</th>\n",
|
||
" <td>Mamoswine</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>Ground</td>\n",
|
||
" <td>530</td>\n",
|
||
" <td>110</td>\n",
|
||
" <td>130</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>530</th>\n",
|
||
" <td>Froslass</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>Ghost</td>\n",
|
||
" <td>480</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>110</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>676</th>\n",
|
||
" <td>Cryogonal</td>\n",
|
||
" <td>Ice</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>485</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>95</td>\n",
|
||
" <td>135</td>\n",
|
||
" <td>105</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>False</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" name type subtype total hp attack defense \\\n",
|
||
"133 Jynx Ice Psychic 455 65 50 35 \n",
|
||
"156 Articuno Ice Flying 580 90 85 100 \n",
|
||
"396 Glalie Ice NaN 480 80 80 80 \n",
|
||
"397 GlalieMega Glalie Ice NaN 580 80 120 80 \n",
|
||
"524 Mamoswine Ice Ground 530 110 130 80 \n",
|
||
"530 Froslass Ice Ghost 480 70 80 70 \n",
|
||
"676 Cryogonal Ice NaN 485 70 50 30 \n",
|
||
"\n",
|
||
" special_attack special_defense speed generation legendary \n",
|
||
"133 115 95 95 1 False \n",
|
||
"156 95 125 85 1 True \n",
|
||
"396 80 80 80 3 False \n",
|
||
"397 120 80 100 3 False \n",
|
||
"524 70 60 80 4 False \n",
|
||
"530 80 70 110 4 False \n",
|
||
"676 95 135 105 5 False "
|
||
]
|
||
},
|
||
"execution_count": 17,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"high_speed_ice = pokemon[(pokemon.type == \"Ice\") & (pokemon.speed >= 80)]\n",
|
||
"high_speed_ice"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "c84dc7ce-24f2-4ac7-92d7-99ed331488e0",
|
||
"metadata": {},
|
||
"source": [
|
||
"You could get the pokémon who are fire or ice by selecting `pokemon[(pokemon.type == \"Fire\") | (pokemon.type == \"Ice\")]`."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "1f0e9625-b194-450d-b003-b88798cc2f45",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Your turn\n",
|
||
"\n",
|
||
"**1.3.0.** `no_doctor` indicates whether there was a time in the last year when the person needed to see a doctor, but could not afford to do so. Create a dataframe containing only these people. "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 18,
|
||
"id": "198cb0c6-3f43-43c2-9eee-3939c12ea537",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# YOUR CODE HERE"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "9d213707-a15b-4751-8df9-48aa568af209",
|
||
"metadata": {},
|
||
"source": [
|
||
"**1.3.1.** `health` asks people for their general health, with the meanings of numbers shown below. Create a dataframe which contains people whose general health is good or better. \n",
|
||
"\n",
|
||
"| number | health status | \n",
|
||
"| ------ | ----------- |\n",
|
||
"| 1 | Poor |\n",
|
||
"| 2 | Fair |\n",
|
||
"| 3 | Good |\n",
|
||
"| 4 | Very good |\n",
|
||
"| 5 | Excellent |"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 19,
|
||
"id": "8a8c1ad6-4c1e-4996-ab5e-5212dadb1851",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# YOUR CODE HERE"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "7add542b-bfd2-481a-b5b4-4e1ca744078a",
|
||
"metadata": {},
|
||
"source": [
|
||
"**1.3.2.**. `education` indicates the highest level of education completed, with codes as follows. Create a dataframe which only contains female college graduates who needed a doctor but couldn't afford one. (The survey asked people for their current sex, and only had options for male and female.)\n",
|
||
"\n",
|
||
"| number | education level | \n",
|
||
"| ------ | ----------- |\n",
|
||
"| 1 | Did not graduate from high school |\n",
|
||
"| 2 | Graduated from high school |\n",
|
||
"| 3 | Attended some college |\n",
|
||
"| 4 | Graduated from college |"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 20,
|
||
"id": "315682ae-7d54-4d78-9a63-d23c83ba1576",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# YOUR CODE HERE"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "646d1148-7d94-4521-a04a-fbf17ade1235",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 1.4. Grouping\n",
|
||
"\n",
|
||
"Now things get crazy. You can group a dataframe using one or more columns, and then compare their statistics. \n",
|
||
"\n",
|
||
"#### Demo\n",
|
||
"\n",
|
||
"Do different types of pokémon move at different speeds? We'll use `sort_values` to put these in order from slow to fast."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 21,
|
||
"id": "069ea0ab-eff6-4985-9f46-db956fe1df91",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"type\n",
|
||
"Fairy 48.588235\n",
|
||
"Steel 55.259259\n",
|
||
"Rock 55.909091\n",
|
||
"Bug 61.681159\n",
|
||
"Grass 61.928571\n",
|
||
"Ice 63.458333\n",
|
||
"Poison 63.571429\n",
|
||
"Ground 63.906250\n",
|
||
"Ghost 64.343750\n",
|
||
"Water 65.964286\n",
|
||
"Fighting 66.074074\n",
|
||
"Normal 71.551020\n",
|
||
"Fire 74.442308\n",
|
||
"Dark 76.161290\n",
|
||
"Psychic 81.491228\n",
|
||
"Dragon 83.031250\n",
|
||
"Electric 84.500000\n",
|
||
"Flying 102.500000\n",
|
||
"Name: speed, dtype: float64"
|
||
]
|
||
},
|
||
"execution_count": 21,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pokemon.groupby(\"type\").speed.mean().sort_values()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "bdc801b7-d3ae-45bb-80f4-ebeb474e20a1",
|
||
"metadata": {},
|
||
"source": [
|
||
"Do types differ in other stats? Let's sort by hit points. "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 22,
|
||
"id": "5c420c0e-b5d2-49ae-ab98-3305ee076169",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>hp</th>\n",
|
||
" <th>attack</th>\n",
|
||
" <th>defense</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>type</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>Bug</th>\n",
|
||
" <td>56.884058</td>\n",
|
||
" <td>70.971014</td>\n",
|
||
" <td>70.724638</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Electric</th>\n",
|
||
" <td>59.795455</td>\n",
|
||
" <td>69.090909</td>\n",
|
||
" <td>66.295455</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Ghost</th>\n",
|
||
" <td>64.437500</td>\n",
|
||
" <td>73.781250</td>\n",
|
||
" <td>81.187500</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Steel</th>\n",
|
||
" <td>65.222222</td>\n",
|
||
" <td>92.703704</td>\n",
|
||
" <td>126.370370</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Rock</th>\n",
|
||
" <td>65.363636</td>\n",
|
||
" <td>92.863636</td>\n",
|
||
" <td>100.795455</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Dark</th>\n",
|
||
" <td>66.806452</td>\n",
|
||
" <td>88.387097</td>\n",
|
||
" <td>70.225806</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Poison</th>\n",
|
||
" <td>67.250000</td>\n",
|
||
" <td>74.678571</td>\n",
|
||
" <td>68.821429</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Grass</th>\n",
|
||
" <td>67.271429</td>\n",
|
||
" <td>73.214286</td>\n",
|
||
" <td>70.800000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Fighting</th>\n",
|
||
" <td>69.851852</td>\n",
|
||
" <td>96.777778</td>\n",
|
||
" <td>65.925926</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Fire</th>\n",
|
||
" <td>69.903846</td>\n",
|
||
" <td>84.769231</td>\n",
|
||
" <td>67.769231</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Psychic</th>\n",
|
||
" <td>70.631579</td>\n",
|
||
" <td>71.456140</td>\n",
|
||
" <td>67.684211</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Flying</th>\n",
|
||
" <td>70.750000</td>\n",
|
||
" <td>78.750000</td>\n",
|
||
" <td>66.250000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Ice</th>\n",
|
||
" <td>72.000000</td>\n",
|
||
" <td>72.750000</td>\n",
|
||
" <td>71.416667</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Water</th>\n",
|
||
" <td>72.062500</td>\n",
|
||
" <td>74.151786</td>\n",
|
||
" <td>72.946429</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Ground</th>\n",
|
||
" <td>73.781250</td>\n",
|
||
" <td>95.750000</td>\n",
|
||
" <td>84.843750</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Fairy</th>\n",
|
||
" <td>74.117647</td>\n",
|
||
" <td>61.529412</td>\n",
|
||
" <td>65.705882</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Normal</th>\n",
|
||
" <td>77.275510</td>\n",
|
||
" <td>73.469388</td>\n",
|
||
" <td>59.846939</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Dragon</th>\n",
|
||
" <td>83.312500</td>\n",
|
||
" <td>112.125000</td>\n",
|
||
" <td>86.375000</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" hp attack defense\n",
|
||
"type \n",
|
||
"Bug 56.884058 70.971014 70.724638\n",
|
||
"Electric 59.795455 69.090909 66.295455\n",
|
||
"Ghost 64.437500 73.781250 81.187500\n",
|
||
"Steel 65.222222 92.703704 126.370370\n",
|
||
"Rock 65.363636 92.863636 100.795455\n",
|
||
"Dark 66.806452 88.387097 70.225806\n",
|
||
"Poison 67.250000 74.678571 68.821429\n",
|
||
"Grass 67.271429 73.214286 70.800000\n",
|
||
"Fighting 69.851852 96.777778 65.925926\n",
|
||
"Fire 69.903846 84.769231 67.769231\n",
|
||
"Psychic 70.631579 71.456140 67.684211\n",
|
||
"Flying 70.750000 78.750000 66.250000\n",
|
||
"Ice 72.000000 72.750000 71.416667\n",
|
||
"Water 72.062500 74.151786 72.946429\n",
|
||
"Ground 73.781250 95.750000 84.843750\n",
|
||
"Fairy 74.117647 61.529412 65.705882\n",
|
||
"Normal 77.275510 73.469388 59.846939\n",
|
||
"Dragon 83.312500 112.125000 86.375000"
|
||
]
|
||
},
|
||
"execution_count": 22,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"ptypes = pokemon.groupby(\"type\")\n",
|
||
"ptypes[[\"hp\", \"attack\", \"defense\"]].mean().sort_values(\"hp\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "cc9a3d19-0ecd-487b-b34f-b748c44fc9c9",
|
||
"metadata": {},
|
||
"source": [
|
||
"Which type/subtype combinations are most likely to have legendary pokémon?"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 23,
|
||
"id": "444a580d-e70c-48a1-bf87-77f98b8c9f85",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"type subtype \n",
|
||
"Electric Flying 0.600000\n",
|
||
"Rock Fairy 0.666667\n",
|
||
"Ghost Dragon 1.000000\n",
|
||
"Ground Fire 1.000000\n",
|
||
"Fire Water 1.000000\n",
|
||
" Steel 1.000000\n",
|
||
"Steel Dragon 1.000000\n",
|
||
"Dragon Electric 1.000000\n",
|
||
"Psychic Ghost 1.000000\n",
|
||
"Dragon Psychic 1.000000\n",
|
||
" Ice 1.000000\n",
|
||
"Rock Fighting 1.000000\n",
|
||
"Steel Fighting 1.000000\n",
|
||
"Dragon Fire 1.000000\n",
|
||
"Psychic Dark 1.000000\n",
|
||
" Fire 1.000000\n",
|
||
"Name: legendary, dtype: float64"
|
||
]
|
||
},
|
||
"execution_count": 23,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"legendary_percentages = pokemon.groupby([\"type\", \"subtype\"]).legendary.mean().sort_values() \n",
|
||
"legendary_percentages[legendary_percentages > 0.5]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "de23775b-8670-4371-913d-d8fa1d1f3a76",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Your turn\n",
|
||
"\n",
|
||
"**1.4.0.** `income` records peoples' annual income, in the following bands. `sleep` records the average hours of sleep someone gets per night. Is there a difference in the average hours of sleep by income level?\n",
|
||
"\n",
|
||
"| number | annual income, in $1000 | \n",
|
||
"| ------ | ----------- |\n",
|
||
"| 1 | Less than 10 |\n",
|
||
"| 2 | 10-15 |\n",
|
||
"| 3 | 15-20 |\n",
|
||
"| 4 | 20-25 |\n",
|
||
"| 5 | 25-35 |\n",
|
||
"| 6 | 35-50 |\n",
|
||
"| 7 | 50-75 |\n",
|
||
"| 8 | More than 75 |"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 24,
|
||
"id": "75c1ac4f-3914-4c0a-a156-2e084002df66",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# YOUR CODE HERE"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "f6413f2b-26a0-4b70-976f-90e45558c4bb",
|
||
"metadata": {},
|
||
"source": [
|
||
"**1.4.0.** Is there a difference in peoples' income or general health, by sex and education level? "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 25,
|
||
"id": "d46df8a1-bbc2-45a4-9be1-cee1858cbf21",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# YOUR CODE HERE"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "931d602b-ddf4-4c8b-80e0-f886267cce76",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 1.5. Plotting\n",
|
||
"\n",
|
||
"Pandas has excellent plotting capabilities built in. \n",
|
||
"\n",
|
||
"#### Demo\n",
|
||
"\n",
|
||
"A histogram can be very helpful for visualizing the distribution of data. Let's see the distribution of pokémon attack values. "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 26,
|
||
"id": "5ce066fe-f81d-4b78-a394-c5c2f4dc9f46",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"<AxesSubplot:>"
|
||
]
|
||
},
|
||
"execution_count": 26,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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\n",
|
||
"text/plain": [
|
||
"<Figure size 432x288 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"needs_background": "light"
|
||
},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"pokemon.attack.hist()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "fd508c13-9900-4be1-958f-4f9e9e9b633a",
|
||
"metadata": {},
|
||
"source": [
|
||
"It can also be very helpful to plot two variables against each other."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 27,
|
||
"id": "6ac22395-351f-45c3-8ecb-7c7469d2347a",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"<AxesSubplot:xlabel='attack', ylabel='defense'>"
|
||
]
|
||
},
|
||
"execution_count": 27,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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\n",
|
||
"text/plain": [
|
||
"<Figure size 432x288 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"needs_background": "light"
|
||
},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"pokemon.plot.scatter(x=\"attack\", y=\"defense\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "c6a20904-416d-44be-a4f3-2107200fb3c2",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Your turn\n",
|
||
"\n",
|
||
"See what you can learn about patterns in `people`."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "1cab5017-5565-473b-932d-b1e6460d5344",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "ee30c851-14b1-4901-9182-4304d54d53a6",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3 (ipykernel)",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.9.10"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 5
|
||
}
|