Skip to content

Instantly share code, notes, and snippets.

@mattharrison
Last active January 6, 2023 14:35
Show Gist options
  • Save mattharrison/1c74a1da8c54f1bf4a58869fba8d7b0c to your computer and use it in GitHub Desktop.
Save mattharrison/1c74a1da8c54f1bf4a58869fba8d7b0c to your computer and use it in GitHub Desktop.
Big Mountain Utah Pandas Talk
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"# Idiomatic Pandas\n",
"## 5 Tips for Better Pandas Code"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"## About Matt Harrison @\\_\\_mharrison\\_\\_\n",
"\n",
"* Author of Effective Pandas, Machine Learning Pocket Reference, and Illustrated Guide to Python 3.\n",
"* Advisor at Ponder (creators of Modin)\n",
"* Corporate trainer at MetaSnake. Taught Pandas to 1000's of students.\n",
"* Upcoming Live Course https://maven.com/matt-harrison/data-analysis-using-pandas"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"## Practice this on your data with your team!\n",
"* https://maven.com/matt-harrison/data-analysis-using-pandas\n",
"* Contact me [email protected]\n",
"* Follow on Twitter @\\_\\_mharrison\\_\\_"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"## Outline\n",
"\n",
"* Load Data\n",
"* Types\n",
"* Chaining\n",
"* Mutation\n",
"* Apply\n",
"* Aggregation"
]
},
{
"cell_type": "markdown",
"metadata": {
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"## Data"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"from IPython.display import display\n",
"import numpy as np\n",
"import pandas as pd\n",
"\n",
"import io\n",
"import zipfile\n",
"#import modin.pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# https://gss.norc.org/get-the-data/stata\n",
"# takes a few minutes on my computer to load\n",
"#url ='https://github.com/mattharrison/datasets/blob/master/data/kaggle-survey-2018.zip?raw=true'\n",
"path = '/mnt/c/Users/matt/Downloads/GSS_stata.zip'\n",
"with zipfile.ZipFile(path) as z:\n",
" print(z.namelist())\n",
" gss = pd.read_stata(z.open('gss7221_r3.dta'))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"# https://gss.norc.org/get-the-data/stata\n",
"# takes a few minutes on my computer to load\n",
"#url ='https://github.com/mattharrison/datasets/blob/master/data/kaggle-survey-2018.zip?raw=true'\n",
"path = '/mnt/c/Users/matt/Downloads/gss_spss_with_codebook.zip'\n",
"with zipfile.ZipFile(path) as z:\n",
" print(z.namelist())\n",
" with open('gss.sav', mode='bw') as fout:\n",
" fout.write(z.open('GSS7218_R3.sav').read())\n",
" gss = pd.read_spss('gss.sav')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!pip install pyreadstat"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"%%time\n",
"import pyreadstat\n",
"gss, meta = pyreadstat.read_sav('gss.sav')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"gss.shape"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"gss.to_feather('gss.fth')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 4.29 s, sys: 9.76 s, total: 14 s\n",
"Wall time: 2.09 s\n"
]
}
],
"source": [
"%%time\n",
"raw = pd.read_feather('gss.fth')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>YEAR</th>\n",
" <th>ID</th>\n",
" <th>WRKSTAT</th>\n",
" <th>HRS1</th>\n",
" <th>HRS2</th>\n",
" <th>EVWORK</th>\n",
" <th>OCC</th>\n",
" <th>PRESTIGE</th>\n",
" <th>WRKSLF</th>\n",
" <th>WRKGOVT</th>\n",
" <th>...</th>\n",
" <th>NEISAFE</th>\n",
" <th>RLOOKS</th>\n",
" <th>RGROOMED</th>\n",
" <th>RWEIGHT</th>\n",
" <th>RHLTHEND</th>\n",
" <th>WTSS</th>\n",
" <th>WTSSNR</th>\n",
" <th>WTSSALL</th>\n",
" <th>VSTRAT</th>\n",
" <th>VPSU</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1972.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>205.0</td>\n",
" <td>50.0</td>\n",
" <td>2.0</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" <td>0.444600</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1972.0</td>\n",
" <td>2.0</td>\n",
" <td>5.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>1.0</td>\n",
" <td>441.0</td>\n",
" <td>45.0</td>\n",
" <td>2.0</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" <td>0.889300</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1972.0</td>\n",
" <td>3.0</td>\n",
" <td>2.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>270.0</td>\n",
" <td>44.0</td>\n",
" <td>2.0</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" <td>0.889300</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1972.0</td>\n",
" <td>4.0</td>\n",
" <td>1.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>1.0</td>\n",
" <td>57.0</td>\n",
" <td>2.0</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" <td>0.889300</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1972.0</td>\n",
" <td>5.0</td>\n",
" <td>7.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>1.0</td>\n",
" <td>385.0</td>\n",
" <td>40.0</td>\n",
" <td>2.0</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" <td>0.889300</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64809</th>\n",
" <td>2018.0</td>\n",
" <td>2344.0</td>\n",
" <td>1.0</td>\n",
" <td>36.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2.0</td>\n",
" <td>1.0</td>\n",
" <td>...</td>\n",
" <td>1.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.471499</td>\n",
" <td>0.482425</td>\n",
" <td>0.471499</td>\n",
" <td>3378.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64810</th>\n",
" <td>2018.0</td>\n",
" <td>2345.0</td>\n",
" <td>2.0</td>\n",
" <td>36.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2.0</td>\n",
" <td>2.0</td>\n",
" <td>...</td>\n",
" <td>1.0</td>\n",
" <td>3.0</td>\n",
" <td>3.0</td>\n",
" <td>2.0</td>\n",
" <td>1.0</td>\n",
" <td>0.942997</td>\n",
" <td>0.964850</td>\n",
" <td>0.942997</td>\n",
" <td>3378.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64811</th>\n",
" <td>2018.0</td>\n",
" <td>2346.0</td>\n",
" <td>5.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>1.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2.0</td>\n",
" <td>2.0</td>\n",
" <td>...</td>\n",
" <td>1.0</td>\n",
" <td>4.0</td>\n",
" <td>4.0</td>\n",
" <td>3.0</td>\n",
" <td>NaN</td>\n",
" <td>0.942997</td>\n",
" <td>0.964850</td>\n",
" <td>0.942997</td>\n",
" <td>3378.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64812</th>\n",
" <td>2018.0</td>\n",
" <td>2347.0</td>\n",
" <td>5.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>1.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2.0</td>\n",
" <td>2.0</td>\n",
" <td>...</td>\n",
" <td>1.0</td>\n",
" <td>3.0</td>\n",
" <td>3.0</td>\n",
" <td>2.0</td>\n",
" <td>2.0</td>\n",
" <td>0.942997</td>\n",
" <td>0.964850</td>\n",
" <td>0.942997</td>\n",
" <td>3378.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64813</th>\n",
" <td>2018.0</td>\n",
" <td>2348.0</td>\n",
" <td>7.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>1.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2.0</td>\n",
" <td>1.0</td>\n",
" <td>...</td>\n",
" <td>1.0</td>\n",
" <td>3.0</td>\n",
" <td>4.0</td>\n",
" <td>3.0</td>\n",
" <td>NaN</td>\n",
" <td>0.471499</td>\n",
" <td>0.482425</td>\n",
" <td>0.471499</td>\n",
" <td>3378.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>64814 rows × 6110 columns</p>\n",
"</div>"
],
"text/plain": [
" YEAR ID WRKSTAT HRS1 HRS2 EVWORK OCC PRESTIGE WRKSLF \\\n",
"0 1972.0 1.0 1.0 NaN NaN NaN 205.0 50.0 2.0 \n",
"1 1972.0 2.0 5.0 NaN NaN 1.0 441.0 45.0 2.0 \n",
"2 1972.0 3.0 2.0 NaN NaN NaN 270.0 44.0 2.0 \n",
"3 1972.0 4.0 1.0 NaN NaN NaN 1.0 57.0 2.0 \n",
"4 1972.0 5.0 7.0 NaN NaN 1.0 385.0 40.0 2.0 \n",
"... ... ... ... ... ... ... ... ... ... \n",
"64809 2018.0 2344.0 1.0 36.0 NaN NaN NaN NaN 2.0 \n",
"64810 2018.0 2345.0 2.0 36.0 NaN NaN NaN NaN 2.0 \n",
"64811 2018.0 2346.0 5.0 NaN NaN 1.0 NaN NaN 2.0 \n",
"64812 2018.0 2347.0 5.0 NaN NaN 1.0 NaN NaN 2.0 \n",
"64813 2018.0 2348.0 7.0 NaN NaN 1.0 NaN NaN 2.0 \n",
"\n",
" WRKGOVT ... NEISAFE RLOOKS RGROOMED RWEIGHT RHLTHEND WTSS \\\n",
"0 NaN ... NaN NaN NaN NaN NaN 1.000000 \n",
"1 NaN ... NaN NaN NaN NaN NaN 1.000000 \n",
"2 NaN ... NaN NaN NaN NaN NaN 1.000000 \n",
"3 NaN ... NaN NaN NaN NaN NaN 1.000000 \n",
"4 NaN ... NaN NaN NaN NaN NaN 1.000000 \n",
"... ... ... ... ... ... ... ... ... \n",
"64809 1.0 ... 1.0 NaN NaN NaN NaN 0.471499 \n",
"64810 2.0 ... 1.0 3.0 3.0 2.0 1.0 0.942997 \n",
"64811 2.0 ... 1.0 4.0 4.0 3.0 NaN 0.942997 \n",
"64812 2.0 ... 1.0 3.0 3.0 2.0 2.0 0.942997 \n",
"64813 1.0 ... 1.0 3.0 4.0 3.0 NaN 0.471499 \n",
"\n",
" WTSSNR WTSSALL VSTRAT VPSU \n",
"0 1.000000 0.444600 NaN NaN \n",
"1 1.000000 0.889300 NaN NaN \n",
"2 1.000000 0.889300 NaN NaN \n",
"3 1.000000 0.889300 NaN NaN \n",
"4 1.000000 0.889300 NaN NaN \n",
"... ... ... ... ... \n",
"64809 0.482425 0.471499 3378.0 2.0 \n",
"64810 0.964850 0.942997 3378.0 2.0 \n",
"64811 0.964850 0.942997 3378.0 2.0 \n",
"64812 0.964850 0.942997 3378.0 2.0 \n",
"64813 0.482425 0.471499 3378.0 2.0 \n",
"\n",
"[64814 rows x 6110 columns]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"raw"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(64814, 6110)"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"raw.shape"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"## My Cleanup\n",
"See GSS_Codebook.pdf for explanation\n",
"\n",
"Columns:\n",
"\n",
"* YEAR\n",
"* ID - RESPONDENT ID NUMBER\n",
"* AGE - AGE OF RESPONENT\n",
"* HRS1 - NUMBER OF HOURS WORKED LAST WEEK\n",
"* OCC - R'S CENSUS OCCUPATION CODE (1970) - Page 126 (VAR: OCC) see page 125 for notes APPENDIX F,G,H\n",
" Appendix F - Page 3286\n",
"* MAJOR1 - COLLEGE MAJOR 1\n",
"* SEX - RESPONDENTS SEX\n",
"* RACE - RACE OF RESPONDENT\n",
"* BORN - WAS R BORN IN THIS COUNTRY\n",
"* INCOME TOTAL FAMILY INCOME\n",
"* INCOME06 TOTAL FAMILY INCOME\n",
"* HONEST - HONEST\n",
"* TICKET - EVER RECEIVED A TRAFFIC TICKET\n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
"YEAR 0.000000\n",
"ID 0.000000\n",
"AGE 0.351776\n",
"HRS1 42.132873\n",
"OCC 62.426328\n",
"MAJOR1 94.410158\n",
"SEX 0.000000\n",
"RACE 0.000000\n",
"BORN 14.291665\n",
"INCOME 12.845990\n",
"INCOME06 82.219891\n",
"HONEST 87.565958\n",
"TICKET 80.650785\n",
"dtype: float64"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cols = ['YEAR','ID','AGE', 'HRS1','OCC','MAJOR1','SEX','RACE','BORN','INCOME',\n",
" 'INCOME06','HONEST','TICKET']\n",
"\n",
"raw[cols].isna().mean()*100"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"41"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"False + 41"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"{1: 'Accounting/bookkeeping',\n",
" 2: 'Advertising',\n",
" 3: 'Agriculture/horticulture',\n",
" 4: 'Allied health',\n",
" 5: 'Anthropology',\n",
" 6: 'Architecture',\n",
" 7: 'Art',\n",
" 8: 'Biology',\n",
" 9: 'Business administration',\n",
" 11: 'Chemistry',\n",
" 12: 'Communications/speech',\n",
" 13: 'Comm. disorders',\n",
" 14: 'Computer science',\n",
" 15: 'Dentistry',\n",
" 16: 'Education',\n",
" 17: 'Economics',\n",
" 18: 'Engineering',\n",
" 19: 'English',\n",
" 20: 'Finance',\n",
" 21: 'Foreign language',\n",
" 22: 'Forestry',\n",
" 23: 'Geography',\n",
" 24: 'Geology',\n",
" 25: 'History',\n",
" 26: 'Home economics',\n",
" 27: 'Industry & techn',\n",
" 28: 'Journalism',\n",
" 29: 'Law',\n",
" 30: 'Law enforcement',\n",
" 31: 'Library science',\n",
" 32: 'Marketing',\n",
" 33: 'Mathematics',\n",
" 34: 'Medicine',\n",
" 35: 'Music',\n",
" 36: 'Nursing',\n",
" 37: 'Optometry',\n",
" 38: 'Pharmacy',\n",
" 39: 'Philosophy',\n",
" 40: 'Physical education',\n",
" 41: 'Physics',\n",
" 42: 'Psychology',\n",
" 43: 'Political science/international relations',\n",
" 44: 'Sociology',\n",
" 45: 'Special education',\n",
" 46: 'Theater arts',\n",
" 47: 'Theology',\n",
" 48: 'Veterinary medicine',\n",
" 49: 'Liberal arts',\n",
" 50: 'Other',\n",
" 51: 'General sciences',\n",
" 52: 'Social work',\n",
" 53: 'General studies',\n",
" 54: 'Other vocational',\n",
" 55: 'Health',\n",
" 56: 'Industrial Relations',\n",
" 57: 'Child/Human/Family Development',\n",
" 58: 'Food Science/Nutrition/Culinary Arts',\n",
" 59: 'Environmental Science/Ecology',\n",
" 60: 'Social Sciences',\n",
" 61: 'Human Services/Human Resources',\n",
" 62: 'Visual Arts/Graphic Design/Design and Drafting',\n",
" 63: 'Fine Arts',\n",
" 64: 'Humanities',\n",
" 65: 'Ethnic studies',\n",
" 66: 'Educational administration',\n",
" 67: 'Television/Film',\n",
" 68: 'Aviation/Aeronatics',\n",
" 69: 'Statistics/Biostatistics',\n",
" 70: 'Criminology/Criminal Justice',\n",
" 71: 'Administrative Science/Public Administration',\n",
" 72: 'Electronics',\n",
" 73: 'Urban and Regional Planning',\n",
" 74: 'Mechanics/Machine Trade',\n",
" 75: 'Dance',\n",
" 76: 'Gerontology',\n",
" 77: 'Public Relations',\n",
" 78: 'Textiles/Cloth',\n",
" 79: 'Parks and Recreation',\n",
" 80: 'Information Technology',\n",
" 81: 'Fashion',\n",
" 82: 'Counseling',\n",
" 98: \"Don't know/UNCODED\",\n",
" 99: 'No answer',\n",
" 0: 'Not applicable'}"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"MAJOR= '''RESPONSE PUNCH 1972-82 1982B 1983-87 1987B 1988-91 1993-98 2000-04 2006 2008 2010 2012 2014 2016 2018 ALL\n",
"Accounting/bookkeeping 1 0 0 0 0 0 0 0 0 0 0 28 32 30 29 119\n",
"Advertising 2 0 0 0 0 0 0 0 0 0 0 3 2 0 0 5\n",
"Agriculture/horticulture 3 0 0 0 0 0 0 0 0 0 0 8 2 7 5 22\n",
"Allied health 4 0 0 0 0 0 0 0 0 0 0 0 2 1 0 3\n",
"Anthropology 5 0 0 0 0 0 0 0 0 0 0 3 5 1 1 10\n",
"Architecture 6 0 0 0 0 0 0 0 0 0 0 2 3 5 3 13\n",
"Art 7 0 0 0 0 0 0 0 0 0 0 6 7 11 10 34\n",
"Biology 8 0 0 0 0 0 0 0 0 0 0 16 22 33 26 97\n",
"Business administration 9 0 0 0 0 0 0 0 0 0 0 90 142 172 138 542\n",
"Chemistry 11 0 0 0 0 0 0 0 0 0 0 5 8 10 4 27\n",
"Communications/speech 12 0 0 0 0 0 0 0 0 0 0 20 18 26 18 82\n",
"Comm. disorders 13 0 0 0 0 0 0 0 0 0 0 4 6 2 2 14\n",
"Computer science 14 0 0 0 0 0 0 0 0 0 0 25 24 33 17 99\n",
"Dentistry 15 0 0 0 0 0 0 0 0 0 0 2 4 3 5 14\n",
"Education 16 0 0 0 0 0 0 0 0 0 0 73 91 97 79 340\n",
"Economics 17 0 0 0 0 0 0 0 0 0 0 11 19 13 19 62\n",
"Engineering 18 0 0 0 0 0 0 0 0 0 0 47 49 47 54 197\n",
"English 19 0 0 0 0 0 0 0 0 0 0 23 26 27 24 100\n",
"Finance 20 0 0 0 0 0 0 0 0 0 0 7 15 14 16 52\n",
"Foreign language 21 0 0 0 0 0 0 0 0 0 0 4 8 6 5 23\n",
"Forestry 22 0 0 0 0 0 0 0 0 0 0 1 0 3 0 4\n",
"Geography 23 0 0 0 0 0 0 0 0 0 0 0 2 2 4 8\n",
"Geology 24 0 0 0 0 0 0 0 0 0 0 1 3 4 2 10\n",
"History 25 0 0 0 0 0 0 0 0 0 0 10 19 14 19 62\n",
"Home economics 26 0 0 0 0 0 0 0 0 0 0 0 0 3 2 5\n",
"Industry & techn 27 0 0 0 0 0 0 0 0 0 0 3 4 6 0 13\n",
"Journalism 28 0 0 0 0 0 0 0 0 0 0 5 6 6 4 21\n",
"Law 29 0 0 0 0 0 0 0 0 0 0 13 18 23 14 68\n",
"Law enforcement 30 0 0 0 0 0 0 0 0 0 0 3 5 4 2 14\n",
"Library science 31 0 0 0 0 0 0 0 0 0 0 4 5 2 3 14\n",
"Marketing 32 0 0 0 0 0 0 0 0 0 0 11 15 13 12 51\n",
"Mathematics 33 0 0 0 0 0 0 0 0 0 0 5 10 12 5 32\n",
"Medicine 34 0 0 0 0 0 0 0 0 0 0 9 25 12 11 57\n",
"Music 35 0 0 0 0 0 0 0 0 0 0 4 2 10 2 18\n",
"Nursing 36 0 0 0 0 0 0 0 0 0 0 36 39 60 51 186\n",
"Optometry 37 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
"Pharmacy 38 0 0 0 0 0 0 0 0 0 0 2 5 4 4 15\n",
"Philosophy 39 0 0 0 0 0 0 0 0 0 0 2 0 2 2 6\n",
"Physical education 40 0 0 0 0 0 0 0 0 0 0 9 6 16 6 37\n",
"Physics 41 0 0 0 0 0 0 0 0 0 0 3 6 7 4 20\n",
"Psychology 42 0 0 0 0 0 0 0 0 0 0 32 32 34 29 127\n",
"Political science/international relations 43 0 0 0 0 0 0 0 0 0 0 16 22 19 14 71\n",
"Sociology 44 0 0 0 0 0 0 0 0 0 0 9 15 10 12 46\n",
"Special education 45 0 0 0 0 0 0 0 0 0 0 5 3 5 2 15\n",
"Theater arts 46 0 0 0 0 0 0 0 0 0 0 6 2 3 1 12\n",
"Theology 47 0 0 0 0 0 0 0 0 0 0 6 6 13 8 33\n",
"Veterinary medicine 48 0 0 0 0 0 0 0 0 0 0 1 5 3 4 13\n",
"Liberal arts 49 0 0 0 0 0 0 0 0 0 0 8 16 12 10 46\n",
"Other 50 0 0 0 0 0 0 0 0 0 0 8 10 21 27 66\n",
"General sciences 51 0 0 0 0 0 0 0 0 0 0 10 13 15 14 52\n",
"Social work 52 0 0 0 0 0 0 0 0 0 0 7 17 24 7 55\n",
"General studies 53 0 0 0 0 0 0 0 0 0 0 2 5 7 7 21\n",
"Other vocational 54 0 0 0 0 0 0 0 0 0 0 5 11 6 5 27\n",
"Health 55 0 0 0 0 0 0 0 0 0 0 23 31 31 42 127\n",
"Industrial Relations 56 0 0 0 0 0 0 0 0 0 0 1 0 0 3 4\n",
"Child/Human/Family Development 57 0 0 0 0 0 0 0 0 0 0 11 3 7 7 28\n",
"Food Science/Nutrition/Culinary Arts 58 0 0 0 0 0 0 0 0 0 0 3 6 9 9 27\n",
"Environmental Science/Ecology 59 0 0 0 0 0 0 0 0 0 0 5 5 6 8 24\n",
"Social Sciences 60 0 0 0 0 0 0 0 0 0 0 4 2 7 5 18\n",
"Human Services/Human Resources 61 0 0 0 0 0 0 0 0 0 0 3 7 7 5 22\n",
"Visual Arts/Graphic Design/Design and Drafting 62 0 0 0 0 0 0 0 0 0 0 3 8 9 10 30\n",
"Fine Arts 63 0 0 0 0 0 0 0 0 0 0 4 5 5 6 20\n",
"Humanities 64 0 0 0 0 0 0 0 0 0 0 0 2 0 1 3\n",
"Ethnic studies 65 0 0 0 0 0 0 0 0 0 0 3 1 0 0 4\n",
"Educational administration 66 0 0 0 0 0 0 0 0 0 0 3 4 8 9 24\n",
"Television/Film 67 0 0 0 0 0 0 0 0 0 0 0 2 6 1 9\n",
"Aviation/Aeronatics 68 0 0 0 0 0 0 0 0 0 0 2 1 1 3 7\n",
"Statistics/Biostatistics 69 0 0 0 0 0 0 0 0 0 0 0 0 2 2 4\n",
"Criminology/Criminal Justice 70 0 0 0 0 0 0 0 0 0 0 13 17 17 13 60\n",
"Administrative Science/Public Administration 71 0 0 0 0 0 0 0 0 0 0 2 11 3 5 21\n",
"Electronics 72 0 0 0 0 0 0 0 0 0 0 6 6 5 9 26\n",
"Urban and Regional Planning 73 0 0 0 0 0 0 0 0 0 0 1 1 3 2 7\n",
"Mechanics/Machine Trade 74 0 0 0 0 0 0 0 0 0 0 0 1 1 4 6\n",
"Dance 75 0 0 0 0 0 0 0 0 0 0 1 0 1 1 3\n",
"Gerontology 76 0 0 0 0 0 0 0 0 0 0 1 0 1 1 3\n",
"Public Relations 77 0 0 0 0 0 0 0 0 0 0 3 1 2 1 7\n",
"Textiles/Cloth 78 0 0 0 0 0 0 0 0 0 0 3 4 0 0 7\n",
"Parks and Recreation 79 0 0 0 0 0 0 0 0 0 0 1 2 1 0 4\n",
"Information Technology 80 0 0 0 0 0 0 0 0 0 0 0 5 8 11 24\n",
"Fashion 81 0 0 0 0 0 0 0 0 0 0 0 0 3 1 4\n",
"Counseling 82 0 0 0 0 0 0 0 0 0 0 0 0 11 9 20\n",
"Don't know/UNCODED 98 0 0 0 0 0 0 0 0 0 0 2 3 0 0 5\n",
"No answer 99 0 0 0 0 0 0 0 0 0 0 0 1 5 3 9\n",
"Not applicable 0 13626 354 7542 353 5907 10334 8394 4510 2023 2044 1263 1597 1795 1435 61177'''\n",
"\n",
"# copy paste slight tweak from page 186\n",
"major_dict = {int(row.split()[-16]): ' '.join(row.split()[:-16]) for row in MAJOR.split('\\n')[1:]}\n",
"major_dict"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"(raw\n",
" [cols]\n",
" .assign(\n",
" MAJOR1=lambda a_df:a_df.MAJOR1.fillna(99).astype(int).replace(major_dict),\n",
" SEX=lambda a_df:a_df.SEX.astype(int).replace({1:'Male', 2:'Female'}),\n",
" RACE=lambda a_df:a_df.RACE.astype(int).replace({1:'White', 2:'Black', 3:'Other'}),\n",
" OCC=lambda a_df:a_df.OCC.fillna(9999).astype(int),\n",
" BORN=lambda a_df:a_df.BORN.fillna(4).astype(int).replace({1:'Yes', 2:'No', 3:'Don\\'t Know',\n",
" 4:'No answer', 5:'Not applicable'}),\n",
" INCOME=lambda a_df:a_df.INCOME.fillna(99).astype(int).replace({99:'No answer', **dict(enumerate(['Not applicable',\n",
" 0,1000,3000,4000,5000,6000,\n",
" 7000,8000,10000,15000,20000,25000,]))}),\n",
" INCOME06=lambda a_df:a_df.INCOME06.fillna(26).astype(int).replace({26:'Refused', **dict(enumerate(['Not applicable',\n",
" 0,1000,3000,4000,5000,6000,\n",
" 7000,8000,10000,12500,15000,\n",
" 17500,20000,22500,25000,30_000,\n",
" 35_000, 40_000, 50_000, 60_000,\n",
" 75_000, 90_000, 110_000, 130_000,\n",
" 150_000]))}),\n",
" HONEST=lambda a_df:a_df.HONEST.fillna(9).astype(int).replace({1:'Most desirable', 2:'3 most desireable',\n",
" 3:'Not mentioned', 4: '3 least desireable',\n",
" 5: 'One least desireable',\n",
" 9:'No answer'}),\n",
" TICKET=lambda a_df:a_df.TICKET.fillna(9).astype(int).replace({1:'Yes', 2:'No', 3:'Refused', 9: 'No answer'}),\n",
" )\n",
" .astype({'YEAR':int, 'ID': int})\n",
" .to_csv('GSS.csv')\n",
")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Types\n",
"Getting the right types will enable analysis and correctness.\n"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 87.5 ms, sys: 0 ns, total: 87.5 ms\n",
"Wall time: 121 ms\n"
]
}
],
"source": [
"%%time\n",
"gss = pd.read_csv('GSS.csv', index_col=0)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": [
"YEAR int64\n",
"ID int64\n",
"AGE float64\n",
"HRS1 float64\n",
"OCC int64\n",
"MAJOR1 object\n",
"SEX object\n",
"RACE object\n",
"BORN object\n",
"INCOME object\n",
"INCOME06 object\n",
"HONEST object\n",
"TICKET object\n",
"dtype: object"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gss.dtypes"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>YEAR</th>\n",
" <th>ID</th>\n",
" <th>AGE</th>\n",
" <th>HRS1</th>\n",
" <th>OCC</th>\n",
" <th>MAJOR1</th>\n",
" <th>SEX</th>\n",
" <th>RACE</th>\n",
" <th>BORN</th>\n",
" <th>INCOME</th>\n",
" <th>INCOME06</th>\n",
" <th>HONEST</th>\n",
" <th>TICKET</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1972</td>\n",
" <td>1</td>\n",
" <td>23.0</td>\n",
" <td>NaN</td>\n",
" <td>205</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1972</td>\n",
" <td>2</td>\n",
" <td>70.0</td>\n",
" <td>NaN</td>\n",
" <td>441</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1972</td>\n",
" <td>3</td>\n",
" <td>48.0</td>\n",
" <td>NaN</td>\n",
" <td>270</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1972</td>\n",
" <td>4</td>\n",
" <td>27.0</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1972</td>\n",
" <td>5</td>\n",
" <td>61.0</td>\n",
" <td>NaN</td>\n",
" <td>385</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64809</th>\n",
" <td>2018</td>\n",
" <td>2344</td>\n",
" <td>37.0</td>\n",
" <td>36.0</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64810</th>\n",
" <td>2018</td>\n",
" <td>2345</td>\n",
" <td>75.0</td>\n",
" <td>36.0</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64811</th>\n",
" <td>2018</td>\n",
" <td>2346</td>\n",
" <td>67.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64812</th>\n",
" <td>2018</td>\n",
" <td>2347</td>\n",
" <td>72.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64813</th>\n",
" <td>2018</td>\n",
" <td>2348</td>\n",
" <td>79.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>64814 rows × 13 columns</p>\n",
"</div>"
],
"text/plain": [
" YEAR ID AGE HRS1 OCC MAJOR1 SEX RACE BORN \\\n",
"0 1972 1 23.0 NaN 205 No answer Female White No answer \n",
"1 1972 2 70.0 NaN 441 No answer Male White No answer \n",
"2 1972 3 48.0 NaN 270 No answer Female White No answer \n",
"3 1972 4 27.0 NaN 1 No answer Female White No answer \n",
"4 1972 5 61.0 NaN 385 No answer Female White No answer \n",
"... ... ... ... ... ... ... ... ... ... \n",
"64809 2018 2344 37.0 36.0 9999 No answer Female White Yes \n",
"64810 2018 2345 75.0 36.0 9999 No answer Female White Yes \n",
"64811 2018 2346 67.0 NaN 9999 No answer Female White Yes \n",
"64812 2018 2347 72.0 NaN 9999 No answer Male White Yes \n",
"64813 2018 2348 79.0 NaN 9999 No answer Female White Yes \n",
"\n",
" INCOME INCOME06 HONEST TICKET \n",
"0 No answer Refused No answer No answer \n",
"1 No answer Refused No answer No answer \n",
"2 No answer Refused No answer No answer \n",
"3 No answer Refused No answer No answer \n",
"4 No answer Refused No answer No answer \n",
"... ... ... ... ... \n",
"64809 No answer Refused No answer No answer \n",
"64810 25000 Refused No answer No answer \n",
"64811 25000 Refused No answer No answer \n",
"64812 25000 Refused No answer No answer \n",
"64813 No answer Refused No answer No answer \n",
"\n",
"[64814 rows x 13 columns]"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gss"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": [
"Index 518512\n",
"YEAR 518512\n",
"ID 518512\n",
"AGE 518512\n",
"HRS1 518512\n",
"OCC 518512\n",
"MAJOR1 4298143\n",
"SEX 4026054\n",
"RACE 4018468\n",
"BORN 3939308\n",
"INCOME 4038832\n",
"INCOME06 4125036\n",
"HONEST 4323425\n",
"TICKET 4195986\n",
"dtype: int64"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gss.memory_usage(deep=True)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": [
"36076324"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 36 M\n",
"gss.memory_usage(deep=True).sum()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"### Ints"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"pycharm": {
"name": "#%%\n"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>YEAR</th>\n",
" <th>ID</th>\n",
" <th>OCC</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>64814.000000</td>\n",
" <td>64814.000000</td>\n",
" <td>64814.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>1994.939180</td>\n",
" <td>1151.810211</td>\n",
" <td>6418.583284</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>13.465368</td>\n",
" <td>828.030233</td>\n",
" <td>4618.278478</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>1972.000000</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>1984.000000</td>\n",
" <td>507.000000</td>\n",
" <td>613.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>1996.000000</td>\n",
" <td>1029.500000</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>2006.000000</td>\n",
" <td>1570.000000</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>2018.000000</td>\n",
" <td>4510.000000</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" YEAR ID OCC\n",
"count 64814.000000 64814.000000 64814.000000\n",
"mean 1994.939180 1151.810211 6418.583284\n",
"std 13.465368 828.030233 4618.278478\n",
"min 1972.000000 1.000000 1.000000\n",
"25% 1984.000000 507.000000 613.000000\n",
"50% 1996.000000 1029.500000 9999.000000\n",
"75% 2006.000000 1570.000000 9999.000000\n",
"max 2018.000000 4510.000000 9999.000000"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gss.select_dtypes(int).describe()"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"pycharm": {
"name": "#%%\n"
},
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>YEAR</th>\n",
" <th>ID</th>\n",
" <th>OCC</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>64814.000000</td>\n",
" <td>64814.000000</td>\n",
" <td>64814.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>1994.939180</td>\n",
" <td>1151.810211</td>\n",
" <td>6418.583284</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>13.465368</td>\n",
" <td>828.030233</td>\n",
" <td>4618.278478</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>1972.000000</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>1984.000000</td>\n",
" <td>507.000000</td>\n",
" <td>613.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>1996.000000</td>\n",
" <td>1029.500000</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>2006.000000</td>\n",
" <td>1570.000000</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>2018.000000</td>\n",
" <td>4510.000000</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" YEAR ID OCC\n",
"count 64814.000000 64814.000000 64814.000000\n",
"mean 1994.939180 1151.810211 6418.583284\n",
"std 13.465368 828.030233 4618.278478\n",
"min 1972.000000 1.000000 1.000000\n",
"25% 1984.000000 507.000000 613.000000\n",
"50% 1996.000000 1029.500000 9999.000000\n",
"75% 2006.000000 1570.000000 9999.000000\n",
"max 2018.000000 4510.000000 9999.000000"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# chaining\n",
"(gss\n",
" .select_dtypes(int)\n",
" .describe()\n",
")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"pycharm": {
"name": "#%%\n"
},
"scrolled": true
},
"outputs": [],
"source": [
"# can comb08 be an int8?\n",
"# Do completion on int\n",
"np.iinfo(np.int)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": [
"iinfo(min=0, max=255, dtype=uint8)"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.iinfo(np.uint8)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": [
"iinfo(min=0, max=65535, dtype=uint16)"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.iinfo(np.uint16)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"pycharm": {
"name": "#%%\n"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>YEAR</th>\n",
" <th>ID</th>\n",
" <th>OCC</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>64814.000000</td>\n",
" <td>64814.000000</td>\n",
" <td>64814.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>1994.939180</td>\n",
" <td>1151.810211</td>\n",
" <td>6418.583284</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>13.465368</td>\n",
" <td>828.030233</td>\n",
" <td>4618.278478</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>1972.000000</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>1984.000000</td>\n",
" <td>507.000000</td>\n",
" <td>613.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>1996.000000</td>\n",
" <td>1029.500000</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>2006.000000</td>\n",
" <td>1570.000000</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>2018.000000</td>\n",
" <td>4510.000000</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" YEAR ID OCC\n",
"count 64814.000000 64814.000000 64814.000000\n",
"mean 1994.939180 1151.810211 6418.583284\n",
"std 13.465368 828.030233 4618.278478\n",
"min 1972.000000 1.000000 1.000000\n",
"25% 1984.000000 507.000000 613.000000\n",
"50% 1996.000000 1029.500000 9999.000000\n",
"75% 2006.000000 1570.000000 9999.000000\n",
"max 2018.000000 4510.000000 9999.000000"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# chaining\n",
"(gss\n",
" .astype({'YEAR': 'uint16', 'ID': 'uint16', 'OCC': 'uint16' })\n",
" .select_dtypes([int, 'uint16'])\n",
" .describe()\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>YEAR</th>\n",
" <th>ID</th>\n",
" <th>OCC</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>64814.000000</td>\n",
" <td>64814.000000</td>\n",
" <td>64814.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>1994.939180</td>\n",
" <td>1151.810211</td>\n",
" <td>6418.583284</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>13.465368</td>\n",
" <td>828.030233</td>\n",
" <td>4618.278478</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>1972.000000</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>1984.000000</td>\n",
" <td>507.000000</td>\n",
" <td>613.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>1996.000000</td>\n",
" <td>1029.500000</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>2006.000000</td>\n",
" <td>1570.000000</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>2018.000000</td>\n",
" <td>4510.000000</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" YEAR ID OCC\n",
"count 64814.000000 64814.000000 64814.000000\n",
"mean 1994.939180 1151.810211 6418.583284\n",
"std 13.465368 828.030233 4618.278478\n",
"min 1972.000000 1.000000 1.000000\n",
"25% 1984.000000 507.000000 613.000000\n",
"50% 1996.000000 1029.500000 9999.000000\n",
"75% 2006.000000 1570.000000 9999.000000\n",
"max 2018.000000 4510.000000 9999.000000"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# chaining\n",
"# use 'integer' so see all int-like columns\n",
"(gss\n",
" .astype({'YEAR': 'uint16', 'ID': 'uint16', 'OCC': 'uint16' })\n",
" .select_dtypes(['integer']) # see https://numpy.org/doc/stable/reference/arrays.scalars.html\n",
" .describe()\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"34909672"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# chaining\n",
"# use 'integer' so see all int-like columns\n",
"(gss\n",
" .astype({'YEAR': 'uint16', 'ID': 'uint16', 'OCC': 'uint16' })\n",
" #.select_dtypes(['integer']) # see https://numpy.org/doc/stable/reference/arrays.scalars.html\n",
" .memory_usage(deep=True)\n",
" .sum() # was 36M\n",
")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"### Floats"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"pycharm": {
"name": "#%%\n"
},
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>AGE</th>\n",
" <th>HRS1</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>23.0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>70.0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>48.0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>27.0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>61.0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64809</th>\n",
" <td>37.0</td>\n",
" <td>36.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64810</th>\n",
" <td>75.0</td>\n",
" <td>36.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64811</th>\n",
" <td>67.0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64812</th>\n",
" <td>72.0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64813</th>\n",
" <td>79.0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>64814 rows × 2 columns</p>\n",
"</div>"
],
"text/plain": [
" AGE HRS1\n",
"0 23.0 NaN\n",
"1 70.0 NaN\n",
"2 48.0 NaN\n",
"3 27.0 NaN\n",
"4 61.0 NaN\n",
"... ... ...\n",
"64809 37.0 36.0\n",
"64810 75.0 36.0\n",
"64811 67.0 NaN\n",
"64812 72.0 NaN\n",
"64813 79.0 NaN\n",
"\n",
"[64814 rows x 2 columns]"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(gss\n",
".select_dtypes('float'))"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"pycharm": {
"name": "#%%\n"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"count 37506.000000\n",
"mean 41.303711\n",
"std 14.171808\n",
"min 0.000000\n",
"25% 37.000000\n",
"50% 40.000000\n",
"75% 48.000000\n",
"max 89.000000\n",
"Name: HRS1, dtype: float64"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# surprise! age and hours worked looks int-like\n",
"gss.HRS1.describe()"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"pycharm": {
"name": "#%%\n"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"NaN 27308\n",
"40.0 12866\n",
"50.0 2806\n",
"60.0 1981\n",
"45.0 1858\n",
" ... \n",
"0.0 7\n",
"81.0 3\n",
"79.0 3\n",
"71.0 3\n",
"87.0 3\n",
"Name: HRS1, Length: 91, dtype: int64"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# opps! missing values\n",
"gss.HRS1.value_counts(dropna=False)"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"pycharm": {
"name": "#%%\n"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>YEAR</th>\n",
" <th>ID</th>\n",
" <th>AGE</th>\n",
" <th>HRS1</th>\n",
" <th>OCC</th>\n",
" <th>MAJOR1</th>\n",
" <th>SEX</th>\n",
" <th>RACE</th>\n",
" <th>BORN</th>\n",
" <th>INCOME</th>\n",
" <th>INCOME06</th>\n",
" <th>HONEST</th>\n",
" <th>TICKET</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1972</td>\n",
" <td>1</td>\n",
" <td>23.0</td>\n",
" <td>NaN</td>\n",
" <td>205</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1972</td>\n",
" <td>2</td>\n",
" <td>70.0</td>\n",
" <td>NaN</td>\n",
" <td>441</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1972</td>\n",
" <td>3</td>\n",
" <td>48.0</td>\n",
" <td>NaN</td>\n",
" <td>270</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1972</td>\n",
" <td>4</td>\n",
" <td>27.0</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1972</td>\n",
" <td>5</td>\n",
" <td>61.0</td>\n",
" <td>NaN</td>\n",
" <td>385</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64807</th>\n",
" <td>2018</td>\n",
" <td>2342</td>\n",
" <td>68.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>8000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64808</th>\n",
" <td>2018</td>\n",
" <td>2343</td>\n",
" <td>19.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>15000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64811</th>\n",
" <td>2018</td>\n",
" <td>2346</td>\n",
" <td>67.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64812</th>\n",
" <td>2018</td>\n",
" <td>2347</td>\n",
" <td>72.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64813</th>\n",
" <td>2018</td>\n",
" <td>2348</td>\n",
" <td>79.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>27308 rows × 13 columns</p>\n",
"</div>"
],
"text/plain": [
" YEAR ID AGE HRS1 OCC MAJOR1 SEX RACE BORN \\\n",
"0 1972 1 23.0 NaN 205 No answer Female White No answer \n",
"1 1972 2 70.0 NaN 441 No answer Male White No answer \n",
"2 1972 3 48.0 NaN 270 No answer Female White No answer \n",
"3 1972 4 27.0 NaN 1 No answer Female White No answer \n",
"4 1972 5 61.0 NaN 385 No answer Female White No answer \n",
"... ... ... ... ... ... ... ... ... ... \n",
"64807 2018 2342 68.0 NaN 9999 No answer Female White Yes \n",
"64808 2018 2343 19.0 NaN 9999 No answer Male White Yes \n",
"64811 2018 2346 67.0 NaN 9999 No answer Female White Yes \n",
"64812 2018 2347 72.0 NaN 9999 No answer Male White Yes \n",
"64813 2018 2348 79.0 NaN 9999 No answer Female White Yes \n",
"\n",
" INCOME INCOME06 HONEST TICKET \n",
"0 No answer Refused No answer No answer \n",
"1 No answer Refused No answer No answer \n",
"2 No answer Refused No answer No answer \n",
"3 No answer Refused No answer No answer \n",
"4 No answer Refused No answer No answer \n",
"... ... ... ... ... \n",
"64807 8000 Refused No answer No answer \n",
"64808 15000 Refused No answer No answer \n",
"64811 25000 Refused No answer No answer \n",
"64812 25000 Refused No answer No answer \n",
"64813 No answer Refused No answer No answer \n",
"\n",
"[27308 rows x 13 columns]"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# where are they missing?\n",
"(gss\n",
" .query('HRS1.isna()')\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"pycharm": {
"name": "#%%\n"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>YEAR</th>\n",
" <th>ID</th>\n",
" <th>AGE</th>\n",
" <th>HRS1</th>\n",
" <th>OCC</th>\n",
" <th>MAJOR1</th>\n",
" <th>SEX</th>\n",
" <th>RACE</th>\n",
" <th>BORN</th>\n",
" <th>INCOME</th>\n",
" <th>INCOME06</th>\n",
" <th>HONEST</th>\n",
" <th>TICKET</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>228</th>\n",
" <td>1972</td>\n",
" <td>229</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>280</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>344</th>\n",
" <td>1972</td>\n",
" <td>345</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>Black</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1038</th>\n",
" <td>1972</td>\n",
" <td>1039</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>370</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1427</th>\n",
" <td>1972</td>\n",
" <td>1428</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>902</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>Black</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1553</th>\n",
" <td>1972</td>\n",
" <td>1554</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>395</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>63124</th>\n",
" <td>2018</td>\n",
" <td>659</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>Black</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>63906</th>\n",
" <td>2018</td>\n",
" <td>1441</td>\n",
" <td>NaN</td>\n",
" <td>16.0</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>20000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>63938</th>\n",
" <td>2018</td>\n",
" <td>1473</td>\n",
" <td>NaN</td>\n",
" <td>40.0</td>\n",
" <td>9999</td>\n",
" <td>Business administration</td>\n",
" <td>Male</td>\n",
" <td>Black</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64027</th>\n",
" <td>2018</td>\n",
" <td>1562</td>\n",
" <td>NaN</td>\n",
" <td>50.0</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64428</th>\n",
" <td>2018</td>\n",
" <td>1963</td>\n",
" <td>NaN</td>\n",
" <td>40.0</td>\n",
" <td>9999</td>\n",
" <td>Other</td>\n",
" <td>Male</td>\n",
" <td>Other</td>\n",
" <td>Yes</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>228 rows × 13 columns</p>\n",
"</div>"
],
"text/plain": [
" YEAR ID AGE HRS1 OCC MAJOR1 SEX RACE \\\n",
"228 1972 229 NaN NaN 280 No answer Male White \n",
"344 1972 345 NaN NaN 9999 No answer Female Black \n",
"1038 1972 1039 NaN NaN 370 No answer Female White \n",
"1427 1972 1428 NaN NaN 902 No answer Male Black \n",
"1553 1972 1554 NaN NaN 395 No answer Female White \n",
"... ... ... ... ... ... ... ... ... \n",
"63124 2018 659 NaN NaN 9999 No answer Female Black \n",
"63906 2018 1441 NaN 16.0 9999 No answer Female White \n",
"63938 2018 1473 NaN 40.0 9999 Business administration Male Black \n",
"64027 2018 1562 NaN 50.0 9999 No answer Male White \n",
"64428 2018 1963 NaN 40.0 9999 Other Male Other \n",
"\n",
" BORN INCOME INCOME06 HONEST TICKET \n",
"228 No answer No answer Refused No answer No answer \n",
"344 No answer No answer Refused No answer No answer \n",
"1038 No answer No answer Refused No answer No answer \n",
"1427 No answer No answer Refused No answer No answer \n",
"1553 No answer No answer Refused No answer No answer \n",
"... ... ... ... ... ... \n",
"63124 Yes 25000 Refused No answer No answer \n",
"63906 Yes 20000 Refused No answer No answer \n",
"63938 Yes 25000 Refused No answer No answer \n",
"64027 Yes 25000 Refused No answer No answer \n",
"64428 Yes No answer Refused No answer No answer \n",
"\n",
"[228 rows x 13 columns]"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# where are they missing?\n",
"(gss\n",
" .query('AGE.isna()')\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"pycharm": {
"name": "#%%\n"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>YEAR</th>\n",
" <th>ID</th>\n",
" <th>AGE</th>\n",
" <th>HRS1</th>\n",
" <th>OCC</th>\n",
" <th>MAJOR1</th>\n",
" <th>SEX</th>\n",
" <th>RACE</th>\n",
" <th>BORN</th>\n",
" <th>INCOME</th>\n",
" <th>INCOME06</th>\n",
" <th>HONEST</th>\n",
" <th>TICKET</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>228</th>\n",
" <td>1972</td>\n",
" <td>229</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>280</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1841</th>\n",
" <td>1973</td>\n",
" <td>229</td>\n",
" <td>47.0</td>\n",
" <td>40.0</td>\n",
" <td>394</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>8000</td>\n",
" <td>Refused</td>\n",
" <td>Not mentioned</td>\n",
" <td>Yes</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3345</th>\n",
" <td>1974</td>\n",
" <td>229</td>\n",
" <td>38.0</td>\n",
" <td>NaN</td>\n",
" <td>602</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>Other</td>\n",
" <td>No answer</td>\n",
" <td>20000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4829</th>\n",
" <td>1975</td>\n",
" <td>229</td>\n",
" <td>63.0</td>\n",
" <td>40.0</td>\n",
" <td>461</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>10000</td>\n",
" <td>Refused</td>\n",
" <td>Most desirable</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6319</th>\n",
" <td>1976</td>\n",
" <td>229</td>\n",
" <td>37.0</td>\n",
" <td>40.0</td>\n",
" <td>126</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>20000</td>\n",
" <td>Refused</td>\n",
" <td>Most desirable</td>\n",
" <td>No</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7818</th>\n",
" <td>1977</td>\n",
" <td>229</td>\n",
" <td>65.0</td>\n",
" <td>NaN</td>\n",
" <td>503</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>5000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9348</th>\n",
" <td>1978</td>\n",
" <td>229</td>\n",
" <td>44.0</td>\n",
" <td>36.0</td>\n",
" <td>230</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>Most desirable</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10880</th>\n",
" <td>1980</td>\n",
" <td>229</td>\n",
" <td>23.0</td>\n",
" <td>NaN</td>\n",
" <td>910</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>10000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>Yes</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12348</th>\n",
" <td>1982</td>\n",
" <td>229</td>\n",
" <td>75.0</td>\n",
" <td>NaN</td>\n",
" <td>492</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>No</td>\n",
" <td>6000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>Yes</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14208</th>\n",
" <td>1983</td>\n",
" <td>229</td>\n",
" <td>36.0</td>\n",
" <td>48.0</td>\n",
" <td>680</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>20000</td>\n",
" <td>Refused</td>\n",
" <td>Most desirable</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15807</th>\n",
" <td>1984</td>\n",
" <td>229</td>\n",
" <td>52.0</td>\n",
" <td>40.0</td>\n",
" <td>690</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17280</th>\n",
" <td>1985</td>\n",
" <td>229</td>\n",
" <td>38.0</td>\n",
" <td>NaN</td>\n",
" <td>902</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>Black</td>\n",
" <td>Yes</td>\n",
" <td>4000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18814</th>\n",
" <td>1986</td>\n",
" <td>229</td>\n",
" <td>32.0</td>\n",
" <td>89.0</td>\n",
" <td>65</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>Other</td>\n",
" <td>No</td>\n",
" <td>20000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20284</th>\n",
" <td>1987</td>\n",
" <td>229</td>\n",
" <td>51.0</td>\n",
" <td>50.0</td>\n",
" <td>315</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22103</th>\n",
" <td>1988</td>\n",
" <td>229</td>\n",
" <td>60.0</td>\n",
" <td>40.0</td>\n",
" <td>45</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23584</th>\n",
" <td>1989</td>\n",
" <td>229</td>\n",
" <td>28.0</td>\n",
" <td>NaN</td>\n",
" <td>3</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25121</th>\n",
" <td>1990</td>\n",
" <td>229</td>\n",
" <td>41.0</td>\n",
" <td>37.0</td>\n",
" <td>510</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>Other</td>\n",
" <td>Yes</td>\n",
" <td>10000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26493</th>\n",
" <td>1991</td>\n",
" <td>229</td>\n",
" <td>21.0</td>\n",
" <td>15.0</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>Black</td>\n",
" <td>Yes</td>\n",
" <td>10000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28010</th>\n",
" <td>1993</td>\n",
" <td>229</td>\n",
" <td>50.0</td>\n",
" <td>40.0</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29616</th>\n",
" <td>1994</td>\n",
" <td>229</td>\n",
" <td>27.0</td>\n",
" <td>40.0</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>Black</td>\n",
" <td>Yes</td>\n",
" <td>20000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32608</th>\n",
" <td>1996</td>\n",
" <td>229</td>\n",
" <td>38.0</td>\n",
" <td>70.0</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>20000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35512</th>\n",
" <td>1998</td>\n",
" <td>229</td>\n",
" <td>36.0</td>\n",
" <td>89.0</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38344</th>\n",
" <td>2000</td>\n",
" <td>229</td>\n",
" <td>53.0</td>\n",
" <td>46.0</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41161</th>\n",
" <td>2002</td>\n",
" <td>229</td>\n",
" <td>82.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43926</th>\n",
" <td>2004</td>\n",
" <td>229</td>\n",
" <td>26.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46738</th>\n",
" <td>2006</td>\n",
" <td>229</td>\n",
" <td>25.0</td>\n",
" <td>40.0</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>Other</td>\n",
" <td>No</td>\n",
" <td>20000</td>\n",
" <td>20000</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>51248</th>\n",
" <td>2008</td>\n",
" <td>229</td>\n",
" <td>70.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>53271</th>\n",
" <td>2010</td>\n",
" <td>229</td>\n",
" <td>55.0</td>\n",
" <td>72.0</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>No</td>\n",
" <td>25000</td>\n",
" <td>30000</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>55315</th>\n",
" <td>2012</td>\n",
" <td>229</td>\n",
" <td>48.0</td>\n",
" <td>40.0</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No</td>\n",
" <td>25000</td>\n",
" <td>40000</td>\n",
" <td>No answer</td>\n",
" <td>No</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57289</th>\n",
" <td>2014</td>\n",
" <td>229</td>\n",
" <td>43.0</td>\n",
" <td>14.0</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>10000</td>\n",
" <td>10000</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59827</th>\n",
" <td>2016</td>\n",
" <td>229</td>\n",
" <td>33.0</td>\n",
" <td>40.0</td>\n",
" <td>9999</td>\n",
" <td>Television/Film</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>62694</th>\n",
" <td>2018</td>\n",
" <td>229</td>\n",
" <td>48.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" YEAR ID AGE HRS1 OCC MAJOR1 SEX RACE BORN \\\n",
"228 1972 229 NaN NaN 280 No answer Male White No answer \n",
"1841 1973 229 47.0 40.0 394 No answer Female White No answer \n",
"3345 1974 229 38.0 NaN 602 No answer Female Other No answer \n",
"4829 1975 229 63.0 40.0 461 No answer Male White No answer \n",
"6319 1976 229 37.0 40.0 126 No answer Female White No answer \n",
"7818 1977 229 65.0 NaN 503 No answer Male White Yes \n",
"9348 1978 229 44.0 36.0 230 No answer Female White Yes \n",
"10880 1980 229 23.0 NaN 910 No answer Female White Yes \n",
"12348 1982 229 75.0 NaN 492 No answer Male White No \n",
"14208 1983 229 36.0 48.0 680 No answer Male White Yes \n",
"15807 1984 229 52.0 40.0 690 No answer Female White Yes \n",
"17280 1985 229 38.0 NaN 902 No answer Female Black Yes \n",
"18814 1986 229 32.0 89.0 65 No answer Male Other No \n",
"20284 1987 229 51.0 50.0 315 No answer Male White Yes \n",
"22103 1988 229 60.0 40.0 45 No answer Male White Yes \n",
"23584 1989 229 28.0 NaN 3 No answer Male White Yes \n",
"25121 1990 229 41.0 37.0 510 No answer Male Other Yes \n",
"26493 1991 229 21.0 15.0 9999 No answer Female Black Yes \n",
"28010 1993 229 50.0 40.0 9999 No answer Male White Yes \n",
"29616 1994 229 27.0 40.0 9999 No answer Female Black Yes \n",
"32608 1996 229 38.0 70.0 9999 No answer Male White Yes \n",
"35512 1998 229 36.0 89.0 9999 No answer Male White Yes \n",
"38344 2000 229 53.0 46.0 9999 No answer Female White Yes \n",
"41161 2002 229 82.0 NaN 9999 No answer Female White Yes \n",
"43926 2004 229 26.0 NaN 9999 No answer Female White Yes \n",
"46738 2006 229 25.0 40.0 9999 No answer Male Other No \n",
"51248 2008 229 70.0 NaN 9999 No answer Female White Yes \n",
"53271 2010 229 55.0 72.0 9999 No answer Male White No \n",
"55315 2012 229 48.0 40.0 9999 No answer Female White No \n",
"57289 2014 229 43.0 14.0 9999 No answer Male White Yes \n",
"59827 2016 229 33.0 40.0 9999 Television/Film Female White Yes \n",
"62694 2018 229 48.0 NaN 9999 No answer Female White Yes \n",
"\n",
" INCOME INCOME06 HONEST TICKET \n",
"228 No answer Refused No answer No answer \n",
"1841 8000 Refused Not mentioned Yes \n",
"3345 20000 Refused No answer No \n",
"4829 10000 Refused Most desirable No answer \n",
"6319 20000 Refused Most desirable No \n",
"7818 5000 Refused No answer No \n",
"9348 25000 Refused Most desirable No answer \n",
"10880 10000 Refused No answer Yes \n",
"12348 6000 Refused No answer Yes \n",
"14208 20000 Refused Most desirable No answer \n",
"15807 25000 Refused No answer No \n",
"17280 4000 Refused No answer No answer \n",
"18814 20000 Refused No answer No answer \n",
"20284 25000 Refused No answer No answer \n",
"22103 No answer Refused No answer No answer \n",
"23584 25000 Refused No answer No answer \n",
"25121 10000 Refused No answer No answer \n",
"26493 10000 Refused No answer No answer \n",
"28010 25000 Refused No answer No answer \n",
"29616 20000 Refused No answer No answer \n",
"32608 20000 Refused No answer No answer \n",
"35512 25000 Refused No answer No answer \n",
"38344 25000 Refused No answer No answer \n",
"41161 25000 Refused No answer No answer \n",
"43926 25000 Refused No answer No answer \n",
"46738 20000 20000 No answer No answer \n",
"51248 No answer Refused No answer No answer \n",
"53271 25000 30000 No answer No answer \n",
"55315 25000 40000 No answer No \n",
"57289 10000 10000 No answer No answer \n",
"59827 25000 Refused No answer No answer \n",
"62694 25000 Refused No answer No answer "
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# where are they missing?\n",
"# It turns out that ID is not consistent across years\n",
"(gss\n",
" .query('ID == 229')\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>YEAR</th>\n",
" <th>ID</th>\n",
" <th>AGE</th>\n",
" <th>HRS1</th>\n",
" <th>OCC</th>\n",
" <th>MAJOR1</th>\n",
" <th>SEX</th>\n",
" <th>RACE</th>\n",
" <th>BORN</th>\n",
" <th>INCOME</th>\n",
" <th>INCOME06</th>\n",
" <th>HONEST</th>\n",
" <th>TICKET</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1972</td>\n",
" <td>1</td>\n",
" <td>23.0</td>\n",
" <td>NaN</td>\n",
" <td>205</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1972</td>\n",
" <td>2</td>\n",
" <td>70.0</td>\n",
" <td>NaN</td>\n",
" <td>441</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1972</td>\n",
" <td>3</td>\n",
" <td>48.0</td>\n",
" <td>NaN</td>\n",
" <td>270</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1972</td>\n",
" <td>4</td>\n",
" <td>27.0</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1972</td>\n",
" <td>5</td>\n",
" <td>61.0</td>\n",
" <td>NaN</td>\n",
" <td>385</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64809</th>\n",
" <td>2018</td>\n",
" <td>2344</td>\n",
" <td>37.0</td>\n",
" <td>36.0</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64810</th>\n",
" <td>2018</td>\n",
" <td>2345</td>\n",
" <td>75.0</td>\n",
" <td>36.0</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64811</th>\n",
" <td>2018</td>\n",
" <td>2346</td>\n",
" <td>67.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64812</th>\n",
" <td>2018</td>\n",
" <td>2347</td>\n",
" <td>72.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64813</th>\n",
" <td>2018</td>\n",
" <td>2348</td>\n",
" <td>79.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>64814 rows × 13 columns</p>\n",
"</div>"
],
"text/plain": [
" YEAR ID AGE HRS1 OCC MAJOR1 SEX RACE BORN \\\n",
"0 1972 1 23.0 NaN 205 No answer Female White No answer \n",
"1 1972 2 70.0 NaN 441 No answer Male White No answer \n",
"2 1972 3 48.0 NaN 270 No answer Female White No answer \n",
"3 1972 4 27.0 NaN 1 No answer Female White No answer \n",
"4 1972 5 61.0 NaN 385 No answer Female White No answer \n",
"... ... ... ... ... ... ... ... ... ... \n",
"64809 2018 2344 37.0 36.0 9999 No answer Female White Yes \n",
"64810 2018 2345 75.0 36.0 9999 No answer Female White Yes \n",
"64811 2018 2346 67.0 NaN 9999 No answer Female White Yes \n",
"64812 2018 2347 72.0 NaN 9999 No answer Male White Yes \n",
"64813 2018 2348 79.0 NaN 9999 No answer Female White Yes \n",
"\n",
" INCOME INCOME06 HONEST TICKET \n",
"0 No answer Refused No answer No answer \n",
"1 No answer Refused No answer No answer \n",
"2 No answer Refused No answer No answer \n",
"3 No answer Refused No answer No answer \n",
"4 No answer Refused No answer No answer \n",
"... ... ... ... ... \n",
"64809 No answer Refused No answer No answer \n",
"64810 25000 Refused No answer No answer \n",
"64811 25000 Refused No answer No answer \n",
"64812 25000 Refused No answer No answer \n",
"64813 No answer Refused No answer No answer \n",
"\n",
"[64814 rows x 13 columns]"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# chaining\n",
"# use 'integer' so see all int-like columns\n",
"(gss\n",
" .astype({'YEAR': 'uint16', 'ID': 'uint16', 'OCC': 'uint16' ,\n",
" 'HRS1': 'float16', 'AGE': 'float16'})\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"34131904"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# chaining\n",
"# use 'integer' so see all int-like columns\n",
"(gss\n",
" .astype({'YEAR': 'uint16', 'ID': 'uint16', 'OCC': 'uint16' ,\n",
" 'HRS1': 'float16', 'AGE': 'float16'})\n",
" .memory_usage(deep=True)\n",
" .sum() # was 36M\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"YEAR uint16\n",
"ID uint16\n",
"AGE float16\n",
"HRS1 float16\n",
"OCC uint16\n",
"MAJOR1 object\n",
"SEX object\n",
"RACE object\n",
"BORN object\n",
"INCOME object\n",
"INCOME06 object\n",
"HONEST object\n",
"TICKET object\n",
"dtype: object"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# chaining\n",
"# use 'integer' so see all int-like columns\n",
"(gss\n",
" .astype({'YEAR': 'uint16', 'ID': 'uint16', 'OCC': 'uint16' ,\n",
" 'HRS1': 'float16', 'AGE': 'float16'})\n",
" .dtypes\n",
")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"### Objects"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"pycharm": {
"name": "#%%\n"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>MAJOR1</th>\n",
" <th>SEX</th>\n",
" <th>RACE</th>\n",
" <th>BORN</th>\n",
" <th>INCOME</th>\n",
" <th>INCOME06</th>\n",
" <th>HONEST</th>\n",
" <th>TICKET</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64809</th>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64810</th>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64811</th>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64812</th>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64813</th>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>64814 rows × 8 columns</p>\n",
"</div>"
],
"text/plain": [
" MAJOR1 SEX RACE BORN INCOME INCOME06 HONEST \\\n",
"0 No answer Female White No answer No answer Refused No answer \n",
"1 No answer Male White No answer No answer Refused No answer \n",
"2 No answer Female White No answer No answer Refused No answer \n",
"3 No answer Female White No answer No answer Refused No answer \n",
"4 No answer Female White No answer No answer Refused No answer \n",
"... ... ... ... ... ... ... ... \n",
"64809 No answer Female White Yes No answer Refused No answer \n",
"64810 No answer Female White Yes 25000 Refused No answer \n",
"64811 No answer Female White Yes 25000 Refused No answer \n",
"64812 No answer Male White Yes 25000 Refused No answer \n",
"64813 No answer Female White Yes No answer Refused No answer \n",
"\n",
" TICKET \n",
"0 No answer \n",
"1 No answer \n",
"2 No answer \n",
"3 No answer \n",
"4 No answer \n",
"... ... \n",
"64809 No answer \n",
"64810 No answer \n",
"64811 No answer \n",
"64812 No answer \n",
"64813 No answer \n",
"\n",
"[64814 rows x 8 columns]"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(gss\n",
" .select_dtypes(object)\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"pycharm": {
"name": "#%%\n"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"No answer 61191\n",
"Business administration 542\n",
"Education 340\n",
"Engineering 197\n",
"Nursing 186\n",
" ... \n",
"Ethnic studies 4\n",
"Gerontology 3\n",
"Humanities 3\n",
"Allied health 3\n",
"Dance 3\n",
"Name: MAJOR1, Length: 81, dtype: int64"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# looks categorical\n",
"(gss.MAJOR1.value_counts(dropna=False))"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": [
"29906506"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# wow!\n",
"(gss\n",
" .astype({'YEAR': 'uint16', 'ID': 'uint16', 'OCC': 'uint16' ,\n",
" 'HRS1': 'float16', 'AGE': 'float16',\n",
" 'MAJOR1': 'category'})\n",
" .memory_usage(deep=True)\n",
" .sum() # was 36M\n",
")\n"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['MAJOR1', 'SEX', 'RACE', 'BORN', 'INCOME', 'INCOME06', 'HONEST',\n",
" 'TICKET'],\n",
" dtype='object')"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(gss\n",
" .select_dtypes(object)\n",
" .columns\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"lines_to_next_cell": 0,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": [
"1698973"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# wow!\n",
"(gss\n",
" .astype({'YEAR': 'uint16', 'ID': 'uint16', 'OCC': 'uint16' ,\n",
" 'HRS1': 'float16', 'AGE': 'float16',\n",
" 'MAJOR1': 'category',\n",
" **{col: 'category' for col in ['SEX', 'RACE', 'BORN', \n",
" 'INCOME', 'INCOME06', 'HONEST','TICKET']}})\n",
" .memory_usage(deep=True)\n",
" .sum() # was 36M now 1.6M\n",
")\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"lines_to_next_cell": 0,
"pycharm": {
"name": "#%%\n"
},
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>YEAR</th>\n",
" <th>ID</th>\n",
" <th>AGE</th>\n",
" <th>HRS1</th>\n",
" <th>OCC</th>\n",
" <th>MAJOR1</th>\n",
" <th>SEX</th>\n",
" <th>RACE</th>\n",
" <th>BORN</th>\n",
" <th>INCOME</th>\n",
" <th>INCOME06</th>\n",
" <th>HONEST</th>\n",
" <th>TICKET</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1972</td>\n",
" <td>1</td>\n",
" <td>23.0</td>\n",
" <td>NaN</td>\n",
" <td>205</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1972</td>\n",
" <td>2</td>\n",
" <td>70.0</td>\n",
" <td>NaN</td>\n",
" <td>441</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1972</td>\n",
" <td>3</td>\n",
" <td>48.0</td>\n",
" <td>NaN</td>\n",
" <td>270</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1972</td>\n",
" <td>4</td>\n",
" <td>27.0</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1972</td>\n",
" <td>5</td>\n",
" <td>61.0</td>\n",
" <td>NaN</td>\n",
" <td>385</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64809</th>\n",
" <td>2018</td>\n",
" <td>2344</td>\n",
" <td>37.0</td>\n",
" <td>36.0</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64810</th>\n",
" <td>2018</td>\n",
" <td>2345</td>\n",
" <td>75.0</td>\n",
" <td>36.0</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64811</th>\n",
" <td>2018</td>\n",
" <td>2346</td>\n",
" <td>67.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64812</th>\n",
" <td>2018</td>\n",
" <td>2347</td>\n",
" <td>72.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64813</th>\n",
" <td>2018</td>\n",
" <td>2348</td>\n",
" <td>79.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>64814 rows × 13 columns</p>\n",
"</div>"
],
"text/plain": [
" YEAR ID AGE HRS1 OCC MAJOR1 SEX RACE BORN \\\n",
"0 1972 1 23.0 NaN 205 No answer Female White No answer \n",
"1 1972 2 70.0 NaN 441 No answer Male White No answer \n",
"2 1972 3 48.0 NaN 270 No answer Female White No answer \n",
"3 1972 4 27.0 NaN 1 No answer Female White No answer \n",
"4 1972 5 61.0 NaN 385 No answer Female White No answer \n",
"... ... ... ... ... ... ... ... ... ... \n",
"64809 2018 2344 37.0 36.0 9999 No answer Female White Yes \n",
"64810 2018 2345 75.0 36.0 9999 No answer Female White Yes \n",
"64811 2018 2346 67.0 NaN 9999 No answer Female White Yes \n",
"64812 2018 2347 72.0 NaN 9999 No answer Male White Yes \n",
"64813 2018 2348 79.0 NaN 9999 No answer Female White Yes \n",
"\n",
" INCOME INCOME06 HONEST TICKET \n",
"0 No answer Refused No answer No answer \n",
"1 No answer Refused No answer No answer \n",
"2 No answer Refused No answer No answer \n",
"3 No answer Refused No answer No answer \n",
"4 No answer Refused No answer No answer \n",
"... ... ... ... ... \n",
"64809 No answer Refused No answer No answer \n",
"64810 25000 Refused No answer No answer \n",
"64811 25000 Refused No answer No answer \n",
"64812 25000 Refused No answer No answer \n",
"64813 No answer Refused No answer No answer \n",
"\n",
"[64814 rows x 13 columns]"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# a glorious function\n",
"def tweak_gss(gss):\n",
" return (gss\n",
" .astype({'YEAR': 'uint16', 'ID': 'uint16', 'OCC': 'uint16' ,\n",
" 'HRS1': 'float16', 'AGE': 'float16',\n",
" 'MAJOR1': 'category',\n",
" **{col: 'category' for col in ['SEX', 'RACE', 'BORN', \n",
" 'INCOME', 'INCOME06', 'HONEST','TICKET']}})\n",
" )\n",
"\n",
"tweak_gss(gss)"
]
},
{
"cell_type": "markdown",
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"source": [
"## Fix Column Names"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"lines_to_next_cell": 0,
"pycharm": {
"name": "#%%\n"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>year</th>\n",
" <th>year_id</th>\n",
" <th>age</th>\n",
" <th>hours_worked</th>\n",
" <th>occupation</th>\n",
" <th>college_major</th>\n",
" <th>sex</th>\n",
" <th>race</th>\n",
" <th>born_in_US</th>\n",
" <th>income_1970</th>\n",
" <th>income_2006</th>\n",
" <th>honesty_rankint</th>\n",
" <th>traffic_ticket</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1972</td>\n",
" <td>1</td>\n",
" <td>23.0</td>\n",
" <td>NaN</td>\n",
" <td>205</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1972</td>\n",
" <td>2</td>\n",
" <td>70.0</td>\n",
" <td>NaN</td>\n",
" <td>441</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1972</td>\n",
" <td>3</td>\n",
" <td>48.0</td>\n",
" <td>NaN</td>\n",
" <td>270</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1972</td>\n",
" <td>4</td>\n",
" <td>27.0</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1972</td>\n",
" <td>5</td>\n",
" <td>61.0</td>\n",
" <td>NaN</td>\n",
" <td>385</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64809</th>\n",
" <td>2018</td>\n",
" <td>2344</td>\n",
" <td>37.0</td>\n",
" <td>36.0</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64810</th>\n",
" <td>2018</td>\n",
" <td>2345</td>\n",
" <td>75.0</td>\n",
" <td>36.0</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64811</th>\n",
" <td>2018</td>\n",
" <td>2346</td>\n",
" <td>67.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64812</th>\n",
" <td>2018</td>\n",
" <td>2347</td>\n",
" <td>72.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64813</th>\n",
" <td>2018</td>\n",
" <td>2348</td>\n",
" <td>79.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>64814 rows × 13 columns</p>\n",
"</div>"
],
"text/plain": [
" year year_id age hours_worked occupation college_major sex \\\n",
"0 1972 1 23.0 NaN 205 No answer Female \n",
"1 1972 2 70.0 NaN 441 No answer Male \n",
"2 1972 3 48.0 NaN 270 No answer Female \n",
"3 1972 4 27.0 NaN 1 No answer Female \n",
"4 1972 5 61.0 NaN 385 No answer Female \n",
"... ... ... ... ... ... ... ... \n",
"64809 2018 2344 37.0 36.0 9999 No answer Female \n",
"64810 2018 2345 75.0 36.0 9999 No answer Female \n",
"64811 2018 2346 67.0 NaN 9999 No answer Female \n",
"64812 2018 2347 72.0 NaN 9999 No answer Male \n",
"64813 2018 2348 79.0 NaN 9999 No answer Female \n",
"\n",
" race born_in_US income_1970 income_2006 honesty_rankint traffic_ticket \n",
"0 White No answer No answer Refused No answer No answer \n",
"1 White No answer No answer Refused No answer No answer \n",
"2 White No answer No answer Refused No answer No answer \n",
"3 White No answer No answer Refused No answer No answer \n",
"4 White No answer No answer Refused No answer No answer \n",
"... ... ... ... ... ... ... \n",
"64809 White Yes No answer Refused No answer No answer \n",
"64810 White Yes 25000 Refused No answer No answer \n",
"64811 White Yes 25000 Refused No answer No answer \n",
"64812 White Yes 25000 Refused No answer No answer \n",
"64813 White Yes No answer Refused No answer No answer \n",
"\n",
"[64814 rows x 13 columns]"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# a glorious function\n",
"def tweak_gss(gss):\n",
" return (gss\n",
" .astype({'YEAR': 'uint16', 'ID': 'uint16', 'OCC': 'uint16' ,\n",
" 'HRS1': 'float16', 'AGE': 'float16',\n",
" 'MAJOR1': 'category',\n",
" **{col: 'category' for col in ['SEX', 'RACE', 'BORN', \n",
" 'INCOME', 'INCOME06', 'HONEST','TICKET']}})\n",
" .rename(columns={'YEAR': 'year', 'ID': 'year_id', 'AGE':'age', \n",
" 'HRS1': 'hours_worked', 'OCC': 'occupation', \n",
" 'MAJOR1': 'college_major', 'SEX':'sex', \n",
" 'RACE':'race', 'BORN':'born_in_US',\n",
" 'INCOME':'income_1970', 'INCOME06': 'income_2006',\n",
" 'HONEST':'honesty_rankint',\n",
" 'TICKET':'traffic_ticket'})\n",
" )\n",
"\n",
"tweak_gss(gss)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"## Chain\n",
"\n",
"Chaining is also called \"flow\" programming. Rather than making intermediate variables, just leverage the fact that most operations return a new object and work on that.\n",
"\n",
"The chain should read like a recipe of ordered steps.\n",
"\n",
"(BTW, this is actually what we did above.)\n",
"\n",
"<div class='alert alert-warning'>\n",
" Hint: Leverage <tt>.pipe</tt> if you can't find a way to chain 😉🐼💪\n",
"</div>\n",
" \n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 0,
"pycharm": {
"name": "#%%\n"
},
"scrolled": false
},
"outputs": [],
"source": [
"# a glorious function\n",
"def tweak_gss(gss):\n",
" return (gss\n",
" .astype({'YEAR': 'uint16', 'ID': 'uint16', 'OCC': 'uint16' ,\n",
" 'HRS1': 'float16', 'AGE': 'float16',\n",
" 'MAJOR1': 'category',\n",
" **{col: 'category' for col in ['SEX', 'RACE', 'BORN', \n",
" 'INCOME', 'INCOME06', 'HONEST','TICKET']}})\n",
" .rename(columns={'YEAR': 'year', 'ID': 'year_id', 'AGE':'age', \n",
" 'HRS1': 'hours_worked', 'OCC': 'occupation', \n",
" 'MAJOR1': 'college_major', 'SEX':'sex', \n",
" 'RACE':'race', 'BORN':'born_in_US',\n",
" 'INCOME':'income_1970', 'INCOME06': 'income_2006',\n",
" 'HONEST':'honesty_rankint',\n",
" 'TICKET':'traffic_ticket'}) \n",
" )\n",
"\n",
"tweak_gss(gss)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"# compare chain to this mess\n",
"year = gss.YEAR\n",
"year_int = year.astype('uint16')\n",
"id = gss.ID\n",
"id_int = id.astype('uint16')\n",
"occ = gss.OCC\n",
"occ_int = occ.astype('uint16')\n",
"\n",
"gss2 = gss.copy()\n",
"gss2['year'] = year_int\n",
"gss2['year_id'] = id_int\n",
"gss2['occupation'] = occ_int\n",
"\n",
"# more of this"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>YEAR</th>\n",
" <th>ID</th>\n",
" <th>AGE</th>\n",
" <th>HRS1</th>\n",
" <th>OCC</th>\n",
" <th>MAJOR1</th>\n",
" <th>SEX</th>\n",
" <th>RACE</th>\n",
" <th>BORN</th>\n",
" <th>INCOME</th>\n",
" <th>INCOME06</th>\n",
" <th>HONEST</th>\n",
" <th>TICKET</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1972</td>\n",
" <td>1</td>\n",
" <td>23.0</td>\n",
" <td>NaN</td>\n",
" <td>205</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1972</td>\n",
" <td>2</td>\n",
" <td>70.0</td>\n",
" <td>NaN</td>\n",
" <td>441</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1972</td>\n",
" <td>3</td>\n",
" <td>48.0</td>\n",
" <td>NaN</td>\n",
" <td>270</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1972</td>\n",
" <td>4</td>\n",
" <td>27.0</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1972</td>\n",
" <td>5</td>\n",
" <td>61.0</td>\n",
" <td>NaN</td>\n",
" <td>385</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64809</th>\n",
" <td>2018</td>\n",
" <td>2344</td>\n",
" <td>37.0</td>\n",
" <td>36.0</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64810</th>\n",
" <td>2018</td>\n",
" <td>2345</td>\n",
" <td>75.0</td>\n",
" <td>36.0</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64811</th>\n",
" <td>2018</td>\n",
" <td>2346</td>\n",
" <td>67.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64812</th>\n",
" <td>2018</td>\n",
" <td>2347</td>\n",
" <td>72.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64813</th>\n",
" <td>2018</td>\n",
" <td>2348</td>\n",
" <td>79.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>64814 rows × 13 columns</p>\n",
"</div>"
],
"text/plain": [
" YEAR ID AGE HRS1 OCC MAJOR1 SEX RACE BORN \\\n",
"0 1972 1 23.0 NaN 205 No answer Female White No answer \n",
"1 1972 2 70.0 NaN 441 No answer Male White No answer \n",
"2 1972 3 48.0 NaN 270 No answer Female White No answer \n",
"3 1972 4 27.0 NaN 1 No answer Female White No answer \n",
"4 1972 5 61.0 NaN 385 No answer Female White No answer \n",
"... ... ... ... ... ... ... ... ... ... \n",
"64809 2018 2344 37.0 36.0 9999 No answer Female White Yes \n",
"64810 2018 2345 75.0 36.0 9999 No answer Female White Yes \n",
"64811 2018 2346 67.0 NaN 9999 No answer Female White Yes \n",
"64812 2018 2347 72.0 NaN 9999 No answer Male White Yes \n",
"64813 2018 2348 79.0 NaN 9999 No answer Female White Yes \n",
"\n",
" INCOME INCOME06 HONEST TICKET \n",
"0 No answer Refused No answer No answer \n",
"1 No answer Refused No answer No answer \n",
"2 No answer Refused No answer No answer \n",
"3 No answer Refused No answer No answer \n",
"4 No answer Refused No answer No answer \n",
"... ... ... ... ... \n",
"64809 No answer Refused No answer No answer \n",
"64810 25000 Refused No answer No answer \n",
"64811 25000 Refused No answer No answer \n",
"64812 25000 Refused No answer No answer \n",
"64813 No answer Refused No answer No answer \n",
"\n",
"[64814 rows x 13 columns]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>year</th>\n",
" <th>year_id</th>\n",
" <th>age</th>\n",
" <th>hours_worked</th>\n",
" <th>occupation</th>\n",
" <th>college_major</th>\n",
" <th>sex</th>\n",
" <th>race</th>\n",
" <th>born_in_US</th>\n",
" <th>income_1970</th>\n",
" <th>income_2006</th>\n",
" <th>honesty_rankint</th>\n",
" <th>traffic_ticket</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1972</td>\n",
" <td>1</td>\n",
" <td>23.0</td>\n",
" <td>NaN</td>\n",
" <td>205</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1972</td>\n",
" <td>2</td>\n",
" <td>70.0</td>\n",
" <td>NaN</td>\n",
" <td>441</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1972</td>\n",
" <td>3</td>\n",
" <td>48.0</td>\n",
" <td>NaN</td>\n",
" <td>270</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1972</td>\n",
" <td>4</td>\n",
" <td>27.0</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1972</td>\n",
" <td>5</td>\n",
" <td>61.0</td>\n",
" <td>NaN</td>\n",
" <td>385</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64809</th>\n",
" <td>2018</td>\n",
" <td>2344</td>\n",
" <td>37.0</td>\n",
" <td>36.0</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64810</th>\n",
" <td>2018</td>\n",
" <td>2345</td>\n",
" <td>75.0</td>\n",
" <td>36.0</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64811</th>\n",
" <td>2018</td>\n",
" <td>2346</td>\n",
" <td>67.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64812</th>\n",
" <td>2018</td>\n",
" <td>2347</td>\n",
" <td>72.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64813</th>\n",
" <td>2018</td>\n",
" <td>2348</td>\n",
" <td>79.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>64814 rows × 13 columns</p>\n",
"</div>"
],
"text/plain": [
" year year_id age hours_worked occupation college_major sex \\\n",
"0 1972 1 23.0 NaN 205 No answer Female \n",
"1 1972 2 70.0 NaN 441 No answer Male \n",
"2 1972 3 48.0 NaN 270 No answer Female \n",
"3 1972 4 27.0 NaN 1 No answer Female \n",
"4 1972 5 61.0 NaN 385 No answer Female \n",
"... ... ... ... ... ... ... ... \n",
"64809 2018 2344 37.0 36.0 9999 No answer Female \n",
"64810 2018 2345 75.0 36.0 9999 No answer Female \n",
"64811 2018 2346 67.0 NaN 9999 No answer Female \n",
"64812 2018 2347 72.0 NaN 9999 No answer Male \n",
"64813 2018 2348 79.0 NaN 9999 No answer Female \n",
"\n",
" race born_in_US income_1970 income_2006 honesty_rankint traffic_ticket \n",
"0 White No answer No answer Refused No answer No answer \n",
"1 White No answer No answer Refused No answer No answer \n",
"2 White No answer No answer Refused No answer No answer \n",
"3 White No answer No answer Refused No answer No answer \n",
"4 White No answer No answer Refused No answer No answer \n",
"... ... ... ... ... ... ... \n",
"64809 White Yes No answer Refused No answer No answer \n",
"64810 White Yes 25000 Refused No answer No answer \n",
"64811 White Yes 25000 Refused No answer No answer \n",
"64812 White Yes 25000 Refused No answer No answer \n",
"64813 White Yes No answer Refused No answer No answer \n",
"\n",
"[64814 rows x 13 columns]"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# easy to debug\n",
"# - assign to var (df3)\n",
"# - comment out\n",
"# - pipe to display\n",
"\n",
"\n",
"from IPython.display import display\n",
"\n",
"def get_var(df, var_name):\n",
" globals()[var_name] = df\n",
" return df\n",
"\n",
"# a glorious function\n",
"def tweak_gss(gss):\n",
" return (gss\n",
" # create var \n",
" .pipe(get_var, 'df3')\n",
" .astype({'YEAR': 'uint16', 'ID': 'uint16', 'OCC': 'uint16' ,\n",
" 'HRS1': 'float16', 'AGE': 'float16',\n",
" 'MAJOR1': 'category',\n",
" **{col: 'category' for col in ['SEX', 'RACE', 'BORN', \n",
" 'INCOME', 'INCOME06', 'HONEST','TICKET']}})\n",
" .pipe(lambda df: display(df) or df) \n",
" .rename(columns={'YEAR': 'year', 'ID': 'year_id', 'AGE':'age', \n",
" 'HRS1': 'hours_worked', 'OCC': 'occupation', \n",
" 'MAJOR1': 'college_major', 'SEX':'sex', \n",
" 'RACE':'race', 'BORN':'born_in_US',\n",
" 'INCOME':'income_1970', 'INCOME06': 'income_2006',\n",
" 'HONEST':'honesty_rankint',\n",
" 'TICKET':'traffic_ticket'}) \n",
" )\n",
"\n",
"tweak_gss(gss)\n"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"pycharm": {
"name": "#%%\n"
},
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>YEAR</th>\n",
" <th>ID</th>\n",
" <th>AGE</th>\n",
" <th>HRS1</th>\n",
" <th>OCC</th>\n",
" <th>MAJOR1</th>\n",
" <th>SEX</th>\n",
" <th>RACE</th>\n",
" <th>BORN</th>\n",
" <th>INCOME</th>\n",
" <th>INCOME06</th>\n",
" <th>HONEST</th>\n",
" <th>TICKET</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1972</td>\n",
" <td>1</td>\n",
" <td>23.0</td>\n",
" <td>NaN</td>\n",
" <td>205</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1972</td>\n",
" <td>2</td>\n",
" <td>70.0</td>\n",
" <td>NaN</td>\n",
" <td>441</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1972</td>\n",
" <td>3</td>\n",
" <td>48.0</td>\n",
" <td>NaN</td>\n",
" <td>270</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1972</td>\n",
" <td>4</td>\n",
" <td>27.0</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1972</td>\n",
" <td>5</td>\n",
" <td>61.0</td>\n",
" <td>NaN</td>\n",
" <td>385</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64809</th>\n",
" <td>2018</td>\n",
" <td>2344</td>\n",
" <td>37.0</td>\n",
" <td>36.0</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64810</th>\n",
" <td>2018</td>\n",
" <td>2345</td>\n",
" <td>75.0</td>\n",
" <td>36.0</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64811</th>\n",
" <td>2018</td>\n",
" <td>2346</td>\n",
" <td>67.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64812</th>\n",
" <td>2018</td>\n",
" <td>2347</td>\n",
" <td>72.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Male</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>25000</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64813</th>\n",
" <td>2018</td>\n",
" <td>2348</td>\n",
" <td>79.0</td>\n",
" <td>NaN</td>\n",
" <td>9999</td>\n",
" <td>No answer</td>\n",
" <td>Female</td>\n",
" <td>White</td>\n",
" <td>Yes</td>\n",
" <td>No answer</td>\n",
" <td>Refused</td>\n",
" <td>No answer</td>\n",
" <td>No answer</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>64814 rows × 13 columns</p>\n",
"</div>"
],
"text/plain": [
" YEAR ID AGE HRS1 OCC MAJOR1 SEX RACE BORN \\\n",
"0 1972 1 23.0 NaN 205 No answer Female White No answer \n",
"1 1972 2 70.0 NaN 441 No answer Male White No answer \n",
"2 1972 3 48.0 NaN 270 No answer Female White No answer \n",
"3 1972 4 27.0 NaN 1 No answer Female White No answer \n",
"4 1972 5 61.0 NaN 385 No answer Female White No answer \n",
"... ... ... ... ... ... ... ... ... ... \n",
"64809 2018 2344 37.0 36.0 9999 No answer Female White Yes \n",
"64810 2018 2345 75.0 36.0 9999 No answer Female White Yes \n",
"64811 2018 2346 67.0 NaN 9999 No answer Female White Yes \n",
"64812 2018 2347 72.0 NaN 9999 No answer Male White Yes \n",
"64813 2018 2348 79.0 NaN 9999 No answer Female White Yes \n",
"\n",
" INCOME INCOME06 HONEST TICKET \n",
"0 No answer Refused No answer No answer \n",
"1 No answer Refused No answer No answer \n",
"2 No answer Refused No answer No answer \n",
"3 No answer Refused No answer No answer \n",
"4 No answer Refused No answer No answer \n",
"... ... ... ... ... \n",
"64809 No answer Refused No answer No answer \n",
"64810 25000 Refused No answer No answer \n",
"64811 25000 Refused No answer No answer \n",
"64812 25000 Refused No answer No answer \n",
"64813 No answer Refused No answer No answer \n",
"\n",
"[64814 rows x 13 columns]"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# inspect intermediate data frame\n",
"df3"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"## Don't Mutate\n",
"\n",
"> \"you are missing the point, inplace rarely actually does something inplace, you are thinking that you are saving memory but you are not.\"\n",
">\n",
"> **jreback** - Pandas core dev\n",
"\n",
"\n",
"\n",
"https://github.com/pandas-dev/pandas/issues/16529#issuecomment-676518136\n",
"\n",
"* In general, no performance benefits\n",
"* Prohibits chaining\n",
"* ``SettingWithCopyWarning`` fun\n"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"pd.read_csv??"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"## Don't Apply (if you can)"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"lines_to_next_cell": 0,
"pycharm": {
"name": "#%%\n"
},
"scrolled": true
},
"outputs": [],
"source": [
"# a glorious function\n",
"def tweak_gss(gss):\n",
" return (gss\n",
" .astype({'YEAR': 'uint16', 'ID': 'uint16', 'OCC': 'uint16' ,\n",
" 'HRS1': 'float16', 'AGE': 'float16',\n",
" 'MAJOR1': 'category',\n",
" **{col: 'category' for col in ['SEX', 'RACE', 'BORN', \n",
" 'INCOME', 'INCOME06', 'HONEST','TICKET']}})\n",
" .rename(columns={'YEAR': 'year', 'ID': 'year_id', 'AGE':'age', \n",
" 'HRS1': 'hours_worked', 'OCC': 'occupation', \n",
" 'MAJOR1': 'college_major', 'SEX':'sex', \n",
" 'RACE':'race', 'BORN':'born_in_US',\n",
" 'INCOME':'income_1970', 'INCOME06': 'income_2006',\n",
" 'HONEST':'honesty_rankint',\n",
" 'TICKET':'traffic_ticket'}) \n",
" )\n",
"\n",
"gss2 = tweak_gss(gss)"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"pycharm": {
"name": "#%%\n"
},
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
"0 276.0\n",
"1 840.0\n",
"2 576.0\n",
"3 324.0\n",
"4 732.0\n",
" ... \n",
"64809 444.0\n",
"64810 900.0\n",
"64811 804.0\n",
"64812 864.0\n",
"64813 948.0\n",
"Name: age, Length: 64814, dtype: float64"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# convert age to months\n",
"def to_months(val):\n",
" return val * 12\n",
"\n",
"gss2.age.apply(to_months)"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"pycharm": {
"name": "#%%\n"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"0 276.0\n",
"1 840.0\n",
"2 576.0\n",
"3 324.0\n",
"4 732.0\n",
" ... \n",
"64809 444.0\n",
"64810 900.0\n",
"64811 804.0\n",
"64812 864.0\n",
"64813 948.0\n",
"Name: age, Length: 64814, dtype: float16"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# this gives the sames results\n",
"gss2.age * 12"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"%%timeit\n",
"gss2.age.apply(to_months)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"%%timeit\n",
"gss2.age * 12"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"# ~14x slower!\n",
"13_100 / 882"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"No answer 61191\n",
"Business administration 542\n",
"Education 340\n",
"Engineering 197\n",
"Nursing 186\n",
"Health 127\n",
"Psychology 127\n",
"Accounting/bookkeeping 119\n",
"English 100\n",
"Computer science 99\n",
"Biology 97\n",
"Communications/speech 82\n",
"Political science/international relations 71\n",
"Law 68\n",
"Other 66\n",
"Economics 62\n",
"History 62\n",
"Criminology/Criminal Justice 60\n",
"Medicine 57\n",
"Social work 55\n",
"Name: MAJOR1, dtype: int64"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gss.MAJOR1.value_counts()[:20]"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"def is_science(val):\n",
" return val in {'Engineering', 'Computer science', 'Biology'}"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"9.83 ms ± 650 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n"
]
}
],
"source": [
"%%timeit\n",
"gss.MAJOR1.apply(is_science)"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3.22 ms ± 251 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n"
]
}
],
"source": [
"%%timeit\n",
"gss.MAJOR1.isin({'Engineering', 'Computer science', 'Biology'})"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"956 µs ± 38.1 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n"
]
}
],
"source": [
"%%timeit\n",
"# compare with categorical\n",
"gss2.college_major.isin({'Engineering', 'Computer science', 'Biology'})"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"## Master Aggregation\n",
"\n",
"Let's compare age by sex by year...🤔"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {
"pycharm": {
"name": "#%%\n"
},
"scrolled": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"<ipython-input-58-735f388e55b6>:1: FutureWarning: The default value of numeric_only in DataFrameGroupBy.mean is deprecated. In a future version, numeric_only will default to False. Either specify numeric_only or select only columns which should be valid for the function.\n",
" (gss2\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>year_id</th>\n",
" <th>age</th>\n",
" <th>hours_worked</th>\n",
" <th>occupation</th>\n",
" </tr>\n",
" <tr>\n",
" <th>year</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1972</th>\n",
" <td>807.000000</td>\n",
" <td>44.950871</td>\n",
" <td>NaN</td>\n",
" <td>1444.870428</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1973</th>\n",
" <td>752.500000</td>\n",
" <td>44.181999</td>\n",
" <td>39.882504</td>\n",
" <td>1424.382314</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1974</th>\n",
" <td>742.500000</td>\n",
" <td>44.591339</td>\n",
" <td>39.828609</td>\n",
" <td>1296.756065</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1975</th>\n",
" <td>879.778523</td>\n",
" <td>44.307743</td>\n",
" <td>38.967278</td>\n",
" <td>1342.724161</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1976</th>\n",
" <td>878.939293</td>\n",
" <td>45.286671</td>\n",
" <td>39.659973</td>\n",
" <td>1403.899266</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1977</th>\n",
" <td>765.500000</td>\n",
" <td>44.663166</td>\n",
" <td>40.531357</td>\n",
" <td>1184.355556</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1978</th>\n",
" <td>766.500000</td>\n",
" <td>44.009834</td>\n",
" <td>40.811695</td>\n",
" <td>1261.514360</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980</th>\n",
" <td>734.500000</td>\n",
" <td>44.974640</td>\n",
" <td>41.003651</td>\n",
" <td>1237.329019</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1982</th>\n",
" <td>1143.105914</td>\n",
" <td>44.859077</td>\n",
" <td>39.519531</td>\n",
" <td>1136.556452</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1983</th>\n",
" <td>800.000000</td>\n",
" <td>44.296482</td>\n",
" <td>40.412735</td>\n",
" <td>1067.824265</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1984</th>\n",
" <td>737.000000</td>\n",
" <td>44.004772</td>\n",
" <td>40.529682</td>\n",
" <td>1035.302783</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1985</th>\n",
" <td>767.500000</td>\n",
" <td>45.711197</td>\n",
" <td>41.164474</td>\n",
" <td>952.962842</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1986</th>\n",
" <td>735.500000</td>\n",
" <td>45.430622</td>\n",
" <td>41.821556</td>\n",
" <td>1100.905442</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1987</th>\n",
" <td>1013.629467</td>\n",
" <td>44.923630</td>\n",
" <td>41.017731</td>\n",
" <td>975.948323</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1988</th>\n",
" <td>741.000000</td>\n",
" <td>45.374409</td>\n",
" <td>41.364044</td>\n",
" <td>999.544227</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1989</th>\n",
" <td>769.000000</td>\n",
" <td>45.443573</td>\n",
" <td>41.302094</td>\n",
" <td>1002.324658</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1990</th>\n",
" <td>686.500000</td>\n",
" <td>45.956997</td>\n",
" <td>40.905548</td>\n",
" <td>930.317055</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1991</th>\n",
" <td>759.000000</td>\n",
" <td>45.626156</td>\n",
" <td>40.288788</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1993</th>\n",
" <td>803.500000</td>\n",
" <td>46.048721</td>\n",
" <td>41.818180</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1994</th>\n",
" <td>1496.500000</td>\n",
" <td>45.969189</td>\n",
" <td>41.658421</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1996</th>\n",
" <td>1452.500000</td>\n",
" <td>44.777088</td>\n",
" <td>42.353489</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1998</th>\n",
" <td>1416.500000</td>\n",
" <td>45.556931</td>\n",
" <td>41.809807</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2000</th>\n",
" <td>1409.000000</td>\n",
" <td>46.022427</td>\n",
" <td>41.896591</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2002</th>\n",
" <td>1383.000000</td>\n",
" <td>46.282806</td>\n",
" <td>41.776749</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2004</th>\n",
" <td>1406.500000</td>\n",
" <td>45.964680</td>\n",
" <td>42.262619</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2006</th>\n",
" <td>2255.500000</td>\n",
" <td>47.141586</td>\n",
" <td>42.076305</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2008</th>\n",
" <td>1012.000000</td>\n",
" <td>47.708397</td>\n",
" <td>42.003326</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2010</th>\n",
" <td>1022.500000</td>\n",
" <td>47.967175</td>\n",
" <td>41.363476</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012</th>\n",
" <td>987.500000</td>\n",
" <td>48.193501</td>\n",
" <td>41.384548</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2014</th>\n",
" <td>1271.217100</td>\n",
" <td>49.012653</td>\n",
" <td>41.906063</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016</th>\n",
" <td>1434.000000</td>\n",
" <td>49.155758</td>\n",
" <td>40.914337</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018</th>\n",
" <td>1174.500000</td>\n",
" <td>48.971378</td>\n",
" <td>41.281681</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" year_id age hours_worked occupation\n",
"year \n",
"1972 807.000000 44.950871 NaN 1444.870428\n",
"1973 752.500000 44.181999 39.882504 1424.382314\n",
"1974 742.500000 44.591339 39.828609 1296.756065\n",
"1975 879.778523 44.307743 38.967278 1342.724161\n",
"1976 878.939293 45.286671 39.659973 1403.899266\n",
"1977 765.500000 44.663166 40.531357 1184.355556\n",
"1978 766.500000 44.009834 40.811695 1261.514360\n",
"1980 734.500000 44.974640 41.003651 1237.329019\n",
"1982 1143.105914 44.859077 39.519531 1136.556452\n",
"1983 800.000000 44.296482 40.412735 1067.824265\n",
"1984 737.000000 44.004772 40.529682 1035.302783\n",
"1985 767.500000 45.711197 41.164474 952.962842\n",
"1986 735.500000 45.430622 41.821556 1100.905442\n",
"1987 1013.629467 44.923630 41.017731 975.948323\n",
"1988 741.000000 45.374409 41.364044 999.544227\n",
"1989 769.000000 45.443573 41.302094 1002.324658\n",
"1990 686.500000 45.956997 40.905548 930.317055\n",
"1991 759.000000 45.626156 40.288788 9999.000000\n",
"1993 803.500000 46.048721 41.818180 9999.000000\n",
"1994 1496.500000 45.969189 41.658421 9999.000000\n",
"1996 1452.500000 44.777088 42.353489 9999.000000\n",
"1998 1416.500000 45.556931 41.809807 9999.000000\n",
"2000 1409.000000 46.022427 41.896591 9999.000000\n",
"2002 1383.000000 46.282806 41.776749 9999.000000\n",
"2004 1406.500000 45.964680 42.262619 9999.000000\n",
"2006 2255.500000 47.141586 42.076305 9999.000000\n",
"2008 1012.000000 47.708397 42.003326 9999.000000\n",
"2010 1022.500000 47.967175 41.363476 9999.000000\n",
"2012 987.500000 48.193501 41.384548 9999.000000\n",
"2014 1271.217100 49.012653 41.906063 9999.000000\n",
"2016 1434.000000 49.155758 40.914337 9999.000000\n",
"2018 1174.500000 48.971378 41.281681 9999.000000"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(gss2\n",
" .groupby('year')\n",
" .mean()\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {
"pycharm": {
"name": "#%%\n"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>year_id</th>\n",
" <th>age</th>\n",
" <th>hours_worked</th>\n",
" <th>occupation</th>\n",
" </tr>\n",
" <tr>\n",
" <th>year</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1972</th>\n",
" <td>807.000000</td>\n",
" <td>44.950871</td>\n",
" <td>NaN</td>\n",
" <td>1444.870428</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1973</th>\n",
" <td>752.500000</td>\n",
" <td>44.181999</td>\n",
" <td>39.882504</td>\n",
" <td>1424.382314</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1974</th>\n",
" <td>742.500000</td>\n",
" <td>44.591339</td>\n",
" <td>39.828609</td>\n",
" <td>1296.756065</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1975</th>\n",
" <td>879.778523</td>\n",
" <td>44.307743</td>\n",
" <td>38.967278</td>\n",
" <td>1342.724161</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1976</th>\n",
" <td>878.939293</td>\n",
" <td>45.286671</td>\n",
" <td>39.659973</td>\n",
" <td>1403.899266</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1977</th>\n",
" <td>765.500000</td>\n",
" <td>44.663166</td>\n",
" <td>40.531357</td>\n",
" <td>1184.355556</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1978</th>\n",
" <td>766.500000</td>\n",
" <td>44.009834</td>\n",
" <td>40.811695</td>\n",
" <td>1261.514360</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980</th>\n",
" <td>734.500000</td>\n",
" <td>44.974640</td>\n",
" <td>41.003651</td>\n",
" <td>1237.329019</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1982</th>\n",
" <td>1143.105914</td>\n",
" <td>44.859077</td>\n",
" <td>39.519531</td>\n",
" <td>1136.556452</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1983</th>\n",
" <td>800.000000</td>\n",
" <td>44.296482</td>\n",
" <td>40.412735</td>\n",
" <td>1067.824265</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1984</th>\n",
" <td>737.000000</td>\n",
" <td>44.004772</td>\n",
" <td>40.529682</td>\n",
" <td>1035.302783</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1985</th>\n",
" <td>767.500000</td>\n",
" <td>45.711197</td>\n",
" <td>41.164474</td>\n",
" <td>952.962842</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1986</th>\n",
" <td>735.500000</td>\n",
" <td>45.430622</td>\n",
" <td>41.821556</td>\n",
" <td>1100.905442</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1987</th>\n",
" <td>1013.629467</td>\n",
" <td>44.923630</td>\n",
" <td>41.017731</td>\n",
" <td>975.948323</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1988</th>\n",
" <td>741.000000</td>\n",
" <td>45.374409</td>\n",
" <td>41.364044</td>\n",
" <td>999.544227</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1989</th>\n",
" <td>769.000000</td>\n",
" <td>45.443573</td>\n",
" <td>41.302094</td>\n",
" <td>1002.324658</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1990</th>\n",
" <td>686.500000</td>\n",
" <td>45.956997</td>\n",
" <td>40.905548</td>\n",
" <td>930.317055</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1991</th>\n",
" <td>759.000000</td>\n",
" <td>45.626156</td>\n",
" <td>40.288788</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1993</th>\n",
" <td>803.500000</td>\n",
" <td>46.048721</td>\n",
" <td>41.818180</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1994</th>\n",
" <td>1496.500000</td>\n",
" <td>45.969189</td>\n",
" <td>41.658421</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1996</th>\n",
" <td>1452.500000</td>\n",
" <td>44.777088</td>\n",
" <td>42.353489</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1998</th>\n",
" <td>1416.500000</td>\n",
" <td>45.556931</td>\n",
" <td>41.809807</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2000</th>\n",
" <td>1409.000000</td>\n",
" <td>46.022427</td>\n",
" <td>41.896591</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2002</th>\n",
" <td>1383.000000</td>\n",
" <td>46.282806</td>\n",
" <td>41.776749</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2004</th>\n",
" <td>1406.500000</td>\n",
" <td>45.964680</td>\n",
" <td>42.262619</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2006</th>\n",
" <td>2255.500000</td>\n",
" <td>47.141586</td>\n",
" <td>42.076305</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2008</th>\n",
" <td>1012.000000</td>\n",
" <td>47.708397</td>\n",
" <td>42.003326</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2010</th>\n",
" <td>1022.500000</td>\n",
" <td>47.967175</td>\n",
" <td>41.363476</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012</th>\n",
" <td>987.500000</td>\n",
" <td>48.193501</td>\n",
" <td>41.384548</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2014</th>\n",
" <td>1271.217100</td>\n",
" <td>49.012653</td>\n",
" <td>41.906063</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016</th>\n",
" <td>1434.000000</td>\n",
" <td>49.155758</td>\n",
" <td>40.914337</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018</th>\n",
" <td>1174.500000</td>\n",
" <td>48.971378</td>\n",
" <td>41.281681</td>\n",
" <td>9999.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" year_id age hours_worked occupation\n",
"year \n",
"1972 807.000000 44.950871 NaN 1444.870428\n",
"1973 752.500000 44.181999 39.882504 1424.382314\n",
"1974 742.500000 44.591339 39.828609 1296.756065\n",
"1975 879.778523 44.307743 38.967278 1342.724161\n",
"1976 878.939293 45.286671 39.659973 1403.899266\n",
"1977 765.500000 44.663166 40.531357 1184.355556\n",
"1978 766.500000 44.009834 40.811695 1261.514360\n",
"1980 734.500000 44.974640 41.003651 1237.329019\n",
"1982 1143.105914 44.859077 39.519531 1136.556452\n",
"1983 800.000000 44.296482 40.412735 1067.824265\n",
"1984 737.000000 44.004772 40.529682 1035.302783\n",
"1985 767.500000 45.711197 41.164474 952.962842\n",
"1986 735.500000 45.430622 41.821556 1100.905442\n",
"1987 1013.629467 44.923630 41.017731 975.948323\n",
"1988 741.000000 45.374409 41.364044 999.544227\n",
"1989 769.000000 45.443573 41.302094 1002.324658\n",
"1990 686.500000 45.956997 40.905548 930.317055\n",
"1991 759.000000 45.626156 40.288788 9999.000000\n",
"1993 803.500000 46.048721 41.818180 9999.000000\n",
"1994 1496.500000 45.969189 41.658421 9999.000000\n",
"1996 1452.500000 44.777088 42.353489 9999.000000\n",
"1998 1416.500000 45.556931 41.809807 9999.000000\n",
"2000 1409.000000 46.022427 41.896591 9999.000000\n",
"2002 1383.000000 46.282806 41.776749 9999.000000\n",
"2004 1406.500000 45.964680 42.262619 9999.000000\n",
"2006 2255.500000 47.141586 42.076305 9999.000000\n",
"2008 1012.000000 47.708397 42.003326 9999.000000\n",
"2010 1022.500000 47.967175 41.363476 9999.000000\n",
"2012 987.500000 48.193501 41.384548 9999.000000\n",
"2014 1271.217100 49.012653 41.906063 9999.000000\n",
"2016 1434.000000 49.155758 40.914337 9999.000000\n",
"2018 1174.500000 48.971378 41.281681 9999.000000"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(gss2\n",
" .groupby('year')\n",
" .mean(numeric_only=True)\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"pycharm": {
"name": "#%%\n"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>age</th>\n",
" <th>hours_worked</th>\n",
" </tr>\n",
" <tr>\n",
" <th>year</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1972</th>\n",
" <td>44.950871</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1973</th>\n",
" <td>44.181999</td>\n",
" <td>39.882504</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1974</th>\n",
" <td>44.591339</td>\n",
" <td>39.828609</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1975</th>\n",
" <td>44.307743</td>\n",
" <td>38.967278</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1976</th>\n",
" <td>45.286671</td>\n",
" <td>39.659973</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1977</th>\n",
" <td>44.663166</td>\n",
" <td>40.531357</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1978</th>\n",
" <td>44.009834</td>\n",
" <td>40.811695</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980</th>\n",
" <td>44.974640</td>\n",
" <td>41.003651</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1982</th>\n",
" <td>44.859077</td>\n",
" <td>39.519531</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1983</th>\n",
" <td>44.296482</td>\n",
" <td>40.412735</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1984</th>\n",
" <td>44.004772</td>\n",
" <td>40.529682</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1985</th>\n",
" <td>45.711197</td>\n",
" <td>41.164474</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1986</th>\n",
" <td>45.430622</td>\n",
" <td>41.821556</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1987</th>\n",
" <td>44.923630</td>\n",
" <td>41.017731</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1988</th>\n",
" <td>45.374409</td>\n",
" <td>41.364044</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1989</th>\n",
" <td>45.443573</td>\n",
" <td>41.302094</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1990</th>\n",
" <td>45.956997</td>\n",
" <td>40.905548</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1991</th>\n",
" <td>45.626156</td>\n",
" <td>40.288788</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1993</th>\n",
" <td>46.048721</td>\n",
" <td>41.818180</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1994</th>\n",
" <td>45.969189</td>\n",
" <td>41.658421</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1996</th>\n",
" <td>44.777088</td>\n",
" <td>42.353489</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1998</th>\n",
" <td>45.556931</td>\n",
" <td>41.809807</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2000</th>\n",
" <td>46.022427</td>\n",
" <td>41.896591</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2002</th>\n",
" <td>46.282806</td>\n",
" <td>41.776749</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2004</th>\n",
" <td>45.964680</td>\n",
" <td>42.262619</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2006</th>\n",
" <td>47.141586</td>\n",
" <td>42.076305</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2008</th>\n",
" <td>47.708397</td>\n",
" <td>42.003326</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2010</th>\n",
" <td>47.967175</td>\n",
" <td>41.363476</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012</th>\n",
" <td>48.193501</td>\n",
" <td>41.384548</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2014</th>\n",
" <td>49.012653</td>\n",
" <td>41.906063</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016</th>\n",
" <td>49.155758</td>\n",
" <td>40.914337</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018</th>\n",
" <td>48.971378</td>\n",
" <td>41.281681</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" age hours_worked\n",
"year \n",
"1972 44.950871 NaN\n",
"1973 44.181999 39.882504\n",
"1974 44.591339 39.828609\n",
"1975 44.307743 38.967278\n",
"1976 45.286671 39.659973\n",
"1977 44.663166 40.531357\n",
"1978 44.009834 40.811695\n",
"1980 44.974640 41.003651\n",
"1982 44.859077 39.519531\n",
"1983 44.296482 40.412735\n",
"1984 44.004772 40.529682\n",
"1985 45.711197 41.164474\n",
"1986 45.430622 41.821556\n",
"1987 44.923630 41.017731\n",
"1988 45.374409 41.364044\n",
"1989 45.443573 41.302094\n",
"1990 45.956997 40.905548\n",
"1991 45.626156 40.288788\n",
"1993 46.048721 41.818180\n",
"1994 45.969189 41.658421\n",
"1996 44.777088 42.353489\n",
"1998 45.556931 41.809807\n",
"2000 46.022427 41.896591\n",
"2002 46.282806 41.776749\n",
"2004 45.964680 42.262619\n",
"2006 47.141586 42.076305\n",
"2008 47.708397 42.003326\n",
"2010 47.967175 41.363476\n",
"2012 48.193501 41.384548\n",
"2014 49.012653 41.906063\n",
"2016 49.155758 40.914337\n",
"2018 48.971378 41.281681"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(gss2\n",
" .groupby('year')\n",
" [['age', 'hours_worked']]\n",
" .mean()\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"collapsed": true,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7f475ee62e80>]"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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deumxx57THfffXfcrE+fPrrvvvt07bXXerRd15EVJwT19fWS9IP3s5see2u6Fp3nwIEDmjlzphoaGnTRRRfp0ksv9XqljLNs2TJt3LhR119/PcekKRIKhZq/Ligo0BNPPKERI0bI7/dr4MCBmjdvnoYOHapoNKrHH3/cw00z065du3Tw4MHmxw5POukkFRYWqqqqSi+++KI+/fRTr1dMe1kRBPn5+ZLUfJzXlkgkEnctOsehQ4d0yy23aO/evTr55JP14IMPer1Sxtm/f7/mzZunkpIS/fa3v/V6nazR8s+OK6+8MuFE0ufzNT8H/8477/BkTRLNmTNHDzzwgHr27Km//OUvWr16tVauXKn169drypQp2rx5s6677jpVVlZ6vWpay4ogOJLbAUdyWwFHJxQK6eabb9a2bdt04oknauHChbx2oBPcf//9qqmp0d13383/vinU8s+O448/vs1rjjvuOEnOvwtNb86Fo7N9+3Y988wzysvL0x//+EcNGjSoeVZQUKA777xTZ599tmpqarRgwQIPN01/WfEagrKyMknS3r17FY1G27x1sHv37rhrkVy1tbW69dZbtWnTJpWVlWnRokXq2bOn12tlpG3btkly/tY0Z86cuFnTkx1fffWVRo8eLUmaP3++TjvttNQumYGafthLh7892fIUgROC5NiwYYOstRo4cOBhn+AYPXq0KioqtHXr1hRv17VkRRAMHTpUeXl5ikQi2rJlS5uvNN2wYYMk6ZRTTknxdpmvvr5e06ZN03vvvdf8hi19+vTxeq2Md+DAgcPOYrFY8/yHbqXhyJWUlKi0tFSVlZX68ssv27ym6dfz8/N5m/QkafnajX+k6dYw2pYVtwyCwaB++tOfSpKee+65hPnOnTu1fv16SdK4ceNSulumi0ajmjlzpioqKlRSUqIlS5aoX79+Xq+V0VavXq2PP/64zf888MADkpzPMmj6tVGjRnm8cea45JJLJEmvvPJKm2+C8/zzz0uSzjjjDD7cKEmabhHs2rXrsK8RaHp/iJa3E5AoK4JAkqZPny5jjF5++WUtX768+Z2tvv76a/3ud79TLBbThRdeqCFDhni8aeZobGzUrFmztHbtWvXp00dLlixpfscwIBNNmTJF3bp10549ezR37tzmp5astVq6dKnWrFkjYwyP2ibR6NGj1atXL0WjUf3mN7+Jey+Zuro6PfTQQ6qoqJAkXXHFFV6t2SVk1acdLl68WA8++KCsterXr5969uzZ/GmHgwYN0rJly1RcXOz1mhnj1Vdf1axZsyQ5fyMtKSk57LX33HMPz2WnwAsvvKDZs2fzaYedqLy8XNOmTVNdXZ26deumsrIy7du3T1VVVTLG6I477tCUKVO8XjOjlJeXa8aMGQqHw/L5fOrfv78CgYB2796t2tpaSdL111/P23f/A1l1ZjV58mSddNJJevLJJ7VlyxYdPHhQ/fv317hx4zR16lQ+jjTJWt6vq6ys/MFHfg4dOpSKlYBOd8455+jll1/WggULVF5eru3btysYDOqCCy7QjTfeqDPPPNPrFTPOOeeco5UrV2rx4sUqLy/X3r17tX//fvXo0UPnnHOOJkyYoDFjxni9ZtrLqhMCAADQtqx5DQEAADg8ggAAABAEAACAIAAAACIIAACACAIAACCCAAAAiCAAAAAiCAAAgAgCAAAgggAAAIggAAAAIggAAIAIAgAAIOn/ARR2vfFzF6IIAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 600x300 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"plt.style.use('pandas1book') \n",
"sns.set_context('talk')\n",
"plt.plot(range(10))"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {
"pycharm": {
"name": "#%%\n"
},
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='year'>"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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3MmOHTvYs2cP2dnZdOzYkfnz5xd57oEDB3jvvff4448/OH36NFFRUbRt25b77ruPq666qsBzunXrxvHjx4uNq0GDBqxatarAfd9//z0LFixg7969mM1mmjRpwm233ca9996LyWQq/k37UXnfbwCLxcLnn3/ON998w99//01GRgaRkZG0atWKvn370qdPH5RSBZ6rtWbJkiUsXryY/fv3A9CiRQsGDBjAHXfcUeh5FYE/7jXAN998w+LFi9mzZw+ZmZnUrVuX6667jocffpjatWsXeW4gf7a11mzdupVVq1axefNmDh48SFpaGlFRUbRu3Zq+ffty6623FvqZSU9P55133uH777/nxIkThIeHc9lll/HAAw/QqVOnIuv+448/+OCDD/jzzz/JyMjgoosuolevXgwbNozw8PBCz/OmTn/yx7325vsEYDab+eijj/jqq6/4559/MJlMtGzZkiFDhnDDDTd4dT/KWnnfb2/r86TOklBaa+3RmT704YcfMn369HzlxX0Qf/jhB5544gmys7OJioqiadOmnDlzhpMnTwIwduxYHn744XznjR49mtOnTxd63R07dmA2m7nlllt49dVX8+2fOXMm8+bNA6Bx48aEhYWxf/9+rFYrHTp0YN68eQQHBxf7vv2lvO93VlYW//73v9m0aRMAderUoXbt2iQkJHDmzBkAevbsyRtvvIHB4N74Z7PZGDNmDN999x1gT1YAZ/Jy88038+qrr1bYxKW877XNZuOJJ57g22+/BaBhw4bExMRw8OBBMjIyiImJYf78+cTGxhZYb6B/ttetW8fQoUOd240aNSI6Oprjx4+TnJwMwHXXXcecOXPyvY9z585x9913c+jQIYKDg2nRogXnzp3j1KlTKKWYPHkygwcPLrDe+fPn88ILL6C1pl69etSoUYP9+/eTk5ND8+bNWbhwITExMfnO86ZOf/PHvfb0+wSQnZ3N/fffz+bNmzEajbRo0YLMzEz++ecfAB566CGeeOKJUt6F8lPe99ub+jyts0R0BbB48WI9dOhQ/eqrr+offvhBv/baazo2Nlbfc889hZ7zzz//6LZt2+rY2Fg9depUnZWV5dy3YsUKHR8fr2NjY/Xvv/9eqliOHj2q4+LidGxsrF67dm2+/T/88IOOjY3Vl156qf7pp5+c5fv379fdunXTsbGxevr06aWqs7yV9/1+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hw4daNSoUbF1jhw5EoB3333XbQXogwcPMmnSJMD+x6RGjRqlei+BwJP7XaNGDa699loAXnzxxXyJy1dffcXbb78NkG+lZ5PJ5FwU8KWXXnKbnG7r1q28/PLLgH0emKCggH/S6cbTz/apU6f48ssv3WaZtNls/PjjjwwfPhytNcOHD6d58+b5zq0Mn22r1cq4ceNYvXo1tWvX5qOPPirR9zo+Pp7rr78eq9XKmDFjSExMBOwtsYsWLWL58uUYDAaGDx+e79wRI0aglGL58uUsWrQInbsGbWJiImPHjsVms9GjRw9atmzpszorAn/ca0/VqlXLObJu4sSJbvMbrVq1ivfeew+ARx991Gd1+lp5329P6/OmzpKoEKs8nzx5kr59+zq3c3JyyMjIICgoyK2jz4MPPshDDz3k3O7Tpw979+6lVq1a1KtXj7S0NOekNnFxcbz33nvUqVOn0HrT09Pp2rUrGRkZTJ8+vcBZcAvy4osv8tFHHwH2yXPCw8P5+++/sVqttG/fng8++CDfSIGKpLzv96lTp7jnnnuc/TBq165NnTp13FYLvfzyy5k3b16+rNtms/HYY4/xww8/APlXee7VqxezZ8/Ot+RCRVHe93rPnj307dvXOXlTtWrVOHbsGElJSSiluP/++3n66acLjTfQP9vffPMN48aNA6BBgwaFzu4LMHnyZFq3bu3cPnfuHHfddReHDx92rkqblJTEyZMnUUoxceLEfBMgOnz44YfMmDEDrTX169enevXqzlWemzVrxsKFCwtM9ryp09/8ca89/T6BfWjt0KFD2bp1K0ajkUsuuYSMjAxnX5YHHnigyO+Gv5X3/famPk/rLIkK8fPUarW6TUHuYLFY3MovHM99zz338P3337Nv3z7++usvwsPDad++PTfffDMDBw4scow45M3NEh4e7mzOKolnnnmGK664goULF7Jnzx4SExNp3rw5t912G0OHDi22Xn8r7/tdr149vvzySxYsWMDKlSs5ePAge/fuJTIykg4dOtC7d+9CzzcYDLzxxht8/vnnLF68mAMHDgD2DqgDBw5kwIABRfZD8jd/3OuhQ4eyceNGjh8/zsmTJ6lZsya33HILd999d7F9YAL9s+3a9+n48eNus/5e6Pz5827bNWrU4IsvvuDdd9/lu+++Y//+/YSHh3PNNdfw73//u8hO+kOHDiUuLo558+axfft2zp49y0UXXUSvXr0YNmxYoU3g3tTpb/64155+n8A+tPbjjz/mww8/5Ouvv+bw4cOYTCY6duzIPffcU6q/Af5Q3vfbm/o8rbMkKkRLixBCCCFEcSpmm7oQQgghxAUkaRFCCCFEQJCkRQghhBABQZIWIYQQQgQESVqEEEIIERAkaRFCCCFEQJCkRQghhBABQZIWIYQQQgQESVqEEEIIERAkaRFCCCFEQJCkRQghhBABQZIWIYQQQgQESVqEEEIIERAkaRFCCCFEQJCkRQghhBABQZIWIUQ+KSkpXHbZZcTFxbFixYoij33ttdeIi4uje/fuaK3d9m3evJknnniC66+/njZt2tC+fXvuuOMO3nnnHdLT0wu8XmZmJt988w1PPfUUffr0oXPnzlx66aV07dqVESNGsHr16kJjWbp0KXFxcXTr1g2AP/74gxEjRtC1a1datWrF+PHjS3knhBAViSQtQoh8qlWrRu/evQH4/PPPCz3OarWydOlSAAYMGIBSCgCbzcbzzz/P3Xffzddff82JEycICgoiMzOTHTt28Oqrr9K/f3+OHz+e75r/+9//GDduHMuXL+evv/7CYrEQFBTE6dOnWblyJcOGDWPmzJnFvoePPvqIoUOHsnLlSrKysjAajZ7cCiFEBSJJixCiQHfddRdgb604evRogcesXr2ahIQEgoKC6N+/v7P8jTfeYP78+dSsWZMpU6awfv16tm7dyp9//snHH39M69atOXToEKNGjcJms7ldMzo6mgceeICFCxeydetWNm3axLZt21izZg2jRo3CZDIxb948Vq5cWWjsZ86cYebMmfTr149ffvmFTZs28eeffzJixAgf3BkhhL9I0iKEKNBll11Gq1at0FoX2triKO/WrRu1a9cG4NixY7zzzjuEhoYyb948Bg8eTExMDAAmk4lOnToxf/586tWrx65du1i1apXbNXv06MHTTz9N+/btCQsLc5bXqVOHkSNHMmbMGADmz59faOzZ2dl0796d6dOnU79+fQCMRiONGzf27GYIISoESVqEEIVytLYsW7YMs9nsti8hIYFff/0VgEGDBjnLly1bhtVq5eqrr6Zly5YFXjcyMpIePXoAsGbNmlLFdN111wGwbds2rFZroccNGzasVNcVQlR8Qf4OQAhRcd1yyy3MnDmT06dP8/PPP3PDDTc49y1ZsgSr1UrDhg3p0qWLs3zLli0ArF271q38QhkZGQCcOHEi374zZ86wcOFC1q5dy+HDhzl//ny+BCUzM5OUlBRq1KiR7/zQ0FDi4+NL92aFEBWeJC1CiEJFRERw22238emnn7Jo0SJn0mKz2fjiiy8AGDhwoLMDLkBiYiJgT0ociUlRsrKy3La3bt3KsGHDSE1NdZaFh4cTFhaGUgqr1UpSUhJgT1wKEhMTg8EgDclCVDaStAghinTXXXfx6aef8vvvv3Ps2DEaNmzIb7/9xvHjxwkKCuL22293O97RIvLQQw/xxBNPlKoui8XCuHHjSE1NpVWrVowZM4b27dsTGRnpPOaff/6hZ8+eAPmGWDvISCEhKif5KSKEKFJcXBxXXHEFNpuNJUuWALB48WIAunfv7uyA6+DYLuixT3G2bdvG8ePHMRqNzJ07l2uvvdYtYQE4ffq0J29DCFEJSNIihCiWo0PuF198QUJCAj///DNgfzR0oXbt2gHw+++/k52dXap6Tp48CUCNGjWoW7dugcesW7euVNcUQlQekrQIIYrVu3dvYmJiSExMZNy4cZjN5nwdcB369+9PUFAQSUlJvPHGG0VeNycnx21m3KioKMDeEffMmTP5jj916lSRQ52FEJWbJC1CiGIFBwc7+65s3LgRyN8B16Fx48YMHz4cgPfee4+nnnqKffv2OfdbLBb27NnDm2++yQ033MCePXuc+9q3b094eDhaax5//HEOHToE2PvJrFmzhiFDhpTZexRCVHzSEVcIUSJ33nknH3zwAVrrAjvgunr00UexWq289dZbLF++nOXLlxMaGkpoaGi+4cuuiU9UVBRPPfUUzz33HBs3bqRXr16Eh4djtVrJzs6mevXqTJ8+3ZkUCSGqFklahBAl0qRJE1q1asXu3bsL7IDrSinFY489Ru/evfn0009Zv349J0+eJC0tjejoaJo2bUq7du3o2bMnV1xxhdu5d911FxdddBHvvfceO3fuxGq1UrduXa699loeeuihfJPcCSGqDqULGzMohBAuTp8+zXXXXYfFYuH999+na9eu/g5JCFHFSJ8WIUSJfPbZZ1gsFpo0aVLkTLdCCFFWJGkRQhRrx44dzJs3D4ChQ4cW2AFXCCHKmvRpEUIUqlu3buTk5DgndGvdujUDBgzwc1RCiKpKkhYhRKGOHz8O2Ge5vfrqqxk3bhwmk8nPUQkhqirpiCuEEEKIgCB9WoQQQggRECRpEUIIIURAkKRFCCGEEAFBkhYhhBBCBARJWoQQQggRECRpEUIIIURAkKRFCCGEEAFBkhYhhBBCBIT/B3hGt8lrFR5JAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 600x300 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"(gss2\n",
" .groupby('year')\n",
" [['age', 'hours_worked']]\n",
" .median()\n",
" .plot()\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {
"pycharm": {
"name": "#%%\n"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='year'>"
]
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAi0AAAFACAYAAABwa0xrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAABD0klEQVR4nO3dd2AVVeL//XcaCSGBEEqQkoR2Q1dEioLIUhQsgA1BQAIq0hQpAsrKfv3pLsWOq8iqoS6IoFSxAiJdSqiGThJCTCH09NzM80eee5fLTYDcBMKEz+uvMGfOnDPHe80nM2fOuBmGYSAiIiJyi3Mv6Q6IiIiIXA+FFhERETEFhRYRERExBYUWERERMQWFFhERETEFhRYRERExBYUWERERMQWFFhERETEFhRYRERExBYUWERERMQWFFhERETEFhRYRERExBYUWERERMQWFFhERETEFhRYRERExBYUWERERMQWFFhERETEFhRYRERExBc+S7oCImJdhGBiGUdLdEJECuLm54ebmVtLdKDYKLSJy3QzD4OLFi1y4cIG0tDSsVmtJd0lErsHDwwNfX1/Kly+Pv7+/qUOMm6E/k0TkOuTm5pKQkMD58+dLuisi4qKAgACCgoJwdzfn7BBdaRGR63L+/Hl7YAkMDMTf3x9vb29T/9UmUtoZhkFmZiYXL17kzJkznDt3Dh8fHypWrFjSXXOJQouIXJezZ88CULVqVSpVqlTCvRGR6+Xr64uvry+enp4kJSVx9uxZ04YWc14fEpGbyvbXGkD58uVLuDci4grbdzczM9O0E+gVWkTkmi7/H5yHh0cJ9kREXHX5d1ehRUREROQGUmgRERERU1BoEREREVNQaBERERFTUGgRERERU1BoEREREVNQaBERERFTUGgRERERU1BoEREREVNQaBERERFT0AsTRURukMOHD/Pzzz+zadMmTp06xZkzZyhXrhyNGzfmmWee4aGHHsq3XmJiIh9//DG///4758+f54477uDhhx9m6NCh/OMf/2Dp0qVMnjyZJ554wqnuqVOniIiIYOPGjSQkJODh4UHdunXp2bMnzzzzDJ6e+t++mJc+vSIiN8i//vUvtmzZgp+fH1WqVKFKlSokJyezadMmNm3axKBBgxg/frxDnRMnTtC3b19SUlLw8vKifv36ZGRkMGPGDLZs2ULNmjULbG/dunWMHj2a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asWUKVMcrhQFBgby/vvv061bN3bt2sWuXbu4++67gbxQe/LkSfz8/Hjvvffw9/e313vggQcYNmwY77///lXHtTTSnBYRKTYnLyzAnIEFIPf/73/xe+qppxwCi81dd90F5M2/sPn9998BeO655/I91sCBA+11bEGiuNx3330OgeVy1atXB/J+mRa3OnXqUKVKFZKSkuznlJWVxZ49e2jQoAEPPvgggMMiagXdGrKN37PPPusQWGyefvpp/P39uXTpEpGRkfn25/HHH7+ufv/yyy+88MILZGRkMHXqVKfAAvDTTz/Z281vBVpfX1/uu+8+wDG02c6jZ8+eDoHFpk+fPvmeX2mnKy0iUmxqlX/WtFda3PCgVvlnb8ixQ0ND891uu02QlpYGwMWLF+0vlrVYLPnWqVq1KgEBAZw7d47jx4/br9AUB9s8lfw8//zzvPnmm0yaNImIiAjatWvH3XffTatWrahSpUqR227VqhXff/8927Zto3bt2kRGRpKZmUnr1q2pWrUqtWvXZseOHVitVjw8POyhxXaVxsYWegoaP29vb4KDgzlw4ADHjx+nXbt2TvvUrVv3mv1ds2YNM2bMwMvLi3//+9888MAD+e5nWzb/q6++crj9c7n4+HgAh7kzx48fv2pf/P39qVq1KqdOnbpmX0sThRYRKTYNK72OpeKrmtNyhbJl8z+u7S9v2yvgUlNT7WW2QJOfKlWqcO7cOYf9i4Ovr2+BZb169cLPz4+IiAj2799PdHQ08+fPx93dnbZt2/L6669f1y/7grRu3doeWnr37u0USlq1asWiRYs4cOAATZo0sc9nuTK02MbkWuN3+b5Xuto42MTFxWG1WgkMDHSYPHylixcvAnm3s67FNn8I/hdkr3YelStXVmgRESkKD/eyeHBjfvmXdpfPr0hJSaFixYr57pecnOy0v5ubG/C/AJQf2y9CVz388MM8/PDDnD17lp07d/LHH3+wevVqNmzYwOHDh1m5cqV9smhh2W7zbN++Hci7VeLh4UHLli0BaNOmDYsWLWLr1q24u7tz4cIFatWqxR133OFwnHLlynHhwgVSUlIKbCu/8Susfv36ERcXx8qVK+nfvz/z5s3L94qar68vFy5cYPHixTRr1uy6j28LTlc7D9tVuduJ5rSIiNwi/P39qVy5MgCHDx/Od5+kpCT7uh6X386xXc0p6BfZ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\n",
"text/plain": [
"<Figure size 600x300 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"(gss2\n",
" .groupby('year')\n",
" [['age', 'hours_worked']]\n",
" #.mean()\n",
" #.median()\n",
" #.std()\n",
" .max()\n",
" .plot()\n",
")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
},
"scrolled": true
},
"outputs": [],
"source": [
"# add sex\n",
"(gss2\n",
" .groupby(['year', 'sex'])\n",
" [['age', 'hours_worked']]\n",
" .mean()\n",
" #.median()\n",
" #.std()\n",
" #.max()\n",
" #.plot()\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='year,sex'>"
]
},
"execution_count": 71,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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trYW69atwxtvvIE33ngDp5xySmBMV6Curg7HHnssVq9ejfHjx3tzBYDXXnsN559/PizLQnl5uVeAtGbNGrz44otYunQpjjzyyA4dd6+99sILL7yAd999F2PGjPGWf/LJJ2hvbwcAvP/++7BtG4bhxxTc6ra9996b29+bb76J888/H62trSgtLcV2222HhoYGvPvuu3j33Xfx8ssv47bbbvM+m4h77rkHN998MwYOHIjRo0djzZo1kZ9h6dKlOOOMM7BixQqccMIJuOaaa7y5Ll26FGeeeSaWLVuGRCKBESNGIJVKYenSpbjnnnvwwgsv4G9/+1vATuiTTz7BD3/4Q7S0tCCdTmP8+PFoaGjAzTffjHnz5kWfWI1I9BpCJWLChAmYOXMmDj74YCxcuBCzZ8/Gd7/73Vhjd999dwBAfX096uvrpU7rfRl8Y+TSbhNj895LcQlVjXIfGhodQd5ug01zPT2NomCQZCxtY0dw8803Y9q0abjyyis9bekLL7yASy65BA8//DCmT5/uFfF8+eWXuPrqq2FZFk4//XRccsklXsGOS7RmzZqFiRMn4thjj+3SeT7yyCOYOHEiHnzwQWy99dYA4BGaW265BZZl4ayzzsJPf/pTrojoq6++8gqSOoK9994bL7zwAt5++20cd9xx3vK3334bgJMNWbt2LRYuXOjpbG3b9o7JEqqNGzfi4osvRmtrK77zne/g2muvRUWFY0Pzxhtv4MILL8TLL7+Mu+66CxdccIF0PrfddhtmzJiBk046CYZhwLZtWJYl3RYAFixYgDPPPBMbN27EOeecg4svvthbl8lkcO6552LZsmU4+uijcfnll2PQoEEAHAJ71VVXYc6cOfjZz36Gv//979y4Sy65BC0tLTjooINw0003obra+U1//fXXceGFF4bOSSMeei2hAoCKigrsvffeePHFFzF//vzYhIr1tOqPoUyuwi9muq8jSHaEUG3GKj+N/o+FG6/HssZZYDWDfQMGRledgh0GBdNHncXYsWNx7bXXchH7I444As899xzmzJmD119/3SNU9913H3K5HHbfffdA+m7atGn4/PPPcd999+FPf/pTlxMq0zRxxx13YPjw4d6ykpISAMDixYsBAGeddVagInv8+PEYP358h4+7zz77AADeffddbvk777wDQgjOOussXHfddXjnnXc8QvXZZ5+h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7VrsvPPOOPXUU7tkfxo9h974m5Ho6MA///nPWL9+Pa644gqYpsmtW79+PebOnYv//e9/+PTTT7Fw4UJkMhnsvffeePDBByP3vWjRIvzlL3/B22+/jfXr16OyshK77LILTjvtNOy7777SMVOmTMHKlSsj97311ltjzpw53vt8Po+3334br732Gj766CMsWbIE7e3tqKmpwc4774wTTjgBBx10UOR+i0Wc+U6dOhV33XVXlx+7OxF1XXz22WcAgMceewz33HNPl1wXu+66K55++mmcdtppmDBhQmCcZVl49NFH8fzzz+PLL79Ea2srKioqsMMOO2DatGk4+uijQQiJ9fluuukm3HvvvQCA733ve7jhhhtijYuL2trayG1OPfVUXHXVVV163O5G1HWxbNkyAMBdd92Fa665ptPXxc4774yRI0fi3nvvxfHHH4+hQ4dKxz7//PN47LHHsHDhQrS1tWHYsGE46KCDcPbZZ2PIkCGhx6WUYvbs2XjqqaewcOFCNDY2oqamBuPGjcOBBx6IH/3oRzHPTjSmT5+Od999N3SbCRMm4JlnnumyY24uqK4NSimWLl0KAHj99dexzz77oLm5GZWVldhxxx0xbdo0HHXUUaF/uy0tLfjzn/+MF198EatWrUJZWRmGDBmCd955B3PmzMGUKVMCYzp7/wKAtrY2PPTQQ3jxxRexdOlSZDIZDB48GBMnTsTRRx+Ngw8+uMizpEZ//c3Y3Pj2t7+N2trayN+MMHSIUK1duxb3338/xo4diyOOOCKwfvbs2bj++us7smu89NJLuOyyy5DJZFBZWYkJEyZgw4YNeO211/Daa6/hkksuwdlnnx0Yt9NOO2HYsGHK/X766afI5XLYfffdueVPPvkkrr76agCAYRgYPXo0ysvLsXTpUsyZMwdz5szBCSecgGuvvTb2TbcYjB07FgMHDpSuGz9+fJcfrzsR57p4+eWXvW2LQdh14eKmm27Cfffdx41rb2/Hj370I7z//vsAgKFDh2LUqFFYu3Yt3nrrLbz11lt4+eWXcfvtt8MwwgO2CxYswAMPPFDUvDuK7bffHhUVFdJ1o0aN2ixz6CrEuS4++OADAMDy5cuL2rfqunj99de9be644w5cd9113DjbtnHZZZdh9uzZAICRI0di1KhR+Prrr/Hggw/iueeew4MPPojtt99eetyWlhb85Cc/wZtvvgnA+U5GjBiBjRs34r333sNnn33WpYTKxVZbbYWtttpKum7s2LFdfrzuRti18fbbb+Puu+8GANTV1WHUqFHYeuutsXLlSsydOxdz587F7NmzcccddyCVSgX2XVdXh5NPPhmLFy9GKpXC+PHjUVdX5z3IXn311fjvf/8b+LvvzP0LcAj+j3/8Y6xcuRKJRALbbLMNUqkU1q1bh5deegmEkC4lVC76029GT4AQgvPOOw8XXnih9DcjDjpEqB555BG0t7fjmGOOkd6EKioqsO+++2LnnXfGzjvvjAULFsSKtCxfvhw/+9nPkMlkcMopp+Dyyy9HOp0GAPzzn//Ez372M9xyyy3YZZdd8I1vfIMbe/vttyv3u2LFCu8CPvbYYwPra2trMX36dBx22GGorKwE4EQ1HnjgAfz+97/HI488ggkTJuDkk0+O/AzF4uyzz8YxxxzT5fvtCcS5LkaNGoXly5fj8MMPxzbbbNNl10Uul8PcuXOxaNEijBs3zht777334v3330c6ncb//d//cU+ks2fPxs9//nP8+9//xlNPPSW9Nlzk83lcddVVSKVS2GuvvfDWW28Vc2qKxtVXX4199tmnW4+xuRDnuhgyZAjWr1+PH/zgB6iqqurS6+Kpp57CZZddhurqam/sX/7yF8yePRtlZWW47bbbcOCBBwIAWltb8atf/QrPPvssfvKTn+D5558P3KwppfjpT3+KN998EwcccABmzJiB0aNHe+sbGxvx3nvvdehcReHYY4/FT3/6027Zd08g7NqglGLAgAHYtGkTjjjiCNx6663euqeffhq//OUv8dprr+G2227Dz372s8C+r7rqKixevBgTJ07En/70JwwbNgyUUjz66KOYMWMGNm7ciIcffhg/+MEPuHEdvX8BDok77bTTsH79epxxxhk499xzUVVV5a1ftWoVVqxYUcwpio3+9JvRU5g6dSpqamrwzDPPBH4z4qBoDZVlWXj88cdBCMFRRx0l3eb73/8+/vrXv+KSSy7BIYccgkGDBsXa96xZs9De3o7x48fjqquu8n4cAeDwww/H9OnTAQC33XZbUXN++umnQSnFVltthcmTJ3PrDjnkEDzzzDM47rjjPDIFAIlEAj/60Y9w3HHHAXD+8DXUiHtdHH300QCAcePGdfl1AQD/+Mc/uLFuevfEE08MhPePPPJITJs2DQC4iIYM9913HxYsWIALL7wQw4cPjzVvjfjXxf777w8AmDhxYpdfFy6pcmHbNv76178CAM455xyPTAFAWVkZrrvuOmy11VZYunQpN87Fk08+iblz52LXXXfF3XffzZEpAKiqqsLUqVNjfYYtGVHXxi677IJLL70UALjvFgCmTZuG888/HwDw+OOPw7Ztbv2CBQswZ84cGIaBW2+91cteEEJwwgknYM899wQALwLGoqP3LwC48cYbPTJ1+eWXc2QKAEaMGIG999479v40Ni+SySQOP/xwZDIZ6d9+FIomVO+99x7Wrl2LCRMmYMSIEUUfMAxu2P/ggw8O6CwA50cSAD766KPYLJ9SiqeffhoAcPTRRweegmpqakJTee6P7eLFi2MdrzvR0tKCmTNn4thjj8Uee+yBXXbZBYcddhhuvvlm1NfXS8fU1taitrYWK1aswIcffogf//jH2GeffTBp0iRMnz6de5JetGgRLr30Uuy///7YeeedMW3aNLzwwgvS/TY2NuLxxx/HT37yExx66KHYfffdsXbtWqRSKTz22GNoamrq0Gesq6vDLbfcgqOOOgq77747dtttN/z9738HABx00EGh1wUAPPvss9y6TCYDAIGbnosxY8YAcG66Kixbtgx33nknJk6cyJG33gLZOTv66KMxc+ZMtLW1BbZfsWKFd10AwGuvvYbp06djjz32wF577YWzzjrL07oBwMcff4xzzjkHkydPxq677ooTTzxRGaFbv349Zs2ahR//+Mc4+OCDsdtuu2Ht2rVIp9P417/+hWw226HPuHLlSlx33XU49NBDseuuu2LSpEkeeZ4yZUrkdcEKVxcvXoy6ujoAwGGHHRYYV1JSgm9961sAHI2ViPvvvx8AcO655yKR6LAMtduRzWYxa9YsnHzyydh7772x0047YerUqbj22muxZs0a6ZgpU6agtrYW77zzDr766itceOGF+MY3voHddtsNxx57rJeyB5x03YwZM/DNb34TO++8Mw477DA89NBD0v22t7dj9uzZuPTSS3HEEUdg0qRJ3rUxYMAA6XmsqKiQfq8u3N/m+vp6fO973+N+E6+99loAwOTJk72/cRYuGVu/fj3Wr1+vPEYxWL9+PZ5//nkkk0mpLKU3oTf/Zuyyyy6YNGkSvv/97+O+++7r0t+M4447DrNmzYJlWcpx7sOQ7G8/Ch0iVIDz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\n",
"text/plain": [
"<Figure size 600x300 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# add sex\n",
"(gss2\n",
" .groupby(['year', 'sex'])\n",
" [['age', 'hours_worked']]\n",
" .mean()\n",
" #.median()\n",
" #.std()\n",
" #.max()\n",
" .plot()\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead tr th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe thead tr:last-of-type th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th colspan=\"2\" halign=\"left\">age</th>\n",
" <th colspan=\"2\" halign=\"left\">hours_worked</th>\n",
" </tr>\n",
" <tr>\n",
" <th>sex</th>\n",
" <th>Female</th>\n",
" <th>Male</th>\n",
" <th>Female</th>\n",
" <th>Male</th>\n",
" </tr>\n",
" <tr>\n",
" <th>year</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1972</th>\n",
" <td>45.987545</td>\n",
" <td>43.916771</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1973</th>\n",
" <td>43.974968</td>\n",
" <td>44.417973</td>\n",
" <td>32.707790</td>\n",
" <td>44.534737</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1974</th>\n",
" <td>43.676807</td>\n",
" <td>45.638607</td>\n",
" <td>35.146259</td>\n",
" <td>42.908276</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1975</th>\n",
" <td>44.265030</td>\n",
" <td>44.359703</td>\n",
" <td>34.561562</td>\n",
" <td>42.371231</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1976</th>\n",
" <td>45.739708</td>\n",
" <td>44.725636</td>\n",
" <td>34.586884</td>\n",
" <td>43.160633</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1977</th>\n",
" <td>45.196407</td>\n",
" <td>44.015987</td>\n",
" <td>36.521851</td>\n",
" <td>43.727459</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1978</th>\n",
" <td>44.438278</td>\n",
" <td>43.420559</td>\n",
" <td>35.075520</td>\n",
" <td>45.488323</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980</th>\n",
" <td>45.365524</td>\n",
" <td>44.475819</td>\n",
" <td>37.208790</td>\n",
" <td>44.019650</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1982</th>\n",
" <td>45.696545</td>\n",
" <td>43.700260</td>\n",
" <td>35.313110</td>\n",
" <td>43.709553</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1983</th>\n",
" <td>44.885082</td>\n",
" <td>43.521107</td>\n",
" <td>36.060467</td>\n",
" <td>44.303535</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1984</th>\n",
" <td>44.964367</td>\n",
" <td>42.606365</td>\n",
" <td>37.340660</td>\n",
" <td>43.976246</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1985</th>\n",
" <td>46.429253</td>\n",
" <td>44.830902</td>\n",
" <td>37.522564</td>\n",
" <td>44.287170</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1986</th>\n",
" <td>46.746445</td>\n",
" <td>43.636509</td>\n",
" <td>38.102093</td>\n",
" <td>44.958057</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1987</th>\n",
" <td>45.631527</td>\n",
" <td>43.976715</td>\n",
" <td>38.319569</td>\n",
" <td>43.649738</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1988</th>\n",
" <td>46.802147</td>\n",
" <td>43.496864</td>\n",
" <td>37.577877</td>\n",
" <td>45.116329</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1989</th>\n",
" <td>46.524628</td>\n",
" <td>44.013638</td>\n",
" <td>37.166283</td>\n",
" <td>45.080170</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1990</th>\n",
" <td>47.022137</td>\n",
" <td>44.602650</td>\n",
" <td>36.697182</td>\n",
" <td>45.163895</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1991</th>\n",
" <td>46.673122</td>\n",
" <td>44.180817</td>\n",
" <td>36.435375</td>\n",
" <td>44.133484</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1993</th>\n",
" <td>46.707741</td>\n",
" <td>45.165203</td>\n",
" <td>38.016426</td>\n",
" <td>45.667358</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1994</th>\n",
" <td>46.800823</td>\n",
" <td>44.874321</td>\n",
" <td>38.818832</td>\n",
" <td>44.664139</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1996</th>\n",
" <td>45.230625</td>\n",
" <td>44.207783</td>\n",
" <td>39.044651</td>\n",
" <td>45.631687</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1998</th>\n",
" <td>46.316875</td>\n",
" <td>44.566776</td>\n",
" <td>38.455215</td>\n",
" <td>45.319736</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2000</th>\n",
" <td>46.936871</td>\n",
" <td>44.840000</td>\n",
" <td>38.497280</td>\n",
" <td>45.371525</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2002</th>\n",
" <td>46.806156</td>\n",
" <td>45.629902</td>\n",
" <td>38.625282</td>\n",
" <td>45.088966</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2004</th>\n",
" <td>46.258022</td>\n",
" <td>45.613636</td>\n",
" <td>39.110600</td>\n",
" <td>45.319553</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2006</th>\n",
" <td>47.655861</td>\n",
" <td>46.496738</td>\n",
" <td>39.203403</td>\n",
" <td>44.876713</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2008</th>\n",
" <td>47.989872</td>\n",
" <td>47.378639</td>\n",
" <td>38.021240</td>\n",
" <td>45.529781</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2010</th>\n",
" <td>48.112076</td>\n",
" <td>47.779774</td>\n",
" <td>38.568108</td>\n",
" <td>44.497208</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012</th>\n",
" <td>48.540592</td>\n",
" <td>47.768360</td>\n",
" <td>38.494583</td>\n",
" <td>44.183567</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2014</th>\n",
" <td>49.203449</td>\n",
" <td>48.779438</td>\n",
" <td>39.233730</td>\n",
" <td>44.596256</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016</th>\n",
" <td>49.818928</td>\n",
" <td>48.329403</td>\n",
" <td>37.903980</td>\n",
" <td>44.160355</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018</th>\n",
" <td>48.740711</td>\n",
" <td>49.255482</td>\n",
" <td>38.154713</td>\n",
" <td>44.599998</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" age hours_worked \n",
"sex Female Male Female Male\n",
"year \n",
"1972 45.987545 43.916771 NaN NaN\n",
"1973 43.974968 44.417973 32.707790 44.534737\n",
"1974 43.676807 45.638607 35.146259 42.908276\n",
"1975 44.265030 44.359703 34.561562 42.371231\n",
"1976 45.739708 44.725636 34.586884 43.160633\n",
"1977 45.196407 44.015987 36.521851 43.727459\n",
"1978 44.438278 43.420559 35.075520 45.488323\n",
"1980 45.365524 44.475819 37.208790 44.019650\n",
"1982 45.696545 43.700260 35.313110 43.709553\n",
"1983 44.885082 43.521107 36.060467 44.303535\n",
"1984 44.964367 42.606365 37.340660 43.976246\n",
"1985 46.429253 44.830902 37.522564 44.287170\n",
"1986 46.746445 43.636509 38.102093 44.958057\n",
"1987 45.631527 43.976715 38.319569 43.649738\n",
"1988 46.802147 43.496864 37.577877 45.116329\n",
"1989 46.524628 44.013638 37.166283 45.080170\n",
"1990 47.022137 44.602650 36.697182 45.163895\n",
"1991 46.673122 44.180817 36.435375 44.133484\n",
"1993 46.707741 45.165203 38.016426 45.667358\n",
"1994 46.800823 44.874321 38.818832 44.664139\n",
"1996 45.230625 44.207783 39.044651 45.631687\n",
"1998 46.316875 44.566776 38.455215 45.319736\n",
"2000 46.936871 44.840000 38.497280 45.371525\n",
"2002 46.806156 45.629902 38.625282 45.088966\n",
"2004 46.258022 45.613636 39.110600 45.319553\n",
"2006 47.655861 46.496738 39.203403 44.876713\n",
"2008 47.989872 47.378639 38.021240 45.529781\n",
"2010 48.112076 47.779774 38.568108 44.497208\n",
"2012 48.540592 47.768360 38.494583 44.183567\n",
"2014 49.203449 48.779438 39.233730 44.596256\n",
"2016 49.818928 48.329403 37.903980 44.160355\n",
"2018 48.740711 49.255482 38.154713 44.599998"
]
},
"execution_count": 73,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# unstack\n",
"(gss2\n",
" .groupby(['year', 'sex'])\n",
" [['age', 'hours_worked']]\n",
" .mean()\n",
" .unstack()\n",
" #.median()\n",
" #.std()\n",
" #.max()\n",
" #.plot()\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th>sex</th>\n",
" <th>Female</th>\n",
" <th>Male</th>\n",
" </tr>\n",
" <tr>\n",
" <th>year</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1972</th>\n",
" <td>45.987545</td>\n",
" <td>43.916771</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1973</th>\n",
" <td>43.974968</td>\n",
" <td>44.417973</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1974</th>\n",
" <td>43.676807</td>\n",
" <td>45.638607</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1975</th>\n",
" <td>44.265030</td>\n",
" <td>44.359703</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1976</th>\n",
" <td>45.739708</td>\n",
" <td>44.725636</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1977</th>\n",
" <td>45.196407</td>\n",
" <td>44.015987</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1978</th>\n",
" <td>44.438278</td>\n",
" <td>43.420559</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980</th>\n",
" <td>45.365524</td>\n",
" <td>44.475819</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1982</th>\n",
" <td>45.696545</td>\n",
" <td>43.700260</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1983</th>\n",
" <td>44.885082</td>\n",
" <td>43.521107</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1984</th>\n",
" <td>44.964367</td>\n",
" <td>42.606365</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1985</th>\n",
" <td>46.429253</td>\n",
" <td>44.830902</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1986</th>\n",
" <td>46.746445</td>\n",
" <td>43.636509</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1987</th>\n",
" <td>45.631527</td>\n",
" <td>43.976715</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1988</th>\n",
" <td>46.802147</td>\n",
" <td>43.496864</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1989</th>\n",
" <td>46.524628</td>\n",
" <td>44.013638</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1990</th>\n",
" <td>47.022137</td>\n",
" <td>44.602650</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1991</th>\n",
" <td>46.673122</td>\n",
" <td>44.180817</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1993</th>\n",
" <td>46.707741</td>\n",
" <td>45.165203</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1994</th>\n",
" <td>46.800823</td>\n",
" <td>44.874321</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1996</th>\n",
" <td>45.230625</td>\n",
" <td>44.207783</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1998</th>\n",
" <td>46.316875</td>\n",
" <td>44.566776</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2000</th>\n",
" <td>46.936871</td>\n",
" <td>44.840000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2002</th>\n",
" <td>46.806156</td>\n",
" <td>45.629902</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2004</th>\n",
" <td>46.258022</td>\n",
" <td>45.613636</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2006</th>\n",
" <td>47.655861</td>\n",
" <td>46.496738</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2008</th>\n",
" <td>47.989872</td>\n",
" <td>47.378639</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2010</th>\n",
" <td>48.112076</td>\n",
" <td>47.779774</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012</th>\n",
" <td>48.540592</td>\n",
" <td>47.768360</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2014</th>\n",
" <td>49.203449</td>\n",
" <td>48.779438</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016</th>\n",
" <td>49.818928</td>\n",
" <td>48.329403</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018</th>\n",
" <td>48.740711</td>\n",
" <td>49.255482</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"sex Female Male\n",
"year \n",
"1972 45.987545 43.916771\n",
"1973 43.974968 44.417973\n",
"1974 43.676807 45.638607\n",
"1975 44.265030 44.359703\n",
"1976 45.739708 44.725636\n",
"1977 45.196407 44.015987\n",
"1978 44.438278 43.420559\n",
"1980 45.365524 44.475819\n",
"1982 45.696545 43.700260\n",
"1983 44.885082 43.521107\n",
"1984 44.964367 42.606365\n",
"1985 46.429253 44.830902\n",
"1986 46.746445 43.636509\n",
"1987 45.631527 43.976715\n",
"1988 46.802147 43.496864\n",
"1989 46.524628 44.013638\n",
"1990 47.022137 44.602650\n",
"1991 46.673122 44.180817\n",
"1993 46.707741 45.165203\n",
"1994 46.800823 44.874321\n",
"1996 45.230625 44.207783\n",
"1998 46.316875 44.566776\n",
"2000 46.936871 44.840000\n",
"2002 46.806156 45.629902\n",
"2004 46.258022 45.613636\n",
"2006 47.655861 46.496738\n",
"2008 47.989872 47.378639\n",
"2010 48.112076 47.779774\n",
"2012 48.540592 47.768360\n",
"2014 49.203449 48.779438\n",
"2016 49.818928 48.329403\n",
"2018 48.740711 49.255482"
]
},
"execution_count": 74,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(gss2\n",
" .groupby(['year', 'sex'])\n",
" [['age', 'hours_worked']]\n",
" .mean()\n",
" .unstack()\n",
" .age\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
},
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f475cc8d610>"
]
},
"execution_count": 75,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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584G+9W9e3fmzp1b67GvvvqKt956i7Vr1+J2u+nduzdnnXUW//jHP7BarQ2/6TbU2s8bwOPx8P777/PZZ5+xfv167HY78fHxDB48mNGjR3P22WejlKr1Wq01H374IR988AEbNmwAYMCAAZx33nn8/e9/r/O69qAtnjXAZ599xgcffMCaNWtwOBx06dKFE088kWuuuYaMjIx6r+3In22tNcuWLWPu3LksWbKETZs2UV5eTkJCAkOGDGH06NH87W9/q/MzU1FRwUsvvcRXX33Frl27iI2N5cADD+SKK67giCOOqPfeCxYs4LXXXuP333/HbrfTrVs3TjvtNK6++mpiY2PrvK4p92xLbfGsm/LzBOB2u3njjTf45JNP2LZtG1arlUGDBjF27FhOPfXUJj2Pltbaz7up92vMPYVoS0prrdu6E6+//jpTp06tUd/QX3Jff/01t912G06nk4SEBPr06UNBQQG7d+8G4NZbb+Waa66pcd2NN95Ifn5+ne2uWLECt9vNmWeeyRNPPFHj+KOPPsr06dMB6NWrFzExMWzYsAGv18thhx3G9OnTsdlsDb7vttLaz7uyspL/+7//Y/HixQBkZmaSkZFBXl4eBQUFAJxyyik888wzmEyhX1r4fD5uueUWvvzyS8AfCANGYHzGGWfwxBNPtNuguLWftc/n47bbbuPzzz8HoEePHiQnJ7Np0ybsdjvJycnMmDGD7OzsWu/b0T/bv/76K+PGjTPKPXv2JDExkZ07d7J3714ATjzxRJ599tka76OoqIiLL76YzZs3Y7PZGDBgAEVFReTm5qKU4t577+WSSy6p9b4zZszgoYceQmtNVlYWqampbNiwAZfLRf/+/Zk5cybJyck1rmvKPdtaWzzrxv48ATidTi6//HKWLFmC2WxmwIABOBwOtm3bBsBVV13FbbfdFuFTaD2t/bybcr/G3lOINqXbgQ8++ECPGzdOP/HEE/rrr7/WTz31lM7OztaXXnppndds27ZNDx8+XGdnZ+spU6boyspK49gXX3yhhw4dqrOzs/X8+fMj6sv27dt1Tk6Ozs7O1r/88kuN419//bXOzs7WBxxwgP7222+N+g0bNuiRI0fq7OxsPXXq1Iju2dpa+3k/99xzOjs7Ww8bNkx/9913Icc+++wzPWTIEJ2dna0//PDDGte+9tprOjs7Wx9++OF66dKlRv3S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0bNnzwbvOX78eABefvllY7QN/PlgJ02aBPgDldTU1IjeS0fQmOedmprKCSecAMDDDz9cIyj+5JNPeOGFFwD/7oDBI/RWq5VrrrkGgMceeyxkY49ly5bx+OOPA/48xxZLh5/9E6Kxn+3c3Fxmz54dsvuTz+fjm2++4brrrkNrzXXXXUf//v1rXLs/fLa9Xi8TJkxg3rx5ZGRk8MYbb4T1cz106FBOOukkvF4vt9xyC3v27AH83yC99957zJkzB5PJxHXXXVfj2uuvvx6lFHPmzOG9995Daw3Anj17uPXWW/H5fJx88skMGjSo2e7ZHrTFs26s9PR0IwPLPffcE5K/e+7cubzyyisA/POf/2y2eza31n7ejb1fU+4pRFtSuvpv7za0e/duRo8ebZRdLhd2ux2LxRIyaf/KK6/kqquuMspnn302a9euJT09naysLMrLy42E4Dk5ObzyyitkZmbWed+KigqOPfZY7HY7U6dOrXV3uto8/PDDvPHGG4A/8XhsbCzr16/H6/UyYsQIXnvttRorytuT1n7eubm5XHrppca814yMDDIzM9m5c6exu9pBBx3E9OnTa4wW+Hw+brrpJr7++msABgwYAMCGDRsA/6jbtGnTamyz3V609rNes2YNo0ePNhLfJyUlsWPHDoqLi1FKcfnll3PnnXfW2d+O/tn+7LPPmDBhAgDdu3evc9c9gHvvvZchQ4YY5aKiIi666CK2bNmCzWZjwIABFBcXs3v3bpRS3HPPPTU2j6n2+uuv88gjj6C1pmvXrqSkpLBhwwZcLhd9+/Zl5syZtf4i0ZR7trW2eNaN/XkCf3qvcePGsWzZMsxmMwMHDsRutxtzh6+44op6fzbaWms/76bcr7H3FKIttYthNa/XG7LtbDWPxxNSv2++wksvvZSvvvqKP//8k3Xr1hEbG8uIESM444wzOP/88+vNgQiB3MOxsbHGVzzhuPvuuzn44IOZOXMma9asYc+ePfTv35+zzjqLcePGNXjfttbazzsrK4vZs2fz1ltv8d1337Fp0ybWrl1LfHw8hx12GKeffnqd15tMJp555hnef/99PvjgAzZu3Aj4F5Odf/75nHfeefXO+25rbfGsx40bx6JFi9i5cye7d+8mLS2NM888k4svvrjBOccd/bMdPNd8586dIbvx7ausrCyknJqaykcffcTLL7/Ml19+yYYN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\n",
"text/plain": [
"<Figure size 600x300 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"(gss2\n",
" .groupby(['year', 'sex'])\n",
" [['age', 'hours_worked']]\n",
" .mean()\n",
" .unstack()\n",
" .age\n",
" .plot()\n",
" .legend(bbox_to_anchor=(1,1))\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
},
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f475404df40>"
]
},
"execution_count": 76,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAsQAAAFACAYAAAC7nGrQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAABvW0lEQVR4nO3dd3hUVf7H8fedml4hIXQFQ1NQsWBXQFdX17529qeuoljWrmtdXfuubdW1rWLBxS6o2IW1IxZEaSIgNSGF9DJJppzfH5NMMqSQMmnk83oeHuaee+8537mE5Jszp1jGGIOIiIiISB9l6+4ARERERES6kxJiEREREenTlBCLiIiISJ+mhFhERERE+jQlxCIiIiLSpykhFhEREZE+TQmxiIiIiPRpSohFREREpE9TQiwiIiIifZoSYhERERHp05QQi4iIiEifpoRYRERERPo0JcQiIiIi0qcpIRYRERGRPk0JsYiIiIj0aUqIRURERKRPU0IsIiIiIn2aEmIRaZIxhtVFj/DpxkNYU/Rol7TpD3jIqfiAoqrvCZiaLmlTRETEMsaY7g5CRHqeTaWvsqLg1tDxXgOeITV6v05rr9K7kcW5F1Hh/Q0AuxVDStTepEbvT2r0fsQ6R2BZVqe1LyKRZ4xBaYZ0Jcuy2vWzQglxH2OMH8uyd3cY0sOVVq9g0ZYzwnpp45y7sN+gN7BZjoi3V+j5jiV5l+ENFDd7jdueFkqOU6P3w23vF/E4pGP8gWo2lb1EcdUSBsefTL+YA7s7JOlixhjKysooLS2lsrISv9/f3SFJH+RyuYiPjyc1NRW7vXU5jxLiPuS34idZU/QYaTGHMT7tH9gsV3eHJD2QL1DOwqyTqfRtbHRuTOrNDE04PaLtbS57gxVbb8PgC5VZODF4W7wvzplZmxzvT0rUXtht0RGNS1rPGENOxfv8WvQAVb7s2lKL0ak3MCzhzG6NTbpOIBAgJyeHkpKS7g5FBICoqCiGDh3aqqRYCXEfUeMv4tONB2MI/rY+OP4UxvW7tXuDkh7HGMNP+VeSW/FhbYlFons8JdU/AeC0JXLg4Pdx2ZMi0JafVYX3saH0+VCZzXIxrt/tpMccTlH1Ygo8X1Pg+Zqyml9arMvCSXLUnqEEOcE1psOfhARMDf6AB5+pxB/wYFk2YhxDsSxNvWiouOonfim8J/Q1sq2dEs9jl+TL9dz6gKKiInJycgBISUkhPj4et9utoU7SpQKBABUVFeTm5uL3+0lNTSUtLW2790UkIf7ss8+YPn06AIMGDWLBggWNrhk1alSLdfTr14+vvvqqo6FIMzaXvcHyrTeHlY3rdzuD40/qpoikJ9pQ+l9+KbgzdDwi6SKGxJ/KF5uPwm8qARiacCZjUm/sUDu+QDk/5V3NVs/noTKXPZU90h4lKWpCo+ur/QUUer6hwLOQAs/XVPlzWqzfaUskJWpfUqL3wcKB33jwBzz4TSV+U4kvUFlbVhl+LpQAV4b1WDesNzlqIslRe5MctRfxrlGdMoRke4wxVPlzqKhZi9vRnzhnZpcnHR5vFr8WPUhOxXth5RYOnLYEagKFobKM2D+wa//b9anUDu63336jurqatLQ0UlNTuzsc6eNKSkrIzs7G5XIxYsSI7V7f4e/kFRUV3Hrrra2+ftddd8XlavxNMSkpqaOhSAtyQj1+9VZs/Ttxrl1Ico/vhoikpympXsqqgntDxylRkxiRNAPLsrNz0oWsLnoAgE2lLzMk/hTiXLu0q51K7yZ+zL2Ycu+aUFm8axR7pP+baMfAJu9x21PJiDuajLijMcZQ6V3P1qpg73Gh51v8piLsem+ghNzKj8it/KhdMTbHGyghr3IBeZXBX/rtVizJUXuSHLUXyVF7kegeF/GkL5j8bqG0egWl1csprVlOafWKsIQzzpnJoPgTGRh3DC57SkTb35YvUM5vxU+xofSFRiuBpMVMJTPlSuxWFD/kXEi591cAtlS8Q42/gN3T/4XDFtup8Un3MMZQXV0NQEJCQjdHIwKxscHvNTU1NRhjtttp0OEe4jvuuINZs2YxZcoU5s+fv90e4vnz5zN48OCONCltVOMvrh0uEezxsllRBEwVAFH2AUwa9Bpuu36b78u8/hIWZp+Mx5cFgMvej/0HvRmauBYwNXy5+Q94fJsASI3an4kD/tPmXsmiqu/5MfcyvIGiUFlazBR2639PuxOlgPFSUr20dnjFN5RU/xQaGhQpFo7aOlv+dmmzokhyTyA5ai9SovYm0T0euy2q1e0YY6jyZVNSs5yy6hWU1AST4IbPa3tx9o85jMHxJ5IafUBEe68DxkdW2RusKXokLBkHSHCNZVTKdaRE7x0q8wbK+DH3Uoqqvg2VxbvGMDH9CdyO/hGLS3qGQCDAqlWrgODPe5tNQ2Ske7X1a7JD3y2XLFnCf//7X6ZMmcLUqVOZP39+R6qTTpJf+b9QMuyypzK+/z/5Ied8DH6q/Dn8nHc1Ewf8p1s++u0rAsaLhb1N4ygDxovHl0WldwOV3o1UeDdQ6duAMT5GJl9MctReEYnNGMOyrTeGkmGwMaH//WGrONgsF6NTruXHvEsBKKj6mvzK/5EWO7nV7TQ1eW7nxOmMTP5Lh8aX2ixnbS/tnoxMvgRfoJxCz7cUVH1NWfUqLMuJwxaD3YrGbovBbsVgt0WH/naEjqOxW7GNy2zR2CwX3kAZxVWLKar6gaKq7ympXtZoWEXAVFFYtYjCqkWsJTi2OdG9Gym1PchJUXuEEn9jDB5fVm2Pb7DXt7RmRYsrbWzLZU+lxl8QOjb4yKv8mLzKj3Hb+zMw7jgGxZ9IrHN4u58vwNbKr1hV+A/KvavDyt32NHZJvpyBccc2+jd02uLZa8BTLM2/npyK9wEoq1nJoi1nMDH9KWJdO3UoJhGRSGp3BuT1ern55puJiorilltu4euvv45kXBJBDYdLpMccTmr0JDJTrmZVYfDj8cKqRawuepBRKdd0V4g7tF8LH2B9yXMY/Dhs8Tht8Ths8ThsCaHXTlsCDlsc3kAJld6NVHo34PFlNdvT+WPurxw05AOctvgOx7eh9PnQEACAXZIvDevpq9M/ZjKpUftRULUQgFWF/6BfzIHbHSJgjJ9fC+9nfelzobLg5Lm/MzDu2A7Hvy2HLY602MltStZbw2mLp3/MIfSPOQQAX6CSkuqfKKz6vjZB/qnREAKDl+LqxRRXL4aSp7CwE+8ai9MWV5v8tn42fpRjIAmucSS6x5LgGkeCeywuewoV3vVklb1JdvlbVPvzQ9dX+/NZV/I060qeJsm9J4PiT2BA7JFt6okvr1nDqsJ/stXzRVi53YpmeOK5DE88B4ctptn7bZaL8f3/idueFpo86fFlsWjLGeyZ/jhJUbu3OhYRkc7U7oT4ySef5Ndff+X6669nwIABrb7vscceIy8vD7/fT3p6OpMmTeL3v/99k+OKpeO8/lIKPPW/rKTHHgHAsIQ/UVK9NDQhZn3JsyS6dmVA3FHdEueOqqJmHetKng4d+wKl+AKlHa7XGyjit+KnGJVyVYfqKa5awq+FD4SO+0UfyE6J5zd5rWVZjEr9KwuzTsTgp9K3kQ0ls9gp6c/N1u8LlPNz3jXkez4LlblsqeyR/kivT4YctpjQmsgQHFZSUv1zbYL8A8VVi/EbT9g9Bj+lNUu3W3e0YzAJrrEkuMcF/7jGNruyR6xzOJkpVzIy+S8UeL4iq2wOeZULwnqv65LyXwruIj32dwyOP5Ek98Rmh7zU+AtZU/Qom8te2+aXMouBccexS/JlRDnSt/s+ACzLxujU64hyDAj9Eu4NlPBdzjlM6H8fabFTWlWPiEhnatcY4rVr13L88cezyy678Nprr2G323nzzTe5/vrr27XKxKBBg3jkkUcYN25cW0OR7cgue5ulW/8KgMuWwiFDPw0NjfAFKlmUfUZo4ovdimbfgS8T387JUjsSf6CKnIr3iHPtQqJ7t3bXs6rwn6wvebYDkVhEOwYS4xhGjHMY3kARORUf1J5xcuDgd4lxtm9Mfo2/mIVZJ4ZWbIiyD2C/QW/gsie3eN/KgjvYWDobCE4qO2jwe02OCfV4s1ice1HYx+zbmzy3IwkYL6U1Kymq+p4iz/cUVf+AL1DW6LpoxxASant9E91jiW8h+W2tGn8h2eXzyCp7M/T/e1sxjqG1E/GOCyW3/kA1G0tf5LfiJ/GZ8rDrk6P2ZnTKdSS4x7Y7ri3l77M0/68N1pi2MTb1ZoYknNruOqVn0Bhi6Wk6fQyxMYabbroJn8/Hbbfd1uodQKZMmcJxxx3H6NGjGTBgABUVFSxcuJAHH3yQTZs2ce655zJ37lwyMjLaGpK0IKeyfrhEWuyUsHHCDlsMe6Q/zMLsU/AFSvEbD0ty/8Kkga/gtPfdWcL+gIdvt5xNac1SbJaLSQNfId7V8rKBTQmYGrLL3godj0y6lP4xh+ANlOILlDX4uwxfoBSvvxS7LZpY57BQAhzjHBI2JMEf8FBctYQqfw4GL6uLHmBC2gNNNd8iYwIszf9rKBm2cDA+7f7tJsMAI5IuYUv5u3gDJfhNBauL/sWu/e8Iu6ao6gd+zP3LNpPnJrNb/3v7zCoDNstJkns8Se7x7JR4Lsb4KatZTXH1YgKmhnjXaBJcY3DaEyPetsuewvDEPzEsYRqlNcvJKpvDlop3wz6dqPRtZHXRQ6wueph+0QeQGj2JjaUv4fFtDqsrxjGUzJSrSYuZ0uGl3TLijsJtT+XHvEtrfzkIsKLgNqr8uYxMulTr1YpIt2lzQjx79mwWL17MtGnT2G231vecPfbYY2HHbrebo48+mv3224+TTjqJ7OxsHn30Ue68885mapC28gXK2Vr5Zeg4PfZ3ja6JcQ5lfP97WZx7EWCo9G1g6dbr2SPtkT65kL4xfn7Ovzb0sXbA1LCueCbj0+7dzp2N5VUuCM3Gt1luhiac0eHkx26LZpeUy1maH+z1z6n4gKFV00iO2qNN9awreSZsDeBdUi5vdR0uexIjky9lZUEwCc4qn8OQhNNIdO8aPC6bw/Ktfwv7yF6bM4Bl2UlwjybBPboL27RIdO9KontXRqVcQ17lfLLK5tSOA6/7cDDAVs8XjcYJO2wJjEiawdCE0yO6lFxK9D7skzGLH3IuoNqfC8BvxU9Q5cthXL/bsFnOiLUlIj1P3YiCE044gXvuuae7wwlp00+n3NxcHnjgAdLT07n88ssjEkBKSkpoU49PPvkEbZwXOXmVn4Y+mnTakkiJajxRCqB/zCGMSLo4dJxf+T9+K36yS2LsaVYV3kdeZfhqKTkV71Ply21zXZtLXwu9HhD7u4j1BGbEHkOCa9fQ8arCezAm0Or7Cz3fs6bo4dBx/5jDGJ5wTptiGBx/CnHOkbVHhl8K7iZgfKwqvI9lW28MJcMWTnbrdw+ZKVf26WS4J7DbosiIO5q9Mp7m4MEfMSLpEqIdgxpdZ+FgaMJZHDT4A4Yn/l+nbKYR78pk34GzG3wNQXb5XH7MvRhfoKKFO0V2LNOmTWPUqFEt/jnuuOO6O8w+oU09xLfffjvl5eXcfffdxMXFRSyIPfYI9kwVFxdTXFxMcvL2P7aV7cutqN+UIC1mSos9LyOSLqS0ehn5nk8BWFP8KAnusaEZ9X3BxtLZYdsI1zH42Fg6m8yUK1pdV6V3U2g1BoDB8SdHJEaom6R0Ld9u+RNA7eTI98mIO3q791b7C/g5/6rQRKkox0B263dXmz+qtlkORqdez/c5wQl1xdU/sjDrpLDxwi5bKrunP9zm3mvpfNHOQYxMvogRSRdSWPVtqNc4yb0HmcmXd8mSaNGODPbJmMWPeZdSVPU9AFs9X/LdlrPZc8DjYcv+iezoMjIymh0yOnz48K4Npo9qU0K8YsUKAG677TZuu+22sHNVVcGNHrZs2cIBBxwAwCOPPMKee+653XqdzvpEze+P7IL6fZUvUBH2EWjd6hLNsSwbu/W/h2+yT6HStxEw/Jx/HZMGvkKsc1gnR9v98io/ZWXBXaHjeNcY0mIOY21xcKjPprJX2DnpghaXmGooq+yN0OtY584kuSdGNN7kqL1IjzkitBPbr4UPkBYzpcVNIIzxszTv2tDSXBYOJqQ90O6e69To/UiLmRLqUW+YDMe5RrFn2qNEOxv3QErPYVk2UqMnkRo9qVvad9oTmZj+H5bmXxf6Wi6tWc6i7DOZOODJDq+fLNJbnHTSSVx66aXdHUaf1q7PMLdu3droT3l5cEZyIBAIlXm93u3UFLR6dfAHqdvt1hbOEZJf+TkBE9xG02FLIDV63+3e47QnsHv6I9itaCC4RNiS3MvwBSo7NdbuVlq9gp/zrgKCww6i7APYM/1xhiX8KexZZJe/3ar6AsZHVvmc0PHg+JM6ZbJQZsqVWLW/01b5tzTZu93Q2uInw3qtR6Vc0+Ftu0elXINF+CcP/WMOY9+MF5UMS6vYbW4mpD3A0IRpoTKPbxOLss+kuPrnboysMWP8bPV8zerCh1hf8jzVvvzt39QFqny5/Fb8NMu3/o3ymjXbv0FEGmlTD3FTy6nV2d6ya83x+Xw8+2xwWapJkybhcPTs3dIqataxufz12lnZ+3d3OM3KbbAZR1rM5FaPA4x37cK4fnfwc35wfdty768s3/o3xvf/xw45A9zj28Li3Bmh9WLtVix7DniCKEcaAIPiT2Jj6YsAbCh5niHxp2x3LOzWys8a9MI6GRh3fKfEHuMcyrCEs0IbXvxW/B8GxZ3Y5BJoBZ6FrC3+d+g4PeYIhiacFZEYdk6aHqpbk+ekPSzLxuiUvxLlSOfXwvuA4Frb3285hwlpD3Tr0C1jDKU1K9hS/g5bKt6jxr81dG5V4T/pF30gg+KPb9P32UjwB6rJr1xAVvkctnq+pu4X+rKaVUwa+HKXxSFdq6amhtdee413332XNWvWUFlZSXp6OgcffDAXXHBBk/tCTJ48maysLF544QVSU1N55JFH+Pbbb/F4PIwYMYIZM2YwdepUIDhX7N///jefffYZhYWFDBo0iLPOOouzzmr886Kqqor58+ezYMECVq5cSU5ODn6/n4yMDA4++GDOO+880tLS2vweKyoqePHFF/noo49Yv349Xq+XgQMHMnXqVM4777xO6zjtkuzzvvvuY8SIERx++OFhY4+3bNnC7bffzpIlS3A4HFx88cUt1NIz/Jz/V0prlrKx9L8cOOjdHtkL5gtUkt9gBYEBTawu0ZKMuKMorV4aSrRyKt4l0b0bwxP/FMkwu503UMbinAsbJK92dk97iHhXZuiaYQlnsbH0v9StwJHv+Zy0mENbrHdTWf1kuvTYqa1ayqy9dk66kKzyuXgDxfhNJWuKH2Vcv/DhTNW+fH7Ou5a6VQWiHUMY1//2iP2CMyLpIpLcE3DaEzu0ZrP0bZZlsVPiubjtaSzLvwGDD7/xsDj34tAGKKlR+xPvGtUlv5xXejeypfxdtlTMo8K7rpmrAmz1fM5Wz+c4bAlkxB7DoPjjSXCN65QY65Lz4DJ685rc5Edjr3dcBQUFTJ8+nWXLlmGz2cjIyGDAgAGsX7+e2bNn89577/HMM8+w6667Nnn/0qVL+fe//43NZmPYsGFkZWWxbNkyLrnkEh544AHGjBnDtGnTKCsrY8SIEfj9ftatW8ftt99ORUUFF1xwQVh9y5Yt48orr8Rut5Oamsrw4cOpqqoiKyuL559/nvfee4/Zs2czdOjQVr/HDRs2cN5557Fx40YcDgcDBw7E5XKxYcMG/vOf//Dee+/xwgsvMHhw+9bfb0mXJMS//fYb//nPf7jxxhsZMmQIiYmJlJWVsW7dOowxuN1u7rjjDiZMmNAV4XRQcIxzwNSQXfEOI5Iu7OZ4Gtvq+YKACY7pdlhxoZ202mKXlCspqVlBUdW3APxa+E8SXGOa3NK3NwoYLz/lXhE27nVM6i30izkg7LoY59DacbKfAMFe4pYSYo9vC1s99UvdRXIyXVOc9gRGJF/MLwXB5Qo3l73B0IQzQusmB4yPn/KvpiZQAAS30t097cGIbPlcx7Is+sUcGLH6pG8bGHcMbns/fsy9FL+pAAIUeL6iwPMVEJysGUyQ9yc1ev/QpzmRUOMvZEvF+2wpn0dJ9U9NXmPhIDV6EuXe36jyZYfKfYFSNpXNZlNZcPWMgfHHMzD2D01+YtOeuLLL3yGrbE6zG61EOwYzMO54hiee3eH2OpsxHjCtG1LZo1hOrNphdN3hiiuuYNmyZRx00EH87W9/Y8iQIQBUVlZy99138+qrr3LZZZfx/vvvN7n770MPPcRpp53GNddcg9vtxu/3c+utt/Lqq6/yj3/8g379+jFx4kTuuOMO4uODPyMeffRRHnnkER577DHOOOOMUDkEJwI++OCDHHzwwWGdnRUVFcycOZNHH32U2267jWeeeaZV76+6upoZM2awceNGjjvuOK677jpSU1MBKCws5MYbb2TBggVcc801vPTSS+1+js3pkoT49NNPp1+/fixbtoy8vDyysrJwOp3ssssu7Lfffpx11llt+g2iO6XFTqW0Jji5cEv5PHZOvKDHDSVouLpE/5jD2vUxns1yMCHtfr7J+mPtJhB+fsq7kv0GvUaUo/VbdfdExhhWbL2dgqr6La13SjyPIQl/bPL64Yl/CiXEhVWLKK1eSYJ7TJPXZpW9Sd1Hl9GOIaREbX/sdkcNiT+FTaWza3uxAqwq+AcTBzyNZVmsLfo3RVXfha4dnfLXDu00JtIVUqMnsU/GLJbk/aXRRiE1gQK2VMxjS8U8AOKcI2uT4/1Ijtq71RNf6/gCleRVzmdL+TwKPF9vs1V1vST3ngyMO4b02CNx2ZMwJkBh1Xdkl88hp+KjUCcEQLl3Db8W3sfqwgfpF30QA+OPJy3m0DZ9Lw4YL1srvyCrfA75lZ+Fretdx25Fkx57BIPiTiA5aq9eMVQpUHonVM6i7vtk72LDxEzDlnBjxGt+9NFHefTRR5s8N3/+fNauXcuiRYvYeeedefTRR4mKqp9AHRMTw2233caKFStYtmwZH374IX/4wx8a1TNixAhuuOGG0I5tdruda665hrfeeostW7bg8/l44YUXiImp/z904YUX8sorr5CXl8eiRYtCQysguMvwoEGNPyWPjY3l0ksv5euvv+bLL78kPz+f/v23/4vhG2+8wdq1a9lnn3245557wnaWS0lJ4f777+eoo45i8eLFLF68uFWLNrRFxBLiE088kRNPPLHJcwcddBAHHXRQpJrqVhmxx4TWcK3w/kZZzcoelWD4A1XkV34aOm7rcImG3PZUJqQ/xLfZ0zB4qQkUsCTvcvbJeKFLx8oBbC57nU2lr5IUtQcjki5s9zAEY/ysLX6crPLXQ2UDYo9il+TLm70nyT2RBNeulNYsA2BD6Sx2639Xo+uM8YetLhGcTNf5P6BslpPMlGv4MfciAAqqFtZuumHjt5L69aQHxB7N4HhtkSu9Q4J7NAcOnkdx1U8UeL5mq+fr2v+D4WvVl3vXUO5dw4bSF7BwkBS1J/1qe5ATXGOxrMa7qQaMjwLP12wpn0de5fzQHIJtxTlHkhF3DBmxRzcaHhdcoWNfUqP3ZUzqTeRUfEh22VyKqn8IXWPwk+/5lHzPpzhtiWTEHcOguBOId41ptiOlvGY1WWVzyK54hxp/QZPXJLn3ZFD8CQyI/R0OW+SWQO0SlS/SO5NhgEAw/k5IiFtads3tdvPhh8F5Qccee2xYMlzHZrNx2GGHsWzZMr799tsmE+KTTjqp0fbFCQkJDB48mLVr13L00UeHJcMADoeDUaNGkZeXx8aNGxvVaYzhq6++4rPPPmPjxo2Ul5cTCAT/fTds2ADAypUrW5UQ173HP/7xj01usxwTE8P+++/Pm2++ybfffttzE+K+IsY5mCT3HhRX/whAdvk7PSoh3ur5ssEEsRhSow/Yzh0tS3KPZ2y/m1m+9RYASqp/ZmXBXYzrd2tHQ2219SXPsqrwnwCU1iwju3wuOyddwLCEs1qdmBtjyPd8yurCByn31s/CTnLvwa797moxcbUsi2GJf2Jp/rVA8JOBzOQrGn0UutXzVYOtkO0MijuhTe+zI/pHH0JK1CQKq74B4JeCe/A2GF8Y69yJcf1u7XGfZoi0xGa5SInem5TovdmFy6jxF1NYtYgCz9cUeL7G48sKu97go6jqW4qqvmV10b9w2hJJidqX1OgD6Be9P9X+rWypeIec8g9Cu0huy21PJyPuaDJij2n1eGWHLY7B8ScxOP4kKrwbyC5/i+yyuaHvBwDeQAkbS//LxtL/EufMZFD8CWTEHYPbnorXX0pOxXtsLpsT2iWzcVxpDIw7lkFxJ3TJOtGdJuasXtxDbA/G3wm2t+zaqlWrAHj77bf5/PPPm7ymoCD4C1ROTk6T55v7JD4lJYW1a9c2e75u2EJlZfiKU+Xl5Vx88cV88803zcYNwT0mWqPuPT7zzDPNDonIzg4OU2ruPXaEEuJ2yIj7Qyghzql4j1EpVzfZC9EdGq4u0T/mMOw2d4frHBx/MiXVS9lcO1lsc9mrJLp3Y3D8SR2ue3s2lLwYSobr+AJl/Fp4H5tKXyEz5SrSYw5v8YdWUdVifi18gOLqxWHl0Y4h7JH+aKue0YDY3/Fr4f1U+3ODG3WUvcQuyX8Ju2Zzg8l0/WMOi8jYwdayLItRKdeyMPsk6iYA1rFZUUxIexCHLbbL4hHpDC57EgNif8eA2N9hjKHSt5ECz0IKPF9T6PkGnykPu94bKCG38qPQGsfNcdjiSY85goy4Y0iJ2qtD389jncPYJfkvjEy6hMKqb8gqm0tu5cehZTAhuHrPqsJ7+bXwfhLd4ymtWR52vo6Fk7TYyQyKO4F+0Qf0mJ8zHWFLuBETf6XGELdRWVkZEJyTtT11+0JsKzq66djrfn5u7/y2Ownfe++9fPPNNwwZMoQrrriCPfbYg379+oXGL1977bW89dZb+HyNh/s0pe49/vLLL9u9trn32BFKiNthQOzv+KXgLgw+qv35FFYt6hFLsPkD1eRFaLjEtsak3khZzS+UVAd7L1YW3E68K7NTVxXYVPoyvxTWD02Isg/AZypDM6s9vk38lHc5ye6JjEq9jkR3+Mza8prV/Fr0EPmV/9umZouM2KMZlXJNq4de2CwnQxPOZHXRA6HYdk6cHtoIo9qXHzZUpbMn0zUlwT2aQXEnklX+Rlj52NSbwlbOENkRWJZFrHMYsc5hDE04jYDxUVq9jK21vccl1T81Ox4Ygslm/5hDGRh3DP2iD45I50F4fLbQxD9voIzcig/JKpsT6kyBYI/2tr+oAyS4xjIw/gQyYo/GZU+KaFw9gWVFQzdOTuuN6oYyPPTQQxx11FHdHE1wydx584Lj+B9//HF22WWXRte0tme4TkxMDKWlpbz22muMH9+xNfLbo+ePwO+BXPZk+kXXz6rPLp/XjdHUK/B8VTsrOzjZomGMHRVcneBfuGwpQHCVjSW5l3XawvSby95gRcHfQ8dRjoHskzGLgwZ/wNCEM7Go7ykpqv6Bb7JPYWn+X6ny5eDxZbM0/wa+yjqhUTLcL/og9hv4BuPT/tHmHtwh8X8MbdThDRSHbdSRVT6nfjtkewb9OjhUpb12Sf5LKEaAgXHHMyi+6bH9IjsSm+UgKWp3RiZfxL4DX2TysIXskfYoQxPOINZZN8TAIjlqH8b1+zuHDf2cPdL/RXrs4RFPhrfltMUzOP5k9h34Xw4c/B47J04nyj5gm2uSGZbwJ/YfNIf9Br3OsIQzd8hkWNqnLuGs28isuxUWFlJZWUlSUlKTybDP52PZsmVtqrO736N6iNspI+4Y8j2fApBb8TFjU29pcdvcrtDwY8H+MYdEPJ4oxwAmpD3A9zl/xuCnyp/DZ5smk+geX7v96/4kusdjs5zbr6wF2eVvh8YsQ7BneO8Bz4YmtYxJvZEh8afza+E/yfd8FnZfTsVHQICAqQmrM9G9G5nJV5ESvU+743LaExkYdwKbymYDsKH0hVBP8OYGk+kGxZ/YbR9tuh392bX/nawsuIsk93jGpN7ULXGIdDeHLY602MmkxU4GoNq/FQtHtyeZsc7h7JJyOSOTL6WgahGl1SuIdQ6jf8whXT5ZWXqPI488krfffpvXX3+dc845J2z5s+5QN7yivLwcj8fTaLjF3LlzQ2OaW+vII4/khx9+4MUXX+TYY4/F6exYLtFW6iFup7SYw7BbwY8w/KYilBx3l4CpIa9Bb2h67BGd0k5K9D5kplwdOjb4Ka7+kbXFj/Ptlmks2LAfi3MuYkPJLMpr1jQac7Q9W8rfZ2n+DdTNJHfb+7NXxkxinEPCrotz7cyeAx5n4oCniXPWDwcImKqwZDjWuRO7p/2LfTNe7lAyXGdY4llAcDxVhfc3tnq+pLBqER7fptorbN3eIzsg9sja3q9H27wElciOym3v1+3JcEOWZadf9P7snHQe6bGHKxmWFk2ePJl9992X3NxczjnnHFauXBl23hjD8uXLueuuu/j5587f8jw+Pp5Ro0bh8/n4+9//TnV1/Rj4Dz74gDvuuAO3u22fvJxyyimMGDGCFStWMGPGjNAqFXX8fj/ff/89N954I7m5uRF5Hw2ph7id7LZo0mMPJ7v8LSC42sSA2CO7LZ4Cz0J8geCAdJsVRb/ogzutrWEJfyJgqllf8izeQEnYOb+pDC0zBMGEtm6HqZToSS0uop9b8XHtSg7B2ccuWyp7DXiWWOfwZu/pF70/qYPeYHPZm6wpeji0AYXbnsaIpIsZFH8CNityX+axzuH0jzk0NBRjQ8kLOO0JofP9ow8i2tH00jkiIiLtYVkW//rXv7jkkkv4/vvvOf7448nIyCAtLY3q6mo2bdpERUVwyOSUKVO6JKarr76aCy+8kDfffJOPP/6YoUOHsnXrVnJzcznggANITU3l7bff3n5FtaKionjqqae48MIL+eKLLzjiiCMYMmQIqampVFZWsnHjxtBkuhkzZkT8/Sgh7oCM2GNCCfHWyi+o8Rd3Ww9ETsPVJaIP7tSeQcuy2DlpOjsl/pnSml9ql0BaSHH14kZDFar9+WSXvx0abxvnHElK9H70i96f5Ki9Qisf5FX+j5/yrgqNw3XaktgrYyZxrp1bEY+dIQl/JCPuKLLK5mKzXAyM+wN2W+dM2hiecHYoIS6o+hqrwX+j7phMJyIiO77k5GReeOEF5s2bxzvvvMPy5ctZvnw5LpeLQYMGsddee3H44YczceLELonn4IMPZubMmTz22GMsXbqU3377jSFDhnDWWWdxzjnncPPNN7e5zsGDB/PGG2/w+uuv88EHH/Drr7+SnZ1NdHQ0O++8M5MmTWLq1KlNbgjSUZZp62faEhIwPj7bdFho8fSxqX9jSELXb3wQMDX8b+PBodUXxve/j4y433d5HP5AFUXVi0PLIJXVrGzxegsHSe4JJLh3ZWPpbAzBZXgctgT2HvBss7vBdTdjDAuzT270/tz2/hw8ZH5Ee6RFRHqDQCAQWkd21KhRTW6sINKV2vo1qa/YDrBZDgbE1ieeW7phtQljDGuLHgslwzbLRf+YQ7o8DgC7LYp+0fszKuUq9h/0BocN/ZLx/e9nUNzJRDkGNrre4KOo+gc2lD7fIBmOZ68Bz/TYZBiCPeTDE/+vUfmguMgOzxAREZGuoZ/eHTQw7hg2ls4Cgst/ebxZjbb47CzGGFYXPci6kqdDZWkxh/eYDRhc9hQy4o4iI+6o0CL6hZ6FbPUspLBqUSiJr2O3YpmY/hSJ7nHdFHHrDYg9snajjvpl5wZ1wUYlIiIiEnlKiDsowbUrMc7hVHrXA7Cl4l12Tpre6e0aY1hV+A82lD4fKotzjmR06l87ve32aLiI/pCE0zDGT0nNcgo9CynwfEPAeBmVcg1JURO6O9RWsVmu2o06HgIgNWr/RithiIiISO+ghLiDLMsiI/YY1hY/CgSHTeyUeH6LWwl3lDEBVhbcFVoPFyDONYq9BzyDy57Sae1GkmXZSXKPJ8k9np2TLujucNpleOLZVHo3UuXP1Xq/IiIivZgS4gjIiDs6lBCXe9dQVrOKBPfoTmnLmAArCm5jc9lrobIE11gmDni6R62x2RfYLBe79r+ju8MQERGRDtKkugiIdQ4j0V2/7/aWis6ZXGeMn2VbbwpLhhPdu7HXgJlKhkVERETaSQlxhGTE/SH0ekv5uxjjj2j9AeNjaf4NZJfPDZUlufdg4oCnwzaGEBEREZG2UUIcIQNij8TCDkC1P5fCqu8jVnfAeFma/1e2VLwTKkuO2ouJA57Caeve/cxFREREejslxBHitqeSGr1/6DhSaxIHTA0/511DTsV7obKUqH3ZM/2JHrO8moiIiEhvpoQ4gjLijgm9zq38CH+gusN1rth6G7mVH4WOU6MPYM/0xzt1a2YRERGRvkQJcQSlxUzGbkUD4AuUke/5rEP1ZZe/TVb5nNBxv+iD2SPtUey2qA7VKyIiIiL1lBBHkMMWS1rMlNBxR4ZNVHjXs2Lr30PHSe7d2SP9Yew2d4diFBEREZFwSogjrOGwifzKz/D6S9pcR3Dc8NX4TSUADlsC4/v/E5vlilicIiIiIhKkhDjCUqP3x2UL7hZn8LK+5Nk21/Fr4QOU1qwIHY/r93einYMiFqOIiIiI1FNCHGE2y8GAuN+Hjn8reYpVhfdhjGnV/XmV/2ND6Quh4yHxpzEg9oiIxykiIiIiQUqIO8HOSRcQ4xgaOl5fMpPlW2/Z7mYdVb4cluXfGDqOc2YyKuXaTotTRERE+q7NmzczatQoJk+e3N2hdDslxJ3AbU9ln4EvEu8aFSrLKn+Dn/KuImBqmrzHGD8/51+LN1AMgN2KZkLa/VpRQkREZAc1bdo0Ro0axahRozj11FNbvLa8vJzdd989dP0jjzzSRVH2DUqIO4nb3o+9BzxPknvPUFlu5UcszpmBL1DR6Pq1xU9Q1GB3uzGpNxLnGtElsYqIiEj3WrJkCevWrWv2/Pvvv4/H4+nCiPoWJcSdyGlPYK8B/6Ff9MGhsoKqhXyfcy41/uJQWaHnO9YWPx46zog9moFxJ3RlqCIiItJNdt55ZwDmzp3b7DV15+qulchSQtzJ7LZo9kh/hIzYo0NlJdVL+XbLNKp8udT4i/k5/1ogAEC0Ywhj+/0Ny7K6KWIRERHpSkcffTROp5N33nmnyUn4mzZt4ocffmDcuHHssssu3RDhjs/R3QH0BTbLyW7978VhS2RT2WwAKrxrWbTlTGIcQ6n25wJg4WBC2v04bHHdGa6IiIh0oaSkJA455BA++eQTFi1axKRJk8LOz507F2MMxx9/PN9//32TdXz99dcsWLCA77//npycHMrLy0lNTWWvvfbi3HPPZdy4cW2OKxAIMG/ePObOncvy5cupqKggJSWF/fbbj+nTpzNixI4ztFM9xF3EsmyMSb2REUkzQmVVvmwKq74JHWemXEWie9fuCE9ERES60QknBIdKbjtswhjD3LlzcTqdHHPMMU3cGXTeeecxa9YscnJy6N+/PyNHjsTj8TBv3jxOPfVUPvnkkzbF4/F4uOCCC7jmmmv46quvcLlcjBw5krKyMubOncuJJ57IZ5991ub32VOph7gLWZbFyORLcdqS+KXw7rBz/aMPYVjCn7opMhERka7hD3gIGG93h9FmNsuJ3RbdafUfcsghJCcn8+GHH3LLLbcQExMDwPfff8/mzZuZMmUKKSkpzd5/8803c+ihh5KRkREqCwQCfPTRR1x//fXccMMN7L///qF6t+fvf/87n3/+OePHj+f2229n9OjRAHi9Xh5//HH+/e9/c8011/DBBx+0GFdvoYS4GwxLnIbTlsiyrTdi8OO2p7Fr/zs1blhERHZoKwvuZmPpf6mbN9O72BiacCZjUq/vlNqdTidHH300L774Ih999BHHH388AHPmzAEIHTfn9NNPb1Rms9k48sgjWblyJU888QSffvopv//975u4O9yaNWuYM2cOKSkpPPHEE6SmpobF+Ze//IVff/2Vjz/+mFdffZULL7yw9W+0h1JC3E0Gxh9LjGs4Wyu/ZFDccbjsvf+3KxERkZZsKp1N70yGAQJsKp3daQkxBJPeF198kblz53L88cfj8Xj44IMPSEpK4tBDD93u/atWreKDDz5g9erVlJSU4PP5ACgsLARgxYoVrUqIP/zwQ4wxTJkyJSwZbmjq1Kl8/PHHfPvtt0qIpWOS3ONJco/v7jBERES6xJCEM3ptD7GFnSEJZ3RqG7vtthsjR45k0aJF5OTk8O2331JRUcGZZ56Jy+Vq8d57772XZ599tslVKuoUFxe3Ko5Vq1YBwYl6TfU8A5SVlQGQk5PTqjp7OiXEIiIi0iXGpF5PZvLlGkPcguOPP5777ruPt956i0WLFoXKWvLOO+8wc+ZM3G43V155JQcddBAZGRlER0djWRavv/46N954Y6jHeHvqkt2srCyysrJavLaqqqpVdfZ0SohFRESky9ht0djp/MSytzr22GN54IEHmD17Nnl5eYwYMYLx41v+NLluZYrrrruOM888s9H51vYM16mbeHfNNddw3nnntene3krLromIiIj0EOnp6ey///7k5OQQCAS22zsMsHnzZgD22muvJs//9NNPbYqhbvOP1atXt+m+3kwJsYiIiEgPMm3aNPbbbz/2228/jj322O1eHx0d7HHPz89vdG7t2rX873//a1P7Rx55JBCcXJednd2me3srJcQiIiIiPcihhx7Kc889x3PPPceAAQO2e31dz/ADDzxAXl5eqPyXX35hxowZ2GxtS/dGjx7NiSeeiMfj4eyzz+bbb79tdM3atWt5+OGHWbBg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fMHHH3/MsmXLyMvLo7i4GKfTyeDBg9lvv/0466yzGDp0aETfXFcyVR9jimt7t239sPp/td3k1RgDpghwBJNey9ni9SIiIiISeRHZulkgUHo3VAbHQeM+Elvyw90bkIiIiIi0SsSXXeuzvD+EXlpNTKgTERERkZ5JCXEEmEAleFfUFyghFhEREek1lBBHgncJ9WsFx4JjVHdGIyIiIiJtoIQ4AsLWH3buqbWCRURERHoRJcSR4G2w/rCGS4iIiIj0KkqIO8gYL3h/qi9QQiwiIiLSqygh7ijvCjCe2gMnOMd3azgiIiIi0jZKiDvK23D88G5Ylrv7YhERERGRNlNC3EFhE+o0XEJERESk11FC3AHGBKCmwYYczondGI2IiIiItIcS4o7w/wamuPbAApcSYhEREZHeRglxRzQcLuHIxLIldF8sIiIiItIuSog7QOOHRURERHo/JcQd0SAhtpxKiEVERER6IyXE7WT82RDIri9QD7GIiIhIr6SEuL0arC6BfQiWPb37YhERERGRdlNC3E5h44e13JqIiIhIr6WEuL0a7FBnabiEiIiISK+lhLgdTKAIfKvrC5QQi4iIiPRaSojbo2Zx/WtbKth36r5YRERERKRDlBC3w7bjhy3L6r5gRERERKRDlBC3h8YPi4iIiOwwlBC3kTEe8C6vL1BCLCIiItKrKSFuq5qfAF/wtRULjtHdGo6IiIiIdIwS4rbyNhw/vDuW5ei+WERERESkw5QQt1HDCXUaPywiIiLS+ykhbiv/xvrXTiXEIiIiIr2dEuK2ijoq+LdzH02oExEREdkBWMYY091B9DYmUAJWgtYfFhEREdkBKCEWERERkT5NQyZEREREpE9TQiwiIiIifZoSYhERERHp05QQi4iIiEifpoRYRERERPo0JcQiIiIi0qcpIRYRERGRPk0JsYiIiIj0aUqIRURERKRPU0IsIiIiIn2aEmIRERER6dOUEIuIiIhIn6aEWERERET6NCXEIiIiItKnKSEWERERkT5NCbGIiIiI9GlKiEVERESkT1NCLCIiIiJ9mhJiEREREenTlBCLiIiISJ+mhFhERERE+jQlxCIiIiLSpykhFhEREZE+TQmxiIiIiPRpSohFREREpE9TQiwiIiIifZqjuwOQyMvPz+err75i2bJlLF26lJUrV1JdXc0+++zDrFmzWrx37dq1PP3003zzzTfk5+cTHx/P+PHj+b//+z/233//Zu/z+Xy8+uqrzJs3j9WrV1NZWUlcXBxjxozh+OOP57jjjsOyrCbvNcbw+uuv89prr7FmzRoARo4cyR//+EdOPvnkZu/rabrjuQPMmzeP1157jZUrV+LxeEhPT+fQQw/lggsuoH///i3e++GHH/Liiy/yyy+/4PV6GTZsGMceeyx/+tOfcDqdbX4GXc0Yw48//siCBQv44Ycf+O233ygvLyc+Pp6xY8dy/PHH84c//KHZr6GKigqeeuopPvzwQ7Kzs4mJiWHChAmce+657Lvvvi22/c033/Dss8/y008/UVlZycCBAznyyCOZPn06MTExzd7XkTZ7iu547h35/wXg9Xp5/vnnefvtt9m4cSNOp5PRo0czbdo0jjjiiA49j67S1c+9o+21p02R7mIZY0x3ByGR9dxzz3H33Xc3Kt/eD46PPvqIq6++murqauLj4xk+fDhbt25ly5YtAFx55ZVccMEFje6rqqriz3/+M99//z0AaWlp9O/fn9zcXLZu3QrA4YcfzsMPP4zNFv6hRCAQ4IorruCDDz4AgokwEEqMjz76aO6///5ekRR39XMPBAJcffXVvPvuuwAMHjyYpKQkfvvtNyorK0lKSmLWrFlkZmY22e69997LzJkzARg6dCjR0dGsWbMGv9/P3nvvzcyZM3G5XG1+Dl1p4cKFnH322aHjIUOGkJCQQFZWFsXFxQAceuihPPLII43eS2FhIWeccQbr1q3D5XIxcuRICgsLycnJwbIsbr75Zs4888wm2501axZ33nknxhgGDBhASkoKa9asoaamhhEjRjB79mySkpIa3deRNnuS7nju7f3/BVBdXc0555zDDz/8gN1uZ+TIkXg8HjZu3AjA+eefz9VXX93Gp9D1uvq5d6S99rYp0m2M7HBee+01c/bZZ5v777/ffPTRR+ahhx4ymZmZ5qyzzmr2no0bN5rx48ebzMxMc9ttt5mqqqrQuffee8+MGzfOZGZmmq+//rrRvY8++qjJzMw0u+22m5k/f37YuXnz5pmxY8eazMxM8/rrrze699lnnzWZmZlmn332MYsXLw6VL1682Oyzzz4mMzPTvPDCC+15DF2uq5/7k08+aTIzM83uu+9uPvvss1B5RUWFufrqq01mZqY5/PDDTXV1daN7P/roI5OZmWl23XVX88knn4TK16xZYyZPnmwyMzPN3Xff3d5H0WW++uorM3nyZPP888+brVu3hp2bM2eO2XXXXU1mZqb5xz/+0ejeCy+80GRmZpoTTjjB5OTkGGOMCQQC5uWXXzaZmZlmzJgxZsWKFY3uW7p0qRk9erQZNWqUefnll00gEDDGGJOTk2NOOOEEk5mZaS655JIm421vmz1Ndzz39vz/qnP77bebzMxMM3nyZLN27dpQ+SeffBKKddvvXT1RVz/3jrTX3jZFuosS4j5g1qxZ2/3Bcffdd5vMzEzz+9//3vh8vkbn77nnHpOZmWlOPfXURudOPPFEk5mZae68884m677hhhtMZmamufTSS8PKa2pqzL777ttssvzaa6+ZzMxMs99++xmv17u9t9njdOZz9/v9ZtKkSSYzM9M88cQTje7zeDzmkEMOMZmZmebll19udP7YY481mZmZ5l//+lejc19//XUoWS4oKGjNW+02ZWVlpqamptnzjz/+eOgXLr/fHypfvny5yczMNKNHjzbr169vdN8111zTbGI7Y8YMk5mZaa699tpG59atW2dGjx5tMjMzzcqVK8POdaTNnqY7nvu2WvP/yxhj8vPzQ79YLly4sNH5usT6hBNO2G6b3a2rn3t72+tImyLdRZPqBIAffvgBgKlTp2K32xudP+qoowD48ccf2bx5c9i56upqIPixe1OGDRsGBMfwNfTtt99SVFRETEwMf/jDHxrdd+yxxxITE0NBQQHfffddG99R79De575u3ToKCwsBOPLIIxvdFxUVxWGHHQYExxg3tH79en755RcATj311Eb37rfffgwbNoyamhrmz5/fnrfVZeLi4loc63zwwQcDUFxcHHpeEBw7DTBp0qTQ12dDdc/ls88+o7KyMlReUVHBF198AcApp5zS6L7hw4czadIkgNAwoI622RN19XPviAULFuD1esP+bRo67bTTAFi+fHloCEVP1dXPvb3tdaRNke6ihFgAKCkpASA9Pb3J8wMGDAi9XrJkSdi5MWPGAMGkrSl1Sd/48ePDyuvqGT9+fJPjz1wuF7vttluTbe4o2vvc68bvteben3/+mUAg0KieIUOGNHvvxIkTAfjpp59afgM9XFVVVeh1VFRU6HXdM9hrr72avK/ua7K6upqVK1eGyleuXElNTQ0ul6vR13Od5p5de9vsjSL93Duirs26f5dtpaen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9jrSpkh3sUzdd3PZYWzZsoXjjz8+dFxTU0NlZSUOhyNsAsR5553H+eefHzo+7rjj+OWXX+jXrx8DBgygvLw8tLj6qFGjePrpp0lLS2vUXk5ODmeddVZorGv//v1JS0sjKysrtKPa7rvvzsyZMxv1BAQCAS677DI++ugjAEaOHAnAmjVrgGAv24MPPojN1vN/d+vq575y5UqOP/740AL3iYmJbN68maKiIizL4pxzzuG6665rNt677rqL559/Hggunh8TE8Pq1avx+/1MnDiRZ599ttFKCT3NvHnzuOqqqwAYNGhQszvvAdx8882MHTs2dFxYWMjpp5/O+vXrcblcjBw5kqKiIrZs2YJlWdx4442NNpOp89xzz3HPPfdgjCEjI4Pk5GTWrFlDTU0NO+20E7Nnz27yl4mOtNmTdMdzb+//Lwgu63X22Wfz448/Yrfb2WWXXaisrAyNHT733HNb/L/SU3T1c+9Ie+1tU6S77Ljdbn2Y3+8P29q3js/nCyvfdu3Hs846iw8//JBff/2VVatWERMTw8SJEzn66KM55ZRTml1PcsCAAcydO5cXX3yR+fPn89tvv/HLL78QFxfH3nvvzVFHHdXs/TabjYcffphXX32V1157jbVr1wLBCWSnnHIKf/zjH8N6lXuy7njuZ599Nt999x1ZWVls2bKF1NRUjjnmGM4444ztjjm+4YYb2GOPPZg9ezYrV64kLy+PESNGcOyxx3L22We3uH5oT9Fw7HlWVlbYjnzbKisrCztOSUnhjTfe4D//+Q8ffPABa9asISYmhoMPPpg///nPTJo0qdm6zj77bEaNGsXMmTP5+eefKSgoYODAgRx55JFMnz692Y+AO9JmT9Idz729/78guKzXCy+8wHPPPcc777zD+vXrcTqd7LPPPpx11lmhj/d7uq5+7h1pr71tinQX9RCLiIiISJ/W8z+HFhERERHpREqIRURERKRPU0IsIiIiIn2aEmIRERER6dOUEIuIiIhIn6aEWERERET6NCXEIiIiItKnKSEWERERkT5NCbGIiIiI9GlKiEVERESkT1NCLCIiIiJ9mhJiEREREenTlBCLiIiISJ+mhFhERERE+jQlxCIiIiLSpykhFpFGSkpKmDBhAqNGjeK9995r8dqHHnqIUaNGMWXKFIwxYed++OEHrr76ag477DB22203Jk6cyMknn8xTTz1FRUVFk/V5PB7mzZvHtddey3HHHcekSZPYddddOfDAA7nooov47LPPmo3lzTffZNSoUUyePBmAb775hosuuogDDzyQMWPG8Ne//rWNT0JERPoCJcQi0khiYiJHHXUUAK+++mqz1/n9ft58800A/vjHP2JZFgCBQIA77riDM844g3feeYfs7GwcDgcej4elS5dy//33c9JJJ5GVldWozvfff5+rrrqKt956i1WrVuHz+XA4HOTn5zN//nymT5/Ovffeu9338Pzzz3P22Wczf/58qqqqsNvt7XkUIiLSByghFpEmnX766UCwl3XTpk1NXvPZZ5+Rm5uLw+HgpJNOCpU//PDDzJo1i9TUVG655RYWLVrEjz/+yE8//cQLL7zA2LFjWbduHZdeeimBQCCszoSEBM4991xmz57Njz/+yPfff8+SJUv44osvuPTSS3E6ncycOZP58+c3G/vWrVu59957OeGEE/j000/5/vvv+emnn7jooosi8GRERGRHo4RYRJo0YcIExowZgzGm2V7iuvLJkyfTv39/ADZv3sxTTz1FVFQUM2fO5MwzzyQpKQkAp9PJvvvuy6xZsxgwYADLly9nwYIFYXVOnTqV6667jokTJxIdHR0qT0tL45JLLuGKK64AYNasWc3GXl1dzZQpU7j77rvJyMgAwG63M3To0PY9DBER2aEpIRaRZtX1Es+ZMwev1xt2Ljc3l88//xyAU089NVQ+Z84c/H4/Bx10EKNHj26y3ri4OKZOnQrAF1980aaYDj30UACWLFmC3+9v9rrp06e3qV4REem7HN0dgIj0XMcccwz33nsv+fn5/O9//+OII44InXv99dfx+/0MHjyYAw44IFS+ePFiAL766quw8m1VVlYCkJ2d3ejc1q1bmT17Nl999RXr16+nrKysUfLr8XgoKSkhJSWl0f1RUVGMGzeubW9WRET6LCXEItKs2NhYjj32WF566SVeeeWVUEIcCAR44403ADjllFNCk+kA8vLygGDCW5f0tqSqqirs+Mcff2T69OmUlpaGymJiYoiOjsayLPx+P0VFRUAwKW5KUlISNps+ABMRkdZRQiwiLTr99NN56aWX+Prrr9m8eTODBw/myy+/JCsrC4fDwYknnhh2fV1P7vnnn8/VV1/dprZ8Ph9XXXUVpaWljBkzhiuuuIKJEycSFxcXumbjxo0cfvjhAI2WeaujFSVERKQt1IUiIi0aNWoUe+yxB4FAgNdffx2A1157DYApU6aEJtPVqTtuaijE9ixZsoSsrCzsdjtPPvkkhxxySFgyDJCfn9+etyEiItIsJcQisl11k+veeOMNcnNz+d///gcEh0tsa8899wTg66+/prq6uk3tbNmyBYCUlBTS09ObvGbhwoVtqlNERGR7lBCLyHYdddRRJCUlkZeXx1VXXYXX6200ma7OSSedhMPhoKioiIcffrjFemtqasJ2rIuPjweCk+q2bt3a6PqcnJwWl1sTERFpDyXEIrJdLpcrNFb4u+++AxpPpqszdOhQZsyYAcDTTz/Ntddey6+//ho67/P5WLlyJY8++ihHHHEEK1euDJ2bOHEiMTExGGO4/PLLWbduHRAcl/zFF18wbdq0TnuPIiLSd2lSnYi0ymmnncazzz6LMabJyXQNXXzxxfj9fh5//HHeeust3nrrLaKiooiKimq0hFrDpDo+Pp5rr72WW2+9le+++44jjzySmJgY/H4/1dXVJCcnc/fdd4cSbhERkUhQQiwirTJs2DDGjBnDihUrmpxM15BlWVx22WUcddRRvPTSSyxatIgtW7ZQXl5OQkICw4cPZ8899+Twww9njz32CLv39NNPZ+DAgTz99NMsW7YMv99Peno6hxxyCOeff36jDUJEREQ6yjLNrVskItJAfn4+hx56KD6fj2eeeYYDDzywu0MSERGJCI0hFpFWefnll/H5fAwbNqzFHehERER6GyXEIrJdS5cuZebMmQCcffbZTU6mExER6a00hlhEmjV58mRqampCm2GMHTuWP/7xj90clYiISGQpIRaRZmVlZQHB3ecOOuggrrrqKpxOZzdHJSIiElmaVCciIiIifZrGEIuIiIhIn6aEWERERET6NCXEIiIiItKnKSEWERERkT5NCbGIiIiI9GlKiEVERESkT1NCLCIiIiJ9mhJiEREREenT/h+cqpva9Iyj6wAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 600x300 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Let's try looking at hours worked\n",
"(gss2\n",
" .groupby(['year', 'sex'])\n",
" [['age', 'hours_worked']]\n",
" .mean()\n",
" .unstack()\n",
" .hours_worked\n",
" .plot()\n",
" .legend(bbox_to_anchor=(1,1))\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead tr th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe thead tr:last-of-type th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th></th>\n",
" <th colspan=\"3\" halign=\"left\">age</th>\n",
" <th colspan=\"3\" halign=\"left\">hours_worked</th>\n",
" </tr>\n",
" <tr>\n",
" <th></th>\n",
" <th></th>\n",
" <th>min</th>\n",
" <th>max</th>\n",
" <th>median</th>\n",
" <th>min</th>\n",
" <th>max</th>\n",
" <th>median</th>\n",
" </tr>\n",
" <tr>\n",
" <th>year</th>\n",
" <th>sex</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">1972</th>\n",
" <th>Female</th>\n",
" <td>18.0</td>\n",
" <td>89.0</td>\n",
" <td>45.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Male</th>\n",
" <td>18.0</td>\n",
" <td>89.0</td>\n",
" <td>44.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">1973</th>\n",
" <th>Female</th>\n",
" <td>18.0</td>\n",
" <td>86.0</td>\n",
" <td>42.0</td>\n",
" <td>1.0</td>\n",
" <td>80.0</td>\n",
" <td>37.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Male</th>\n",
" <td>18.0</td>\n",
" <td>89.0</td>\n",
" <td>43.0</td>\n",
" <td>0.0</td>\n",
" <td>89.0</td>\n",
" <td>40.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1974</th>\n",
" <th>Female</th>\n",
" <td>18.0</td>\n",
" <td>89.0</td>\n",
" <td>41.0</td>\n",
" <td>8.0</td>\n",
" <td>89.0</td>\n",
" <td>40.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2014</th>\n",
" <th>Male</th>\n",
" <td>18.0</td>\n",
" <td>89.0</td>\n",
" <td>50.0</td>\n",
" <td>1.0</td>\n",
" <td>89.0</td>\n",
" <td>40.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">2016</th>\n",
" <th>Female</th>\n",
" <td>18.0</td>\n",
" <td>89.0</td>\n",
" <td>50.0</td>\n",
" <td>1.0</td>\n",
" <td>89.0</td>\n",
" <td>40.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Male</th>\n",
" <td>18.0</td>\n",
" <td>89.0</td>\n",
" <td>48.0</td>\n",
" <td>1.0</td>\n",
" <td>89.0</td>\n",
" <td>40.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">2018</th>\n",
" <th>Female</th>\n",
" <td>18.0</td>\n",
" <td>89.0</td>\n",
" <td>47.5</td>\n",
" <td>1.0</td>\n",
" <td>89.0</td>\n",
" <td>40.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Male</th>\n",
" <td>18.0</td>\n",
" <td>89.0</td>\n",
" <td>49.0</td>\n",
" <td>1.0</td>\n",
" <td>89.0</td>\n",
" <td>40.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>64 rows × 6 columns</p>\n",
"</div>"
],
"text/plain": [
" age hours_worked \n",
" min max median min max median\n",
"year sex \n",
"1972 Female 18.0 89.0 45.0 NaN NaN NaN\n",
" Male 18.0 89.0 44.0 NaN NaN NaN\n",
"1973 Female 18.0 86.0 42.0 1.0 80.0 37.0\n",
" Male 18.0 89.0 43.0 0.0 89.0 40.0\n",
"1974 Female 18.0 89.0 41.0 8.0 89.0 40.0\n",
"... ... ... ... ... ... ...\n",
"2014 Male 18.0 89.0 50.0 1.0 89.0 40.0\n",
"2016 Female 18.0 89.0 50.0 1.0 89.0 40.0\n",
" Male 18.0 89.0 48.0 1.0 89.0 40.0\n",
"2018 Female 18.0 89.0 47.5 1.0 89.0 40.0\n",
" Male 18.0 89.0 49.0 1.0 89.0 40.0\n",
"\n",
"[64 rows x 6 columns]"
]
},
"execution_count": 77,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Multiple aggregates\n",
"(gss2\n",
" .groupby(['year', 'sex'])\n",
" [['age', 'hours_worked']]\n",
" .agg(['min', 'max', 'median'])\n",
" \n",
")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"## Summary\n",
"\n",
"* Correct types save space and enable convenient math, string, and date functionality\n",
"* Chaining operations will:\n",
" * Make code readable\n",
" * Remove bugs\n",
" * Easier to debug\n",
"* Don't mutate (there's no point). Embrace chaining.\n",
"* ``.apply`` is slow for math\n",
"* Aggregations are powerful. Play with them until they make sense\n",
"* Upcoming course https://maven.com/matt-harrison/data-analysis-using-pandas\n",
"\n",
"Follow me on Twitter ``@__mharrison__``\n",
"\n",
"Book giveaway!\n"
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": [
"3"
]
},
"execution_count": 79,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import random\n",
"random.randrange(1,13)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"lines_to_next_cell": 2,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
}
],
"metadata": {
"jupytext": {
"encoding": "# -*- coding: utf-8 -*-",
"formats": "ipynb,py:light"
},
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.10"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment