{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "tags": [ "remove_cell" ] }, "outputs": [], "source": [ "%matplotlib inline\n", "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import os\n", "\n", "pd.set_option('display.max_rows', 7)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# An Example Investigation\n", "\n", "This section goes through a data-driven investigation that illustrates common techniques in the Data Scientist's toolkit: assessing the dataset, formulating a question, joining new data to improve an answer, assessing the applicability of a potential answer beyond the dataset, and due diligence on the validity of each step in the reasoning.\n", "\n", "The code in this section is hidden to keep the focus on the data and reasoning. The techniques (and code) used in this section are covered in Part I of this book.\n", "\n", "## San Diego City Salaries\n", "\n", "The dataset at hand includes a list of all San Diego city employee salaries for the year of 2017. This includes employee names and job titles, as well as the components of their total pay during that year." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "-" } }, "source": [ "### SD Employee Salaries: background research\n", "\n", "Why try to understand this dataset?\n", "- Such a profile could inform 3rd party workplace programs.\n", "- Journalists might search for salary anomalies.\n", "- Auditors may want actionable advice on fair employment practices.\n", "- Are the earning of these employees fair?\n", "\n", "Before formulating goals and questions, an initial look is useful understand the data by building a profile of San Diego city employees." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### An initial look: what to keep in mind\n", "\n", "The data, along with a brief description, is available from [Transparent California](https://transparentcalifornia.com/salaries/san-diego/) salary website.\n", "\n", "Some questions to keep in mind while looking at the dataset:\n", "- What columns are required for potential questions that might be asked? \n", "- Which columns have the relevant information?\n", "- Does that information likely reflect real-life salaries or are there mistakes in the data?\n", "- Are the data in the table self-consistent?" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "scrolled": true, "tags": [ "hide_input" ] }, "outputs": [ { "data": { "text/html": [ "
\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", " \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", " \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", " \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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Employee NameJob TitleBase PayOvertime PayOther PayBenefitsTotal PayTotal Pay & BenefitsYearNotesAgencyStatus
0David XxxxFire Battalion Chief81917.0172590.068870.005194.0323377.0328571.02017NaNSan DiegoFT
1Glen XxxxFire Captain85904.0120682.099408.0010107.0305994.0316101.02017NaNSan DiegoFT
2Scott XxxxChief Operating Officer255000.00.031164.0022688.0286164.0308852.02017NaNSan DiegoFT
.......................................
12490Stephen XxxxCouncil Rep 2 A0.00.08.000.08.08.02017NaNSan DiegoPT
12491Tania XxxxSr Mgmt Anlyst0.00.08.000.08.08.02017NaNSan DiegoPT
12492Brian XxxxPolice Officer0.00.03.000.03.03.02017NaNSan DiegoPT
\n", "

12493 rows × 12 columns

\n", "
" ], "text/plain": [ " Employee Name Job Title Base Pay Overtime Pay \\\n", "0 David Xxxx Fire Battalion Chief 81917.0 172590.0 \n", "1 Glen Xxxx Fire Captain 85904.0 120682.0 \n", "2 Scott Xxxx Chief Operating Officer 255000.0 0.0 \n", "... ... ... ... ... \n", "12490 Stephen Xxxx Council Rep 2 A 0.0 0.0 \n", "12491 Tania Xxxx Sr Mgmt Anlyst 0.0 0.0 \n", "12492 Brian Xxxx Police Officer 0.0 0.0 \n", "\n", " Other Pay Benefits Total Pay Total Pay & Benefits Year Notes \\\n", "0 68870.00 5194.0 323377.0 328571.0 2017 NaN \n", "1 99408.00 10107.0 305994.0 316101.0 2017 NaN \n", "2 31164.00 22688.0 286164.0 308852.0 2017 NaN \n", "... ... ... ... ... ... ... \n", "12490 8.00 0.0 8.0 8.0 2017 NaN \n", "12491 8.00 0.0 8.0 8.0 2017 NaN \n", "12492 3.00 0.0 3.0 3.0 2017 NaN \n", "\n", " Agency Status \n", "0 San Diego FT \n", "1 San Diego FT \n", "2 San Diego FT \n", "... ... ... \n", "12490 San Diego PT \n", "12491 San Diego PT \n", "12492 San Diego PT \n", "\n", "[12493 rows x 12 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "salary_path = os.path.join('data', 'san-diego-2017.csv')\n", "salaries = pd.read_csv(salary_path)\n", "salaries.reset_index(drop=True)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "-" } }, "source": [ "### Aside on privacy and ethics\n", "\n", "This dataset contains the full names of city employees; these names correspond to *real* people. Such information is called *PII*, which stands for personally identifiable information. In many cases it is illegal to improperly disclose PII. In this case public employees are public figures and it's not against the law to disclose their names.\n", "\n", "However, there is a difference between what is *legal* and what is *ethical*. In this case, the difference between 'public record' and 'searchable record' may have very different impact on someone's life. Public record exists to give people who want to know a small amount of relevant information the ability to do so. Collecting all public records for a single person in one place creates an intimate picture of that person's life that may easily cross into invasion of privacy.\n", "\n", "The takeaway: there are people behind each data point, and those people's data should not be needlessly propagated! In this case, the last names of the employees have been blanked out, even though it's not legally necessary to do so." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Basic description of employee pay\n", "\n", "The table below contains a basic of description of employee pay. What does typical pay look like? Are there questions about data reliability?" ] }, { "cell_type": "code", "execution_count": 77, "metadata": { "tags": [ "hide_input" ] }, "outputs": [ { "data": { "text/html": [ "
\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", " \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", " \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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanstdmin25%50%75%max
Base Pay12493.048843.85391829377.4491880.028888.049254.068952.0255000.0
Overtime Pay12493.06573.03185815308.455700-623.00.0393.05408.0196978.0
Benefits12493.08667.7549836456.089561-29.02785.08420.013485.036030.0
Total Pay12493.064984.97102441812.9903573.036430.061452.091400.0323377.0
Total Pay & Benefits12493.073652.72600745761.4626373.044788.071264.0103131.0328571.0
Year12493.02017.0000000.0000002017.02017.02017.02017.02017.0
Notes0.0NaNNaNNaNNaNNaNNaNNaN
\n", "
" ], "text/plain": [ " count mean std min 25% \\\n", "Base Pay 12493.0 48843.853918 29377.449188 0.0 28888.0 \n", "Overtime Pay 12493.0 6573.031858 15308.455700 -623.0 0.0 \n", "Benefits 12493.0 8667.754983 6456.089561 -29.0 2785.0 \n", "Total Pay 12493.0 64984.971024 41812.990357 3.0 36430.0 \n", "Total Pay & Benefits 12493.0 73652.726007 45761.462637 3.0 44788.0 \n", "Year 12493.0 2017.000000 0.000000 2017.0 2017.0 \n", "Notes 0.0 NaN NaN NaN NaN \n", "\n", " 50% 75% max \n", "Base Pay 49254.0 68952.0 255000.0 \n", "Overtime Pay 393.0 5408.0 196978.0 \n", "Benefits 8420.0 13485.0 36030.0 \n", "Total Pay 61452.0 91400.0 323377.0 \n", "Total Pay & Benefits 71264.0 103131.0 328571.0 \n", "Year 2017.0 2017.0 2017.0 \n", "Notes NaN NaN NaN " ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" } ], "source": [ "salaries.describe().T" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "notes" } }, "source": [ "A few of the questions raised by this table of statistics are:\n", "* What are the negative payments? Near zero salaries?\n", "* Where did the \"Other Pay\" column go?\n", "* Are the salaries in the 'max' column real?\n", "* This dataset only contains one year!\n", "\n", "These descriptive statistics hide a lot of information about the data. However, that over-simplification makes the dataset more understandable. These questions are a starting point for focusing a detailed investigation into the dataset and how well it represents the reality being analyzed." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Empirical Distribution of Salaries\n", "\n", "As employee total pay is the primary attribute of focus, it makes sense to understand how it varies across the entire population of employees. Plotting the empirical distribution of salaries raises two observations:\n", "* The distribution is 'bimodal' and is likely comprised of two distributions.\n", "* The salaries have a skew to the right, which is typical for a quantity that can only be non-negative." ] }, { "cell_type": "code", "execution_count": 78, "metadata": { "tags": [ "hide_input" ] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "salaries['Total Pay'].plot(kind='hist', bins=50, density=True, title='distribution of Total Salaries');" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "A reasonable guess for the bimodal nature of the distribution of salaries is the employment status. One would expect salaries to vary significantly based on whether an employee works Part-time versus Full-time. Splitting the population up by job status reveals two distributions:\n", "* The part-time jobs tend to have lower salaries, closer to 0,\n", "* The full-time jobs tends to have salaries centered around 80,000 USD." ] }, { "cell_type": "code", "execution_count": 79, "metadata": { "tags": [ "hide_input" ] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "bystatus = salaries.groupby('Status')\n", "bystatus['Total Pay'].plot(kind='kde', alpha=0.5, title='Salary by Full-time/Part-time')\n", "plt.legend(bystatus.groups);" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "tags": [ "hide_input" ] }, "outputs": [], "source": [ "salaries = salaries[['Employee Name', 'Job Title', 'Total Pay', 'Status']].copy()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Do women earn similar pay to their contemporaries?\n", "\n", "With a general assessment of the data finished, a more pointed questions about the data can be pursued. In this case: do employees of different genders have similar pay?\n", "\n", "However, this dataset doesn't contain information on the gender of employees. The dataset does have the first names of employees, which contains imperfect information about gender. A reasonable approach is to find a dataset that contains information about correspondences between names and gender. \n", "\n", "In this case, the Social Security Administration publishes a \"baby names\" dataset that does exactly this." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### SSA names dataset\n", "\n", "The Social Security Administration compiles a list of all names on social security applications in a given year, whether the applicant identified as Male or Female. This list can then be used to label the most likely gender of the employees using their first names." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "tags": [ "hide_input" ] }, "outputs": [ { "data": { "text/html": [ "
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
firstnamegendercountyear
0EmilyF259562000
1HannahF230822000
2MadisonF199682000
3AshleyF179972000
4SarahF177022000
\n", "
" ], "text/plain": [ " firstname gender count year\n", "0 Emily F 25956 2000\n", "1 Hannah F 23082 2000\n", "2 Madison F 19968 2000\n", "3 Ashley F 17997 2000\n", "4 Sarah F 17702 2000" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from glob import glob\n", "import os\n", "\n", "names_path = os.path.join('data', 'names.csv')\n", "names = pd.read_csv(names_path)\n", "names.head()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Basic check of `names`:\n", "\n", "There are a number of details to attend to in SSA dataset:\n", "* Many names identify to both genders (gender-neutral names).\n", "* Most names occur only a few times per year (most names are rare).\n", "* A few names make up most the applications.\n", "\n", "Notice, the name \"Madison\" is mostly identified as female, though there are consistently a few males with that name as well:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "scrolled": true, "tags": [ "hide_input" ] }, "outputs": [ { "data": { "text/html": [ "
\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", " \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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
firstnamegendercountyear
1887827MadisonM362018
1866629MadisonF70362018
161087MadisonF78752017
...............
1932167MadisonM271882
1843222MadisonM281881
1841285MadisonM221880
\n", "

178 rows × 4 columns

\n", "
" ], "text/plain": [ " firstname gender count year\n", "1887827 Madison M 36 2018\n", "1866629 Madison F 7036 2018\n", "161087 Madison F 7875 2017\n", "... ... ... ... ...\n", "1932167 Madison M 27 1882\n", "1843222 Madison M 28 1881\n", "1841285 Madison M 22 1880\n", "\n", "[178 rows x 4 columns]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# look at a single name\n", "names[names['firstname'] == 'Madison'].sort_values(by='year', ascending=False)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Approach to joining gender:\n", "\n", "* Create a table of distinct names with the proportion of applications on which that name identifies as female. \n", "* That is, for each name $N$, compute:\n", "\n", "$$P({\\rm person\\ is\\ female\\ }|{\\rm \\ person\\ has\\ first\\ name\\ } N)$$\n", "\n", "* Join this table to the salaries dataset.\n", "\n", "First, creating the table of counts of gender for each name over every year:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "tags": [ "hide_input" ] }, "outputs": [ { "data": { "text/html": [ "
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
genderFM
firstname
Aaron4307581330
Maria5460264237
Dakota3320486089
Ashley84612015668
Avery12588355646
Paris288418812
\n", "
" ], "text/plain": [ "gender F M\n", "firstname \n", "Aaron 4307 581330\n", "Maria 546026 4237\n", "Dakota 33204 86089\n", "Ashley 846120 15668\n", "Avery 125883 55646\n", "Paris 28841 8812" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Counts by gender\n", "cnts_by_gender = names.pivot_table(\n", " index='firstname', \n", " columns=['gender'], \n", " values='count', \n", " aggfunc='sum', \n", " fill_value=0\n", ")\n", "\n", "names_idx = ['Aaron', 'Maria', 'Dakota', 'Ashley', 'Avery', 'Paris']\n", "cnts_by_gender.loc[names_idx, :]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From the total counts in the above table, calculate the proportion of a given name that's identified as female. If this number is greater than 0.5, then the name is likely associated to female; otherwise the name mostly associates to male." ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "tags": [ "hide_input" ] }, "outputs": [], "source": [ "# proportion of a given name that's identified female\n", "prop_female = (cnts_by_gender['F'] / cnts_by_gender.sum(axis=1))\n", "genders = (\n", " prop_female.rename('proportion of a given name that\\'s identified as female').to_frame()\n", " .assign(**{'gender': \n", " prop_female.apply(lambda x:'F' if x > 0.5 else 'M').rename('prop_female').to_frame()\n", " }))\n", "\n", "genders.loc[names_idx]" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Add a given name column to `salaries` and join names\n", "\n", "This table of names and their most likely gender attaches a 'most likely gender' to the employees in the salaries dataset. This identification is approximate and doesn't reflect the actual gender with which the employees identify." ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "tags": [ "hide_input" ] }, "outputs": [ { "data": { "text/html": [ "
\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", " \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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Employee NameJob TitleTotal PayStatusfirstnameproportion of a given name that's identified as femalegender
0Leonardo XxxxLibrary Clerk43336.0FTLeonardo0.001915M
1Reina XxxxAccountant 377461.0FTReina1.000000F
2La XxxxInfo Sys Anlyst 372983.0FTLa0.824943F
3Montserrat XxxxPool Guard 18476.0PTMontserrat1.000000F
4Serena XxxxProgram Manager122884.0FTSerena0.999616F
\n", "
" ], "text/plain": [ " Employee Name Job Title Total Pay Status firstname \\\n", "0 Leonardo Xxxx Library Clerk 43336.0 FT Leonardo \n", "1 Reina Xxxx Accountant 3 77461.0 FT Reina \n", "2 La Xxxx Info Sys Anlyst 3 72983.0 FT La \n", "3 Montserrat Xxxx Pool Guard 1 8476.0 PT Montserrat \n", "4 Serena Xxxx Program Manager 122884.0 FT Serena \n", "\n", " proportion of a given name that's identified as female gender \n", "0 0.001915 M \n", "1 1.000000 F \n", "2 0.824943 F \n", "3 1.000000 F \n", "4 0.999616 F " ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Add firstname column\n", "salaries.loc[:, 'firstname'] = salaries['Employee Name'].str.split().apply(lambda x:x[0])\n", "\n", "# join gender\n", "salaries_with_gender = salaries.merge(genders.reset_index(), on='firstname', how='left')\n", "salaries_with_gender.sample(5).reset_index(drop=True)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Do women earn similar pay to their contemporaries?\n", "\n", "With a most likely gender attached to the salaries dataset, the salaries can now be described by gender:" ] }, { "cell_type": "code", "execution_count": 178, "metadata": { "scrolled": true, "tags": [ "hide_input" ] }, "outputs": [ { "data": { "text/html": [ "
\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", " \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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
FMAll
count4165.0000007907.00000012493.000000
mean53970.99711971226.90755064984.971024
std36251.18937243419.91344641812.990357
min8.0000003.0000003.000000
25%25853.00000041557.50000036430.000000
50%50789.00000067874.00000061452.000000
75%75128.000000100689.00000091400.000000
max237512.000000323377.000000323377.000000
\n", "
" ], "text/plain": [ " F M All\n", "count 4165.000000 7907.000000 12493.000000\n", "mean 53970.997119 71226.907550 64984.971024\n", "std 36251.189372 43419.913446 41812.990357\n", "min 8.000000 3.000000 3.000000\n", "25% 25853.000000 41557.500000 36430.000000\n", "50% 50789.000000 67874.000000 61452.000000\n", "75% 75128.000000 100689.000000 91400.000000\n", "max 237512.000000 323377.000000 323377.000000" ] }, "execution_count": 178, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.concat([\n", " salaries_with_gender.groupby('gender')['Total Pay'].describe().T,\n", " salaries_with_gender['Total Pay'].describe().rename('All')\n", "], axis=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There is clearly a large difference in salaries between the males and females! This observation brings up a variety of questions:\n", "* Is this difference the result of some sort of true unfairness, or perhaps the difference is just due to chance?\n", "* If the difference isn't due to chance, *why* does it exist?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Use a hypothesis test\n", "\n", "Another way of phrasing the question \"Is this difference the result of some sort of true unfairness, or perhaps the difference is just due to chance?\" is as\n", "\n", "> Can women's median pay be explained as a random subset of the population of city of SD salaries?\n", "\n", "If so, the salary of women doesn't significantly differ from the population; otherwise, some other mechanism is needed to explain the difference!\n", "\n", "Hypothesis tests answer these sorts of questions. In particular, such a question can be simulated:\n", "* Random subsets of employees are drawn from the dataset, of the same size as the number of female employees,\n", "* The median salary of each of these random groups is calculated,\n", "* The observed salary of female employees is compared to the simulated 'randomly drawn' median salaries.\n", "Finally, one asks if the observed, real-life salary was just as likely drawn from a random subset of employees. If so, then the observed difference may have occurred due to chance; otherwise, something else is going on!\n", "\n", "The plot below illustrates the results of this simulation:\n", "* The blue distribution represents the median salaries of these 'randomly formed groups'.\n", "* The orange dot represents the real-life median female salary.\n", "\n", "It seems unlikely this difference is due to chance!" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "tags": [ "hide_input" ] }, "outputs": [], "source": [ "# size of sample is number of women:\n", "n_female = (salaries_with_gender['gender'] == 'F').sum()\n", "\n", "\n", "# calculate observed \n", "female_median = salaries_with_gender.loc[salaries_with_gender['gender'] == 'F']['Total Pay'].median()\n", "\n", "\n", "# simulate 1000 draws from the population of size n_female\n", "medians = []\n", "for _ in np.arange(1000):\n", " median = salaries_with_gender.sample(n_female)['Total Pay'].median()\n", " medians.append(median)\n", " \n", " \n", "title='Median salary of randomly chosen groups from population'\n", "pd.Series(medians).plot(kind='hist', title=title);\n", "plt.plot([female_median], [0], marker='o', markersize=10)\n", "plt.legend(['Observed Median Salary of Women', 'Median Salaries of Random Groups']);" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Truism of data science\n", "\n", "Now that the question of differences in the salaries of genders is answered, a truism of data science rears its head: answering one question always raises a dozen more.\n", "\n", "First, are the results correct?\n", "* Is dataset error-free and representative (or error-free enough)?\n", "* Is the name-to-gender assignment correct (enough)?\n", "* What biases might have been introduced when joining the dataset of names to salaries?\n", "* Are the results applicable outside of 2017? outside of San Diego? \n", "\n", "Second, why are the results what they are?\n", "* Is the disparity correlated to pay-type? job status? job type?\n", "* What is the cause of the disparity?\n", "\n", "The sections below approach each of these questions, giving a feel for what's involved in answering them." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Is the dataset representative?\n", "\n", "* Look up the \"transparent California\" and verify this dataset is a *census* (everyone).\n", "* Is \"Total Pay\" the most appropriate field to use?\n", "* Cross-reference independent counts of city of San Diego employees to assess the salary data.\n", "* What is the population of interest? Is it San Diego employees in 2017, or something more broad?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Is the name-to-gender assignment correct?\n", "\n", "* How many names are borderline male/female?\n", "* Does it make sense to incorporate name usage from all years in the dataset? (1880-2017?)\n", "\n", "The plot below shows the distribution of 'proportions of names being female.' \n", "* The bar near 0 are counts of names that are almost entirely male. \n", "* The bar near 1 are counts of names that are almost entirely female. \n", "* There are very few names in the middle that are gender-neutral.\n", "\n", "However, each unit plotted is a distinct name; the proportions hide the number of people with each name. What if the most popular name in the country is gender-neutral? This distribution doesn't reveal this property and is an example of what's called an *Ecological Fallacy* (see the chapter on grouping and aggregation).\n", "\n", "What's more appropriate is to look at this distribution of confidence among the dataset of employees." ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "tags": [ "hide_input" ] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "title = 'distribution of gendered-ness of names\\n 0 = masculine \\n 1 = feminine'\n", "prop_female.plot(kind='hist', bins=20, title=title);" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Assessment of the join?\n", "\n", "* Are there names in the salary dataset that aren't in the SSA dataset?\n", " - Who might not be in the SSA dataset? \n", " - Might these names be biased toward certain salaries?\n", "* Does the salary dataset have a disproportionately large portion of gender-neutral names.\n", "* Is it better to use a subset of the SSA dataset (e.g. by state? by year?)\n", " - Do the gender of names typically vary by geography or over time?\n", " \n", "The proportion of employees not in the SSA data is 3.5%, which is fairly small, but may affect the results. These individuals should be investigated more closely; a look at the employees with a gender assigned versus those that didn't appear in the SSA names dataset reveals some bias (see table below). \n", "\n", "Perhaps those that didn't appear in the names dataset have lower salaries because they belong to an uncommon ethnic group (e.g. an immigrant group)? Such populations would likely work in jobs that earn lower salaries. One could further clean up these missing genders by incorporating the demographic information from immigration data.\n", "\n", "These problems centered around bias from missing data are covered in the 'Missing Data' chapter of the book." ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "scrolled": false, "tags": [ "hide_input" ] }, "outputs": [ { "data": { "text/html": [ "
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
joinedFalseTrue
count421.00000012072.000000
mean56714.68408665273.389745
std38445.03852941897.581538
.........
50%54966.00000061653.000000
75%78376.00000091895.000000
max194920.000000323377.000000
\n", "

8 rows × 2 columns

\n", "
" ], "text/plain": [ "joined False True \n", "count 421.000000 12072.000000\n", "mean 56714.684086 65273.389745\n", "std 38445.038529 41897.581538\n", "... ... ...\n", "50% 54966.000000 61653.000000\n", "75% 78376.000000 91895.000000\n", "max 194920.000000 323377.000000\n", "\n", "[8 rows x 2 columns]" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# proportion of employees not in SSA dataset\n", "# salaries_with_gender['gender'].isnull().mean()\n", "\n", "# Description of total pay by joined vs not joined\n", "(\n", " salaries_with_gender\n", " .assign(joined=salaries_with_gender['gender'].notnull())\n", " .groupby('joined')['Total Pay']\n", " .describe()\n", " .T\n", ")" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "scrolled": false, "tags": [ "hide_input" ] }, "outputs": [ { "data": { "image/png": "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7rlt2kyePJnrr78egOOPP54rrriCUaNGMWLECH7xi19s18fvf/97DjzwQHbbLUsBQ4YMYb/99mPNmjXsvffe7LXXXgDstdde26yYmzlzJn/3d3/H0KFDefzxx6t2PjrULCGlmcoEYA6wFJgVEUskXS3pk6naDKBB0nLgUmBiaruE7LHIzwA/Ay6KiM3FYqZYVwCXplgNKTaSjpHUBnwW+K6kJamPzcDlwMOSfkN22e/fa3U+zMxyXXTRRfzwhz/klVde2aZ8woQJjBs3jsWLF/O5z32Oiy++mA996EN88pOf5LrrruOpp57iXe96V8nY7e3tzJ8/n29961tcddVV2+0/44wzuPfeeznyyCO57LLLePLJJwF4//vfzzve8Q4aGxs5//zzuffee7e2+dOf/sTDDz/MqaeeyllnncXMmTOrcBa2VdM7NUTEfRExIiLeFRFTUtmVEdGatt+IiM9GxGERMarj8lnaNyW1e3dE3F8qZipfkWIclmJuSuULImJIROwZEQ0RcXhOmwcj4oiI+IuIOC+t3DMzq7l99tmHcePGccMNN2xT/thjj3H22WcDcM455/Doo492OvZnPvMZAI4++mhWrly53f4hQ4awbNkyrr32WnbbbTdGjx7Nww8/TJ8+ffjZz37G7NmzGTFiBJdccsnWz7V++tOfcsIJJ7DHHntw2mmncdddd7F58+ZOj60U3zrIzKyHfPnLX2bGjBm8/vrrRet05XOa/v37A9CnTx/a29uL1jnllFO47rrr+OpXv8rdd9+9tb9Ro0YxadIkWlpa+MlPfgJkl+seeughhg0bxtFHH826deuYN29ep8dWihOSmVkP2X///TnjjDOYMePttVQf+tCHaGlpAeCHP/whxx13HAB77703r732WlX6XbRoEatXZ+u+tmzZwuLFiznkkENYvXo1ixYt2lrvqaee4pBDDuHVV1/l0UcfZdWqVaxcuZKVK1dy0003Vf2yne9lZ2a9Wk+veL3sssu48cYbt76/4YYb+PznP891113HoEGD+N73vgdAc3MzF154ITfccAOzZ88u+zlSKWvWrOHCCy9k06ZNAIwaNYoJEybwhz/8gcsvv5zVq1czYMAABg0axM0338ydd97JiSeeuHXmBTB27Fi+8pWvsGnTpm3Kd4SyBWpWiaamptiRB/R52bdZz1u6dCnvfe97e3oYu6xC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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "nonjoins = salaries_with_gender.loc[salaries_with_gender['gender'].isnull()]\n", "\n", "title = 'Distribution of Salaries'\n", "nonjoins['Total Pay'].plot(kind='hist', bins=50, alpha=0.5, density=True, sharex=True)\n", "salaries_with_gender['Total Pay'].plot(kind='hist', bins=50, alpha=0.5, density=True, sharex=True, title=title)\n", "plt.legend(['Not in SSA','All']);" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Why does pay disparity exist?\n", "\n", "Is the pay disparity correlated to another field? job status? job type? Is the proportion of women in a job type correlated to pay? One approach might ask if women earn similar salaries as men for a given job type.\n", "\n", "Below, a few job types are isolated for investigation. For example, those who work in 'Fire' related fields tend to be male and make high salaries:" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "scrolled": false, "tags": [ "hide_input" ] }, "outputs": [ { "data": { "text/html": [ "
\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", " \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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Employee NameJob TitleTotal PayStatusfirstnameproportion of a given name that's identified as femalegender
342Michael XxxxFire Engineer150291.0PTMichael0.004957M
555Dustin XxxxFire Fighter 2134974.0FTDustin0.006679M
12027Chase XxxxFire Fighter 23900.0PTChase0.021086M
5718Nick XxxxFire Dispatch Supv62799.0FTNick0.002659M
2627Dave XxxxFire Engineer91446.0FTDave0.001780M
\n", "
" ], "text/plain": [ " Employee Name Job Title Total Pay Status firstname \\\n", "342 Michael Xxxx Fire Engineer 150291.0 PT Michael \n", "555 Dustin Xxxx Fire Fighter 2 134974.0 FT Dustin \n", "12027 Chase Xxxx Fire Fighter 2 3900.0 PT Chase \n", "5718 Nick Xxxx Fire Dispatch Supv 62799.0 FT Nick \n", "2627 Dave Xxxx Fire Engineer 91446.0 FT Dave \n", "\n", " proportion of a given name that's identified as female gender \n", "342 0.004957 M \n", "555 0.006679 M \n", "12027 0.021086 M \n", "5718 0.002659 M \n", "2627 0.001780 M " ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# select jobs with word 'fire' in them\n", "firejobs = salaries_with_gender.loc[salaries_with_gender['Job Title'].str.contains('Fire')]\n", "firejobs.sample(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The proportion of fire-related jobs held by women is only 8.8%, yet fire-related jobs make significantly more than the overall median pay of 61,000USD per year:" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "tags": [ "hide_input" ] }, "outputs": [ { "data": { "text/plain": [ "count 1017.000000\n", "mean 110967.646018\n", "std 49678.113970\n", " ... \n", "50% 112568.000000\n", "75% 141502.000000\n", "max 323377.000000\n", "Name: Total Pay, Length: 8, dtype: float64" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Proportion of fire-related jobs held by women\n", "#(firejobs['gender'] == 'F').mean()\n", "\n", "# Pay Statistics for fire-related jobs\n", "firejobs['Total Pay'].describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On the other hand, those with library-related jobs tend to be female and make lower-than-average salaries:" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "tags": [ "hide_input" ] }, "outputs": [ { "data": { "text/html": [ "
\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", " \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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Employee NameJob TitleTotal PayStatusfirstnameproportion of a given name that's identified as femalegender
5955Patricia XxxxLibrarian 263320.0FTPatricia0.996853F
10363Joseph XxxxLibrary Aide17777.0PTJoseph0.004060M
11194Jaqueline XxxxLibrary Aide10189.0PTJaqueline0.998469F
8706Alexis XxxxLibrary Clerk39696.0FTAlexis0.841756F
8430Steven XxxxLibrary Clerk43056.0FTSteven0.003469M
\n", "
" ], "text/plain": [ " Employee Name Job Title Total Pay Status firstname \\\n", "5955 Patricia Xxxx Librarian 2 63320.0 FT Patricia \n", "10363 Joseph Xxxx Library Aide 17777.0 PT Joseph \n", "11194 Jaqueline Xxxx Library Aide 10189.0 PT Jaqueline \n", "8706 Alexis Xxxx Library Clerk 39696.0 FT Alexis \n", "8430 Steven Xxxx Library Clerk 43056.0 FT Steven \n", "\n", " proportion of a given name that's identified as female gender \n", "5955 0.996853 F \n", "10363 0.004060 M \n", "11194 0.998469 F \n", "8706 0.841756 F \n", "8430 0.003469 M " ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# select jobs with library related jobs\n", "libjobs = salaries_with_gender.loc[salaries_with_gender['Job Title'].str.contains('Librar')]\n", "libjobs.sample(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The proportion of library-related jobs held by women is 64%, yet library related jobs make significantly less than the overall median salary:" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "tags": [ "hide_input" ] }, "outputs": [ { "data": { "text/plain": [ "count 651.000000\n", "mean 30383.377880\n", "std 23236.318495\n", "min 23.000000\n", "25% 10598.500000\n", "50% 26952.000000\n", "75% 43566.000000\n", "max 167269.000000\n", "Name: Total Pay, dtype: float64" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Proportion of library-related jobs held by women\n", "#(libjobs['gender'] == 'F').mean()\n", "\n", "# Pay Statistics for fire-related jobs\n", "libjobs['Total Pay'].describe()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### What is the cause of the disparity?\n", "\n", "Now that the picture of employee salaries is better understood the next steps all consist of domain more research:\n", "- Research historical gender preferences across jobs\n", "- list possibilities and formulate hypothesis for a cause,\n", "- find data capable of describing these possibilities,\n", "- use a [natural experiment](https://en.wikipedia.org/wiki/Natural_experiment) to argue causality." ] } ], "metadata": { "celltoolbar": "Tags", "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.1" }, "livereveal": { "scroll": true, "transition": "none" } }, "nbformat": 4, "nbformat_minor": 2 }