diff --git a/index.ipynb b/index.ipynb
index 4df216f..d9efd0b 100644
--- a/index.ipynb
+++ b/index.ipynb
@@ -1 +1,6769 @@
-{"cells": [{"cell_type": "markdown", "metadata": {}, "source": ["# Pandas Data Cleaning - Cumulative Lab\n", "\n", "## Introduction\n", "In this lab, we'll make use of everything we've learned about pandas, data cleaning, and exploratory data analysis. In order to complete this lab, you'll have to import, clean, combine, reshape, and visualize data to answer questions provided, as well as your own questions!\n", "\n", "## Objectives\n", "You will be able to:\n", "- Practice opening and inspecting the contents of CSVs using pandas dataframes\n", "- Practice identifying and handling missing values\n", "- Practice identifying and handling invalid values\n", "- Practice cleaning text data by removing whitespace and fixing typos\n", "- Practice joining multiple dataframes"]}, {"cell_type": "markdown", "metadata": {}, "source": ["## Your Task: Clean the Superheroes Dataset with Pandas\n", "\n", "\n", "\n", "Photo by Yulia Matvienko on Unsplash"]}, {"cell_type": "markdown", "metadata": {}, "source": ["### Data Understanding\n", "In this lab, we'll work with a version of the comprehensive Superheroes Dataset, which can be found on [Kaggle](https://www.kaggle.com/claudiodavi/superhero-set/data) and was originally scraped from [SuperHeroDb](https://www.superherodb.com/). We have modified the structure and contents of the dataset somewhat for the purposes of this lab. Note that this data was collected in June 2017, so it may not reflect the most up-to-date superhero lore.\n", "\n", "The data is contained in two separate CSV files:\n", "\n", "1. `heroes_information.csv`: each record represents a superhero, with attributes of that superhero (e.g. eye color). Height is measured in centimeters, and weight is measured in pounds.\n", "2. `super_hero_powers.csv`: each record represents a superpower, then has True/False values representing whether each superhero has that power\n", "\n", "### Business Understanding\n", "\n", "The business questions you have been provided are:\n", "\n", "1. What is the distribution of superheroes by publisher?\n", "2. What is the relationship between height and number of superpowers? And does this differ based on gender?\n", "3. What are the 5 most common superpowers in Marvel Comics vs. DC Comics?\n", "\n", "This lab also simulates something you are likely to encounter at some point or another in your career in data science: someone has given you access to a dataset, as well as a few questions, and has told you to \"find something interesting\".\n", "\n", "So, in addition to completing the basic data cleaning tasks and the aggregation and reshaping tasks needed to answer the provided questions, you will also need to formulate a question of your own and perform any additional cleaning/aggregation/reshaping that is needed to answer it."]}, {"cell_type": "markdown", "metadata": {}, "source": ["### Requirements\n", "\n", "#### 1. Load the Data with Pandas\n", "\n", "Create a dataframes `heroes_df` and `powers_df` that represent the two CSV files. Use pandas methods to inspect the shape and other attributes of these dataframes.\n", "\n", "#### 2. Perform Data Cleaning Required to Answer First Question\n", "\n", "The first question is: *What is the distribution of superheroes by publisher?*\n", "\n", "In order to answer this question, you will need to:\n", "\n", "* Identify and handle missing values\n", "* Identify and handle text data requiring cleaning\n", "\n", "#### 3. Perform Data Aggregation and Cleaning Required to Answer Second Question\n", "\n", "The second question is: *What is the relationship between height and number of superpowers? And does this differ based on gender?*\n", "\n", "In order to answer this question, you will need to:\n", "\n", "* Join the dataframes together\n", "* Identify and handle invalid values\n", "\n", "#### 4. Perform Data Aggregation Required to Answer Third Question\n", "\n", "The third question is: *What are the 5 most common superpowers in Marvel Comics vs. DC Comics?*\n", "\n", "This should not require any additional data cleaning or joining of tables, but it will require some additional aggregation.\n", "\n", "#### 5. Formulate and Answer Your Own Question\n", "\n", "This part is fairly open-ended. Think of a question that can be answered with the available data, and perform any cleaning or aggregation required to answer that question."]}, {"cell_type": "markdown", "metadata": {}, "source": ["## 1. Load the Data with Pandas\n", "\n", "In the cell below, we:\n", "\n", "* Import and alias `pandas` as `pd`\n", "* Import and alias `numpy` as `np`\n", "* Import and alias `seaborn` as `sns`\n", "* Import and alias `matplotlib.pyplot` as `plt`\n", "* Set Matplotlib visualizations to display inline in the notebook"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Run this cell without changes\n", "\n", "import pandas as pd\n", "import numpy as np\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "\n", "%matplotlib inline"]}, {"cell_type": "markdown", "metadata": {}, "source": ["### Superheroes\n", "\n", "In the cell below, load `heroes_information.csv` as `heroes_df`:"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Your code here\n", "\n", "heroes_df.head()"]}, {"cell_type": "markdown", "metadata": {}, "source": ["It looks like that CSV came with an index column, resulting in an extra column called `Unnamed: 0`. We don't need that column, so write code to get rid of it below.\n", "\n", "There are two ways to do this:\n", "\n", "1. Re-load with `read_csv`, and specify the parameter `index_col=0`\n", "2. Drop the column `Unnamed: 0` with `axis=1`"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Your code here\n", "\n", "heroes_df.head()"]}, {"cell_type": "markdown", "metadata": {}, "source": ["The following code checks that the dataframe was loaded correctly."]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Run this cell without changes\n", "\n", "# There should be 734 rows\n", "assert heroes_df.shape[0] == 734\n", "\n", "# There should be 10 columns. If this fails, make sure you got rid of\n", "# the extra index column\n", "assert heroes_df.shape[1] == 10\n", "\n", "# These should be the columns\n", "assert list(heroes_df.columns) == [\n", " \"name\",\n", " \"Gender\",\n", " \"Eye color\",\n", " \"Race\",\n", " \"Hair color\",\n", " \"Height\",\n", " \"Publisher\",\n", " \"Skin color\",\n", " \"Alignment\",\n", " \"Weight\",\n", "]"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Now you want to get familiar with the data. This step includes:\n", "\n", "* Understanding the dimensionality of your dataset\n", "* Investigating what type of data it contains, and the data types used to store it\n", "* Discovering how missing values are encoded, and how many there are\n", "* Getting a feel for what information it does and doesn't contain\n", "\n", "In the cell below, inspect the overall shape of the dataframe:"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Your code here"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Now let's look at the info printout:"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Run this cell without changes\n", "heroes_df.info()"]}, {"cell_type": "markdown", "metadata": {}, "source": ["In the cell below, interpret that information. Do the data types line up with what we expect? Are there any missing values?"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Replace None with appropriate text\n", "\"\"\"\n", "None\n", "\"\"\""]}, {"cell_type": "markdown", "metadata": {}, "source": ["### Superpowers\n", "\n", "Now, repeat the same process with `super_hero_powers.csv`. Name the dataframe `powers_df`. This time, make sure you use `index_col=0` when opening the CSV because the index contains important information."]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Your code here (create more cells as needed)"]}, {"cell_type": "markdown", "metadata": {}, "source": ["The following code will check if it was loaded correctly:"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Run this cell without changes\n", "\n", "# There should be 167 rows, 667 columns\n", "assert powers_df.shape == (167, 667)\n", "\n", "# The first column should be '3-D Man'\n", "assert powers_df.columns[0] == \"3-D Man\"\n", "\n", "# The last column should be 'Zoom'\n", "assert powers_df.columns[-1] == \"Zoom\"\n", "\n", "# The first index should be 'Agility'\n", "assert powers_df.index[0] == \"Agility\"\n", "\n", "# The last index should be 'Omniscient'\n", "assert powers_df.index[-1] == \"Omniscient\""]}, {"cell_type": "markdown", "metadata": {}, "source": ["## 2. Perform Data Cleaning Required to Answer First Question\n", "\n", "Recall that the first question is: *What is the distribution of superheroes by publisher?*\n", "\n", "To answer this question, we will only need to use `heroes_df`, which contains the `Publisher` column.\n", "\n", "### Identifying and Handling Missing Values\n", "\n", "As you likely noted above, the `Publisher` column is missing some values. Let's take a look at some samples with and without missing publisher values:"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Run this cell without changes\n", "has_publisher_sample = heroes_df[heroes_df[\"Publisher\"].notna()].sample(\n", " 5, random_state=1\n", ")\n", "has_publisher_sample"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Run this cell without changes\n", "missing_publisher_sample = heroes_df[heroes_df[\"Publisher\"].isna()].sample(\n", " 5, random_state=1\n", ")\n", "missing_publisher_sample"]}, {"cell_type": "markdown", "metadata": {}, "source": ["What do we want to do about these missing values?\n", "\n", "Recall that there are two general strategies for dealing with missing values:\n", "\n", "1. Fill in missing values (either using another value from the column, e.g. the mean or mode, or using some other value like \"Unknown\")\n", "2. Drop rows with missing values\n", "\n", "Write your answer below, and explain how it relates to the information we have:"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Replace None with appropriate text\n", "\"\"\"\n", "None\n", "\"\"\""]}, {"cell_type": "markdown", "metadata": {}, "source": ["Now, implement the strategy to drop rows with missing values using code. (You can also check the solution branch for the answer to the question above if you're really not sure.)"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Your code here"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Now there should be no missing values in the publisher column:"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Run this cell without changes\n", "assert heroes_df[\"Publisher\"].isna().sum() == 0"]}, {"cell_type": "markdown", "metadata": {}, "source": ["### Identifying and Handling Text Data Requiring Cleaning\n", "\n", "The overall field of natural language processing (NLP) is quite broad, and we're not going to get into any advanced text processing, but it's useful to be able to clean up minor issues in text data.\n", "\n", "Let's take a look at the counts of heroes grouped by publisher:"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Run this cell without changes\n", "heroes_df[\"Publisher\"].value_counts()"]}, {"cell_type": "markdown", "metadata": {}, "source": ["There are two cases where we appear to have data entry issues, and publishers that should be encoded the same have not been. In other words, there are four categories present that really should be counted as two categories (and you do not need specific comic book knowledge to be able to identify them).\n", "\n", "Identify those two cases below:"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Replace None with appropriate text\n", "\"\"\"\n", "None\n", "\"\"\""]}, {"cell_type": "markdown", "metadata": {}, "source": ["Now, write some code to handle these cases. If you're not sure where to start, look at the pandas documentation for [replacing values](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.replace.html) and [stripping off whitespace](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.strip.html)."]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Your code here"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Check your work below:"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Run this cell without changes\n", "heroes_df[\"Publisher\"].value_counts()"]}, {"cell_type": "markdown", "metadata": {}, "source": ["### Answering the Question\n", "\n", "Now we should be able to answer *What is the distribution of superheroes by publisher?*\n", "\n", "If your data cleaning was done correctly, this code should work without any further changes:"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Run this cell without changes\n", "\n", "# Set up plots\n", "fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(16, 5))\n", "\n", "# Create variables for easier reuse\n", "value_counts = heroes_df[\"Publisher\"].value_counts()\n", "top_5_counts = value_counts.iloc[:5]\n", "\n", "# Plot data\n", "ax1.bar(value_counts.index, value_counts.values)\n", "ax2.bar(top_5_counts.index, top_5_counts.values)\n", "\n", "# Customize appearance\n", "ax1.tick_params(axis=\"x\", labelrotation=90)\n", "ax2.tick_params(axis=\"x\", labelrotation=45)\n", "ax1.set_ylabel(\"Count of Superheroes\")\n", "ax2.set_ylabel(\"Count of Superheroes\")\n", "ax1.set_title(\"Distribution of Superheroes by Publisher\")\n", "ax2.set_title(\"Top 5 Publishers by Count of Superheroes\");"]}, {"cell_type": "markdown", "metadata": {}, "source": ["## 3. Perform Data Aggregation and Cleaning Required to Answer Second Question\n", "\n", "Recall that the second question is: *What is the relationship between height and number of superpowers? And does this differ based on gender?*\n", "\n", "Unlike the previous question, we won't be able to answer this with just `heroes_df`, since information about height is contained in `heroes_df`, while information about superpowers is contained in `powers_df`.\n", "\n", "### Joining the Dataframes Together\n", "\n", "First, identify the shared key between `heroes_df` and `powers_df`. (Shared key meaning, the values you want to join on.) Let's look at them again:"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Run this cell without changes\n", "heroes_df"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Run this cell without changes\n", "powers_df"]}, {"cell_type": "markdown", "metadata": {}, "source": ["In the cell below, identify the shared key, and your strategy for joining the data (e.g. what will one record represent after you join, will you do a left/right/inner/outer join):"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Replace None with appropriate text\n", "\"\"\"\n", "None\n", "\"\"\""]}, {"cell_type": "markdown", "metadata": {}, "source": ["In the cell below, create a new dataframe called `heroes_and_powers_df` that contains the joined data. You can look at the above answer in the solution branch if you're not sure where to start.\n", "\n", "***Hint:*** Note that the `.join` method requires that the two dataframes share an index ([documentation here](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.join.html)) whereas the `.merge` method can join using any columns ([documentation here](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html)). It is up to you which one you want to use."]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Your code here (create more cells as needed)"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Run the code below to check your work:"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Run this cell without changes\n", "\n", "# Confirms you have created a DataFrame with the specified name\n", "assert type(heroes_and_powers_df) == pd.DataFrame\n", "\n", "# Confirms you have the right number of rows\n", "assert heroes_and_powers_df.shape[0] == 647\n", "\n", "# Confirms you have the necessary columns\n", "# (If you modified the value of powers_df along the way, you might need to\n", "# modify this test. We are checking that all of the powers are present as\n", "# columns.)\n", "assert [power in heroes_and_powers_df.columns for power in powers_df.index]\n", "# (If you modified the value of heroes_df along the way, you might need to\n", "# modify this as well. We are checking that all of the attribute columns from\n", "# heroes_df are present as columns in the joined df)\n", "assert [attribute in heroes_and_powers_df.columns for attribute in heroes_df.columns]"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Now that we have created a joined dataframe, we can aggregate the number of superpowers by superhero. This code is written for you:"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Run this cell without changes\n", "\n", "# Note: we can use sum() with True and False values and they will\n", "# automatically be cast to 1s and 0s\n", "heroes_and_powers_df[\"Power Count\"] = sum(\n", " [heroes_and_powers_df[power_name] for power_name in powers_df.index]\n", ")\n", "heroes_and_powers_df"]}, {"cell_type": "markdown", "metadata": {}, "source": ["### Answering the Question\n", "\n", "Now we can plot the height vs. the count of powers:"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Run this cell without changes\n", "\n", "fig, ax = plt.subplots(figsize=(16, 8))\n", "\n", "ax.scatter(\n", " x=heroes_and_powers_df[\"Height\"], y=heroes_and_powers_df[\"Power Count\"], alpha=0.3\n", ")\n", "\n", "ax.set_xlabel(\"Height (cm)\")\n", "ax.set_ylabel(\"Number of Superpowers\")\n", "ax.set_title(\"Height vs. Power Count\");"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Hmm...what is that stack of values off below zero? What is a \"negative\" height?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["### Identifying and Handling Invalid values\n", "\n", "One of the trickier tasks in data cleaning is identifying invalid or impossible values. In these cases, you have to apply your domain knowledge rather than any particular computational technique. For example, if you were looking at data containing dates of past home sales, and one of those dates was 100 years in the future, pandas wouldn't flag that as an issue, but you as a data scientist should be able to identify it.\n", "\n", "In this case, we are looking at heights, which are 1-dimensional, positive numbers. In theory we could have a very tiny height close to 0 cm because the hero is microscopic, but it does not make sense that we would have a height below zero.\n", "\n", "Let's take a look at a sample of those negative heights:"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Run this cell without changes\n", "heroes_and_powers_df[heroes_and_powers_df[\"Height\"] < 0].sample(5, random_state=1)"]}, {"cell_type": "markdown", "metadata": {}, "source": ["It looks like not only are those heights negative, those weights are negative also, and all of them are set to exactly -99.0.\n", "\n", "It seems like this data source probably filled in -99.0 as the height or weight whenever it was unknown, instead of just leaving it as NaN.\n", "\n", "Depending on the purpose of the analysis, maybe this would be a useful piece of information, but for our current question, let's go ahead and drop the records where the height is -99.0. We'll make a new temporary dataframe to make sure we don't accidentally delete anything that will be needed in a future question."]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Run this cell without changes\n", "question_2_df = heroes_and_powers_df[heroes_and_powers_df[\"Height\"] != -99.0].copy()\n", "question_2_df"]}, {"cell_type": "markdown", "metadata": {}, "source": ["### Answering the Question, Again\n", "\n", "Now we can redo that plot without those negative heights:"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Run this cell without changes\n", "\n", "fig, ax = plt.subplots(figsize=(16, 8))\n", "\n", "ax.scatter(x=question_2_df[\"Height\"], y=question_2_df[\"Power Count\"], alpha=0.3)\n", "\n", "ax.set_xlabel(\"Height (cm)\")\n", "ax.set_ylabel(\"Number of Superpowers\")\n", "ax.set_title(\"Height vs. Power Count\");"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Ok, that makes more sense. It looks like there is not much of a relationship between height and number of superpowers.\n", "\n", "Now we can go on to answering the second half of question 2: *And does this differ based on gender?*\n", "\n", "To indicate multiple categories within a scatter plot, we can use color to add a third dimension:"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Run this cell without changes\n", "\n", "fig, ax = plt.subplots(figsize=(16, 8))\n", "\n", "# Select subsets\n", "question_2_male = question_2_df[question_2_df[\"Gender\"] == \"Male\"]\n", "question_2_female = question_2_df[question_2_df[\"Gender\"] == \"Female\"]\n", "question_2_other = question_2_df[\n", " (question_2_df[\"Gender\"] != \"Male\") & (question_2_df[\"Gender\"] != \"Female\")\n", "]\n", "\n", "# Plot data with different colors\n", "ax.scatter(\n", " x=question_2_male[\"Height\"],\n", " y=question_2_male[\"Power Count\"],\n", " alpha=0.5,\n", " color=\"cyan\",\n", " label=\"Male\",\n", ")\n", "ax.scatter(\n", " x=question_2_female[\"Height\"],\n", " y=question_2_female[\"Power Count\"],\n", " alpha=0.5,\n", " color=\"gray\",\n", " label=\"Female\",\n", ")\n", "ax.scatter(\n", " x=question_2_other[\"Height\"],\n", " y=question_2_other[\"Power Count\"],\n", " alpha=0.5,\n", " color=\"yellow\",\n", " label=\"Other\",\n", ")\n", "\n", "# Customize appearance\n", "ax.set_xlabel(\"Height (cm)\")\n", "ax.set_ylabel(\"Number of Superpowers\")\n", "ax.set_title(\"Height vs. Power Count\")\n", "ax.legend();"]}, {"cell_type": "markdown", "metadata": {}, "source": ["It appears that there is still no clear relationship between count of powers and height, regardless of gender. We do however note that \"Male\" is the most common gender, and that male superheroes tend to be taller, on average."]}, {"cell_type": "markdown", "metadata": {}, "source": ["## 4. Perform Data Aggregation Required to Answer Third Question\n", "\n", "Recall that the third question is: *What are the 5 most common superpowers in Marvel Comics vs. DC Comics?*\n", "\n", "We'll need to keep using `heroes_and_powers_df` since we require information from both `heroes_df` and `powers_df`.\n", "\n", "Your resulting `question_3_df` should contain aggregated data, with columns `Superpower Name`, `Marvel Comics` (containing the count of occurrences in Marvel Comics), and `DC Comics` (containing the count of occurrences in DC Comics). Each row should represent a superpower.\n", "\n", "In other words, `question_3_df` should look like this:\n", "\n", "\n", "\n", "Don't worry if the rows or columns are in a different order, all that matters is that you have the right rows and columns with all the data.\n", "\n", "***Hint:*** refer to the [documentation for `.groupby`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.groupby.html) and treat each publisher as a group."]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Your code here (create more cells as needed)"]}, {"cell_type": "markdown", "metadata": {}, "source": ["The code below checks that you have the correct dataframe structure:"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Run this cell without changes\n", "\n", "# Checking that you made a dataframe called question_3_df\n", "assert type(question_3_df) == pd.DataFrame\n", "\n", "# Checking the shape\n", "assert question_3_df.shape == (167, 3)\n", "\n", "# Checking the column names\n", "assert sorted(list(question_3_df.columns)) == [\n", " \"DC Comics\",\n", " \"Marvel Comics\",\n", " \"Superpower Name\",\n", "]"]}, {"cell_type": "markdown", "metadata": {}, "source": ["### Answering the Question\n", "\n", "The code below uses the dataframe you created to find and plot the most common superpowers in Marvel Comics and DC Comics."]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Run this cell without changes\n", "\n", "marvel_most_common = question_3_df.drop(\"DC Comics\", axis=1)\n", "marvel_most_common = marvel_most_common.sort_values(\n", " by=\"Marvel Comics\", ascending=False\n", ")[:5]\n", "marvel_most_common"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Run this cell without changes\n", "\n", "dc_most_common = question_3_df.drop(\"Marvel Comics\", axis=1)\n", "dc_most_common = dc_most_common.sort_values(by=\"DC Comics\", ascending=False)[:5]\n", "dc_most_common"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Run this cell without changes\n", "\n", "fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(15, 5))\n", "\n", "ax1.bar(\n", " x=marvel_most_common[\"Superpower Name\"], height=marvel_most_common[\"Marvel Comics\"]\n", ")\n", "ax2.bar(x=dc_most_common[\"Superpower Name\"], height=dc_most_common[\"DC Comics\"])\n", "\n", "ax1.set_ylabel(\"Count of Superheroes\")\n", "ax2.set_ylabel(\"Count of Superheroes\")\n", "ax1.set_title(\"Frequency of Top Superpowers in Marvel Comics\")\n", "ax2.set_title(\"Frequency of Top Superpowers in DC Comics\");"]}, {"cell_type": "markdown", "metadata": {}, "source": ["It looks like super strength is the most popular power in both Marvel Comics and DC Comics. Overall, the top 5 powers are fairly similar \u2014 4 out of 5 overlap, although Marvel contains agility whereas DC contains flight."]}, {"cell_type": "markdown", "metadata": {}, "source": ["## 5. Formulate and Answer Your Own Question\n", "\n", "For the remainder of this lab, you'll be focusing on coming up with and answering your own question, just like we did above. Your question should not be overly simple, and should require both descriptive statistics and data visualization to answer. In case you're unsure of what questions to ask, some sample questions have been provided below.\n", "\n", "Pick one of the following questions to investigate and answer, or come up with one of your own!\n", "\n", "* Which powers have the highest chance of co-occurring in a hero (e.g. super strength and flight)?\n", "* What is the distribution of skin colors amongst alien heroes?\n", "* How are eye color and hair color related in this dataset?\n", "\n", "Explain your question below:"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# Replace None with appropriate text:\n", "\"\"\"\n", "None\n", "\"\"\""]}, {"cell_type": "markdown", "metadata": {}, "source": ["Some sample cells have been provided to give you room to work. Feel free to create more cells as needed.\n", "\n", "Be sure to include thoughtful, well-labeled visualizations to back up your analysis!\n", "\n", "(There is no solution branch for this part, and feel free to move on to the next lesson if you have already spent more than 90 minutes.)"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": []}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": []}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": []}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": []}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": []}, {"cell_type": "markdown", "metadata": {}, "source": ["## Summary\n", "\n", "In this lab, you demonstrated your mastery of using pandas to clean and aggregate data in order to answer several business questions. This included identifying and handling missing values, text requiring preprocessing, and invalid values. You also performed aggregation and reshaping tasks such as transposing, joining, and grouping data. Great job, there was a lot here!"]}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}, "vscode": {"interpreter": {"hash": "7525ddc99344d304bee386e4294f627a69ef3ddf90a93199e89e426185c49e1b"}}}, "nbformat": 4, "nbformat_minor": 2}
\ No newline at end of file
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Pandas Data Cleaning - Cumulative Lab\n",
+ "\n",
+ "## Introduction\n",
+ "In this lab, we'll make use of everything we've learned about pandas, data cleaning, and exploratory data analysis. In order to complete this lab, you'll have to import, clean, combine, reshape, and visualize data to answer questions provided, as well as your own questions!\n",
+ "\n",
+ "## Objectives\n",
+ "You will be able to:\n",
+ "- Practice opening and inspecting the contents of CSVs using pandas dataframes\n",
+ "- Practice identifying and handling missing values\n",
+ "- Practice identifying and handling invalid values\n",
+ "- Practice cleaning text data by removing whitespace and fixing typos\n",
+ "- Practice joining multiple dataframes"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "x = 2"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Your Task: Clean the Superheroes Dataset with Pandas\n",
+ "\n",
+ "\n",
+ "\n",
+ "Photo by Yulia Matvienko on Unsplash"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Data Understanding\n",
+ "In this lab, we'll work with a version of the comprehensive Superheroes Dataset, which can be found on [Kaggle](https://www.kaggle.com/claudiodavi/superhero-set/data) and was originally scraped from [SuperHeroDb](https://www.superherodb.com/). We have modified the structure and contents of the dataset somewhat for the purposes of this lab. Note that this data was collected in June 2017, so it may not reflect the most up-to-date superhero lore.\n",
+ "\n",
+ "The data is contained in two separate CSV files:\n",
+ "\n",
+ "1. `heroes_information.csv`: each record represents a superhero, with attributes of that superhero (e.g. eye color). Height is measured in centimeters, and weight is measured in pounds.\n",
+ "2. `super_hero_powers.csv`: each record represents a superpower, then has True/False values representing whether each superhero has that power\n",
+ "\n",
+ "### Business Understanding\n",
+ "\n",
+ "The business questions you have been provided are:\n",
+ "\n",
+ "1. What is the distribution of superheroes by publisher?\n",
+ "2. What is the relationship between height and number of superpowers? And does this differ based on gender?\n",
+ "3. What are the 5 most common superpowers in Marvel Comics vs. DC Comics?\n",
+ "\n",
+ "This lab also simulates something you are likely to encounter at some point or another in your career in data science: someone has given you access to a dataset, as well as a few questions, and has told you to \"find something interesting\".\n",
+ "\n",
+ "So, in addition to completing the basic data cleaning tasks and the aggregation and reshaping tasks needed to answer the provided questions, you will also need to formulate a question of your own and perform any additional cleaning/aggregation/reshaping that is needed to answer it."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Requirements\n",
+ "\n",
+ "#### 1. Load the Data with Pandas\n",
+ "\n",
+ "Create a dataframes `heroes_df` and `powers_df` that represent the two CSV files. Use pandas methods to inspect the shape and other attributes of these dataframes.\n",
+ "\n",
+ "#### 2. Perform Data Cleaning Required to Answer First Question\n",
+ "\n",
+ "The first question is: *What is the distribution of superheroes by publisher?*\n",
+ "\n",
+ "In order to answer this question, you will need to:\n",
+ "\n",
+ "* Identify and handle missing values\n",
+ "* Identify and handle text data requiring cleaning\n",
+ "\n",
+ "#### 3. Perform Data Aggregation and Cleaning Required to Answer Second Question\n",
+ "\n",
+ "The second question is: *What is the relationship between height and number of superpowers? And does this differ based on gender?*\n",
+ "\n",
+ "In order to answer this question, you will need to:\n",
+ "\n",
+ "* Join the dataframes together\n",
+ "* Identify and handle invalid values\n",
+ "\n",
+ "#### 4. Perform Data Aggregation Required to Answer Third Question\n",
+ "\n",
+ "The third question is: *What are the 5 most common superpowers in Marvel Comics vs. DC Comics?*\n",
+ "\n",
+ "This should not require any additional data cleaning or joining of tables, but it will require some additional aggregation.\n",
+ "\n",
+ "#### 5. Formulate and Answer Your Own Question\n",
+ "\n",
+ "This part is fairly open-ended. Think of a question that can be answered with the available data, and perform any cleaning or aggregation required to answer that question."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 1. Load the Data with Pandas\n",
+ "\n",
+ "In the cell below, we:\n",
+ "\n",
+ "* Import and alias `pandas` as `pd`\n",
+ "* Import and alias `numpy` as `np`\n",
+ "* Import and alias `seaborn` as `sns`\n",
+ "* Import and alias `matplotlib.pyplot` as `plt`\n",
+ "* Set Matplotlib visualizations to display inline in the notebook"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Run this cell without changes\n",
+ "\n",
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "import seaborn as sns\n",
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "%matplotlib inline"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Superheroes\n",
+ "\n",
+ "In the cell below, load `heroes_information.csv` as `heroes_df`:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
Unnamed: 0
\n",
+ "
name
\n",
+ "
Gender
\n",
+ "
Eye color
\n",
+ "
Race
\n",
+ "
Hair color
\n",
+ "
Height
\n",
+ "
Publisher
\n",
+ "
Skin color
\n",
+ "
Alignment
\n",
+ "
Weight
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
0
\n",
+ "
0
\n",
+ "
A-Bomb
\n",
+ "
Male
\n",
+ "
yellow
\n",
+ "
Human
\n",
+ "
No Hair
\n",
+ "
203.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
good
\n",
+ "
441.0
\n",
+ "
\n",
+ "
\n",
+ "
1
\n",
+ "
1
\n",
+ "
Abe Sapien
\n",
+ "
Male
\n",
+ "
blue
\n",
+ "
Icthyo Sapien
\n",
+ "
No Hair
\n",
+ "
191.0
\n",
+ "
Dark Horse Comics
\n",
+ "
blue
\n",
+ "
good
\n",
+ "
65.0
\n",
+ "
\n",
+ "
\n",
+ "
2
\n",
+ "
2
\n",
+ "
Abin Sur
\n",
+ "
Male
\n",
+ "
blue
\n",
+ "
Ungaran
\n",
+ "
No Hair
\n",
+ "
185.0
\n",
+ "
DC Comics
\n",
+ "
red
\n",
+ "
good
\n",
+ "
90.0
\n",
+ "
\n",
+ "
\n",
+ "
3
\n",
+ "
3
\n",
+ "
Abomination
\n",
+ "
Male
\n",
+ "
green
\n",
+ "
Human / Radiation
\n",
+ "
No Hair
\n",
+ "
203.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
bad
\n",
+ "
441.0
\n",
+ "
\n",
+ "
\n",
+ "
4
\n",
+ "
4
\n",
+ "
Abraxas
\n",
+ "
Male
\n",
+ "
blue
\n",
+ "
Cosmic Entity
\n",
+ "
Black
\n",
+ "
-99.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
bad
\n",
+ "
-99.0
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Unnamed: 0 name Gender Eye color Race Hair color \\\n",
+ "0 0 A-Bomb Male yellow Human No Hair \n",
+ "1 1 Abe Sapien Male blue Icthyo Sapien No Hair \n",
+ "2 2 Abin Sur Male blue Ungaran No Hair \n",
+ "3 3 Abomination Male green Human / Radiation No Hair \n",
+ "4 4 Abraxas Male blue Cosmic Entity Black \n",
+ "\n",
+ " Height Publisher Skin color Alignment Weight \n",
+ "0 203.0 Marvel Comics - good 441.0 \n",
+ "1 191.0 Dark Horse Comics blue good 65.0 \n",
+ "2 185.0 DC Comics red good 90.0 \n",
+ "3 203.0 Marvel Comics - bad 441.0 \n",
+ "4 -99.0 Marvel Comics - bad -99.0 "
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "heroes_df = pd.read_csv('heroes_information.csv')\n",
+ "\n",
+ "heroes_df.head()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "It looks like that CSV came with an index column, resulting in an extra column called `Unnamed: 0`. We don't need that column, so write code to get rid of it below.\n",
+ "\n",
+ "There are two ways to do this:\n",
+ "\n",
+ "1. Re-load with `read_csv`, and specify the parameter `index_col=0`\n",
+ "2. Drop the column `Unnamed: 0` with `axis=1`"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
name
\n",
+ "
Gender
\n",
+ "
Eye color
\n",
+ "
Race
\n",
+ "
Hair color
\n",
+ "
Height
\n",
+ "
Publisher
\n",
+ "
Skin color
\n",
+ "
Alignment
\n",
+ "
Weight
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
0
\n",
+ "
A-Bomb
\n",
+ "
Male
\n",
+ "
yellow
\n",
+ "
Human
\n",
+ "
No Hair
\n",
+ "
203.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
good
\n",
+ "
441.0
\n",
+ "
\n",
+ "
\n",
+ "
1
\n",
+ "
Abe Sapien
\n",
+ "
Male
\n",
+ "
blue
\n",
+ "
Icthyo Sapien
\n",
+ "
No Hair
\n",
+ "
191.0
\n",
+ "
Dark Horse Comics
\n",
+ "
blue
\n",
+ "
good
\n",
+ "
65.0
\n",
+ "
\n",
+ "
\n",
+ "
2
\n",
+ "
Abin Sur
\n",
+ "
Male
\n",
+ "
blue
\n",
+ "
Ungaran
\n",
+ "
No Hair
\n",
+ "
185.0
\n",
+ "
DC Comics
\n",
+ "
red
\n",
+ "
good
\n",
+ "
90.0
\n",
+ "
\n",
+ "
\n",
+ "
3
\n",
+ "
Abomination
\n",
+ "
Male
\n",
+ "
green
\n",
+ "
Human / Radiation
\n",
+ "
No Hair
\n",
+ "
203.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
bad
\n",
+ "
441.0
\n",
+ "
\n",
+ "
\n",
+ "
4
\n",
+ "
Abraxas
\n",
+ "
Male
\n",
+ "
blue
\n",
+ "
Cosmic Entity
\n",
+ "
Black
\n",
+ "
-99.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
bad
\n",
+ "
-99.0
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " name Gender Eye color Race Hair color Height \\\n",
+ "0 A-Bomb Male yellow Human No Hair 203.0 \n",
+ "1 Abe Sapien Male blue Icthyo Sapien No Hair 191.0 \n",
+ "2 Abin Sur Male blue Ungaran No Hair 185.0 \n",
+ "3 Abomination Male green Human / Radiation No Hair 203.0 \n",
+ "4 Abraxas Male blue Cosmic Entity Black -99.0 \n",
+ "\n",
+ " Publisher Skin color Alignment Weight \n",
+ "0 Marvel Comics - good 441.0 \n",
+ "1 Dark Horse Comics blue good 65.0 \n",
+ "2 DC Comics red good 90.0 \n",
+ "3 Marvel Comics - bad 441.0 \n",
+ "4 Marvel Comics - bad -99.0 "
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "heroes_df = pd.read_csv('heroes_information.csv', index_col=0)\n",
+ "heroes_df.head()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The following code checks that the dataframe was loaded correctly."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Run this cell without changes\n",
+ "\n",
+ "# There should be 734 rows\n",
+ "assert heroes_df.shape[0] == 734\n",
+ "\n",
+ "# There should be 10 columns. If this fails, make sure you got rid of\n",
+ "# the extra index column\n",
+ "assert heroes_df.shape[1] == 10\n",
+ "\n",
+ "# These should be the columns\n",
+ "assert list(heroes_df.columns) == [\n",
+ " \"name\",\n",
+ " \"Gender\",\n",
+ " \"Eye color\",\n",
+ " \"Race\",\n",
+ " \"Hair color\",\n",
+ " \"Height\",\n",
+ " \"Publisher\",\n",
+ " \"Skin color\",\n",
+ " \"Alignment\",\n",
+ " \"Weight\",\n",
+ "]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Now you want to get familiar with the data. This step includes:\n",
+ "\n",
+ "* Understanding the dimensionality of your dataset\n",
+ "* Investigating what type of data it contains, and the data types used to store it\n",
+ "* Discovering how missing values are encoded, and how many there are\n",
+ "* Getting a feel for what information it does and doesn't contain\n",
+ "\n",
+ "In the cell below, inspect the overall shape of the dataframe:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(734, 10)"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "heroes_df.shape"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Now let's look at the info printout:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Int64Index: 734 entries, 0 to 733\n",
+ "Data columns (total 10 columns):\n",
+ " # Column Non-Null Count Dtype \n",
+ "--- ------ -------------- ----- \n",
+ " 0 name 734 non-null object \n",
+ " 1 Gender 734 non-null object \n",
+ " 2 Eye color 734 non-null object \n",
+ " 3 Race 734 non-null object \n",
+ " 4 Hair color 734 non-null object \n",
+ " 5 Height 734 non-null float64\n",
+ " 6 Publisher 719 non-null object \n",
+ " 7 Skin color 734 non-null object \n",
+ " 8 Alignment 734 non-null object \n",
+ " 9 Weight 732 non-null float64\n",
+ "dtypes: float64(2), object(8)\n",
+ "memory usage: 63.1+ KB\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Run this cell without changes\n",
+ "heroes_df.info()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "In the cell below, interpret that information. Do the data types line up with what we expect? Are there any missing values?"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'\\nThe categorical data are objects and the numerical data are floats, as should be.\\nThere is missing data in the publisher and weight columns.\\n'"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Replace None with appropriate text\n",
+ "\"\"\"\n",
+ "The categorical data are objects and the numerical data are floats, as should be.\n",
+ "There is missing data in the publisher and weight columns.\n",
+ "\"\"\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Superpowers\n",
+ "\n",
+ "Now, repeat the same process with `super_hero_powers.csv`. Name the dataframe `powers_df`. This time, make sure you use `index_col=0` when opening the CSV because the index contains important information."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
3-D Man
\n",
+ "
A-Bomb
\n",
+ "
Abe Sapien
\n",
+ "
Abin Sur
\n",
+ "
Abomination
\n",
+ "
Abraxas
\n",
+ "
Absorbing Man
\n",
+ "
Adam Monroe
\n",
+ "
Adam Strange
\n",
+ "
Agent Bob
\n",
+ "
...
\n",
+ "
Wonder Man
\n",
+ "
Wonder Woman
\n",
+ "
X-23
\n",
+ "
X-Man
\n",
+ "
Yellowjacket
\n",
+ "
Yellowjacket II
\n",
+ "
Ymir
\n",
+ "
Yoda
\n",
+ "
Zatanna
\n",
+ "
Zoom
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
Agility
\n",
+ "
True
\n",
+ "
False
\n",
+ "
True
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
True
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
True
\n",
+ "
False
\n",
+ "
False
\n",
+ "
\n",
+ "
\n",
+ "
Accelerated Healing
\n",
+ "
False
\n",
+ "
True
\n",
+ "
True
\n",
+ "
False
\n",
+ "
True
\n",
+ "
False
\n",
+ "
False
\n",
+ "
True
\n",
+ "
False
\n",
+ "
False
\n",
+ "
...
\n",
+ "
False
\n",
+ "
True
\n",
+ "
True
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
\n",
+ "
\n",
+ "
Lantern Power Ring
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
True
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
\n",
+ "
\n",
+ "
Dimensional Awareness
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
True
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
\n",
+ "
\n",
+ "
Cold Resistance
\n",
+ "
False
\n",
+ "
False
\n",
+ "
True
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
True
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
True
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
5 rows × 667 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " 3-D Man A-Bomb Abe Sapien Abin Sur Abomination \\\n",
+ "Agility True False True False False \n",
+ "Accelerated Healing False True True False True \n",
+ "Lantern Power Ring False False False True False \n",
+ "Dimensional Awareness False False False False False \n",
+ "Cold Resistance False False True False False \n",
+ "\n",
+ " Abraxas Absorbing Man Adam Monroe Adam Strange \\\n",
+ "Agility False False False False \n",
+ "Accelerated Healing False False True False \n",
+ "Lantern Power Ring False False False False \n",
+ "Dimensional Awareness True False False False \n",
+ "Cold Resistance False True False False \n",
+ "\n",
+ " Agent Bob ... Wonder Man Wonder Woman X-23 X-Man \\\n",
+ "Agility False ... False False True False \n",
+ "Accelerated Healing False ... False True True False \n",
+ "Lantern Power Ring False ... False False False False \n",
+ "Dimensional Awareness False ... False False False False \n",
+ "Cold Resistance False ... False False False False \n",
+ "\n",
+ " Yellowjacket Yellowjacket II Ymir Yoda Zatanna \\\n",
+ "Agility False False False True False \n",
+ "Accelerated Healing False False False False False \n",
+ "Lantern Power Ring False False False False False \n",
+ "Dimensional Awareness False False False False False \n",
+ "Cold Resistance False False True False False \n",
+ "\n",
+ " Zoom \n",
+ "Agility False \n",
+ "Accelerated Healing False \n",
+ "Lantern Power Ring False \n",
+ "Dimensional Awareness False \n",
+ "Cold Resistance False \n",
+ "\n",
+ "[5 rows x 667 columns]"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "powers_df = pd.read_csv('super_hero_powers.csv', index_col=0)\n",
+ "powers_df.head()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The following code will check if it was loaded correctly:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Run this cell without changes\n",
+ "\n",
+ "# There should be 167 rows, 667 columns\n",
+ "assert powers_df.shape == (167, 667)\n",
+ "\n",
+ "# The first column should be '3-D Man'\n",
+ "assert powers_df.columns[0] == \"3-D Man\"\n",
+ "\n",
+ "# The last column should be 'Zoom'\n",
+ "assert powers_df.columns[-1] == \"Zoom\"\n",
+ "\n",
+ "# The first index should be 'Agility'\n",
+ "assert powers_df.index[0] == \"Agility\"\n",
+ "\n",
+ "# The last index should be 'Omniscient'\n",
+ "assert powers_df.index[-1] == \"Omniscient\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 2. Perform Data Cleaning Required to Answer First Question\n",
+ "\n",
+ "Recall that the first question is: *What is the distribution of superheroes by publisher?*\n",
+ "\n",
+ "To answer this question, we will only need to use `heroes_df`, which contains the `Publisher` column.\n",
+ "\n",
+ "### Identifying and Handling Missing Values\n",
+ "\n",
+ "As you likely noted above, the `Publisher` column is missing some values. Let's take a look at some samples with and without missing publisher values:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
name
\n",
+ "
Gender
\n",
+ "
Eye color
\n",
+ "
Race
\n",
+ "
Hair color
\n",
+ "
Height
\n",
+ "
Publisher
\n",
+ "
Skin color
\n",
+ "
Alignment
\n",
+ "
Weight
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
60
\n",
+ "
Banshee
\n",
+ "
Male
\n",
+ "
green
\n",
+ "
Human
\n",
+ "
Strawberry Blond
\n",
+ "
183.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
good
\n",
+ "
77.0
\n",
+ "
\n",
+ "
\n",
+ "
61
\n",
+ "
Bantam
\n",
+ "
Male
\n",
+ "
brown
\n",
+ "
-
\n",
+ "
Black
\n",
+ "
165.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
good
\n",
+ "
54.0
\n",
+ "
\n",
+ "
\n",
+ "
219
\n",
+ "
DL Hawkins
\n",
+ "
Male
\n",
+ "
-
\n",
+ "
-
\n",
+ "
-
\n",
+ "
-99.0
\n",
+ "
NBC - Heroes
\n",
+ "
-
\n",
+ "
good
\n",
+ "
-99.0
\n",
+ "
\n",
+ "
\n",
+ "
650
\n",
+ "
Synch
\n",
+ "
Male
\n",
+ "
brown
\n",
+ "
-
\n",
+ "
Black
\n",
+ "
180.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
good
\n",
+ "
74.0
\n",
+ "
\n",
+ "
\n",
+ "
8
\n",
+ "
Agent 13
\n",
+ "
Female
\n",
+ "
blue
\n",
+ "
-
\n",
+ "
Blond
\n",
+ "
173.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
good
\n",
+ "
61.0
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " name Gender Eye color Race Hair color Height \\\n",
+ "60 Banshee Male green Human Strawberry Blond 183.0 \n",
+ "61 Bantam Male brown - Black 165.0 \n",
+ "219 DL Hawkins Male - - - -99.0 \n",
+ "650 Synch Male brown - Black 180.0 \n",
+ "8 Agent 13 Female blue - Blond 173.0 \n",
+ "\n",
+ " Publisher Skin color Alignment Weight \n",
+ "60 Marvel Comics - good 77.0 \n",
+ "61 Marvel Comics - good 54.0 \n",
+ "219 NBC - Heroes - good -99.0 \n",
+ "650 Marvel Comics - good 74.0 \n",
+ "8 Marvel Comics - good 61.0 "
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Run this cell without changes\n",
+ "has_publisher_sample = heroes_df[heroes_df[\"Publisher\"].notna()].sample(\n",
+ " 5, random_state=1\n",
+ ")\n",
+ "has_publisher_sample"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
name
\n",
+ "
Gender
\n",
+ "
Eye color
\n",
+ "
Race
\n",
+ "
Hair color
\n",
+ "
Height
\n",
+ "
Publisher
\n",
+ "
Skin color
\n",
+ "
Alignment
\n",
+ "
Weight
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
175
\n",
+ "
Chuck Norris
\n",
+ "
Male
\n",
+ "
-
\n",
+ "
-
\n",
+ "
-
\n",
+ "
178.0
\n",
+ "
NaN
\n",
+ "
-
\n",
+ "
good
\n",
+ "
-99.0
\n",
+ "
\n",
+ "
\n",
+ "
286
\n",
+ "
Godzilla
\n",
+ "
-
\n",
+ "
-
\n",
+ "
Kaiju
\n",
+ "
-
\n",
+ "
108.0
\n",
+ "
NaN
\n",
+ "
grey
\n",
+ "
bad
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
263
\n",
+ "
Flash Gordon
\n",
+ "
Male
\n",
+ "
-
\n",
+ "
-
\n",
+ "
-
\n",
+ "
-99.0
\n",
+ "
NaN
\n",
+ "
-
\n",
+ "
good
\n",
+ "
-99.0
\n",
+ "
\n",
+ "
\n",
+ "
138
\n",
+ "
Brundlefly
\n",
+ "
Male
\n",
+ "
-
\n",
+ "
Mutant
\n",
+ "
-
\n",
+ "
193.0
\n",
+ "
NaN
\n",
+ "
-
\n",
+ "
-
\n",
+ "
-99.0
\n",
+ "
\n",
+ "
\n",
+ "
381
\n",
+ "
Katniss Everdeen
\n",
+ "
Female
\n",
+ "
-
\n",
+ "
Human
\n",
+ "
-
\n",
+ "
-99.0
\n",
+ "
NaN
\n",
+ "
-
\n",
+ "
good
\n",
+ "
-99.0
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " name Gender Eye color Race Hair color Height Publisher \\\n",
+ "175 Chuck Norris Male - - - 178.0 NaN \n",
+ "286 Godzilla - - Kaiju - 108.0 NaN \n",
+ "263 Flash Gordon Male - - - -99.0 NaN \n",
+ "138 Brundlefly Male - Mutant - 193.0 NaN \n",
+ "381 Katniss Everdeen Female - Human - -99.0 NaN \n",
+ "\n",
+ " Skin color Alignment Weight \n",
+ "175 - good -99.0 \n",
+ "286 grey bad NaN \n",
+ "263 - good -99.0 \n",
+ "138 - - -99.0 \n",
+ "381 - good -99.0 "
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Run this cell without changes\n",
+ "missing_publisher_sample = heroes_df[heroes_df[\"Publisher\"].isna()].sample(\n",
+ " 5, random_state=1\n",
+ ")\n",
+ "missing_publisher_sample"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "What do we want to do about these missing values?\n",
+ "\n",
+ "Recall that there are two general strategies for dealing with missing values:\n",
+ "\n",
+ "1. Fill in missing values (either using another value from the column, e.g. the mean or mode, or using some other value like \"Unknown\")\n",
+ "2. Drop rows with missing values\n",
+ "\n",
+ "Write your answer below, and explain how it relates to the information we have:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "\"\\n1. Because it is categorical data, it wouldn't be appropriate to use mean or mode\\nWe could use unknown if it is meaningful to know which super heros we don't have that info for\\n2. There are 15 superheroes with missing publishers so we would loose around 2% of the data. \\n\""
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Replace None with appropriate text\n",
+ "\"\"\"\n",
+ "1. Because it is categorical data, it wouldn't be appropriate to use mean or mode\n",
+ "We could use unknown if it is meaningful to know which super heros we don't have that info for\n",
+ "2. There are 15 superheroes with missing publishers so we would loose around 2% of the data. \n",
+ "\"\"\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Now, implement the strategy to drop rows with missing values using code. (You can also check the solution branch for the answer to the question above if you're really not sure.)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "heroes_df.dropna(subset=[\"Publisher\"], inplace=True)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Now there should be no missing values in the publisher column:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Run this cell without changes\n",
+ "assert heroes_df[\"Publisher\"].isna().sum() == 0"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Identifying and Handling Text Data Requiring Cleaning\n",
+ "\n",
+ "The overall field of natural language processing (NLP) is quite broad, and we're not going to get into any advanced text processing, but it's useful to be able to clean up minor issues in text data.\n",
+ "\n",
+ "Let's take a look at the counts of heroes grouped by publisher:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Marvel Comics 379\n",
+ "DC Comics 212\n",
+ "NBC - Heroes 19\n",
+ "Dark Horse Comics 18\n",
+ "George Lucas 14\n",
+ "Image Comics 14\n",
+ "Marvel 9\n",
+ "Star Trek 6\n",
+ "HarperCollins 6\n",
+ "Team Epic TV 5\n",
+ "SyFy 5\n",
+ "Icon Comics 4\n",
+ "IDW Publishing 4\n",
+ "Shueisha 4\n",
+ "ABC Studios 4\n",
+ "Wildstorm 3\n",
+ " DC Comics 3\n",
+ "Sony Pictures 2\n",
+ "J. R. R. Tolkien 1\n",
+ "Rebellion 1\n",
+ "Titan Books 1\n",
+ "Universal Studios 1\n",
+ "South Park 1\n",
+ "Hanna-Barbera 1\n",
+ "Microsoft 1\n",
+ "J. K. Rowling 1\n",
+ "Name: Publisher, dtype: int64"
+ ]
+ },
+ "execution_count": 16,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Run this cell without changes\n",
+ "heroes_df[\"Publisher\"].value_counts()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "There are two cases where we appear to have data entry issues, and publishers that should be encoded the same have not been. In other words, there are four categories present that really should be counted as two categories (and you do not need specific comic book knowledge to be able to identify them).\n",
+ "\n",
+ "Identify those two cases below:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'\\nDC Comics\\nMarvel Comics\\n'"
+ ]
+ },
+ "execution_count": 17,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Replace None with appropriate text\n",
+ "\"\"\"\n",
+ "DC Comics\n",
+ "Marvel Comics\n",
+ "\"\"\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Now, write some code to handle these cases. If you're not sure where to start, look at the pandas documentation for [replacing values](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.replace.html) and [stripping off whitespace](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.strip.html)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "heroes_df[\"Publisher\"] = heroes_df[\"Publisher\"].replace(\"Marvel\", \"Marvel Comics\")\n",
+ "heroes_df[\"Publisher\"] = heroes_df[\"Publisher\"].str.strip()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Check your work below:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Marvel Comics 388\n",
+ "DC Comics 215\n",
+ "NBC - Heroes 19\n",
+ "Dark Horse Comics 18\n",
+ "George Lucas 14\n",
+ "Image Comics 14\n",
+ "Star Trek 6\n",
+ "HarperCollins 6\n",
+ "Team Epic TV 5\n",
+ "SyFy 5\n",
+ "IDW Publishing 4\n",
+ "Shueisha 4\n",
+ "ABC Studios 4\n",
+ "Icon Comics 4\n",
+ "Wildstorm 3\n",
+ "Sony Pictures 2\n",
+ "South Park 1\n",
+ "J. R. R. Tolkien 1\n",
+ "Rebellion 1\n",
+ "J. K. Rowling 1\n",
+ "Titan Books 1\n",
+ "Universal Studios 1\n",
+ "Microsoft 1\n",
+ "Hanna-Barbera 1\n",
+ "Name: Publisher, dtype: int64"
+ ]
+ },
+ "execution_count": 19,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Run this cell without changes\n",
+ "heroes_df[\"Publisher\"].value_counts()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Answering the Question\n",
+ "\n",
+ "Now we should be able to answer *What is the distribution of superheroes by publisher?*\n",
+ "\n",
+ "If your data cleaning was done correctly, this code should work without any further changes:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Run this cell without changes\n",
+ "\n",
+ "# Set up plots\n",
+ "fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(16, 5))\n",
+ "\n",
+ "# Create variables for easier reuse\n",
+ "value_counts = heroes_df[\"Publisher\"].value_counts()\n",
+ "top_5_counts = value_counts.iloc[:5]\n",
+ "\n",
+ "# Plot data\n",
+ "ax1.bar(value_counts.index, value_counts.values)\n",
+ "ax2.bar(top_5_counts.index, top_5_counts.values)\n",
+ "\n",
+ "# Customize appearance\n",
+ "ax1.tick_params(axis=\"x\", labelrotation=90)\n",
+ "ax2.tick_params(axis=\"x\", labelrotation=45)\n",
+ "ax1.set_ylabel(\"Count of Superheroes\")\n",
+ "ax2.set_ylabel(\"Count of Superheroes\")\n",
+ "ax1.set_title(\"Distribution of Superheroes by Publisher\")\n",
+ "ax2.set_title(\"Top 5 Publishers by Count of Superheroes\");"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 3. Perform Data Aggregation and Cleaning Required to Answer Second Question\n",
+ "\n",
+ "Recall that the second question is: *What is the relationship between height and number of superpowers? And does this differ based on gender?*\n",
+ "\n",
+ "Unlike the previous question, we won't be able to answer this with just `heroes_df`, since information about height is contained in `heroes_df`, while information about superpowers is contained in `powers_df`.\n",
+ "\n",
+ "### Joining the Dataframes Together\n",
+ "\n",
+ "First, identify the shared key between `heroes_df` and `powers_df`. (Shared key meaning, the values you want to join on.) Let's look at them again:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
name
\n",
+ "
Gender
\n",
+ "
Eye color
\n",
+ "
Race
\n",
+ "
Hair color
\n",
+ "
Height
\n",
+ "
Publisher
\n",
+ "
Skin color
\n",
+ "
Alignment
\n",
+ "
Weight
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
0
\n",
+ "
A-Bomb
\n",
+ "
Male
\n",
+ "
yellow
\n",
+ "
Human
\n",
+ "
No Hair
\n",
+ "
203.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
good
\n",
+ "
441.0
\n",
+ "
\n",
+ "
\n",
+ "
1
\n",
+ "
Abe Sapien
\n",
+ "
Male
\n",
+ "
blue
\n",
+ "
Icthyo Sapien
\n",
+ "
No Hair
\n",
+ "
191.0
\n",
+ "
Dark Horse Comics
\n",
+ "
blue
\n",
+ "
good
\n",
+ "
65.0
\n",
+ "
\n",
+ "
\n",
+ "
2
\n",
+ "
Abin Sur
\n",
+ "
Male
\n",
+ "
blue
\n",
+ "
Ungaran
\n",
+ "
No Hair
\n",
+ "
185.0
\n",
+ "
DC Comics
\n",
+ "
red
\n",
+ "
good
\n",
+ "
90.0
\n",
+ "
\n",
+ "
\n",
+ "
3
\n",
+ "
Abomination
\n",
+ "
Male
\n",
+ "
green
\n",
+ "
Human / Radiation
\n",
+ "
No Hair
\n",
+ "
203.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
bad
\n",
+ "
441.0
\n",
+ "
\n",
+ "
\n",
+ "
4
\n",
+ "
Abraxas
\n",
+ "
Male
\n",
+ "
blue
\n",
+ "
Cosmic Entity
\n",
+ "
Black
\n",
+ "
-99.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
bad
\n",
+ "
-99.0
\n",
+ "
\n",
+ "
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
\n",
+ "
\n",
+ "
729
\n",
+ "
Yellowjacket II
\n",
+ "
Female
\n",
+ "
blue
\n",
+ "
Human
\n",
+ "
Strawberry Blond
\n",
+ "
165.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
good
\n",
+ "
52.0
\n",
+ "
\n",
+ "
\n",
+ "
730
\n",
+ "
Ymir
\n",
+ "
Male
\n",
+ "
white
\n",
+ "
Frost Giant
\n",
+ "
No Hair
\n",
+ "
304.8
\n",
+ "
Marvel Comics
\n",
+ "
white
\n",
+ "
good
\n",
+ "
-99.0
\n",
+ "
\n",
+ "
\n",
+ "
731
\n",
+ "
Yoda
\n",
+ "
Male
\n",
+ "
brown
\n",
+ "
Yoda's species
\n",
+ "
White
\n",
+ "
66.0
\n",
+ "
George Lucas
\n",
+ "
green
\n",
+ "
good
\n",
+ "
17.0
\n",
+ "
\n",
+ "
\n",
+ "
732
\n",
+ "
Zatanna
\n",
+ "
Female
\n",
+ "
blue
\n",
+ "
Human
\n",
+ "
Black
\n",
+ "
170.0
\n",
+ "
DC Comics
\n",
+ "
-
\n",
+ "
good
\n",
+ "
57.0
\n",
+ "
\n",
+ "
\n",
+ "
733
\n",
+ "
Zoom
\n",
+ "
Male
\n",
+ "
red
\n",
+ "
-
\n",
+ "
Brown
\n",
+ "
185.0
\n",
+ "
DC Comics
\n",
+ "
-
\n",
+ "
bad
\n",
+ "
81.0
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
719 rows × 10 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " name Gender Eye color Race Hair color \\\n",
+ "0 A-Bomb Male yellow Human No Hair \n",
+ "1 Abe Sapien Male blue Icthyo Sapien No Hair \n",
+ "2 Abin Sur Male blue Ungaran No Hair \n",
+ "3 Abomination Male green Human / Radiation No Hair \n",
+ "4 Abraxas Male blue Cosmic Entity Black \n",
+ ".. ... ... ... ... ... \n",
+ "729 Yellowjacket II Female blue Human Strawberry Blond \n",
+ "730 Ymir Male white Frost Giant No Hair \n",
+ "731 Yoda Male brown Yoda's species White \n",
+ "732 Zatanna Female blue Human Black \n",
+ "733 Zoom Male red - Brown \n",
+ "\n",
+ " Height Publisher Skin color Alignment Weight \n",
+ "0 203.0 Marvel Comics - good 441.0 \n",
+ "1 191.0 Dark Horse Comics blue good 65.0 \n",
+ "2 185.0 DC Comics red good 90.0 \n",
+ "3 203.0 Marvel Comics - bad 441.0 \n",
+ "4 -99.0 Marvel Comics - bad -99.0 \n",
+ ".. ... ... ... ... ... \n",
+ "729 165.0 Marvel Comics - good 52.0 \n",
+ "730 304.8 Marvel Comics white good -99.0 \n",
+ "731 66.0 George Lucas green good 17.0 \n",
+ "732 170.0 DC Comics - good 57.0 \n",
+ "733 185.0 DC Comics - bad 81.0 \n",
+ "\n",
+ "[719 rows x 10 columns]"
+ ]
+ },
+ "execution_count": 21,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Run this cell without changes\n",
+ "heroes_df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
3-D Man
\n",
+ "
A-Bomb
\n",
+ "
Abe Sapien
\n",
+ "
Abin Sur
\n",
+ "
Abomination
\n",
+ "
Abraxas
\n",
+ "
Absorbing Man
\n",
+ "
Adam Monroe
\n",
+ "
Adam Strange
\n",
+ "
Agent Bob
\n",
+ "
...
\n",
+ "
Wonder Man
\n",
+ "
Wonder Woman
\n",
+ "
X-23
\n",
+ "
X-Man
\n",
+ "
Yellowjacket
\n",
+ "
Yellowjacket II
\n",
+ "
Ymir
\n",
+ "
Yoda
\n",
+ "
Zatanna
\n",
+ "
Zoom
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
Agility
\n",
+ "
True
\n",
+ "
False
\n",
+ "
True
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
True
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
True
\n",
+ "
False
\n",
+ "
False
\n",
+ "
\n",
+ "
\n",
+ "
Accelerated Healing
\n",
+ "
False
\n",
+ "
True
\n",
+ "
True
\n",
+ "
False
\n",
+ "
True
\n",
+ "
False
\n",
+ "
False
\n",
+ "
True
\n",
+ "
False
\n",
+ "
False
\n",
+ "
...
\n",
+ "
False
\n",
+ "
True
\n",
+ "
True
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
\n",
+ "
\n",
+ "
Lantern Power Ring
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
True
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
\n",
+ "
\n",
+ "
Dimensional Awareness
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
True
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
\n",
+ "
\n",
+ "
Cold Resistance
\n",
+ "
False
\n",
+ "
False
\n",
+ "
True
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
True
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
True
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
\n",
+ "
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
\n",
+ "
\n",
+ "
Phoenix Force
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
\n",
+ "
\n",
+ "
Molecular Dissipation
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
\n",
+ "
\n",
+ "
Vision - Cryo
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
\n",
+ "
\n",
+ "
Omnipresent
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
\n",
+ "
\n",
+ "
Omniscient
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
167 rows × 667 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " 3-D Man A-Bomb Abe Sapien Abin Sur Abomination \\\n",
+ "Agility True False True False False \n",
+ "Accelerated Healing False True True False True \n",
+ "Lantern Power Ring False False False True False \n",
+ "Dimensional Awareness False False False False False \n",
+ "Cold Resistance False False True False False \n",
+ "... ... ... ... ... ... \n",
+ "Phoenix Force False False False False False \n",
+ "Molecular Dissipation False False False False False \n",
+ "Vision - Cryo False False False False False \n",
+ "Omnipresent False False False False False \n",
+ "Omniscient False False False False False \n",
+ "\n",
+ " Abraxas Absorbing Man Adam Monroe Adam Strange \\\n",
+ "Agility False False False False \n",
+ "Accelerated Healing False False True False \n",
+ "Lantern Power Ring False False False False \n",
+ "Dimensional Awareness True False False False \n",
+ "Cold Resistance False True False False \n",
+ "... ... ... ... ... \n",
+ "Phoenix Force False False False False \n",
+ "Molecular Dissipation False False False False \n",
+ "Vision - Cryo False False False False \n",
+ "Omnipresent False False False False \n",
+ "Omniscient False False False False \n",
+ "\n",
+ " Agent Bob ... Wonder Man Wonder Woman X-23 X-Man \\\n",
+ "Agility False ... False False True False \n",
+ "Accelerated Healing False ... False True True False \n",
+ "Lantern Power Ring False ... False False False False \n",
+ "Dimensional Awareness False ... False False False False \n",
+ "Cold Resistance False ... False False False False \n",
+ "... ... ... ... ... ... ... \n",
+ "Phoenix Force False ... False False False False \n",
+ "Molecular Dissipation False ... False False False False \n",
+ "Vision - Cryo False ... False False False False \n",
+ "Omnipresent False ... False False False False \n",
+ "Omniscient False ... False False False False \n",
+ "\n",
+ " Yellowjacket Yellowjacket II Ymir Yoda Zatanna \\\n",
+ "Agility False False False True False \n",
+ "Accelerated Healing False False False False False \n",
+ "Lantern Power Ring False False False False False \n",
+ "Dimensional Awareness False False False False False \n",
+ "Cold Resistance False False True False False \n",
+ "... ... ... ... ... ... \n",
+ "Phoenix Force False False False False False \n",
+ "Molecular Dissipation False False False False False \n",
+ "Vision - Cryo False False False False False \n",
+ "Omnipresent False False False False False \n",
+ "Omniscient False False False False False \n",
+ "\n",
+ " Zoom \n",
+ "Agility False \n",
+ "Accelerated Healing False \n",
+ "Lantern Power Ring False \n",
+ "Dimensional Awareness False \n",
+ "Cold Resistance False \n",
+ "... ... \n",
+ "Phoenix Force False \n",
+ "Molecular Dissipation False \n",
+ "Vision - Cryo False \n",
+ "Omnipresent False \n",
+ "Omniscient False \n",
+ "\n",
+ "[167 rows x 667 columns]"
+ ]
+ },
+ "execution_count": 22,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Run this cell without changes\n",
+ "powers_df"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "In the cell below, identify the shared key, and your strategy for joining the data (e.g. what will one record represent after you join, will you do a left/right/inner/outer join):"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'\\nName in heroes aligns with the header row in superpowers \\nTranspose the superpower df to match the heroes df\\nDo an inner join to keep only records(superheroes) in both dfs\\n\\n'"
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Replace None with appropriate text\n",
+ "\"\"\"\n",
+ "Name in heroes aligns with the header row in superpowers \n",
+ "Transpose the superpower df to match the heroes df\n",
+ "Do an inner join to keep only records(superheroes) in both dfs\n",
+ "\n",
+ "\"\"\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "In the cell below, create a new dataframe called `heroes_and_powers_df` that contains the joined data. You can look at the above answer in the solution branch if you're not sure where to start.\n",
+ "\n",
+ "***Hint:*** Note that the `.join` method requires that the two dataframes share an index ([documentation here](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.join.html)) whereas the `.merge` method can join using any columns ([documentation here](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html)). It is up to you which one you want to use."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
"
+ ],
+ "text/plain": [
+ " name Gender Eye color Race Hair color \\\n",
+ "0 A-Bomb Male yellow Human No Hair \n",
+ "1 Abe Sapien Male blue Icthyo Sapien No Hair \n",
+ "2 Abin Sur Male blue Ungaran No Hair \n",
+ "3 Abomination Male green Human / Radiation No Hair \n",
+ "4 Abraxas Male blue Cosmic Entity Black \n",
+ ".. ... ... ... ... ... \n",
+ "642 Yellowjacket II Female blue Human Strawberry Blond \n",
+ "643 Ymir Male white Frost Giant No Hair \n",
+ "644 Yoda Male brown Yoda's species White \n",
+ "645 Zatanna Female blue Human Black \n",
+ "646 Zoom Male red - Brown \n",
+ "\n",
+ " Height Publisher Skin color Alignment Weight ... \\\n",
+ "0 203.0 Marvel Comics - good 441.0 ... \n",
+ "1 191.0 Dark Horse Comics blue good 65.0 ... \n",
+ "2 185.0 DC Comics red good 90.0 ... \n",
+ "3 203.0 Marvel Comics - bad 441.0 ... \n",
+ "4 -99.0 Marvel Comics - bad -99.0 ... \n",
+ ".. ... ... ... ... ... ... \n",
+ "642 165.0 Marvel Comics - good 52.0 ... \n",
+ "643 304.8 Marvel Comics white good -99.0 ... \n",
+ "644 66.0 George Lucas green good 17.0 ... \n",
+ "645 170.0 DC Comics - good 57.0 ... \n",
+ "646 185.0 DC Comics - bad 81.0 ... \n",
+ "\n",
+ " Web Creation Reality Warping Odin Force Symbiote Costume Speed Force \\\n",
+ "0 False False False False False \n",
+ "1 False False False False False \n",
+ "2 False False False False False \n",
+ "3 False False False False False \n",
+ "4 False False False False False \n",
+ ".. ... ... ... ... ... \n",
+ "642 False False False False False \n",
+ "643 False False False False False \n",
+ "644 False False False False False \n",
+ "645 False False False False False \n",
+ "646 False False False False False \n",
+ "\n",
+ " Phoenix Force Molecular Dissipation Vision - Cryo Omnipresent \\\n",
+ "0 False False False False \n",
+ "1 False False False False \n",
+ "2 False False False False \n",
+ "3 False False False False \n",
+ "4 False False False False \n",
+ ".. ... ... ... ... \n",
+ "642 False False False False \n",
+ "643 False False False False \n",
+ "644 False False False False \n",
+ "645 False False False False \n",
+ "646 False False False False \n",
+ "\n",
+ " Omniscient \n",
+ "0 False \n",
+ "1 False \n",
+ "2 False \n",
+ "3 False \n",
+ "4 False \n",
+ ".. ... \n",
+ "642 False \n",
+ "643 False \n",
+ "644 False \n",
+ "645 False \n",
+ "646 False \n",
+ "\n",
+ "[647 rows x 177 columns]"
+ ]
+ },
+ "execution_count": 27,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "heroes_and_powers_df = heroes_df.merge(powers_df_transposed, on='name', how='inner')\n",
+ "heroes_and_powers_df\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Run the code below to check your work:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Run this cell without changes\n",
+ "\n",
+ "# Confirms you have created a DataFrame with the specified name\n",
+ "assert type(heroes_and_powers_df) == pd.DataFrame\n",
+ "\n",
+ "# Confirms you have the right number of rows\n",
+ "assert heroes_and_powers_df.shape[0] == 647\n",
+ "\n",
+ "# Confirms you have the necessary columns\n",
+ "# (If you modified the value of powers_df along the way, you might need to\n",
+ "# modify this test. We are checking that all of the powers are present as\n",
+ "# columns.)\n",
+ "assert [power in heroes_and_powers_df.columns for power in powers_df.index]\n",
+ "# (If you modified the value of heroes_df along the way, you might need to\n",
+ "# modify this as well. We are checking that all of the attribute columns from\n",
+ "# heroes_df are present as columns in the joined df)\n",
+ "assert [attribute in heroes_and_powers_df.columns for attribute in heroes_df.columns]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Now that we have created a joined dataframe, we can aggregate the number of superpowers by superhero. This code is written for you:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
name
\n",
+ "
Gender
\n",
+ "
Eye color
\n",
+ "
Race
\n",
+ "
Hair color
\n",
+ "
Height
\n",
+ "
Publisher
\n",
+ "
Skin color
\n",
+ "
Alignment
\n",
+ "
Weight
\n",
+ "
...
\n",
+ "
Reality Warping
\n",
+ "
Odin Force
\n",
+ "
Symbiote Costume
\n",
+ "
Speed Force
\n",
+ "
Phoenix Force
\n",
+ "
Molecular Dissipation
\n",
+ "
Vision - Cryo
\n",
+ "
Omnipresent
\n",
+ "
Omniscient
\n",
+ "
Power Count
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
0
\n",
+ "
A-Bomb
\n",
+ "
Male
\n",
+ "
yellow
\n",
+ "
Human
\n",
+ "
No Hair
\n",
+ "
203.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
good
\n",
+ "
441.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
7
\n",
+ "
\n",
+ "
\n",
+ "
1
\n",
+ "
Abe Sapien
\n",
+ "
Male
\n",
+ "
blue
\n",
+ "
Icthyo Sapien
\n",
+ "
No Hair
\n",
+ "
191.0
\n",
+ "
Dark Horse Comics
\n",
+ "
blue
\n",
+ "
good
\n",
+ "
65.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
16
\n",
+ "
\n",
+ "
\n",
+ "
2
\n",
+ "
Abin Sur
\n",
+ "
Male
\n",
+ "
blue
\n",
+ "
Ungaran
\n",
+ "
No Hair
\n",
+ "
185.0
\n",
+ "
DC Comics
\n",
+ "
red
\n",
+ "
good
\n",
+ "
90.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
1
\n",
+ "
\n",
+ "
\n",
+ "
3
\n",
+ "
Abomination
\n",
+ "
Male
\n",
+ "
green
\n",
+ "
Human / Radiation
\n",
+ "
No Hair
\n",
+ "
203.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
bad
\n",
+ "
441.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
8
\n",
+ "
\n",
+ "
\n",
+ "
4
\n",
+ "
Abraxas
\n",
+ "
Male
\n",
+ "
blue
\n",
+ "
Cosmic Entity
\n",
+ "
Black
\n",
+ "
-99.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
bad
\n",
+ "
-99.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
14
\n",
+ "
\n",
+ "
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
\n",
+ "
\n",
+ "
642
\n",
+ "
Yellowjacket II
\n",
+ "
Female
\n",
+ "
blue
\n",
+ "
Human
\n",
+ "
Strawberry Blond
\n",
+ "
165.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
good
\n",
+ "
52.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
3
\n",
+ "
\n",
+ "
\n",
+ "
643
\n",
+ "
Ymir
\n",
+ "
Male
\n",
+ "
white
\n",
+ "
Frost Giant
\n",
+ "
No Hair
\n",
+ "
304.8
\n",
+ "
Marvel Comics
\n",
+ "
white
\n",
+ "
good
\n",
+ "
-99.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
6
\n",
+ "
\n",
+ "
\n",
+ "
644
\n",
+ "
Yoda
\n",
+ "
Male
\n",
+ "
brown
\n",
+ "
Yoda's species
\n",
+ "
White
\n",
+ "
66.0
\n",
+ "
George Lucas
\n",
+ "
green
\n",
+ "
good
\n",
+ "
17.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
19
\n",
+ "
\n",
+ "
\n",
+ "
645
\n",
+ "
Zatanna
\n",
+ "
Female
\n",
+ "
blue
\n",
+ "
Human
\n",
+ "
Black
\n",
+ "
170.0
\n",
+ "
DC Comics
\n",
+ "
-
\n",
+ "
good
\n",
+ "
57.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
8
\n",
+ "
\n",
+ "
\n",
+ "
646
\n",
+ "
Zoom
\n",
+ "
Male
\n",
+ "
red
\n",
+ "
-
\n",
+ "
Brown
\n",
+ "
185.0
\n",
+ "
DC Comics
\n",
+ "
-
\n",
+ "
bad
\n",
+ "
81.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
4
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
647 rows × 178 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " name Gender Eye color Race Hair color \\\n",
+ "0 A-Bomb Male yellow Human No Hair \n",
+ "1 Abe Sapien Male blue Icthyo Sapien No Hair \n",
+ "2 Abin Sur Male blue Ungaran No Hair \n",
+ "3 Abomination Male green Human / Radiation No Hair \n",
+ "4 Abraxas Male blue Cosmic Entity Black \n",
+ ".. ... ... ... ... ... \n",
+ "642 Yellowjacket II Female blue Human Strawberry Blond \n",
+ "643 Ymir Male white Frost Giant No Hair \n",
+ "644 Yoda Male brown Yoda's species White \n",
+ "645 Zatanna Female blue Human Black \n",
+ "646 Zoom Male red - Brown \n",
+ "\n",
+ " Height Publisher Skin color Alignment Weight ... \\\n",
+ "0 203.0 Marvel Comics - good 441.0 ... \n",
+ "1 191.0 Dark Horse Comics blue good 65.0 ... \n",
+ "2 185.0 DC Comics red good 90.0 ... \n",
+ "3 203.0 Marvel Comics - bad 441.0 ... \n",
+ "4 -99.0 Marvel Comics - bad -99.0 ... \n",
+ ".. ... ... ... ... ... ... \n",
+ "642 165.0 Marvel Comics - good 52.0 ... \n",
+ "643 304.8 Marvel Comics white good -99.0 ... \n",
+ "644 66.0 George Lucas green good 17.0 ... \n",
+ "645 170.0 DC Comics - good 57.0 ... \n",
+ "646 185.0 DC Comics - bad 81.0 ... \n",
+ "\n",
+ " Reality Warping Odin Force Symbiote Costume Speed Force \\\n",
+ "0 False False False False \n",
+ "1 False False False False \n",
+ "2 False False False False \n",
+ "3 False False False False \n",
+ "4 False False False False \n",
+ ".. ... ... ... ... \n",
+ "642 False False False False \n",
+ "643 False False False False \n",
+ "644 False False False False \n",
+ "645 False False False False \n",
+ "646 False False False False \n",
+ "\n",
+ " Phoenix Force Molecular Dissipation Vision - Cryo Omnipresent \\\n",
+ "0 False False False False \n",
+ "1 False False False False \n",
+ "2 False False False False \n",
+ "3 False False False False \n",
+ "4 False False False False \n",
+ ".. ... ... ... ... \n",
+ "642 False False False False \n",
+ "643 False False False False \n",
+ "644 False False False False \n",
+ "645 False False False False \n",
+ "646 False False False False \n",
+ "\n",
+ " Omniscient Power Count \n",
+ "0 False 7 \n",
+ "1 False 16 \n",
+ "2 False 1 \n",
+ "3 False 8 \n",
+ "4 False 14 \n",
+ ".. ... ... \n",
+ "642 False 3 \n",
+ "643 False 6 \n",
+ "644 False 19 \n",
+ "645 False 8 \n",
+ "646 False 4 \n",
+ "\n",
+ "[647 rows x 178 columns]"
+ ]
+ },
+ "execution_count": 29,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Run this cell without changes\n",
+ "\n",
+ "# Note: we can use sum() with True and False values and they will\n",
+ "# automatically be cast to 1s and 0s\n",
+ "heroes_and_powers_df[\"Power Count\"] = sum(\n",
+ " [heroes_and_powers_df[power_name] for power_name in powers_df.index]\n",
+ ")\n",
+ "heroes_and_powers_df"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Answering the Question\n",
+ "\n",
+ "Now we can plot the height vs. the count of powers:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Run this cell without changes\n",
+ "\n",
+ "fig, ax = plt.subplots(figsize=(16, 8))\n",
+ "\n",
+ "ax.scatter(\n",
+ " x=heroes_and_powers_df[\"Height\"], y=heroes_and_powers_df[\"Power Count\"], alpha=0.3\n",
+ ")\n",
+ "\n",
+ "ax.set_xlabel(\"Height (cm)\")\n",
+ "ax.set_ylabel(\"Number of Superpowers\")\n",
+ "ax.set_title(\"Height vs. Power Count\");"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Hmm...what is that stack of values off below zero? What is a \"negative\" height?"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Identifying and Handling Invalid values\n",
+ "\n",
+ "One of the trickier tasks in data cleaning is identifying invalid or impossible values. In these cases, you have to apply your domain knowledge rather than any particular computational technique. For example, if you were looking at data containing dates of past home sales, and one of those dates was 100 years in the future, pandas wouldn't flag that as an issue, but you as a data scientist should be able to identify it.\n",
+ "\n",
+ "In this case, we are looking at heights, which are 1-dimensional, positive numbers. In theory we could have a very tiny height close to 0 cm because the hero is microscopic, but it does not make sense that we would have a height below zero.\n",
+ "\n",
+ "Let's take a look at a sample of those negative heights:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
name
\n",
+ "
Gender
\n",
+ "
Eye color
\n",
+ "
Race
\n",
+ "
Hair color
\n",
+ "
Height
\n",
+ "
Publisher
\n",
+ "
Skin color
\n",
+ "
Alignment
\n",
+ "
Weight
\n",
+ "
...
\n",
+ "
Reality Warping
\n",
+ "
Odin Force
\n",
+ "
Symbiote Costume
\n",
+ "
Speed Force
\n",
+ "
Phoenix Force
\n",
+ "
Molecular Dissipation
\n",
+ "
Vision - Cryo
\n",
+ "
Omnipresent
\n",
+ "
Omniscient
\n",
+ "
Power Count
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
150
\n",
+ "
Chameleon
\n",
+ "
Male
\n",
+ "
-
\n",
+ "
-
\n",
+ "
-
\n",
+ "
-99.0
\n",
+ "
DC Comics
\n",
+ "
-
\n",
+ "
bad
\n",
+ "
-99.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
1
\n",
+ "
\n",
+ "
\n",
+ "
163
\n",
+ "
Crimson Crusader
\n",
+ "
Male
\n",
+ "
blue
\n",
+ "
-
\n",
+ "
Strawberry Blond
\n",
+ "
-99.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
good
\n",
+ "
-99.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
4
\n",
+ "
\n",
+ "
\n",
+ "
364
\n",
+ "
Luna
\n",
+ "
Female
\n",
+ "
-
\n",
+ "
Human
\n",
+ "
-
\n",
+ "
-99.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
good
\n",
+ "
-99.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
1
\n",
+ "
\n",
+ "
\n",
+ "
315
\n",
+ "
JJ Powell
\n",
+ "
Male
\n",
+ "
-
\n",
+ "
-
\n",
+ "
-
\n",
+ "
-99.0
\n",
+ "
ABC Studios
\n",
+ "
-
\n",
+ "
good
\n",
+ "
-99.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
1
\n",
+ "
\n",
+ "
\n",
+ "
630
\n",
+ "
Weapon XI
\n",
+ "
Male
\n",
+ "
-
\n",
+ "
-
\n",
+ "
-
\n",
+ "
-99.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
bad
\n",
+ "
-99.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
7
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
5 rows × 178 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " name Gender Eye color Race Hair color Height \\\n",
+ "150 Chameleon Male - - - -99.0 \n",
+ "163 Crimson Crusader Male blue - Strawberry Blond -99.0 \n",
+ "364 Luna Female - Human - -99.0 \n",
+ "315 JJ Powell Male - - - -99.0 \n",
+ "630 Weapon XI Male - - - -99.0 \n",
+ "\n",
+ " Publisher Skin color Alignment Weight ... Reality Warping \\\n",
+ "150 DC Comics - bad -99.0 ... False \n",
+ "163 Marvel Comics - good -99.0 ... False \n",
+ "364 Marvel Comics - good -99.0 ... False \n",
+ "315 ABC Studios - good -99.0 ... False \n",
+ "630 Marvel Comics - bad -99.0 ... False \n",
+ "\n",
+ " Odin Force Symbiote Costume Speed Force Phoenix Force \\\n",
+ "150 False False False False \n",
+ "163 False False False False \n",
+ "364 False False False False \n",
+ "315 False False False False \n",
+ "630 False False False False \n",
+ "\n",
+ " Molecular Dissipation Vision - Cryo Omnipresent Omniscient \\\n",
+ "150 False False False False \n",
+ "163 False False False False \n",
+ "364 False False False False \n",
+ "315 False False False False \n",
+ "630 False False False False \n",
+ "\n",
+ " Power Count \n",
+ "150 1 \n",
+ "163 4 \n",
+ "364 1 \n",
+ "315 1 \n",
+ "630 7 \n",
+ "\n",
+ "[5 rows x 178 columns]"
+ ]
+ },
+ "execution_count": 31,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Run this cell without changes\n",
+ "heroes_and_powers_df[heroes_and_powers_df[\"Height\"] < 0].sample(5, random_state=1)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "It looks like not only are those heights negative, those weights are negative also, and all of them are set to exactly -99.0.\n",
+ "\n",
+ "It seems like this data source probably filled in -99.0 as the height or weight whenever it was unknown, instead of just leaving it as NaN.\n",
+ "\n",
+ "Depending on the purpose of the analysis, maybe this would be a useful piece of information, but for our current question, let's go ahead and drop the records where the height is -99.0. We'll make a new temporary dataframe to make sure we don't accidentally delete anything that will be needed in a future question."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
name
\n",
+ "
Gender
\n",
+ "
Eye color
\n",
+ "
Race
\n",
+ "
Hair color
\n",
+ "
Height
\n",
+ "
Publisher
\n",
+ "
Skin color
\n",
+ "
Alignment
\n",
+ "
Weight
\n",
+ "
...
\n",
+ "
Reality Warping
\n",
+ "
Odin Force
\n",
+ "
Symbiote Costume
\n",
+ "
Speed Force
\n",
+ "
Phoenix Force
\n",
+ "
Molecular Dissipation
\n",
+ "
Vision - Cryo
\n",
+ "
Omnipresent
\n",
+ "
Omniscient
\n",
+ "
Power Count
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
0
\n",
+ "
A-Bomb
\n",
+ "
Male
\n",
+ "
yellow
\n",
+ "
Human
\n",
+ "
No Hair
\n",
+ "
203.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
good
\n",
+ "
441.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
7
\n",
+ "
\n",
+ "
\n",
+ "
1
\n",
+ "
Abe Sapien
\n",
+ "
Male
\n",
+ "
blue
\n",
+ "
Icthyo Sapien
\n",
+ "
No Hair
\n",
+ "
191.0
\n",
+ "
Dark Horse Comics
\n",
+ "
blue
\n",
+ "
good
\n",
+ "
65.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
16
\n",
+ "
\n",
+ "
\n",
+ "
2
\n",
+ "
Abin Sur
\n",
+ "
Male
\n",
+ "
blue
\n",
+ "
Ungaran
\n",
+ "
No Hair
\n",
+ "
185.0
\n",
+ "
DC Comics
\n",
+ "
red
\n",
+ "
good
\n",
+ "
90.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
1
\n",
+ "
\n",
+ "
\n",
+ "
3
\n",
+ "
Abomination
\n",
+ "
Male
\n",
+ "
green
\n",
+ "
Human / Radiation
\n",
+ "
No Hair
\n",
+ "
203.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
bad
\n",
+ "
441.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
8
\n",
+ "
\n",
+ "
\n",
+ "
5
\n",
+ "
Absorbing Man
\n",
+ "
Male
\n",
+ "
blue
\n",
+ "
Human
\n",
+ "
No Hair
\n",
+ "
193.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
bad
\n",
+ "
122.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
11
\n",
+ "
\n",
+ "
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
\n",
+ "
\n",
+ "
642
\n",
+ "
Yellowjacket II
\n",
+ "
Female
\n",
+ "
blue
\n",
+ "
Human
\n",
+ "
Strawberry Blond
\n",
+ "
165.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
good
\n",
+ "
52.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
3
\n",
+ "
\n",
+ "
\n",
+ "
643
\n",
+ "
Ymir
\n",
+ "
Male
\n",
+ "
white
\n",
+ "
Frost Giant
\n",
+ "
No Hair
\n",
+ "
304.8
\n",
+ "
Marvel Comics
\n",
+ "
white
\n",
+ "
good
\n",
+ "
-99.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
6
\n",
+ "
\n",
+ "
\n",
+ "
644
\n",
+ "
Yoda
\n",
+ "
Male
\n",
+ "
brown
\n",
+ "
Yoda's species
\n",
+ "
White
\n",
+ "
66.0
\n",
+ "
George Lucas
\n",
+ "
green
\n",
+ "
good
\n",
+ "
17.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
19
\n",
+ "
\n",
+ "
\n",
+ "
645
\n",
+ "
Zatanna
\n",
+ "
Female
\n",
+ "
blue
\n",
+ "
Human
\n",
+ "
Black
\n",
+ "
170.0
\n",
+ "
DC Comics
\n",
+ "
-
\n",
+ "
good
\n",
+ "
57.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
8
\n",
+ "
\n",
+ "
\n",
+ "
646
\n",
+ "
Zoom
\n",
+ "
Male
\n",
+ "
red
\n",
+ "
-
\n",
+ "
Brown
\n",
+ "
185.0
\n",
+ "
DC Comics
\n",
+ "
-
\n",
+ "
bad
\n",
+ "
81.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
4
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
484 rows × 178 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " name Gender Eye color Race Hair color \\\n",
+ "0 A-Bomb Male yellow Human No Hair \n",
+ "1 Abe Sapien Male blue Icthyo Sapien No Hair \n",
+ "2 Abin Sur Male blue Ungaran No Hair \n",
+ "3 Abomination Male green Human / Radiation No Hair \n",
+ "5 Absorbing Man Male blue Human No Hair \n",
+ ".. ... ... ... ... ... \n",
+ "642 Yellowjacket II Female blue Human Strawberry Blond \n",
+ "643 Ymir Male white Frost Giant No Hair \n",
+ "644 Yoda Male brown Yoda's species White \n",
+ "645 Zatanna Female blue Human Black \n",
+ "646 Zoom Male red - Brown \n",
+ "\n",
+ " Height Publisher Skin color Alignment Weight ... \\\n",
+ "0 203.0 Marvel Comics - good 441.0 ... \n",
+ "1 191.0 Dark Horse Comics blue good 65.0 ... \n",
+ "2 185.0 DC Comics red good 90.0 ... \n",
+ "3 203.0 Marvel Comics - bad 441.0 ... \n",
+ "5 193.0 Marvel Comics - bad 122.0 ... \n",
+ ".. ... ... ... ... ... ... \n",
+ "642 165.0 Marvel Comics - good 52.0 ... \n",
+ "643 304.8 Marvel Comics white good -99.0 ... \n",
+ "644 66.0 George Lucas green good 17.0 ... \n",
+ "645 170.0 DC Comics - good 57.0 ... \n",
+ "646 185.0 DC Comics - bad 81.0 ... \n",
+ "\n",
+ " Reality Warping Odin Force Symbiote Costume Speed Force \\\n",
+ "0 False False False False \n",
+ "1 False False False False \n",
+ "2 False False False False \n",
+ "3 False False False False \n",
+ "5 False False False False \n",
+ ".. ... ... ... ... \n",
+ "642 False False False False \n",
+ "643 False False False False \n",
+ "644 False False False False \n",
+ "645 False False False False \n",
+ "646 False False False False \n",
+ "\n",
+ " Phoenix Force Molecular Dissipation Vision - Cryo Omnipresent \\\n",
+ "0 False False False False \n",
+ "1 False False False False \n",
+ "2 False False False False \n",
+ "3 False False False False \n",
+ "5 False False False False \n",
+ ".. ... ... ... ... \n",
+ "642 False False False False \n",
+ "643 False False False False \n",
+ "644 False False False False \n",
+ "645 False False False False \n",
+ "646 False False False False \n",
+ "\n",
+ " Omniscient Power Count \n",
+ "0 False 7 \n",
+ "1 False 16 \n",
+ "2 False 1 \n",
+ "3 False 8 \n",
+ "5 False 11 \n",
+ ".. ... ... \n",
+ "642 False 3 \n",
+ "643 False 6 \n",
+ "644 False 19 \n",
+ "645 False 8 \n",
+ "646 False 4 \n",
+ "\n",
+ "[484 rows x 178 columns]"
+ ]
+ },
+ "execution_count": 32,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Run this cell without changes\n",
+ "question_2_df = heroes_and_powers_df[heroes_and_powers_df[\"Height\"] != -99.0].copy()\n",
+ "question_2_df"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Answering the Question, Again\n",
+ "\n",
+ "Now we can redo that plot without those negative heights:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Run this cell without changes\n",
+ "\n",
+ "fig, ax = plt.subplots(figsize=(16, 8))\n",
+ "\n",
+ "ax.scatter(x=question_2_df[\"Height\"], y=question_2_df[\"Power Count\"], alpha=0.3)\n",
+ "\n",
+ "ax.set_xlabel(\"Height (cm)\")\n",
+ "ax.set_ylabel(\"Number of Superpowers\")\n",
+ "ax.set_title(\"Height vs. Power Count\");"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Ok, that makes more sense. It looks like there is not much of a relationship between height and number of superpowers.\n",
+ "\n",
+ "Now we can go on to answering the second half of question 2: *And does this differ based on gender?*\n",
+ "\n",
+ "To indicate multiple categories within a scatter plot, we can use color to add a third dimension:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Run this cell without changes\n",
+ "\n",
+ "fig, ax = plt.subplots(figsize=(16, 8))\n",
+ "\n",
+ "# Select subsets\n",
+ "question_2_male = question_2_df[question_2_df[\"Gender\"] == \"Male\"]\n",
+ "question_2_female = question_2_df[question_2_df[\"Gender\"] == \"Female\"]\n",
+ "question_2_other = question_2_df[\n",
+ " (question_2_df[\"Gender\"] != \"Male\") & (question_2_df[\"Gender\"] != \"Female\")\n",
+ "]\n",
+ "\n",
+ "# Plot data with different colors\n",
+ "ax.scatter(\n",
+ " x=question_2_male[\"Height\"],\n",
+ " y=question_2_male[\"Power Count\"],\n",
+ " alpha=0.5,\n",
+ " color=\"cyan\",\n",
+ " label=\"Male\",\n",
+ ")\n",
+ "ax.scatter(\n",
+ " x=question_2_female[\"Height\"],\n",
+ " y=question_2_female[\"Power Count\"],\n",
+ " alpha=0.5,\n",
+ " color=\"gray\",\n",
+ " label=\"Female\",\n",
+ ")\n",
+ "ax.scatter(\n",
+ " x=question_2_other[\"Height\"],\n",
+ " y=question_2_other[\"Power Count\"],\n",
+ " alpha=0.5,\n",
+ " color=\"yellow\",\n",
+ " label=\"Other\",\n",
+ ")\n",
+ "\n",
+ "# Customize appearance\n",
+ "ax.set_xlabel(\"Height (cm)\")\n",
+ "ax.set_ylabel(\"Number of Superpowers\")\n",
+ "ax.set_title(\"Height vs. Power Count\")\n",
+ "ax.legend();"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "It appears that there is still no clear relationship between count of powers and height, regardless of gender. We do however note that \"Male\" is the most common gender, and that male superheroes tend to be taller, on average."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 4. Perform Data Aggregation Required to Answer Third Question\n",
+ "\n",
+ "Recall that the third question is: *What are the 5 most common superpowers in Marvel Comics vs. DC Comics?*\n",
+ "\n",
+ "We'll need to keep using `heroes_and_powers_df` since we require information from both `heroes_df` and `powers_df`.\n",
+ "\n",
+ "Your resulting `question_3_df` should contain aggregated data, with columns `Superpower Name`, `Marvel Comics` (containing the count of occurrences in Marvel Comics), and `DC Comics` (containing the count of occurrences in DC Comics). Each row should represent a superpower.\n",
+ "\n",
+ "In other words, `question_3_df` should look like this:\n",
+ "\n",
+ "\n",
+ "\n",
+ "Don't worry if the rows or columns are in a different order, all that matters is that you have the right rows and columns with all the data.\n",
+ "\n",
+ "***Hint:*** refer to the [documentation for `.groupby`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.groupby.html) and treat each publisher as a group."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
name
\n",
+ "
Gender
\n",
+ "
Eye color
\n",
+ "
Race
\n",
+ "
Hair color
\n",
+ "
Height
\n",
+ "
Publisher
\n",
+ "
Skin color
\n",
+ "
Alignment
\n",
+ "
Weight
\n",
+ "
...
\n",
+ "
Reality Warping
\n",
+ "
Odin Force
\n",
+ "
Symbiote Costume
\n",
+ "
Speed Force
\n",
+ "
Phoenix Force
\n",
+ "
Molecular Dissipation
\n",
+ "
Vision - Cryo
\n",
+ "
Omnipresent
\n",
+ "
Omniscient
\n",
+ "
Power Count
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
0
\n",
+ "
A-Bomb
\n",
+ "
Male
\n",
+ "
yellow
\n",
+ "
Human
\n",
+ "
No Hair
\n",
+ "
203.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
good
\n",
+ "
441.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
7
\n",
+ "
\n",
+ "
\n",
+ "
1
\n",
+ "
Abe Sapien
\n",
+ "
Male
\n",
+ "
blue
\n",
+ "
Icthyo Sapien
\n",
+ "
No Hair
\n",
+ "
191.0
\n",
+ "
Dark Horse Comics
\n",
+ "
blue
\n",
+ "
good
\n",
+ "
65.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
16
\n",
+ "
\n",
+ "
\n",
+ "
2
\n",
+ "
Abin Sur
\n",
+ "
Male
\n",
+ "
blue
\n",
+ "
Ungaran
\n",
+ "
No Hair
\n",
+ "
185.0
\n",
+ "
DC Comics
\n",
+ "
red
\n",
+ "
good
\n",
+ "
90.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
1
\n",
+ "
\n",
+ "
\n",
+ "
3
\n",
+ "
Abomination
\n",
+ "
Male
\n",
+ "
green
\n",
+ "
Human / Radiation
\n",
+ "
No Hair
\n",
+ "
203.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
bad
\n",
+ "
441.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
8
\n",
+ "
\n",
+ "
\n",
+ "
4
\n",
+ "
Abraxas
\n",
+ "
Male
\n",
+ "
blue
\n",
+ "
Cosmic Entity
\n",
+ "
Black
\n",
+ "
-99.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
bad
\n",
+ "
-99.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
14
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
5 rows × 178 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " name Gender Eye color Race Hair color Height \\\n",
+ "0 A-Bomb Male yellow Human No Hair 203.0 \n",
+ "1 Abe Sapien Male blue Icthyo Sapien No Hair 191.0 \n",
+ "2 Abin Sur Male blue Ungaran No Hair 185.0 \n",
+ "3 Abomination Male green Human / Radiation No Hair 203.0 \n",
+ "4 Abraxas Male blue Cosmic Entity Black -99.0 \n",
+ "\n",
+ " Publisher Skin color Alignment Weight ... Reality Warping \\\n",
+ "0 Marvel Comics - good 441.0 ... False \n",
+ "1 Dark Horse Comics blue good 65.0 ... False \n",
+ "2 DC Comics red good 90.0 ... False \n",
+ "3 Marvel Comics - bad 441.0 ... False \n",
+ "4 Marvel Comics - bad -99.0 ... False \n",
+ "\n",
+ " Odin Force Symbiote Costume Speed Force Phoenix Force \\\n",
+ "0 False False False False \n",
+ "1 False False False False \n",
+ "2 False False False False \n",
+ "3 False False False False \n",
+ "4 False False False False \n",
+ "\n",
+ " Molecular Dissipation Vision - Cryo Omnipresent Omniscient Power Count \n",
+ "0 False False False False 7 \n",
+ "1 False False False False 16 \n",
+ "2 False False False False 1 \n",
+ "3 False False False False 8 \n",
+ "4 False False False False 14 \n",
+ "\n",
+ "[5 rows x 178 columns]"
+ ]
+ },
+ "execution_count": 35,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "question_3_df = heroes_and_powers_df.copy()\n",
+ "question_3_df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 37,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
"
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Run this cell without changes\n",
+ "\n",
+ "fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(15, 5))\n",
+ "\n",
+ "ax1.bar(\n",
+ " x=marvel_most_common[\"Superpower Name\"], height=marvel_most_common[\"Marvel Comics\"]\n",
+ ")\n",
+ "ax2.bar(x=dc_most_common[\"Superpower Name\"], height=dc_most_common[\"DC Comics\"])\n",
+ "\n",
+ "ax1.set_ylabel(\"Count of Superheroes\")\n",
+ "ax2.set_ylabel(\"Count of Superheroes\")\n",
+ "ax1.set_title(\"Frequency of Top Superpowers in Marvel Comics\")\n",
+ "ax2.set_title(\"Frequency of Top Superpowers in DC Comics\");"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "It looks like super strength is the most popular power in both Marvel Comics and DC Comics. Overall, the top 5 powers are fairly similar — 4 out of 5 overlap, although Marvel contains agility whereas DC contains flight."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 5. Formulate and Answer Your Own Question\n",
+ "\n",
+ "For the remainder of this lab, you'll be focusing on coming up with and answering your own question, just like we did above. Your question should not be overly simple, and should require both descriptive statistics and data visualization to answer. In case you're unsure of what questions to ask, some sample questions have been provided below.\n",
+ "\n",
+ "Pick one of the following questions to investigate and answer, or come up with one of your own!\n",
+ "\n",
+ "* Which powers have the highest chance of co-occurring in a hero (e.g. super strength and flight)?\n",
+ "* What is the distribution of skin colors amongst alien heroes?\n",
+ "* How are eye color and hair color related in this dataset?\n",
+ "\n",
+ "Explain your question below:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 45,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
name
\n",
+ "
Gender
\n",
+ "
Eye color
\n",
+ "
Race
\n",
+ "
Hair color
\n",
+ "
Height
\n",
+ "
Publisher
\n",
+ "
Skin color
\n",
+ "
Alignment
\n",
+ "
Weight
\n",
+ "
...
\n",
+ "
Reality Warping
\n",
+ "
Odin Force
\n",
+ "
Symbiote Costume
\n",
+ "
Speed Force
\n",
+ "
Phoenix Force
\n",
+ "
Molecular Dissipation
\n",
+ "
Vision - Cryo
\n",
+ "
Omnipresent
\n",
+ "
Omniscient
\n",
+ "
Power Count
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
0
\n",
+ "
A-Bomb
\n",
+ "
Male
\n",
+ "
yellow
\n",
+ "
Human
\n",
+ "
No Hair
\n",
+ "
203.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
good
\n",
+ "
441.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
7
\n",
+ "
\n",
+ "
\n",
+ "
1
\n",
+ "
Abe Sapien
\n",
+ "
Male
\n",
+ "
blue
\n",
+ "
Icthyo Sapien
\n",
+ "
No Hair
\n",
+ "
191.0
\n",
+ "
Dark Horse Comics
\n",
+ "
blue
\n",
+ "
good
\n",
+ "
65.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
16
\n",
+ "
\n",
+ "
\n",
+ "
2
\n",
+ "
Abin Sur
\n",
+ "
Male
\n",
+ "
blue
\n",
+ "
Ungaran
\n",
+ "
No Hair
\n",
+ "
185.0
\n",
+ "
DC Comics
\n",
+ "
red
\n",
+ "
good
\n",
+ "
90.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
1
\n",
+ "
\n",
+ "
\n",
+ "
3
\n",
+ "
Abomination
\n",
+ "
Male
\n",
+ "
green
\n",
+ "
Human / Radiation
\n",
+ "
No Hair
\n",
+ "
203.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
bad
\n",
+ "
441.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
8
\n",
+ "
\n",
+ "
\n",
+ "
4
\n",
+ "
Abraxas
\n",
+ "
Male
\n",
+ "
blue
\n",
+ "
Cosmic Entity
\n",
+ "
Black
\n",
+ "
-99.0
\n",
+ "
Marvel Comics
\n",
+ "
-
\n",
+ "
bad
\n",
+ "
-99.0
\n",
+ "
...
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
False
\n",
+ "
14
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
5 rows × 178 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " name Gender Eye color Race Hair color Height \\\n",
+ "0 A-Bomb Male yellow Human No Hair 203.0 \n",
+ "1 Abe Sapien Male blue Icthyo Sapien No Hair 191.0 \n",
+ "2 Abin Sur Male blue Ungaran No Hair 185.0 \n",
+ "3 Abomination Male green Human / Radiation No Hair 203.0 \n",
+ "4 Abraxas Male blue Cosmic Entity Black -99.0 \n",
+ "\n",
+ " Publisher Skin color Alignment Weight ... Reality Warping \\\n",
+ "0 Marvel Comics - good 441.0 ... False \n",
+ "1 Dark Horse Comics blue good 65.0 ... False \n",
+ "2 DC Comics red good 90.0 ... False \n",
+ "3 Marvel Comics - bad 441.0 ... False \n",
+ "4 Marvel Comics - bad -99.0 ... False \n",
+ "\n",
+ " Odin Force Symbiote Costume Speed Force Phoenix Force \\\n",
+ "0 False False False False \n",
+ "1 False False False False \n",
+ "2 False False False False \n",
+ "3 False False False False \n",
+ "4 False False False False \n",
+ "\n",
+ " Molecular Dissipation Vision - Cryo Omnipresent Omniscient Power Count \n",
+ "0 False False False False 7 \n",
+ "1 False False False False 16 \n",
+ "2 False False False False 1 \n",
+ "3 False False False False 8 \n",
+ "4 False False False False 14 \n",
+ "\n",
+ "[5 rows x 178 columns]"
+ ]
+ },
+ "execution_count": 45,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "heroes_and_powers_df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 46,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'\\nWhich races have the most powers?\\n'"
+ ]
+ },
+ "execution_count": 46,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Replace None with appropriate text:\n",
+ "\"\"\"\n",
+ "Which races have the most powers?\n",
+ "\"\"\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Some sample cells have been provided to give you room to work. Feel free to create more cells as needed.\n",
+ "\n",
+ "Be sure to include thoughtful, well-labeled visualizations to back up your analysis!\n",
+ "\n",
+ "(There is no solution branch for this part, and feel free to move on to the next lesson if you have already spent more than 90 minutes.)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 47,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "- 242\n",
+ "Human 191\n",
+ "Mutant 61\n",
+ "God / Eternal 14\n",
+ "Human / Radiation 11\n",
+ "Cyborg 10\n",
+ "Android 9\n",
+ "Symbiote 8\n",
+ "Alien 7\n",
+ "Kryptonian 7\n",
+ "Demon 6\n",
+ "Asgardian 5\n",
+ "Atlantean 5\n",
+ "Alpha 5\n",
+ "Inhuman 4\n",
+ "Cosmic Entity 4\n",
+ "Human / Altered 3\n",
+ "New God 3\n",
+ "Animal 2\n",
+ "Amazon 2\n",
+ "Human-Kree 2\n",
+ "Frost Giant 2\n",
+ "Vampire 2\n",
+ "Human / Cosmic 2\n",
+ "Demi-God 2\n",
+ "Metahuman 2\n",
+ "Saiyan 2\n",
+ "Eternal 2\n",
+ "Parademon 1\n",
+ "Zombie 1\n",
+ "Maiar 1\n",
+ "Yautja 1\n",
+ "Mutant / Clone 1\n",
+ "Gungan 1\n",
+ "Rodian 1\n",
+ "Talokite 1\n",
+ "Human-Spartoi 1\n",
+ "Human-Vulcan 1\n",
+ "Luphomoid 1\n",
+ "Bizarro 1\n",
+ "Yoda's species 1\n",
+ "Human-Vuldarian 1\n",
+ "Spartoi 1\n",
+ "Icthyo Sapien 1\n",
+ "Gorilla 1\n",
+ "Xenomorph XX121 1\n",
+ "Clone 1\n",
+ "Ungaran 1\n",
+ "Korugaran 1\n",
+ "Kakarantharaian 1\n",
+ "Human / Clone 1\n",
+ "Bolovaxian 1\n",
+ "Flora Colossus 1\n",
+ "Dathomirian Zabrak 1\n",
+ "Strontian 1\n",
+ "Tamaranean 1\n",
+ "Neyaphem 1\n",
+ "Martian 1\n",
+ "Zen-Whoberian 1\n",
+ "Czarnian 1\n",
+ "Name: Race, dtype: int64"
+ ]
+ },
+ "execution_count": 47,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "question_4_df = heroes_and_powers_df[[\"Race\", \"Power Count\"]]\n",
+ "\n",
+ "\n",
+ "question_4_df[\"Race\"].value_counts()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 48,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "