{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "We return to the death penalty." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "# Make plots look a little bit more fancy\n", "plt.style.use('fivethirtyeight')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this case, we are going to analyze whether people with higher incomes are more likely to favor the death penalty.\n", "\n", "To do this, we are going to analyze the results from a sample of the\n", "US [General Social Survey](http://www.gss.norc.org) from 2002.\n", "\n", "If you are running on your laptop, download the data file [GSS2002.csv]({{ site.baseurl }}/data/GSS2002.csv)." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
IDRegionGenderRaceEducationMaritalReligionHappyIncomePolParty...MarijuanaDeathPenaltyOwnGunGunLawSpendMilitarySpendEducSpendEnvSpendSciPres00Postlife
01South CentralFemaleWhiteHSDivorcedInter-nondenominationalPretty happy30000-34999Strong Rep...NaNFavorNoFavorToo littleToo littleAbout rightAbout rightBushYes
12South CentralMaleWhiteBachelorsMarriedProtestantPretty happy75000-89999Not Str Rep...Not legalFavorYesOpposeAbout rightToo littleAbout rightAbout rightBushYes
23South CentralFemaleWhiteHSSeparatedProtestantNaN35000-39999Strong Rep...NaNNaNNaNNaNNaNNaNNaNNaNBushNaN
34South CentralFemaleWhiteLeft HSDivorcedProtestantNaN50000-59999Ind, Near Dem...NaNNaNNaNNaNAbout rightToo littleToo littleToo littleNaNNaN
45South CentralMaleWhiteLeft HSDivorcedProtestantNaN40000-49999Ind...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
56South CentralMaleWhiteHSDivorcedCatholicPretty happy40000-49999Ind, Near Rep...NaNFavorYesOpposeToo littleToo littleToo littleToo littleBushYes
67South CentralFemaleWhiteBachelorsMarriedProtestantNaNNaNStrong Rep...NaNNaNNaNNaNNaNNaNNaNNaNBushNaN
78South CentralFemaleWhiteHSMarriedProtestantNaNNaNInd...NaNNaNNaNNaNToo littleToo littleAbout rightAbout rightBushNaN
89South CentralMaleWhiteHSDivorcedCatholicNot too happy60000-74999Strong Rep...LegalFavorYesOpposeNaNNaNNaNNaNBushYes
910South CentralFemaleOtherHSNever MarriedCatholicNaNunder 1000Ind, Near Rep...NaNNaNNaNNaNToo muchToo littleToo littleToo littleNaNNaN
1011South CentralMaleWhiteHSMarriedNoneNaN50000-59999Strong Rep...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
1112South CentralMaleWhiteLeft HSMarriedProtestantNaN110000-129999Not Str Rep...NaNNaNNaNNaNAbout rightAbout rightToo muchToo muchBushNaN
1213South CentralMaleBlackGraduateMarriedCatholicNaN90000-109999Not Str Dem...NaNNaNNaNNaNToo muchAbout rightToo littleAbout rightNaNNaN
1314South CentralFemaleWhiteHSDivorcedProtestantPretty happy10000-124999Strong Rep...Not legalFavorNoFavorNaNNaNNaNNaNBushYes
1415South CentralFemaleOtherHSMarriedMoslem/IslamNaNNaNInd, Near Rep...NaNNaNNaNNaNAbout rightToo muchToo muchToo muchNaNNaN
1516South CentralFemaleWhiteHSMarriedOrthodox-ChristianNaNNaNInd...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
1617South CentralFemaleWhiteHSDivorcedChristianNot too happyNaNNot Str Rep...NaNFavorNoFavorAbout rightToo littleToo littleAbout rightNaNYes
1718South CentralMaleWhiteHSNever MarriedProtestantVery happy40000-49999Strong Rep...LegalFavorNaNNaNNaNNaNNaNNaNBushYes
1819South CentralMaleWhiteJr ColDivorcedNonePretty happy75000-89999Ind, Near Dem...LegalFavorYesOpposeToo littleAbout rightToo muchAbout rightNaNNaN
1920South CentralMaleWhiteHSNever MarriedNoneNaN25000-29999Other party...NaNNaNNaNNaNNaNNaNNaNNaNNaderNaN
2021South CentralFemaleBlackHSNever MarriedProtestantNaN25000-29999Ind...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
2122South CentralMaleBlackHSSeparatedCatholicPretty happy17500-19999Not Str Dem...NaNOpposeNoFavorAbout rightToo littleToo littleAbout rightNaNYes
2223South CentralMaleOtherBachelorsMarriedMoslem/IslamNot too happy50000-59999Not Str Dem...LegalFavorNaNNaNNaNNaNNaNNaNGoreYes
2324South CentralFemaleBlackHSMarriedProtestantNaN40000-49999Not Str Dem...NaNNaNNaNNaNNaNNaNNaNNaNGoreNaN
2425South CentralMaleWhiteHSMarriedProtestantNaN40000-49999Strong Rep...NaNNaNNaNNaNNaNNaNNaNNaNBushNaN
2526South CentralFemaleWhiteHSWidowedProtestantNaNNaNOther party...NaNNaNNaNNaNToo littleToo littleAbout rightAbout rightBushNaN
2627South CentralFemaleWhiteHSWidowedCatholicPretty happyNaNOther party...NaNFavorNoFavorNaNNaNNaNNaNBushYes
2728South CentralFemaleOtherBachelorsDivorcedNoneNaN25000-29999Ind, Near Dem...NaNNaNNaNNaNToo muchToo littleToo littleToo littleNaNNaN
2829South CentralFemaleOtherHSNever MarriedCatholicNaN1000-2999Ind...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
2930South CentralFemaleWhiteHSNever MarriedProtestantNaN10000-124999Ind...NaNNaNNaNNaNAbout rightNaNAbout rightNaNNaNNaN
..................................................................
27352736South AtlanticMaleWhiteGraduateMarriedProtestantPretty happyNaNStrong Rep...Not legalFavorYesFavorToo littleToo muchToo muchToo littleBushYes
27362737South AtlanticFemaleWhiteBachelorsMarriedProtestantNaN25000-29999Strong Rep...NaNNaNNaNNaNNaNNaNNaNNaNBushNaN
27372738South AtlanticFemaleBlackHSMarriedProtestantPretty happy60000-74999Strong Dem...Not legalOpposeNaNNaNNaNNaNNaNNaNGoreYes
27382739South AtlanticFemaleWhiteHSWidowedProtestantPretty happy25000-29999Strong Dem...LegalNaNNoFavorNaNToo littleToo littleAbout rightGoreYes
27392740South AtlanticFemaleWhiteLeft HSSeparatedProtestantNaNNaNStrong Rep...NaNNaNNaNNaNNaNNaNNaNNaNBushNaN
27402741South AtlanticFemaleWhiteBachelorsSeparatedProtestantNaNNaNInd, Near Rep...NaNNaNNaNNaNNaNNaNNaNNaNBushNaN
27412742South AtlanticMaleWhiteHSMarriedProtestantPretty happy15000-17499Not Str Rep...NaNFavorYesFavorNaNNaNNaNNaNBushYes
27422743South AtlanticMaleWhiteHSNever MarriedProtestantPretty happy25000-29999Ind, Near Rep...LegalFavorNaNNaNToo littleToo littleToo littleToo littleBushYes
27432744South AtlanticMaleBlackHSMarriedProtestantNaN22500-24999Strong Dem...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
27442745South AtlanticMaleWhiteHSNever MarriedProtestantNaNNaNInd, Near Rep...NaNNaNNaNNaNAbout rightToo littleAbout rightToo littleNaNNaN
27452746PacificFemaleWhiteBachelorsMarriedProtestantPretty happyNaNNot Str Rep...NaNFavorNoFavorNaNNaNNaNNaNBushNaN
27462747PacificFemaleWhiteHSWidowedCatholicPretty happyNaNStrong Rep...Not legalOpposeNaNNaNToo littleToo littleToo muchToo littleBushYes
27472748PacificFemaleWhiteHSNever MarriedProtestantVery happy8000-9999Not Str Rep...NaNFavorYesFavorNaNNaNNaNNaNNaNYes
27482749PacificFemaleWhiteHSWidowedProtestantNaNNaNNot Str Dem...NaNNaNNaNNaNToo littleToo littleToo muchAbout rightGoreNaN
27492750Mid-AtlMaleWhiteJr ColMarriedProtestantNaN22500-24999Not Str Rep...NaNNaNNaNNaNNaNNaNNaNNaNBushNaN
27502751Mid-AtlFemaleWhiteHSMarriedProtestantNot too happy6000-6999Ind...Not legalNaNNaNNaNNaNNaNNaNNaNGoreYes
27512752Mid-AtlMaleWhiteLeft HSMarriedProtestantNaN22500-24999Strong Rep...NaNNaNNaNNaNToo littleToo littleToo littleAbout rightNaNNaN
27522753South CentralFemaleWhiteJr ColMarriedProtestantNaNNaNOther party...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
27532754South CentralMaleBlackHSNever MarriedCatholicVery happy35000-39999Not Str Dem...NaNFavorNoFavorAbout rightToo littleToo littleToo littleBushNaN
27542755South CentralFemaleWhiteHSDivorcedProtestantNaNNaNStrong Rep...NaNNaNNaNNaNAbout rightAbout rightToo littleAbout rightBushNaN
27552756South CentralFemaleWhiteHSMarriedProtestantNaN35000-39999Not Str Dem...NaNNaNNaNNaNNaNNaNNaNNaNBushNaN
27562757South CentralMaleBlackHSMarriedProtestantVery happy30000-34999Strong Dem...Not legalFavorNoFavorNaNNaNNaNNaNGoreYes
27572758New EnglMaleWhiteHSDivorcedProtestantNaN6000-6999Not Str Rep...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
27582759New EnglFemaleWhiteHSNever MarriedNoneNaN12500-14999Ind, Near Dem...NaNNaNNaNNaNNaNNaNNaNNaNGoreNaN
27592760New EnglFemaleWhiteHSDivorcedNoneNaN20000-22499Not Str Rep...NaNNaNNaNNaNToo muchAbout rightToo littleNaNNaNNaN
27602761New EnglMaleWhiteLeft HSNever MarriedNonePretty happy22500-24999Ind, Near Dem...LegalFavorNaNNaNNaNNaNNaNNaNNaNYes
27612762New EnglMaleWhiteBachelorsMarriedNoneNaNNaNInd, Near Dem...NaNNaNNaNNaNNaNNaNNaNNaNNaderNaN
27622763New EnglFemaleWhiteHSMarriedCatholicNaNNaNNot Str Rep...NaNNaNNaNNaNToo littleToo muchToo muchAbout rightBushNaN
27632764South AtlanticMaleBlackHSNever MarriedProtestantNaNNaNInd...NaNNaNNaNNaNAbout rightToo littleToo littleToo muchNaNNaN
27642765South AtlanticMaleWhiteHSMarriedProtestantVery happy60000-74999Not Str Rep...LegalOpposeYesFavorNaNNaNNaNNaNBushYes
\n", "

2765 rows × 21 columns

\n", "
" ], "text/plain": [ " ID Region Gender Race Education Marital \\\n", "0 1 South Central Female White HS Divorced \n", "1 2 South Central Male White Bachelors Married \n", "2 3 South Central Female White HS Separated \n", "3 4 South Central Female White Left HS Divorced \n", "4 5 South Central Male White Left HS Divorced \n", "5 6 South Central Male White HS Divorced \n", "6 7 South Central Female White Bachelors Married \n", "7 8 South Central Female White HS Married \n", "8 9 South Central Male White HS Divorced \n", "9 10 South Central Female Other HS Never Married \n", "10 11 South Central Male White HS Married \n", "11 12 South Central Male White Left HS Married \n", "12 13 South Central Male Black Graduate Married \n", "13 14 South Central Female White HS Divorced \n", "14 15 South Central Female Other HS Married \n", "15 16 South Central Female White HS Married \n", "16 17 South Central Female White HS Divorced \n", "17 18 South Central Male White HS Never Married \n", "18 19 South Central Male White Jr Col Divorced \n", "19 20 South Central Male White HS Never Married \n", "20 21 South Central Female Black HS Never Married \n", "21 22 South Central Male Black HS Separated \n", "22 23 South Central Male Other Bachelors Married \n", "23 24 South Central Female Black HS Married \n", "24 25 South Central Male White HS Married \n", "25 26 South Central Female White HS Widowed \n", "26 27 South Central Female White HS Widowed \n", "27 28 South Central Female Other Bachelors Divorced \n", "28 29 South Central Female Other HS Never Married \n", "29 30 South Central Female White HS Never Married \n", "... ... ... ... ... ... ... \n", "2735 2736 South Atlantic Male White Graduate Married \n", "2736 2737 South Atlantic Female White Bachelors Married \n", "2737 2738 South Atlantic Female Black HS Married \n", "2738 2739 South Atlantic Female White HS Widowed \n", "2739 2740 South Atlantic Female White Left HS Separated \n", "2740 2741 South Atlantic Female White Bachelors Separated \n", "2741 2742 South Atlantic Male White HS Married \n", "2742 2743 South Atlantic Male White HS Never Married \n", "2743 2744 South Atlantic Male Black HS Married \n", "2744 2745 South Atlantic Male White HS Never Married \n", "2745 2746 Pacific Female White Bachelors Married \n", "2746 2747 Pacific Female White HS Widowed \n", "2747 2748 Pacific Female White HS Never Married \n", "2748 2749 Pacific Female White HS Widowed \n", "2749 2750 Mid-Atl Male White Jr Col Married \n", "2750 2751 Mid-Atl Female White HS Married \n", "2751 2752 Mid-Atl Male White Left HS Married \n", "2752 2753 South Central Female White Jr Col Married \n", "2753 2754 South Central Male Black HS Never Married \n", "2754 2755 South Central Female White HS Divorced \n", "2755 2756 South Central Female White HS Married \n", "2756 2757 South Central Male Black HS Married \n", "2757 2758 New Engl Male White HS Divorced \n", "2758 2759 New Engl Female White HS Never Married \n", "2759 2760 New Engl Female White HS Divorced \n", "2760 2761 New Engl Male White Left HS Never Married \n", "2761 2762 New Engl Male White Bachelors Married \n", "2762 2763 New Engl Female White HS Married \n", "2763 2764 South Atlantic Male Black HS Never Married \n", "2764 2765 South Atlantic Male White HS Married \n", "\n", " Religion Happy Income PolParty \\\n", "0 Inter-nondenominational Pretty happy 30000-34999 Strong Rep \n", "1 Protestant Pretty happy 75000-89999 Not Str Rep \n", "2 Protestant NaN 35000-39999 Strong Rep \n", "3 Protestant NaN 50000-59999 Ind, Near Dem \n", "4 Protestant NaN 40000-49999 Ind \n", "5 Catholic Pretty happy 40000-49999 Ind, Near Rep \n", "6 Protestant NaN NaN Strong Rep \n", "7 Protestant NaN NaN Ind \n", "8 Catholic Not too happy 60000-74999 Strong Rep \n", "9 Catholic NaN under 1000 Ind, Near Rep \n", "10 None NaN 50000-59999 Strong Rep \n", "11 Protestant NaN 110000-129999 Not Str Rep \n", "12 Catholic NaN 90000-109999 Not Str Dem \n", "13 Protestant Pretty happy 10000-124999 Strong Rep \n", "14 Moslem/Islam NaN NaN Ind, Near Rep \n", "15 Orthodox-Christian NaN NaN Ind \n", "16 Christian Not too happy NaN Not Str Rep \n", "17 Protestant Very happy 40000-49999 Strong Rep \n", "18 None Pretty happy 75000-89999 Ind, Near Dem \n", "19 None NaN 25000-29999 Other party \n", "20 Protestant NaN 25000-29999 Ind \n", "21 Catholic Pretty happy 17500-19999 Not Str Dem \n", "22 Moslem/Islam Not too happy 50000-59999 Not Str Dem \n", "23 Protestant NaN 40000-49999 Not Str Dem \n", "24 Protestant NaN 40000-49999 Strong Rep \n", "25 Protestant NaN NaN Other party \n", "26 Catholic Pretty happy NaN Other party \n", "27 None NaN 25000-29999 Ind, Near Dem \n", "28 Catholic NaN 1000-2999 Ind \n", "29 Protestant NaN 10000-124999 Ind \n", "... ... ... ... ... \n", "2735 Protestant Pretty happy NaN Strong Rep \n", "2736 Protestant NaN 25000-29999 Strong Rep \n", "2737 Protestant Pretty happy 60000-74999 Strong Dem \n", "2738 Protestant Pretty happy 25000-29999 Strong Dem \n", "2739 Protestant NaN NaN Strong Rep \n", "2740 Protestant NaN NaN Ind, Near Rep \n", "2741 Protestant Pretty happy 15000-17499 Not Str Rep \n", "2742 Protestant Pretty happy 25000-29999 Ind, Near Rep \n", "2743 Protestant NaN 22500-24999 Strong Dem \n", "2744 Protestant NaN NaN Ind, Near Rep \n", "2745 Protestant Pretty happy NaN Not Str Rep \n", "2746 Catholic Pretty happy NaN Strong Rep \n", "2747 Protestant Very happy 8000-9999 Not Str Rep \n", "2748 Protestant NaN NaN Not Str Dem \n", "2749 Protestant NaN 22500-24999 Not Str Rep \n", "2750 Protestant Not too happy 6000-6999 Ind \n", "2751 Protestant NaN 22500-24999 Strong Rep \n", "2752 Protestant NaN NaN Other party \n", "2753 Catholic Very happy 35000-39999 Not Str Dem \n", "2754 Protestant NaN NaN Strong Rep \n", "2755 Protestant NaN 35000-39999 Not Str Dem \n", "2756 Protestant Very happy 30000-34999 Strong Dem \n", "2757 Protestant NaN 6000-6999 Not Str Rep \n", "2758 None NaN 12500-14999 Ind, Near Dem \n", "2759 None NaN 20000-22499 Not Str Rep \n", "2760 None Pretty happy 22500-24999 Ind, Near Dem \n", "2761 None NaN NaN Ind, Near Dem \n", "2762 Catholic NaN NaN Not Str Rep \n", "2763 Protestant NaN NaN Ind \n", "2764 Protestant Very happy 60000-74999 Not Str Rep \n", "\n", " ... Marijuana DeathPenalty OwnGun GunLaw SpendMilitary \\\n", "0 ... NaN Favor No Favor Too little \n", "1 ... Not legal Favor Yes Oppose About right \n", "2 ... NaN NaN NaN NaN NaN \n", "3 ... NaN NaN NaN NaN About right \n", "4 ... NaN NaN NaN NaN NaN \n", "5 ... NaN Favor Yes Oppose Too little \n", "6 ... NaN NaN NaN NaN NaN \n", "7 ... NaN NaN NaN NaN Too little \n", "8 ... Legal Favor Yes Oppose NaN \n", "9 ... NaN NaN NaN NaN Too much \n", "10 ... NaN NaN NaN NaN NaN \n", "11 ... NaN NaN NaN NaN About right \n", "12 ... NaN NaN NaN NaN Too much \n", "13 ... Not legal Favor No Favor NaN \n", "14 ... NaN NaN NaN NaN About right \n", "15 ... NaN NaN NaN NaN NaN \n", "16 ... NaN Favor No Favor About right \n", "17 ... Legal Favor NaN NaN NaN \n", "18 ... Legal Favor Yes Oppose Too little \n", "19 ... NaN NaN NaN NaN NaN \n", "20 ... NaN NaN NaN NaN NaN \n", "21 ... NaN Oppose No Favor About right \n", "22 ... Legal Favor NaN NaN NaN \n", "23 ... NaN NaN NaN NaN NaN \n", "24 ... NaN NaN NaN NaN NaN \n", "25 ... NaN NaN NaN NaN Too little \n", "26 ... NaN Favor No Favor NaN \n", "27 ... NaN NaN NaN NaN Too much \n", "28 ... NaN NaN NaN NaN NaN \n", "29 ... NaN NaN NaN NaN About right \n", "... ... ... ... ... ... ... \n", "2735 ... Not legal Favor Yes Favor Too little \n", "2736 ... NaN NaN NaN NaN NaN \n", "2737 ... Not legal Oppose NaN NaN NaN \n", "2738 ... Legal NaN No Favor NaN \n", "2739 ... NaN NaN NaN NaN NaN \n", "2740 ... NaN NaN NaN NaN NaN \n", "2741 ... NaN Favor Yes Favor NaN \n", "2742 ... Legal Favor NaN NaN Too little \n", "2743 ... NaN NaN NaN NaN NaN \n", "2744 ... NaN NaN NaN NaN About right \n", "2745 ... NaN Favor No Favor NaN \n", "2746 ... Not legal Oppose NaN NaN Too little \n", "2747 ... NaN Favor Yes Favor NaN \n", "2748 ... NaN NaN NaN NaN Too little \n", "2749 ... NaN NaN NaN NaN NaN \n", "2750 ... Not legal NaN NaN NaN NaN \n", "2751 ... NaN NaN NaN NaN Too little \n", "2752 ... NaN NaN NaN NaN NaN \n", "2753 ... NaN Favor No Favor About right \n", "2754 ... NaN NaN NaN NaN About right \n", "2755 ... NaN NaN NaN NaN NaN \n", "2756 ... Not legal Favor No Favor NaN \n", "2757 ... NaN NaN NaN NaN NaN \n", "2758 ... NaN NaN NaN NaN NaN \n", "2759 ... NaN NaN NaN NaN Too much \n", "2760 ... Legal Favor NaN NaN NaN \n", "2761 ... NaN NaN NaN NaN NaN \n", "2762 ... NaN NaN NaN NaN Too little \n", "2763 ... NaN NaN NaN NaN About right \n", "2764 ... Legal Oppose Yes Favor NaN \n", "\n", " SpendEduc SpendEnv SpendSci Pres00 Postlife \n", "0 Too little About right About right Bush Yes \n", "1 Too little About right About right Bush Yes \n", "2 NaN NaN NaN Bush NaN \n", "3 Too little Too little Too little NaN NaN \n", "4 NaN NaN NaN NaN NaN \n", "5 Too little Too little Too little Bush Yes \n", "6 NaN NaN NaN Bush NaN \n", "7 Too little About right About right Bush NaN \n", "8 NaN NaN NaN Bush Yes \n", "9 Too little Too little Too little NaN NaN \n", "10 NaN NaN NaN NaN NaN \n", "11 About right Too much Too much Bush NaN \n", "12 About right Too little About right NaN NaN \n", "13 NaN NaN NaN Bush Yes \n", "14 Too much Too much Too much NaN NaN \n", "15 NaN NaN NaN NaN NaN \n", "16 Too little Too little About right NaN Yes \n", "17 NaN NaN NaN Bush Yes \n", "18 About right Too much About right NaN NaN \n", "19 NaN NaN NaN Nader NaN \n", "20 NaN NaN NaN NaN NaN \n", "21 Too little Too little About right NaN Yes \n", "22 NaN NaN NaN Gore Yes \n", "23 NaN NaN NaN Gore NaN \n", "24 NaN NaN NaN Bush NaN \n", "25 Too little About right About right Bush NaN \n", "26 NaN NaN NaN Bush Yes \n", "27 Too little Too little Too little NaN NaN \n", "28 NaN NaN NaN NaN NaN \n", "29 NaN About right NaN NaN NaN \n", "... ... ... ... ... ... \n", "2735 Too much Too much Too little Bush Yes \n", "2736 NaN NaN NaN Bush NaN \n", "2737 NaN NaN NaN Gore Yes \n", "2738 Too little Too little About right Gore Yes \n", "2739 NaN NaN NaN Bush NaN \n", "2740 NaN NaN NaN Bush NaN \n", "2741 NaN NaN NaN Bush Yes \n", "2742 Too little Too little Too little Bush Yes \n", "2743 NaN NaN NaN NaN NaN \n", "2744 Too little About right Too little NaN NaN \n", "2745 NaN NaN NaN Bush NaN \n", "2746 Too little Too much Too little Bush Yes \n", "2747 NaN NaN NaN NaN Yes \n", "2748 Too little Too much About right Gore NaN \n", "2749 NaN NaN NaN Bush NaN \n", "2750 NaN NaN NaN Gore Yes \n", "2751 Too little Too little About right NaN NaN \n", "2752 NaN NaN NaN NaN NaN \n", "2753 Too little Too little Too little Bush NaN \n", "2754 About right Too little About right Bush NaN \n", "2755 NaN NaN NaN Bush NaN \n", "2756 NaN NaN NaN Gore Yes \n", "2757 NaN NaN NaN NaN NaN \n", "2758 NaN NaN NaN Gore NaN \n", "2759 About right Too little NaN NaN NaN \n", "2760 NaN NaN NaN NaN Yes \n", "2761 NaN NaN NaN Nader NaN \n", "2762 Too much Too much About right Bush NaN \n", "2763 Too little Too little Too much NaN NaN \n", "2764 NaN NaN NaN Bush Yes \n", "\n", "[2765 rows x 21 columns]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Read the data into a data frame\n", "gss = pd.read_csv('GSS2002.csv')\n", "gss" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Each row corresponds to a single respondent.\n", "\n", "Show the column names:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['ID', 'Region', 'Gender', 'Race', 'Education', 'Marital', 'Religion',\n", " 'Happy', 'Income', 'PolParty', 'Politics', 'Marijuana', 'DeathPenalty',\n", " 'OwnGun', 'GunLaw', 'SpendMilitary', 'SpendEduc', 'SpendEnv',\n", " 'SpendSci', 'Pres00', 'Postlife'],\n", " dtype='object')" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gss.columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We want to work with only two columns from this data frame. These are \"Income\", and \"DeathPenalty\".\n", "\n", "\"Income\" gives the income bracket of the respondent. \"DeathPenalty\" is the answer to a question about whether they \"Favor\" or \"Oppose\" the death penalty.\n", "\n", "First make a list with the names of the columns that we want." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['Income', 'DeathPenalty']" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cols = ['Income', 'DeathPenalty']\n", "cols" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next make a new data frame by indexing the data frame with this list.\n", "\n", "The new data frame has only the columns we selected." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
IncomeDeathPenalty
030000-34999Favor
175000-89999Favor
235000-39999NaN
350000-59999NaN
440000-49999NaN
540000-49999Favor
6NaNNaN
7NaNNaN
860000-74999Favor
9under 1000NaN
1050000-59999NaN
11110000-129999NaN
1290000-109999NaN
1310000-124999Favor
14NaNNaN
15NaNNaN
16NaNFavor
1740000-49999Favor
1875000-89999Favor
1925000-29999NaN
2025000-29999NaN
2117500-19999Oppose
2250000-59999Favor
2340000-49999NaN
2440000-49999NaN
25NaNNaN
26NaNFavor
2725000-29999NaN
281000-2999NaN
2910000-124999NaN
.........
2735NaNFavor
273625000-29999NaN
273760000-74999Oppose
273825000-29999NaN
2739NaNNaN
2740NaNNaN
274115000-17499Favor
274225000-29999Favor
274322500-24999NaN
2744NaNNaN
2745NaNFavor
2746NaNOppose
27478000-9999Favor
2748NaNNaN
274922500-24999NaN
27506000-6999NaN
275122500-24999NaN
2752NaNNaN
275335000-39999Favor
2754NaNNaN
275535000-39999NaN
275630000-34999Favor
27576000-6999NaN
275812500-14999NaN
275920000-22499NaN
276022500-24999Favor
2761NaNNaN
2762NaNNaN
2763NaNNaN
276460000-74999Oppose
\n", "

2765 rows × 2 columns

\n", "
" ], "text/plain": [ " Income DeathPenalty\n", "0 30000-34999 Favor\n", "1 75000-89999 Favor\n", "2 35000-39999 NaN\n", "3 50000-59999 NaN\n", "4 40000-49999 NaN\n", "5 40000-49999 Favor\n", "6 NaN NaN\n", "7 NaN NaN\n", "8 60000-74999 Favor\n", "9 under 1000 NaN\n", "10 50000-59999 NaN\n", "11 110000-129999 NaN\n", "12 90000-109999 NaN\n", "13 10000-124999 Favor\n", "14 NaN NaN\n", "15 NaN NaN\n", "16 NaN Favor\n", "17 40000-49999 Favor\n", "18 75000-89999 Favor\n", "19 25000-29999 NaN\n", "20 25000-29999 NaN\n", "21 17500-19999 Oppose\n", "22 50000-59999 Favor\n", "23 40000-49999 NaN\n", "24 40000-49999 NaN\n", "25 NaN NaN\n", "26 NaN Favor\n", "27 25000-29999 NaN\n", "28 1000-2999 NaN\n", "29 10000-124999 NaN\n", "... ... ...\n", "2735 NaN Favor\n", "2736 25000-29999 NaN\n", "2737 60000-74999 Oppose\n", "2738 25000-29999 NaN\n", "2739 NaN NaN\n", "2740 NaN NaN\n", "2741 15000-17499 Favor\n", "2742 25000-29999 Favor\n", "2743 22500-24999 NaN\n", "2744 NaN NaN\n", "2745 NaN Favor\n", "2746 NaN Oppose\n", "2747 8000-9999 Favor\n", "2748 NaN NaN\n", "2749 22500-24999 NaN\n", "2750 6000-6999 NaN\n", "2751 22500-24999 NaN\n", "2752 NaN NaN\n", "2753 35000-39999 Favor\n", "2754 NaN NaN\n", "2755 35000-39999 NaN\n", "2756 30000-34999 Favor\n", "2757 6000-6999 NaN\n", "2758 12500-14999 NaN\n", "2759 20000-22499 NaN\n", "2760 22500-24999 Favor\n", "2761 NaN NaN\n", "2762 NaN NaN\n", "2763 NaN NaN\n", "2764 60000-74999 Oppose\n", "\n", "[2765 rows x 2 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "money_death = gss[cols]\n", "money_death" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are many missing question responses, indicated by `NaN`. To\n", "make our life easier, we drop the respondents who didn't specify an\n", "income bracket, and those who did not give an answer to the death penalty\n", "question. We use Pandas `dropna` method of the data frame, to drop all rows\n", "that have any missing values in the row." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
IncomeDeathPenalty
030000-34999Favor
175000-89999Favor
540000-49999Favor
860000-74999Favor
1310000-124999Favor
1740000-49999Favor
1875000-89999Favor
2117500-19999Oppose
2250000-59999Favor
3130000-34999Favor
3250000-59999Oppose
3375000-89999Oppose
35under 1000Oppose
367000-7999Oppose
3760000-74999Favor
4230000-34999Favor
4535000-39999Favor
46under 1000Favor
5217500-19999Favor
5535000-39999Favor
581000-2999Favor
6250000-59999Favor
6412500-14999Favor
74110000-129999Oppose
7775000-89999Favor
7835000-39999Favor
8130000-34999Favor
9220000-22499Favor
9360000-74999Favor
9560000-74999Oppose
.........
267175000-89999Favor
26771000-2999Oppose
267815000-17499Favor
2684under 1000Favor
26893000-3999Favor
269022500-24999Oppose
26928000-9999Favor
26963000-3999Oppose
269730000-34999Favor
269925000-29999Favor
27028000-9999Oppose
270610000-124999Oppose
270912500-14999Oppose
271412500-14999Favor
271540000-49999Favor
2716130000-149999Favor
27173000-3999Oppose
272322500-24999Favor
272540000-49999Favor
272615000-17499Oppose
272712500-14999Favor
2729under 1000Favor
273760000-74999Oppose
274115000-17499Favor
274225000-29999Favor
27478000-9999Favor
275335000-39999Favor
275630000-34999Favor
276022500-24999Favor
276460000-74999Oppose
\n", "

904 rows × 2 columns

\n", "
" ], "text/plain": [ " Income DeathPenalty\n", "0 30000-34999 Favor\n", "1 75000-89999 Favor\n", "5 40000-49999 Favor\n", "8 60000-74999 Favor\n", "13 10000-124999 Favor\n", "17 40000-49999 Favor\n", "18 75000-89999 Favor\n", "21 17500-19999 Oppose\n", "22 50000-59999 Favor\n", "31 30000-34999 Favor\n", "32 50000-59999 Oppose\n", "33 75000-89999 Oppose\n", "35 under 1000 Oppose\n", "36 7000-7999 Oppose\n", "37 60000-74999 Favor\n", "42 30000-34999 Favor\n", "45 35000-39999 Favor\n", "46 under 1000 Favor\n", "52 17500-19999 Favor\n", "55 35000-39999 Favor\n", "58 1000-2999 Favor\n", "62 50000-59999 Favor\n", "64 12500-14999 Favor\n", "74 110000-129999 Oppose\n", "77 75000-89999 Favor\n", "78 35000-39999 Favor\n", "81 30000-34999 Favor\n", "92 20000-22499 Favor\n", "93 60000-74999 Favor\n", "95 60000-74999 Oppose\n", "... ... ...\n", "2671 75000-89999 Favor\n", "2677 1000-2999 Oppose\n", "2678 15000-17499 Favor\n", "2684 under 1000 Favor\n", "2689 3000-3999 Favor\n", "2690 22500-24999 Oppose\n", "2692 8000-9999 Favor\n", "2696 3000-3999 Oppose\n", "2697 30000-34999 Favor\n", "2699 25000-29999 Favor\n", "2702 8000-9999 Oppose\n", "2706 10000-124999 Oppose\n", "2709 12500-14999 Oppose\n", "2714 12500-14999 Favor\n", "2715 40000-49999 Favor\n", "2716 130000-149999 Favor\n", "2717 3000-3999 Oppose\n", "2723 22500-24999 Favor\n", "2725 40000-49999 Favor\n", "2726 15000-17499 Oppose\n", "2727 12500-14999 Favor\n", "2729 under 1000 Favor\n", "2737 60000-74999 Oppose\n", "2741 15000-17499 Favor\n", "2742 25000-29999 Favor\n", "2747 8000-9999 Favor\n", "2753 35000-39999 Favor\n", "2756 30000-34999 Favor\n", "2760 22500-24999 Favor\n", "2764 60000-74999 Oppose\n", "\n", "[904 rows x 2 columns]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "money_death = money_death.dropna()\n", "money_death" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Get the income column." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "income = money_death['Income']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Show the unique values:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "40000-49999 88\n", "30000-34999 78\n", "50000-59999 72\n", "25000-29999 60\n", "35000-39999 54\n", "60000-74999 51\n", "20000-22499 44\n", "12500-14999 44\n", "130000-149999 43\n", "22500-24999 40\n", "110000-129999 38\n", "17500-19999 37\n", "15000-17499 36\n", "10000-124999 36\n", "1000-2999 32\n", "8000-9999 32\n", "75000-89999 26\n", "3000-3999 19\n", "under 1000 17\n", "5000-5999 16\n", "4000-4999 13\n", "90000-109999 11\n", "7000-7999 9\n", "6000-6999 8\n", "Name: Income, dtype: int64" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "income.value_counts()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "These are strings. We want to get income as a number. We estimate this by\n", "*recoding* the \"Income\" column. We replace the string, giving the income\n", "bracket, with the average of the minimum and maximum in the range.\n", "\n", "We can do this with a *recoder function*. We have not covered functions yet, so do not worry about the details of this function." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "def recode_income(value):\n", " if value == 'under 1000':\n", " return 500\n", " low_str, high_str = value.split('-')\n", " low, high = int(low_str), int(high_str)\n", " return np.mean([low, high])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here is what the recoder function gives with the lowest income bracket." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "500" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "recode_income('under 1000')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here is the return from a higher bracket:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "99999.5" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "recode_income('90000-109999')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use this function to recode the \"Income\" strings into numbers. Again, we have not covered the `apply` method yet, so don't worry about the details." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 32499.5\n", "1 82499.5\n", "5 44999.5\n", "8 67499.5\n", "13 67499.5\n", "17 44999.5\n", "18 82499.5\n", "21 18749.5\n", "22 54999.5\n", "31 32499.5\n", "32 54999.5\n", "33 82499.5\n", "35 500.0\n", "36 7499.5\n", "37 67499.5\n", "42 32499.5\n", "45 37499.5\n", "46 500.0\n", "52 18749.5\n", "55 37499.5\n", "58 1999.5\n", "62 54999.5\n", "64 13749.5\n", "74 119999.5\n", "77 82499.5\n", "78 37499.5\n", "81 32499.5\n", "92 21249.5\n", "93 67499.5\n", "95 67499.5\n", " ... \n", "2671 82499.5\n", "2677 1999.5\n", "2678 16249.5\n", "2684 500.0\n", "2689 3499.5\n", "2690 23749.5\n", "2692 8999.5\n", "2696 3499.5\n", "2697 32499.5\n", "2699 27499.5\n", "2702 8999.5\n", "2706 67499.5\n", "2709 13749.5\n", "2714 13749.5\n", "2715 44999.5\n", "2716 139999.5\n", "2717 3499.5\n", "2723 23749.5\n", "2725 44999.5\n", "2726 16249.5\n", "2727 13749.5\n", "2729 500.0\n", "2737 67499.5\n", "2741 16249.5\n", "2742 27499.5\n", "2747 8999.5\n", "2753 37499.5\n", "2756 32499.5\n", "2760 23749.5\n", "2764 67499.5\n", "Name: Income, Length: 904, dtype: float64" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "income_ish = income.apply(recode_income)\n", "income_ish" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now get the results of the answer to the death penalty question." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Favor 622\n", "Oppose 282\n", "Name: DeathPenalty, dtype: int64" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "death = money_death['DeathPenalty']\n", "death.value_counts()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will identify the rows for respondents who are in favor of the death penalty. To do this, we make a Boolean vector:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 True\n", "1 True\n", "5 True\n", "8 True\n", "13 True\n", "17 True\n", "18 True\n", "21 False\n", "22 True\n", "31 True\n", "32 False\n", "33 False\n", "35 False\n", "36 False\n", "37 True\n", "42 True\n", "45 True\n", "46 True\n", "52 True\n", "55 True\n", "58 True\n", "62 True\n", "64 True\n", "74 False\n", "77 True\n", "78 True\n", "81 True\n", "92 True\n", "93 True\n", "95 False\n", " ... \n", "2671 True\n", "2677 False\n", "2678 True\n", "2684 True\n", "2689 True\n", "2690 False\n", "2692 True\n", "2696 False\n", "2697 True\n", "2699 True\n", "2702 False\n", "2706 False\n", "2709 False\n", "2714 True\n", "2715 True\n", "2716 True\n", "2717 False\n", "2723 True\n", "2725 True\n", "2726 False\n", "2727 True\n", "2729 True\n", "2737 False\n", "2741 True\n", "2742 True\n", "2747 True\n", "2753 True\n", "2756 True\n", "2760 True\n", "2764 False\n", "Name: DeathPenalty, Length: 904, dtype: bool" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "death == 'Favor'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use this vector to select the income values for the respondents in favor of the death penalty. Show the distribution of values." ] }, { "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": [ "favor_income = income_ish[death == 'Favor']\n", "favor_income.hist();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Likewise select incomes for those opposed. Show the distribution." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZgAAAD1CAYAAABtJuNlAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAEgVJREFUeJzt3X2MZNddp/HniydOGBO6ZwIMg23JDmkFOUhxgh1ixUIhJsQxETYSsmwhNBgjrRY2Ci8S2EQgkBaRAIIEgUhQgpldmWDjxNiyBMgMBnak3Yk3iZP4dWvs2DDD2BOCpwNY2sXLjz/qTLs8nnZXV9fprup5PlKr7j33Vt3fuaeqv33r1q1OVSFJ0rR9zVYXIEnangwYSVIXBowkqQsDRpLUhQEjSepiR68HXl5e9uNpkrTNLSwsZLVlHsFIkrowYCRJXcx0wAwGg60uYcPsw2ywD7PBPsyGzerDTAeMJGl+GTCSpC4MGElSFwaMJKkLA0aS1IUBI0nqwoCRJHXR7atipmXxlqNbXcKKEzecu9UlSNLc8AhGktTFmgGT5PVJHhj5+WqSn0yyO8m9SQbtdtdmFCxJmg9rBkxVPVZVF1fVxcB3AM8BdwI3AQeqagk40OYlSQLW/xbZFcDjVfUUcDWwv7XvB66ZZmGSpPm23oC5DvhEm95TVcfa9NPAnqlVJUmae6ka7/+CJTkb+AfgDVX1TJITVbU4svzZqlo5DzP6D8c28s2dlx7cOfF9p+3+y5/b6hIkacstLS2tTL/cPxxbz8eU3w18tqqeafPPJNlbVceS7AWOj1PMesza12JP0o/BYDBx/2eFfZgN9mE22Ifxrectsut54e0xgLuBfW16H3DXtIqSJM2/sY5gkpwDvBP4TyPNHwBuT3Ij8BRw7fTLmy2TXfS5Ew5O92JRL/iUNA/GCpiq+lfgNae0fYXhp8okSXoJr+SXJHVhwEiSujBgJEldGDCSpC4MGElSFwaMJKkLA0aS1IUBI0nqwoCRJHVhwEiSujBgJEldGDCSpC4MGElSFwaMJKkLA0aS1IUBI0nqwoCRJHVhwEiSujBgJEldGDCSpC7GCpgki0nuSPJokkeSXJZkd5J7kwza7a7exUqS5se4RzAfBv68qr4NeCPwCHATcKCqloADbV6SJGCMgEmyAHwX8HGAqvp/VXUCuBrY31bbD1zTq0hJ0vwZ5wjmQuDLwC1JPpfkY0nOAfZU1bG2ztPAnl5FSpLmT6rq5VdILgH+F/C2qjqU5MPAV4H3VtXiyHrPVtXKeZjl5eWVBx4MBhMXeOnBnRPfd7u6//LntroESWewpaWllemFhYWstt6OMR7rCHCkqg61+TsYnm95JsneqjqWZC9wfJxi1mMjwbSdTbo/JzUYDDZ9m9NmH2aDfZgNm9WHNd8iq6qngb9P8vrWdAXwMHA3sK+17QPu6lKhJGkujXMEA/Be4NYkZwNPADcwDKfbk9wIPAVc26dESdI8GitgquoB4JLTLLpiuuVIkrYLr+SXJHVhwEiSujBgJEldGDCSpC4MGElSFwaMJKkLA0aS1IUBI0nqwoCRJHVhwEiSujBgJEldGDCSpC4MGElSFwaMJKkLA0aS1IUBI0nqwoCRJHVhwEiSujBgJEldGDCSpC52jLNSkieBfwb+P/B8VV2SZDdwG3AB8CRwbVU926dMSdK8Wc8RzHdX1cVVdUmbvwk4UFVLwIE2L0kSsLG3yK4G9rfp/cA1Gy9HkrRdpKrWXin5EvAsUMBHq+r3k5yoqsW2PMCzJ+cBlpeXVx54MBhMXOClB3dOfN/t6v7Ln9vqEiSdwZaWllamFxYWstp6Y52DAS6vqqNJvgm4N8mjowurqpKsmlSjxazHRoJpO5t0f05qMBhs+janzT7MBvswGzarD2O9RVZVR9vtceBO4C3AM0n2ArTb472KlCTNnzUDJsk5SV59chr4XuBB4G5gX1ttH3BXryIlSfNnnLfI9gB3Dk+zsAP4o6r68yT3A7cnuRF4Cri2X5mSpHmzZsBU1RPAG0/T/hXgih5FSZLmn1fyS5K6MGAkSV0YMJKkLsa9DkZ6icVbjm51CQCcuOHcrS5B0ml4BCNJ6sKAkSR1YcBIkrowYCRJXRgwkqQuDBhJUhcGjCSpCwNGktSFASNJ6sKAkSR1YcBIkrowYCRJXRgwkqQuDBhJUhcGjCSpCwNGktTF2AGT5Kwkn0tyT5u/MMmhJIeT3Jbk7H5lSpLmzXqOYN4HPDIy/0Hgt6rqdcCzwI3TLEySNN/GCpgk5wHfB3yszQd4B3BHW2U/cE2PAiVJ82nHmOt9CPhZ4NVt/jXAiap6vs0fAVb9x+iDwWDiAvVSW7E/T7/NnZtex+mMuz+2w/PQPsyGM70PS0tLY623ZsAkeQ9wvKo+k+TtPYs51XYYxB4m3Z+TGgwGp9/mwaObWsdqxtkfq/ZhjtiH2WAfxjfOEczbgO9PchXwKuDrgQ8Di0l2tKOY84DZ+G0jSZoJa56Dqaqbq+q8qroAuA74q6r6IeA+4AfbavuAu7pVKUmaOxu5DubngJ9OcpjhOZmPT6ckSdJ2MO5JfgCq6q+Bv27TTwBvmX5JkqTtwCv5JUldGDCSpC4MGElSF+s6B6PZsHjLZn8ifOfMXPMiaX54BCNJ6sKAkSR1YcBIkrowYCRJXRgwkqQuDBhJUhcGjCSpCwNGktSFASNJ6sKAkSR1YcBIkrowYCRJXRgwkqQuDBhJUhcGjCSpizUDJsmrknw6yeeTPJTkl1v7hUkOJTmc5LYkZ/cvV5I0L8Y5gvm/wDuq6o3AxcCVSd4KfBD4rap6HfAscGO/MiVJ82bNgKmhf2mzr2g/BbwDuKO17weu6VKhJGkujXUOJslZSR4AjgP3Ao8DJ6rq+bbKEeDcPiVKkuZRqmr8lZNF4E7gF4A/bG+PkeR84M+q6ttPrru8vLzywIPBYOICLz24c+L76sxw/+XPbXUJ0hllaWlpZXphYSGrrbdjPQ9aVSeS3AdcBiwm2dGOYs4Djo5TzHpsJJh05hjn+TUYDCZ+Hs4K+zAb7MP4xvkU2Te2IxeSfC3wTuAR4D7gB9tq+4C7ehUpSZo/4xzB7AX2JzmLYSDdXlX3JHkY+OMk/xX4HPDxjnVKkubMmgFTVV8A3nSa9ieAt/QoSpI0/7ySX5LUhQEjSerCgJEkdWHASJK6MGAkSV0YMJKkLgwYSVIX6/qqGGkWLd6y6rcUjdgJB8dZb3InbvD7XqVRHsFIkrowYCRJXRgwkqQuDBhJUhcGjCSpCwNGktSFASNJ6sKAkSR1YcBIkrowYCRJXRgwkqQuDBhJUhdrBkyS85Pcl+ThJA8leV9r353k3iSDdrurf7mSpHkxzhHM88DPVNVFwFuBn0hyEXATcKCqloADbV6SJGCMgKmqY1X12Tb9z8AjwLnA1cD+ttp+4JpeRUqS5s+6zsEkuQB4E3AI2FNVx9qip4E9U61MkjTXUlXjrZh8HfA3wK9U1aeSnKiqxZHlz1bVynmY5eXllQceDAYTF3jpwZ0T31faTPdf/txWlyBtiqWlpZXphYWFrLbeWP/RMskrgE8Ct1bVp1rzM0n2VtWxJHuB4+MUsx4bCSZps036PB/XYDDovo3e7MNs2Kw+jPMpsgAfBx6pqt8cWXQ3sK9N7wPumn55kqR5Nc4RzNuAHwa+mOSB1vbzwAeA25PcCDwFXNunREnSPFozYKrqILDae2xXTLccSdJ24ZX8kqQuDBhJUhcGjCSpCwNGktSFASNJ6sKAkSR1YcBIkrowYCRJXRgwkqQuDBhJUhcGjCSpCwNGktSFASNJ6sKAkSR1YcBIkroY618mS5I2bvGWo1tdAgD3X7452/EIRpLUhQEjSerCgJEkdWHASJK6WDNgkvxBkuNJHhxp253k3iSDdrurb5mSpHkzzhHMHwJXntJ2E3CgqpaAA21ekqQVawZMVf0t8E+nNF8N7G/T+4FrplyXJGnOTXoOZk9VHWvTTwN7plSPJGmb2PCFllVVSerl1hkMBhvdjDTzNuN5vh1eS2d2H3ZOtY6N2Mg4LC0tjbXepAHzTJK9VXUsyV7g+DSKOdV2eCLqzDHp83xcg8Gg+zZ6O+P7cHA2ruSH/s9XmDxg7gb2AR9ot3dNrSJJmrLpfkXLzpkKilk2zseUPwH8T+D1SY4kuZFhsLwzyQD4njYvSdKKNY9gqur6VRZdMeVaJEnbiFfyS5K6MGAkSV0YMJKkLgwYSVIXBowkqQsDRpLUxYa/KkbSUP//tz7eBX4nbji3cx3SeDyCkSR1YcBIkrowYCRJXRgwkqQuDBhJUhcGjCSpCwNGktSFASNJ6sILLSV189KLT/1vkGcSj2AkSV0YMJKkLgwYSVIXBowkqYsNBUySK5M8luRwkpumVZQkaf5NHDBJzgJ+F3g3cBFwfZKLplWYJGm+paomu2NyGfBLVfWuNn8zQFX9KsDy8vJkDyxJmhsLCwtZbdlG3iI7F/j7kfkjrU2SJE/yS5L62MiV/EeB80fmz2ttwMsfNkmStr+NHMHcDywluTDJ2cB1wN3TKUuSNO8mDpiqeh74L8BfAI8At1fVQ9MqbJY+Ap3k/CT3JXk4yUNJ3tfadye5N8mg3e5q7Uny2632LyR588hj7WvrD5LsG2n/jiRfbPf57SRdjgCTnJXkc0nuafMXJjnUtntb+2OBJK9s84fb8gtGHuPm1v5YkneNtHcfsySLSe5I8miSR5JcNm/jkOSn2vPowSSfSPKqWR+HJH+Q5HiSB0fauu/31bYxxT78ensufSHJnUkWR5ata/9OMobT6MPIsp9JUkm+oc1v/ThU1cz9AGcBjwOvBc4GPg9ctIX17AXe3KZfDfwfhh/N/jXgptZ+E/DBNn0V8GdAgLcCh1r7buCJdrurTe9qyz7d1k2777s79eWngT8C7mnztwPXtemPAP+5Tf848JE2fR1wW5u+qI3HK4EL2zidtVljBuwHfqxNnw0sztM4MPwgzJeArx3Z/z8y6+MAfBfwZuDBkbbu+321bUyxD98L7GjTHxzpw7r373rHcFp9aO3nM/xj/yngG2ZlHKb+C2xKL8LLgL8Ymb8ZuHmr6xqp5y7gncBjwN7Wthd4rE1/FLh+ZP3H2vLrgY+OtH+0te0FHh1pf9F6U6z7POAA8A7gnvYk+seRF9jKfm9P1sva9I62Xk4di5PrbcaYAQsMfznnlPa5GQde+PTl7rZf7wHeNQ/jAFzAi385d9/vq21jWn04ZdkPALeebr+ttX8neS1Nsw/AHcAbgSd5IWC2fBxm9VNkM/sR6HZ4+ybgELCnqo61RU8De9r0avW/XPuR07RP24eAnwX+vc2/BjhRw7c7T93uSq1t+XJbf719m6YLgS8Dt2T4Nt/HkpzDHI1DVR0FfgP4O+AYw/36GeZrHE7ajP2+2jZ6+FGGf7XD+vswyWtpKpJcDRytqs+fsmjLx2FWA2YmJfk64JPAT1bVV0eX1TDaZ/bi0iTvAY5X1We2upYN2MHw7YHfq6o3Af/K8HB9xRyMwy7gaoZh+S3AOcCVW1rUFGzGfu+5jSTvB54Hbu3x+L0k2Qn8PPCLm7XN9YzDrAbMy34EeiskeQXDcLm1qj7Vmp9Jsrct3wscb+2r1f9y7eedpn2a3gZ8f5IngT9m+DbZh4HFJCc/rj663ZVa2/IF4Ctr9KH3mB0BjlTVoTZ/B8PAmadx+B7gS1X15ar6N+BTDMdmnsbhpM3Y76ttY2qS/AjwHuCH2i9P1qj1dO1fYf1jOA3fyvCPlc+31/Z5wGeTfPMEfZj+OEzjvdlp/zD8S/WJtuNOnkh7wxbWE+C/AR86pf3XefGJr19r09/Hi0+ufbq172Z4DmFX+/kSsLstO/Xk2lUd+/N2XjjJ/ye8+MTkj7fpn+DFJyZvb9Nv4MUnP59geOJzU8YM+B/A69v0L7UxmJtxAL4TeAjY2baxH3jvPIwDLz0H032/r7aNKfbhSuBh4BtPWW/d+3e9YzitPpyy7EleOAez5ePQ5RfYlJ7MVzH8tNbjwPu3uJbLGR4SfgF4oP1cxfB91APAAPjLkUEKwy8CfRz4InDJyGP9KHC4/dww0n4J8GC7z++wgZOAY/Tn7bwQMK9tT6rD7QXyytb+qjZ/uC1/7cj939/qfIyRT1ltxpgBFwP/u43Fn7YXyFyNA/DLwKNtO/+d4S+xmR4H4BMMzxn9G8MjyRs3Y7+vto0p9uEww/MRJ1/XH5l0/04yhtPowynLn+SFgNnycZj4yy4lSXo5s3oORpI05wwYSVIXBowkqQsDRpLUhQEjSerCgJEkdWHASJK6MGAkSV38B6s838pXg9e1AAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "oppose_income = income_ish[death == 'Oppose']\n", "oppose_income.hist();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Calculate the difference in mean income between the groups. This is the difference we observe." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4535.163012246019" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "actual_diff = np.mean(favor_income) - np.mean(oppose_income)\n", "actual_diff" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We want to know whether this difference in income is compatible with random sampling. That is, we want to know whether a difference this large is plausible, if the incomes are in fact random samples from the same population.\n", "\n", "To estimate how variable the mean differences can be, for such random sampling,\n", "we simulate this sampling by pooling the income values that we have, from the\n", "two groups, and the permuting them.\n", "\n", "First, we get the number of respondents in favor of the death penalty." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "622" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n_favor = len(favor_income)\n", "n_favor" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then we pool the in-favor and oppose groups." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "pooled = np.append(favor_income, oppose_income)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To do the random sampling we permute the values, so the `pooled` vector is\n", "a random mixture of the two groups." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "np.random.shuffle(pooled)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Treat the first `n_favor` observations from this shuffled vector as\n", "our simulated in-favor group. The rest are our simulated oppose\n", "group." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "fake_favor = pooled[:n_favor]\n", "fake_oppose = pooled[n_favor:]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Calculate the difference in means for this simulation." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3143.6351793573704" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fake_diff = np.mean(fake_favor) - np.mean(fake_oppose)\n", "fake_diff" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now it is your turn. Do this simulation 10000 times, to build up the distribution of differences compatible with random sampling.\n", "\n", "Use the [Brexit ages](../05/brexit_ages) notebook for inspiration." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "differences = np.zeros(10000)\n", "for i in np.arange(10000):\n", " # Permute the pooled incomes\n", " np.random.shuffle(pooled)\n", " # Make a fake favor sample\n", "\n", " # Make a fake opposed sample\n", "\n", " # Calculate the mean difference for the fake samples\n", "\n", " # Put the mean difference into the differences array.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When you have that working, do a histogram of the differences." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "# Your code here" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can get an idea of where the actual difference we saw sits on this histogram, and therefore how likely that difference is, assuming the incomes come from the same underlying population of incomes.\n", "\n", "To be more specific, count how many of the differences you calculated were greater than or equal to the actual difference." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "# Your code here" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now calculate the proportion of these differences, to give an estimate of the probability of seeing a difference this large, if the incomes all come from the same underlying population:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "# Your code here" ] } ], "metadata": { "jupytext": { "text_representation": { "extension": ".Rmd", "format_name": "rmarkdown", "format_version": "1.1", "jupytext_version": "0.8.7" } }, "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" } }, "nbformat": 4, "nbformat_minor": 2 }