{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Cleaning, Analyzing, and Visualizing Survey Data in Python\n",
"\n",
"## A tutorial using `pandas`, `matplotlib`, and `seaborn` to produce digestible insights from dirty data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you work in data at a D2C startup, there's a good chance you will be asked to look at survey data at least once. And since SurveyMonkey is one of the most popular survey platforms out there, there's a good chance it'll be SurveyMonkey data.\n",
"\n",
"The way SurveyMonkey exports data is not necessarily ready for analysis right out of the box, but it's pretty close. Here I'll demonstrate a few examples of questions you might want to ask of your survey data, and how to extract those answers quickly. We'll even write a few functions to make our lives easier when plotting future questions.\n",
"\n",
"We'll be using `pandas`, `matplotlib`, and `seaborn` to make sense of our data. I used [Mockaroo](https://mockaroo.com/) to generate this data; specifically, for the survey question fields, I used \"Custom List\" and entered in the appropriate fields. You could achieve the same effect by using `random.choice` in the `random` module, but I found it easier to let Mockaroo create the whole thing for me. I then tweaked the data in Excel so that it mirrored the structure of a SurveyMonkey export."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"\n",
"%matplotlib inline\n",
"sns.set_style('ticks')\n",
"\n",
"import warnings\n",
"warnings.filterwarnings('ignore')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
id
\n",
"
What is your gender?
\n",
"
What is your age?
\n",
"
What was the most important consideration for you in choosing this product?
\n",
"
Unnamed: 4
\n",
"
Unnamed: 5
\n",
"
Unnamed: 6
\n",
"
How interested are you in the following benefits?
\n",
"
Unnamed: 8
\n",
"
Unnamed: 9
\n",
"
Unnamed: 10
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
NaN
\n",
"
gender
\n",
"
age
\n",
"
Location
\n",
"
Price
\n",
"
Positive Reviews
\n",
"
Personalization
\n",
"
Custom dashboard templates
\n",
"
SQL tutorials
\n",
"
More drag-and-drop features
\n",
"
More ready-made formulas
\n",
"
\n",
"
\n",
"
1
\n",
"
1.0
\n",
"
Female
\n",
"
35
\n",
"
Location
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
Neutral
\n",
"
Very interested
\n",
"
Somewhat interested
\n",
"
Very interested
\n",
"
\n",
"
\n",
"
2
\n",
"
2.0
\n",
"
Female
\n",
"
34
\n",
"
Location
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
Somewhat uninterested
\n",
"
Very interested
\n",
"
Neutral
\n",
"
Somewhat interested
\n",
"
\n",
"
\n",
"
3
\n",
"
3.0
\n",
"
Female
\n",
"
19
\n",
"
NaN
\n",
"
Price
\n",
"
NaN
\n",
"
NaN
\n",
"
Somewhat uninterested
\n",
"
Neutral
\n",
"
Somewhat interested
\n",
"
Very interested
\n",
"
\n",
"
\n",
"
4
\n",
"
4.0
\n",
"
Female
\n",
"
47
\n",
"
NaN
\n",
"
Price
\n",
"
NaN
\n",
"
NaN
\n",
"
Somewhat uninterested
\n",
"
Neutral
\n",
"
Neutral
\n",
"
Somewhat interested
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" id What is your gender? What is your age? \\\n",
"0 NaN gender age \n",
"1 1.0 Female 35 \n",
"2 2.0 Female 34 \n",
"3 3.0 Female 19 \n",
"4 4.0 Female 47 \n",
"\n",
" What was the most important consideration for you in choosing this product? \\\n",
"0 Location \n",
"1 Location \n",
"2 Location \n",
"3 NaN \n",
"4 NaN \n",
"\n",
" Unnamed: 4 Unnamed: 5 Unnamed: 6 \\\n",
"0 Price Positive Reviews Personalization \n",
"1 NaN NaN NaN \n",
"2 NaN NaN NaN \n",
"3 Price NaN NaN \n",
"4 Price NaN NaN \n",
"\n",
" How interested are you in the following benefits? Unnamed: 8 \\\n",
"0 Custom dashboard templates SQL tutorials \n",
"1 Neutral Very interested \n",
"2 Somewhat uninterested Very interested \n",
"3 Somewhat uninterested Neutral \n",
"4 Somewhat uninterested Neutral \n",
"\n",
" Unnamed: 9 Unnamed: 10 \n",
"0 More drag-and-drop features More ready-made formulas \n",
"1 Somewhat interested Very interested \n",
"2 Neutral Somewhat interested \n",
"3 Somewhat interested Very interested \n",
"4 Neutral Somewhat interested "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"survey_data = pd.read_csv('MOCK_DATA.csv')\n",
"survey_data.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Your first reaction to this might be \"Ugh. It's horrible.\" I mean, the column names didn't read in properly, there are a ton of NaNs, instead of numerical representations like 0/1 or 1/2/3/4/5 we have the actual text answers in each cell...And should we actually be reading this in with a MultiIndex?\n",
"\n",
"But don't worry, it's not as bad as you might think. And we're going to ignore MultiIndexes in this post. (Nobody really likes working with them anyway.) The team needs those insights ASAP--so we'll come up with some hacky solutions.\n",
"\n",
"First order of business: we've been asked to find how the answers to these questions vary by age group. But `age` is just an age--we don't have a column for age groups! Well, luckily for us, we can pretty easily define a function to create one."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"def age_group(age):\n",
" \n",
" \"\"\"Creates an age bucket for each participant using the age variable.\n",
" Meant to be used on a DataFrame with .apply().\"\"\"\n",
" \n",
" # Convert to an int, in case the data is read in as an \"object\" (aka string)\n",
" age = int(age)\n",
" \n",
" if age < 30:\n",
" bucket = '<30'\n",
" \n",
" # Age 30 to 39 ('range' excludes upper bound)\n",
" if age in range(30, 40):\n",
" bucket = '30-39'\n",
" \n",
" if age in range(40, 50):\n",
" bucket = '40-49'\n",
" \n",
" if age in range(50, 60):\n",
" bucket = '50-59'\n",
" \n",
" if age >= 60:\n",
" bucket = '60+'\n",
"\n",
" return bucket "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"But if we try to run it like this, we'll get an error! That's because we have that first row, and its value for age is the word \"age\" instead of a number. Since the first step is to convert each age to an `int`, this will fail.\n",
"\n",
"We need to remove that row from the DataFrame, but it'll be useful for us later when we rename columns, so we'll save it as a separate variable. "
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"# Save it as headers, and then later we can access it via slices like a list\n",
"headers = survey_data.loc[0]"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
id
\n",
"
What is your gender?
\n",
"
What is your age?
\n",
"
What was the most important consideration for you in choosing this product?
\n",
"
Unnamed: 4
\n",
"
Unnamed: 5
\n",
"
Unnamed: 6
\n",
"
How interested are you in the following benefits?
\n",
"
Unnamed: 8
\n",
"
Unnamed: 9
\n",
"
Unnamed: 10
\n",
"
\n",
" \n",
" \n",
"
\n",
"
1
\n",
"
1.0
\n",
"
Female
\n",
"
35
\n",
"
Location
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
Neutral
\n",
"
Very interested
\n",
"
Somewhat interested
\n",
"
Very interested
\n",
"
\n",
"
\n",
"
2
\n",
"
2.0
\n",
"
Female
\n",
"
34
\n",
"
Location
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
Somewhat uninterested
\n",
"
Very interested
\n",
"
Neutral
\n",
"
Somewhat interested
\n",
"
\n",
"
\n",
"
3
\n",
"
3.0
\n",
"
Female
\n",
"
19
\n",
"
NaN
\n",
"
Price
\n",
"
NaN
\n",
"
NaN
\n",
"
Somewhat uninterested
\n",
"
Neutral
\n",
"
Somewhat interested
\n",
"
Very interested
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" id What is your gender? What is your age? \\\n",
"1 1.0 Female 35 \n",
"2 2.0 Female 34 \n",
"3 3.0 Female 19 \n",
"\n",
" What was the most important consideration for you in choosing this product? \\\n",
"1 Location \n",
"2 Location \n",
"3 NaN \n",
"\n",
" Unnamed: 4 Unnamed: 5 Unnamed: 6 \\\n",
"1 NaN NaN NaN \n",
"2 NaN NaN NaN \n",
"3 Price NaN NaN \n",
"\n",
" How interested are you in the following benefits? Unnamed: 8 \\\n",
"1 Neutral Very interested \n",
"2 Somewhat uninterested Very interested \n",
"3 Somewhat uninterested Neutral \n",
"\n",
" Unnamed: 9 Unnamed: 10 \n",
"1 Somewhat interested Very interested \n",
"2 Neutral Somewhat interested \n",
"3 Somewhat interested Very interested "
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# .drop() defaults to axis=0, which refers to dropping items row-wise\n",
"survey_data = survey_data.drop(0)\n",
"survey_data.head(3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You will notice that, since removing `headers`, we've now lost some information when looking at the survey data by itself. Ideally, you will have a list of the questions and their options that were asked in the survey, provided to you by whoever wants the analysis. If not, you should keep a separate way to reference this info in a document or note that you can look at while working.\n",
"\n",
"OK, now let's apply the `age_group` function to get our `age_group` column."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1 30-39\n",
"2 30-39\n",
"3 <30\n",
"Name: age_group, dtype: object"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"survey_data['age_group'] = survey_data['What is your age?'].apply(age_group)\n",
"\n",
"survey_data['age_group'].head(3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Great. Next, let's subset the data to focus on just the first question. How do the answers to this first question vary by age group?"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
What was the most important consideration for you in choosing this product?
\n",
"
Unnamed: 4
\n",
"
Unnamed: 5
\n",
"
Unnamed: 6
\n",
"
\n",
" \n",
" \n",
"
\n",
"
1
\n",
"
Location
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
\n",
"
\n",
"
2
\n",
"
Location
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
\n",
"
\n",
"
3
\n",
"
NaN
\n",
"
Price
\n",
"
NaN
\n",
"
NaN
\n",
"
\n",
"
\n",
"
4
\n",
"
NaN
\n",
"
Price
\n",
"
NaN
\n",
"
NaN
\n",
"
\n",
"
\n",
"
5
\n",
"
NaN
\n",
"
Price
\n",
"
NaN
\n",
"
NaN
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" What was the most important consideration for you in choosing this product? \\\n",
"1 Location \n",
"2 Location \n",
"3 NaN \n",
"4 NaN \n",
"5 NaN \n",
"\n",
" Unnamed: 4 Unnamed: 5 Unnamed: 6 \n",
"1 NaN NaN NaN \n",
"2 NaN NaN NaN \n",
"3 Price NaN NaN \n",
"4 Price NaN NaN \n",
"5 Price NaN NaN "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Subset the columns from when the question \"What was the most...\" is asked, \n",
"# through to all the available answers. Easiest to use .iloc for this\n",
"survey_data.iloc[:5, 3:7]"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"# Next, assign it to a separate variable corresponding to your question\n",
"important_consideration = survey_data.iloc[:, 3:7]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Great. We have the answers in a variable now. But when we go to plot this data, it's not going to look very good, because of the misnamed columns. Let's write up a quick function to make renaming the columns simple:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"def rename_columns(df, new_names_list):\n",
" \n",
" \"\"\"Takes a DataFrame that needs to be renamed and a list of the new\n",
" column names, and returns the renamed DataFrame. Make sure the \n",
" number of columns in the df matches the list length exactly,\n",
" or function will not work as intended.\"\"\"\n",
" \n",
" rename_dict = dict(zip(df.columns, new_names_list))\n",
" df = df.rename(mapper=rename_dict, axis=1)\n",
" \n",
" return df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Remember `headers` from earlier? We can use it to create our `new_names_list` for renaming."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['Location', 'Price', 'Positive Reviews', 'Personalization'],\n",
" dtype=object)"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"headers[3:7].values"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It's already an array, so we can just pass it right in, or we can rename it first for readability."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Location
\n",
"
Price
\n",
"
Positive Reviews
\n",
"
Personalization
\n",
"
age_group
\n",
"
\n",
" \n",
" \n",
"
\n",
"
1
\n",
"
Location
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
30-39
\n",
"
\n",
"
\n",
"
2
\n",
"
Location
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
30-39
\n",
"
\n",
"
\n",
"
3
\n",
"
NaN
\n",
"
Price
\n",
"
NaN
\n",
"
NaN
\n",
"
<30
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Location Price Positive Reviews Personalization age_group\n",
"1 Location NaN NaN NaN 30-39\n",
"2 Location NaN NaN NaN 30-39\n",
"3 NaN Price NaN NaN <30"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ic_col_names = headers[3:7].values\n",
"\n",
"important_consideration = rename_columns(important_consideration, ic_col_names)\n",
"\n",
"# Now tack on age_group from the original DataFrame so we can use .groupby\n",
"# (You could also use pd.concat, but I find this easier)\n",
"important_consideration['age_group'] = survey_data['age_group']\n",
"\n",
"important_consideration.head(3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Isn't that so much nicer to look at? Don't worry, we're almost to the part where we get some insights."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Location
\n",
"
Price
\n",
"
Positive Reviews
\n",
"
Personalization
\n",
"
\n",
"
\n",
"
age_group
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
" \n",
" \n",
"
\n",
"
30-39
\n",
"
25
\n",
"
14
\n",
"
23
\n",
"
17
\n",
"
\n",
"
\n",
"
40-49
\n",
"
23
\n",
"
24
\n",
"
19
\n",
"
23
\n",
"
\n",
"
\n",
"
50-59
\n",
"
17
\n",
"
22
\n",
"
17
\n",
"
21
\n",
"
\n",
"
\n",
"
60+
\n",
"
37
\n",
"
38
\n",
"
50
\n",
"
38
\n",
"
\n",
"
\n",
"
<30
\n",
"
20
\n",
"
22
\n",
"
24
\n",
"
26
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Location Price Positive Reviews Personalization\n",
"age_group \n",
"30-39 25 14 23 17\n",
"40-49 23 24 19 23\n",
"50-59 17 22 17 21\n",
"60+ 37 38 50 38\n",
"<30 20 22 24 26"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"consideration_grouped = important_consideration.groupby('age_group').agg('count')\n",
"\n",
"consideration_grouped"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Notice how `groupby` and other aggregation functions ignore NaNs automatically. That makes our lives significantly easier.\n",
"\n",
"Let's say we also don't really care about analyzing under-30 customers right now, so we'll plot only the other age groups."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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nUsvvZSVK1eyatUqvvOd73DIIYdw+OGHM2XKFB577DHKy8vZb7/9uOyyy/jVr37FaaedxuOPP84uu+zCxIkTadq0KSeeeCIjR45k9erV69vu0KHDJuuqrKxkyZIltGrVCoBx48bx0ksvUSwWGTJkCIcccgjnnHMOTzzxBIVCgdGjR3PYYYdx3333MWrUKPbYYw+GDx/O8uXLARgxYgTPP/8869atY+jQoVx33XU0a9aMESNGcMcdd/C5z32OFStW8Mtf/pKysjIOPPBArr766no91gY1SZK0RdOmTWPw4MEUCgXKy8sZOXIkn/nMZxgxYgRjx46lZ8+ePPXUU9x4441ccsklvPvuu0yaNIlly5YxZ86c9e20a9eO0047jTZt2nDAAQcAUF5ezgknnMCTTz7JV7/6VZ544gnuvvtuRo8ezeDBgzn66KN5/vnnueWWWxg3btxG61q2bBllZWWceeaZHHroofz+979n/vz5/PznP2f16tWceeaZHH744YQQePnll+nVqxcvvvgiw4cP57777gPgJz/5CX379mXQoEHMmTOHf/u3f2PcuHFce+21DB06lLfffptVq1YB8Mc//pG77rqL8847j5EjR9K7d28mT57M2rVradq0/uKVQU2SJG1R7SHGakuWLFn/eKQ+ffowbtw49t57b8455xyuuOIK1q5dy+DBg7fY/hlnnMGoUaPo2rUrXbp0YbfdduPNN9/kzjvvZOLEiRSLRcrLyzdZ1/Lly7ngggvo3LkzAG+++SZvvPHG+m2vXbuWBQsWcOaZZ/LYY4+xdOlSjj322A1C1Ztvvsm0adOYOnUqACtWrKBjx46sWrWK1157jW7durFgwQJee+01WrZsSYsWLfj+97/PPffcwy233ELv3r2p70dzGtQkSdI222OPPfjTn/5Ejx49eOmll+jSpQsxRj744APuuusulixZwtlnn80xxxyzfp1CoUBVVdUG7XTp0oViscjEiRMZOHAgAF27duWCCy7gwAMPZPbs2etvQNiY3XbbjZtvvplzzz2XX/7yl3Tt2pVDDjmE66+/nqqqKu644w46d+5MCIGbb76ZxYsXc911123QRteuXfnKV75C//79WbZsGQ8//DAARx99NDfffDPnnXceCxYsYMyYMZxxxhkA/OIXv2D06NE0b96coUOH8uqrr3LwwQfXy7EF7/qUJEmfwJgxY7j++usZNGgQ9957L9deey1dunThxRdf5PTTT+fSSy/lW9/61gbr7L///jz44INMmzZtg+mnn346M2fOpG/fvgBcffXV/PjHP+ZrX/saV199NSGEzdbSvXt3Bg8ezJgxYzj22GPZZZddGDRoEAMGDACgRYsWFAoFTjzxRNasWUNFRcUG61944YVMnTqVwYMH8/Wvf529994bgBNOOIFXXnmFvn37csQRR/D6669z3HHZzRwhBE4//XTOPfdcPvvZz9KrV69tP5gbUajvLrpSqaioKL41/b9LXYZUb5q17VbvXeiSGqZZs2atH16E7OM55i5YWG/tV3TswJx30vx4isag9vkDCCFMjzF+cUvrOvQpSVIDY6jacTj0KUmSlCiDmiRJUqIMapIkSYkyqEmSJCXKoCZJkpSoRnPXZ1lZGc3adit1GVK9ad68GYVCodRllIwfFyBtWpcuFcydO6/e2quo2JM5c+ZudpkXXniByy67jO7duwOwevVq+vfvX6enDmwvxx57LFOnTuXee++lb9++6x9JVRcxRlasWEGfPn24/PLL+cEPfkCzZs22Y7XbptEEtaqqKt4bclypy5BUT1pPerrUJUjJmjt3HpVLZ9dbe3Xt6Kj5GKnKykpOOukkTj31VHbdddd6q2VbDBs2bKvXefLJJ2nTpg19+vTZ6KOxUtFogpokSfr0rFy5krKyMhYuXMhFF10EQOvWrbnhhhuYOXMmt9xyC+Xl5Zx55pm8/fbbTJs2jaqqKvr168eQIUOYOXMm119/PU2aNKF58+brH/V05ZVX0r59e/7617/y+c9/ntGjR7No0SJGjRrF6tWree+997jooos4/vjj19dyzTXXcPLJJzN//vz1z+mcO3cuhx9+OMOHD2f48OG8//77LF++nDPOOIPjjjuOxx57jPLycvbbbz8uu+wypk6dytKlSxk+fDhr166lUCgwYsQIevTowQknnMCBBx7I22+/ze67785tt91GkyZNPpXjbFCTJEl1Mm3aNAYPHkyhUKC8vJyRI0cycuRIbrjhBrp3787DDz/MxIkTOeyww1i9evUGz8p84IEHaNeuHVOmTAFgxIgRjB07lp49e/LUU09x4403ctVVVzFnzhzuvvtudt55Z44//niWLl3KX/7yF84//3wOOeQQXnnlFW677bYNglq1QYMGMWjQIGbMmMHY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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"consideration_grouped[:-1].sort_index(ascending=False).plot(\n",
" kind='barh',\n",
" figsize=(10, 10),\n",
" cmap='rocket',\n",
" edgecolor='black',\n",
" fontsize=14,\n",
" title='Most Important Consideration By Age Group'\n",
" ).yaxis.label.set_visible(False)\n",
"\n",
"plt.savefig('sdbp_photos/consideration_by_age_large.png')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"OK, this is all well and good, but the 60+ group has more people in it than the other groups, and so it's hard to make a fair comparison. What do we do? We can plot each age group in a separate plot, and then compare the distributions.\n",
"\n",
"\"But wait,\" you might think. \"I don't really want to write the code for 4 different plots.\"\n",
"\n",
"Well of course not! Who has time for that? Let's write another function to do it for us."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"def plot_counts_by_age_group(groupby_count_obj, age_group, ax=None):\n",
" \n",
" \"\"\"Takes a count-aggregated groupby object, an age group, and an \n",
" (optional) AxesSubplot, and draws a barplot for that group.\"\"\"\n",
" \n",
" sort_order = groupby_count_obj.loc[age_group].sort_index().index\n",
"\n",
" sns.barplot(y = groupby_count_obj.loc[age_group].index, \n",
" x = groupby_count_obj.loc[age_group].values, \n",
" order = sort_order, \n",
" palette = 'rocket', edgecolor = 'black', \n",
" ax = ax\n",
" ).set_title(\"Age {}\".format(age_group))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I believe it was [Jenny Bryan](https://twitter.com/JennyBryan?), in her wonderful talk \"Code Smells and Feels,\" who first tipped me off to the following:\n",
"\n",
"**If you find yourself copying and pasting code and just changing a few values, you really ought to just write a function.**\n",
"\n",
"This has been a great guide for me in deciding when it is and isn't worth it to write a function for something. A rule of thumb I like to use is that if I would be copying and pasting more than 3 times, I write a function.\n",
"\n",
"There are also benefits other than convenience to this approach, such as that it: \n",
"* reduces the possibility for error (when copying and pasting, it's easy to accidentally forget to change a value)\n",
"* makes for more readable code\n",
"* builds up your personal toolbox of functions\n",
"* forces you to think at a higher level of abstraction\n",
"\n",
"(All of which improve your programming skills and make the people who need to read your code happier!)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Setup for the 2x2 subplot grid\n",
"# Note we don't want to share the x axis since we have counts\n",
"fig, ax = plt.subplots(nrows=2, ncols=2, figsize=(8, 6), sharey=True)\n",
"\n",
"# ax.flatten() avoids having to explicitly reference a subplot index in ax\n",
"# Use consideration_grouped.index[:-1] because we're not plotting the under-30s\n",
"for subplot, age_group in zip(ax.flatten(), list(consideration_grouped.index)[:-1]):\n",
" plot_counts_by_age_group(consideration_grouped, age_group, ax=subplot)\n",
" \n",
"plt.savefig('sdbp_photos/consideration_by_age.png')\n",
"plt.tight_layout()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is, of course, generated data from a uniform distribution, and we would thus not expect to see any significant differences between groups. Hopefully your own survey data will be more interesting. \n",
"\n",
"Next, let's address another format of question. In this one, we need to see how interested each age group is in a given benefit. Happily, these questions are actually easier to deal with than the former type. Let's take a look:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
How interested are you in the following benefits?
\n",
"
Unnamed: 8
\n",
"
Unnamed: 9
\n",
"
Unnamed: 10
\n",
"
age_group
\n",
"
\n",
" \n",
" \n",
"
\n",
"
1
\n",
"
Neutral
\n",
"
Very interested
\n",
"
Somewhat interested
\n",
"
Very interested
\n",
"
30-39
\n",
"
\n",
"
\n",
"
2
\n",
"
Somewhat uninterested
\n",
"
Very interested
\n",
"
Neutral
\n",
"
Somewhat interested
\n",
"
30-39
\n",
"
\n",
"
\n",
"
3
\n",
"
Somewhat uninterested
\n",
"
Neutral
\n",
"
Somewhat interested
\n",
"
Very interested
\n",
"
<30
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" How interested are you in the following benefits? Unnamed: 8 \\\n",
"1 Neutral Very interested \n",
"2 Somewhat uninterested Very interested \n",
"3 Somewhat uninterested Neutral \n",
"\n",
" Unnamed: 9 Unnamed: 10 age_group \n",
"1 Somewhat interested Very interested 30-39 \n",
"2 Neutral Somewhat interested 30-39 \n",
"3 Somewhat interested Very interested <30 "
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"benefits = survey_data.iloc[:, 7:]\n",
"benefits.head(3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And look, since this is a small DataFrame, `age_group` is appended already and we won't have to add it."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Custom dashboard templates
\n",
"
SQL tutorials
\n",
"
More drag-and-drop features
\n",
"
More ready-made formulas
\n",
"
age_group
\n",
"
\n",
" \n",
" \n",
"
\n",
"
1
\n",
"
Neutral
\n",
"
Very interested
\n",
"
Somewhat interested
\n",
"
Very interested
\n",
"
30-39
\n",
"
\n",
"
\n",
"
2
\n",
"
Somewhat uninterested
\n",
"
Very interested
\n",
"
Neutral
\n",
"
Somewhat interested
\n",
"
30-39
\n",
"
\n",
"
\n",
"
3
\n",
"
Somewhat uninterested
\n",
"
Neutral
\n",
"
Somewhat interested
\n",
"
Very interested
\n",
"
<30
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Custom dashboard templates SQL tutorials More drag-and-drop features \\\n",
"1 Neutral Very interested Somewhat interested \n",
"2 Somewhat uninterested Very interested Neutral \n",
"3 Somewhat uninterested Neutral Somewhat interested \n",
"\n",
" More ready-made formulas age_group \n",
"1 Very interested 30-39 \n",
"2 Somewhat interested 30-39 \n",
"3 Very interested <30 "
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ben_col_names = headers[7:].values\n",
"\n",
"benefits = rename_columns(benefits, ben_col_names)\n",
"\n",
"benefits.head(3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Cool. Now we have the subsetted data, but we can't just aggregate it by count this time like we could with the other question - the last question had NaNs that would be excluded to give the true count for that response, but with this one, we would just get the number of responses for each age group overall:"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Custom dashboard templates
\n",
"
SQL tutorials
\n",
"
More drag-and-drop features
\n",
"
More ready-made formulas
\n",
"
\n",
"
\n",
"
age_group
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
" \n",
" \n",
"
\n",
"
30-39
\n",
"
79
\n",
"
79
\n",
"
79
\n",
"
79
\n",
"
\n",
"
\n",
"
40-49
\n",
"
89
\n",
"
89
\n",
"
89
\n",
"
89
\n",
"
\n",
"
\n",
"
50-59
\n",
"
77
\n",
"
77
\n",
"
77
\n",
"
77
\n",
"
\n",
"
\n",
"
60+
\n",
"
163
\n",
"
163
\n",
"
163
\n",
"
163
\n",
"
\n",
"
\n",
"
<30
\n",
"
92
\n",
"
92
\n",
"
92
\n",
"
92
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Custom dashboard templates SQL tutorials \\\n",
"age_group \n",
"30-39 79 79 \n",
"40-49 89 89 \n",
"50-59 77 77 \n",
"60+ 163 163 \n",
"<30 92 92 \n",
"\n",
" More drag-and-drop features More ready-made formulas \n",
"age_group \n",
"30-39 79 79 \n",
"40-49 89 89 \n",
"50-59 77 77 \n",
"60+ 163 163 \n",
"<30 92 92 "
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"benefits.groupby('age_group').agg('count')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is definitely not what we want! The point of the question is to understand how interested the different age groups are, and we need to preserve that information. All this tells us is how many people in each age group responded to the question.\n",
"\n",
"So what do we do? One way to go would be to re-encode these responses numerically. But what if we want to preserve the relationship on an even more granular level? If we encode numerically, we can take the median and average of each age group's level of interest. But what if what we're really interested in is the specific percentage of people per age group who chose each interest level? It'd be easier to convey that info in a barplot, with the text preserved.\n",
"\n",
"That's what we're going to do next. And--you guessed it--it's time to write another function."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"order = ['Not Interested at all', 'Somewhat uninterested',\n",
" 'Neutral', 'Somewhat interested', 'Very interested']\n",
"\n",
"def plot_benefit_question(df, col_name, age_group, order=order, \n",
" palette='Spectral', ax=None):\n",
" \n",
" \"\"\"Takes a relevant DataFrame, the name of the column (benefit) we want info on,\n",
" and an age group, and returns a plot of the answers to that benefit question.\"\"\"\n",
" \n",
" reduced_df = df[[col_name, 'age_group']]\n",
"\n",
" # Gets the relative frequencies (percentages) for \"this-age-group\" only\n",
" data_to_plot = reduced_df[reduced_df['age_group'] == age_group][col_name].value_counts(normalize=True)\n",
" \n",
" sns.barplot(y = data_to_plot.index, \n",
" x = data_to_plot.values, \n",
" order = order, \n",
" ax = ax,\n",
" palette = palette, \n",
" edgecolor = 'black'\n",
" ).set_title('Age {}: {}'.format(age_group, col_name))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Quick note to new learners:** Most people won't say this explicitly, but let me be clear on how visualizations are often made. Generally speaking, it is a highly iterative process. Even the most experienced data scientists don't just write up a plot with all of these specifications off the top of their head. \n",
"\n",
"Generally, you start with `.plot(kind='bar')`, or similar depending on the plot you want, and then you change size, color maps, get the groups properly sorted using `order=`, specify whether the labels should be rotated, and set x- or y-axis labels invisible, and more, depending on what you think is best for whoever will be using the visualizations.\n",
"\n",
"So don't be intimidated by the long blocks of code you see when people are making plots. They're usually created over a span of minutes while testing out different specifications, not by writing perfect code from scratch in one go.\n",
"\n",
"---\n",
"\n",
"Now we can plot another 2x2 for each benefit broken out by age group. But we'd have to do that for all 4 benefits! Again: who has time for that? Instead, we'll loop over each benefit, and each age group within each benefit, using a couple of `for` loops. But if you're interested, I'd challenge you to refactor this into a function if you happen to have many questions that are formatted like this."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Exclude age_group from the list of benefits\n",
"all_benefits = list(benefits.columns[:-1])\n",
"\n",
"# Exclude under-30s\n",
"buckets_except_under30 = [group for group in benefits['age_group'].unique()\n",
" if group != '<30']\n",
"\n",
"for benefit in all_benefits:\n",
" \n",
" fig, ax = plt.subplots(nrows=2, ncols=2, figsize=(8, 6), \n",
" sharey=True, sharex=True)\n",
"\n",
" for a, age_group in zip(ax.flatten(), buckets_except_under30):\n",
" plot_benefit_question(benefits, benefit, \n",
" age_group=age_group, ax=a)\n",
" \n",
" # Keeps x-axis tick labels for each group of plots\n",
" a.xaxis.set_tick_params(which='both', labelbottom=True)\n",
" \n",
" # Suppresses displaying the question along the y-axis\n",
" a.yaxis.label.set_visible(False)\n",
" \n",
" plt.savefig('sdbp_photos/{}_interest_by_age.png'.format(benefit))\n",
" plt.tight_layout()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Success! And if you wanted to export each individual set of plots, you would simply add the line `plt.savefig('{}_interest_by_age.png'.format(benefit))`, and `matplotlib` would automatically save a beautifully sharp rendering of each set of plots. This makes it especially easy for folks on other teams to use your findings; you can simply export them to a plots folder, and people can browse the images and be able to drag and drop them right into a PowerPoint presentation or other report. \n",
"\n",
"---\n",
"\n",
"Let's do one more example: numerically encoding the benefits, as we mentioned earlier. Then we can generate a heatmap of the correlations between interest in different benefits."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Custom dashboard templates
\n",
"
SQL tutorials
\n",
"
More drag-and-drop features
\n",
"
More ready-made formulas
\n",
"
\n",
" \n",
" \n",
"
\n",
"
1
\n",
"
3
\n",
"
5
\n",
"
4
\n",
"
5
\n",
"
\n",
"
\n",
"
2
\n",
"
2
\n",
"
5
\n",
"
3
\n",
"
4
\n",
"
\n",
"
\n",
"
3
\n",
"
2
\n",
"
3
\n",
"
4
\n",
"
5
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Custom dashboard templates SQL tutorials More drag-and-drop features \\\n",
"1 3 5 4 \n",
"2 2 5 3 \n",
"3 2 3 4 \n",
"\n",
" More ready-made formulas \n",
"1 5 \n",
"2 4 \n",
"3 5 "
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def encode_interest(interest):\n",
" \"\"\"Takes a string indicating interest and encodes it to an ordinal\n",
" (numerical) variable.\"\"\"\n",
" \n",
" if interest == 'Not Interested at all':\n",
" x = 1\n",
" \n",
" if interest == 'Somewhat uninterested':\n",
" x = 2\n",
" \n",
" if interest == 'Neutral':\n",
" x = 3\n",
" \n",
" if interest == 'Somewhat interested':\n",
" x = 4\n",
" \n",
" if interest == 'Very interested':\n",
" x = 5\n",
"\n",
" return x \n",
"\n",
"benefits_encoded = benefits.iloc[:, :-1].copy()\n",
"\n",
"# Map the ordinal variable\n",
"for column in benefits.iloc[:, :-1].columns:\n",
" benefits_encoded[column] = benefits[column].map(encode_interest)\n",
"\n",
"benefits_encoded.head(3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And lastly, we'll generate the correlation matrix and plot the correlations."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"