{
"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": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Use Spearman instead of default Pearson, since these \n",
"# are ordinal variables!\n",
"corr_matrix = benefits_encoded.corr(method='spearman')\n",
"\n",
"# Setup\n",
"fig, ax = plt.subplots(figsize=(8, 6))\n",
"\n",
"# vmin and vmax control the range of the colormap\n",
"sns.heatmap(corr_matrix, cmap='RdBu', annot=True, fmt='.2f',\n",
" vmin=-1, vmax=1)\n",
"\n",
"plt.title(\"Correlations Between Desired Benefits\")\n",
"plt.savefig('sdbp_photos/corrs.png')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Again, since the data is randomly generated, we would expect there to be little to no correlation, and that is indeed what we find. (It is funny to note that SQL tutorials are slightly negatively correlated with drag-and-drop features, which is actually what we might expect to see in real data!)\n",
"\n",
"Let's do one last type of plot, one that's closely related to the heatmap: the clustermap. Clustermaps make correlations especially informative in analyzing survey responses, because they use hierarchical clustering to (in this case) group benefits together by how closely related they are. So instead of eyeballing the heatmap for which individual benefits are positively or negatively associated, which can get a little crazy when you start to have 10+ benefits, the plot will be segmented into clusters, which is a little easier to look at.\n",
"\n",
"You can also easily change the linkage type used in the calculation, if you're familiar with the mathematical details of hierarchical clustering. Some of the available options are 'single', 'average', and 'ward'--I won't get into the details, but 'ward' is generally a safe bet when starting out."
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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/fTTdOvWlTFnnMmANd9+72699Sfc+uOf0NjUyKGHHc622247/9iNN1zPlCmvcsyxxzJlyhROO+Xk+ccyky8dcyx77b13h/anM7vrvge5/NobaWpsZI9P7Mxen951oeedd+kEBg74IPvs9sn5+/49dRoHHHk8t33/Mrp379ZRJUt1xTAiaakdf9CufP6TW9H8xqyqSxFw9113Mnv2bK78/g94YuLjXHLhOM4fdxEAr06Zwo9uvonvXXcDs2fPYvShIxm2+Rbk5EmM2GUXjjvplPntNDc3c+nFFzF+wpWstNLKXH/tNUyd+horr7xKVV1b4d11553Mmj2La37wAyY+/jgXjhvHuIuK927KlCncfNNNXH/DjcyaNYtDRx7CFltsQUtLC18/+yyemDiR4TvuBED//v2ZcNXVADz+2GOMH38pe+y5Z2X96mzemjOH88ZP4ObvXkSvHj044KgT2H6rzei/6tvfO/+eOo3TvnEBL/zt7xyy72fn77/voT9y4Xe/z6uvvVZF6e0uIrYH7gT2zcxbWu1/HPhTZh7cDtccDayWmWPf67aXoZZzgcmZec1/cs67vOaRwCjgm63v+VK8bg/gwcz8x3tRx7vlNC1JS+25v73C5064tOoyVHrs0UfYfMutABiywYZMnvTU/GNPPfkEGw4dSrdu3ejTpy9rDBjAs888w+RJk8jJkzly1KGcfvKJTJnyChMff4xB66zDdy4cxxGHjWSVVVcxiLSzRx95hK22+hgAG2y4IU899eT8Y08+8QQbDd2Ibt260bdvXwYMGMAzzzzN7Nmz+eSnPsXIww57R3u1Wo3zzzuPU087ncbGxg7rR2f33F9eZM0PfoD39e1L165d+eiG6/PHx59c4JyZb7zBkYd8nk/vPHyB/Q0NDVw17hze169vR5bc0SYD+83biIgNgN7VlbPC2xP4wrsJIqVjgX7tUM9ScWRE0lK77Td/ZK3VV626DJVmNjfTp0+f+duNXRqZM2cOTU1NNDc307vP2w85vXr1onnGdNYaOJB1Bw9m2OZb8Ks7bmfc+eex3Q7D+dMfH+baG26mZ69eHHHYSIZsMJQ111qrim51CjPavHddGhd87/r0fftY7169mTF9Bv369WPLLbfiZz/76Tvau/t3v2PtQWszcODAjihfpebmmfTp3Wv+du+ePZne3LzAOWusvhprrL4a9zz4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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.clustermap(corr_matrix, method='ward', cmap='RdBu', annot=True,\n",
" vmin=-1, vmax=1)\n",
"\n",
"plt.title(\"Correlations Between Desired Benefits\")\n",
"plt.savefig('sdbp_photos/clusts.png')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A quick assessment of this shows that the clustering algorithm believes drag-and-drop features and ready-made formulas cluster together, while custom dashboard templates and SQL tutorials form another cluster. Since the correlations are so weak, you can see that the \"height\" of when the benefits link together to form a cluster is very tall. (This means you should probably not base any business decisions on this finding!) Hopefully the example is illustrative despite the weak relationships.\n",
"\n",
"---\n",
"\n",
"I hope you enjoyed this quick tutorial about working with survey data and writing functions to quickly generate visualizations of your findings! If you think you know an even more efficient way of doing things, feel free to let me know in the comments - this is just what I came up with when I needed to produce insights as quickly as possible. "
]
}
],
"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.7.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}