{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Foundations of Computational Economics #15\n", "\n", "by Fedor Iskhakov, ANU\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "## Introduction to Data Manipulation in Python (Pandas)\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "\n", "\n", "[https://youtu.be/61pHVbZubmo](https://youtu.be/61pHVbZubmo)\n", "\n", "Description: Introduction into DataFrames, grouping and data merging." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Scientific stack in Python\n", "\n", "Collection of modules (libraries) used in scientific numerical computations:\n", "\n", "- **``NumPy``** is widely-used scientific computing package for implements fast array processing — vectorization \n", "- **``SciPy``** is a collection of functions that perform common scientific operations (optimization, root finding, interpolation, numerical integration, etc.) \n", "- **``Pandas``** is data manipulation package with special data types and methods \n", "- **``Numba``** is just in time (JIT) compiler for a subset of Python and NumPy functions \n", "- **``Matplotlib``** serves for making figures and plots " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### What is Pandas?\n", "\n", "- Pandas provides classes for working with data (`Series`, `DataFrame`) \n", "- Data objects have **methods** for manipulating data eg. indexing, sorting, grouping, filling in missing data \n", "- Pandas does not provide modeling tools eg. regression, prediction \n", "- These tools are found in packages such as `scikit-learn` and `statsmodels`, which are built on top of pandas " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### DataFrames\n", "\n", "A `DataFrame` combines multiple ‘columns’ of data into a\n", "two-dimensional object, similar to a spreadsheet\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Create and explore the dataframe object" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "hide-output": false, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "import pandas as pd\n", "data = pd.read_csv('./_static/data/recent-grads.csv')\n", "# help(data) # more help on dataframe object and its methods" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "hide-output": false, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
RankMajor_codeMajorTotalMenWomenMajor_categoryShareWomenSample_sizeEmployed...Part_timeFull_time_year_roundUnemployedUnemployment_rateMedianP25thP75thCollege_jobsNon_college_jobsLow_wage_jobs
012419PETROLEUM ENGINEERING2339.02057.0282.0Engineering0.120564361976...2701207370.018381110000950001250001534364193
122416MINING AND MINERAL ENGINEERING756.0679.077.0Engineering0.1018527640...170388850.11724175000550009000035025750
232415METALLURGICAL ENGINEERING856.0725.0131.0Engineering0.1530373648...133340160.02409673000500001050004561760
342417NAVAL ARCHITECTURE AND MARINE ENGINEERING1258.01123.0135.0Engineering0.10731316758...150692400.0501257000043000800005291020
452405CHEMICAL ENGINEERING32260.021239.011021.0Engineering0.34163128925694...51801669716720.061098650005000075000183144440972
562418NUCLEAR ENGINEERING2573.02200.0373.0Engineering0.144967171857...26414494000.17722665000500001020001142657244
676202ACTUARIAL SCIENCE3777.02110.01667.0Business0.441356512912...29624823080.0956526200053000720001768314259
785001ASTRONOMY AND ASTROPHYSICS1792.0832.0960.0Physical Sciences0.535714101526...553827330.0211676200031500109000972500220
892414MECHANICAL ENGINEERING91227.080320.010907.0Engineering0.119559102976442...131015463946500.05734260000480007000052844163843253
9102408ELECTRICAL ENGINEERING81527.065511.016016.0Engineering0.19645063161928...126954141338950.05917460000450007200045829108743170
\n", "

10 rows × 21 columns

\n", "
" ], "text/plain": [ " Rank Major_code Major Total \\\n", "0 1 2419 PETROLEUM ENGINEERING 2339.0 \n", "1 2 2416 MINING AND MINERAL ENGINEERING 756.0 \n", "2 3 2415 METALLURGICAL ENGINEERING 856.0 \n", "3 4 2417 NAVAL ARCHITECTURE AND MARINE ENGINEERING 1258.0 \n", "4 5 2405 CHEMICAL ENGINEERING 32260.0 \n", "5 6 2418 NUCLEAR ENGINEERING 2573.0 \n", "6 7 6202 ACTUARIAL SCIENCE 3777.0 \n", "7 8 5001 ASTRONOMY AND ASTROPHYSICS 1792.0 \n", "8 9 2414 MECHANICAL ENGINEERING 91227.0 \n", "9 10 2408 ELECTRICAL ENGINEERING 81527.0 \n", "\n", " Men Women Major_category ShareWomen Sample_size Employed \\\n", "0 2057.0 282.0 Engineering 0.120564 36 1976 \n", "1 679.0 77.0 Engineering 0.101852 7 640 \n", "2 725.0 131.0 Engineering 0.153037 3 648 \n", "3 1123.0 135.0 Engineering 0.107313 16 758 \n", "4 21239.0 11021.0 Engineering 0.341631 289 25694 \n", "5 2200.0 373.0 Engineering 0.144967 17 1857 \n", "6 2110.0 1667.0 Business 0.441356 51 2912 \n", "7 832.0 960.0 Physical Sciences 0.535714 10 1526 \n", "8 80320.0 10907.0 Engineering 0.119559 1029 76442 \n", "9 65511.0 16016.0 Engineering 0.196450 631 61928 \n", "\n", " ... Part_time Full_time_year_round Unemployed Unemployment_rate \\\n", "0 ... 270 1207 37 0.018381 \n", "1 ... 170 388 85 0.117241 \n", "2 ... 133 340 16 0.024096 \n", "3 ... 150 692 40 0.050125 \n", "4 ... 5180 16697 1672 0.061098 \n", "5 ... 264 1449 400 0.177226 \n", "6 ... 296 2482 308 0.095652 \n", "7 ... 553 827 33 0.021167 \n", "8 ... 13101 54639 4650 0.057342 \n", "9 ... 12695 41413 3895 0.059174 \n", "\n", " Median P25th P75th College_jobs Non_college_jobs Low_wage_jobs \n", "0 110000 95000 125000 1534 364 193 \n", "1 75000 55000 90000 350 257 50 \n", "2 73000 50000 105000 456 176 0 \n", "3 70000 43000 80000 529 102 0 \n", "4 65000 50000 75000 18314 4440 972 \n", "5 65000 50000 102000 1142 657 244 \n", "6 62000 53000 72000 1768 314 259 \n", "7 62000 31500 109000 972 500 220 \n", "8 60000 48000 70000 52844 16384 3253 \n", "9 60000 45000 72000 45829 10874 3170 \n", "\n", "[10 rows x 21 columns]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Preview of the dataset\n", "data.head(n=10)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Description of the data\n", "\n", "**The Economic Guide To Picking A College Major**\n", "\n", "[https://fivethirtyeight.com/features/the-economic-guide-to-picking-a-college-major/](https://fivethirtyeight.com/features/the-economic-guide-to-picking-a-college-major/)\n", "\n", "Data dictionary available at\n", "\n", "[https://github.com/fivethirtyeight/data/tree/master/college-majors](https://github.com/fivethirtyeight/data/tree/master/college-majors)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "hide-output": false, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 173 entries, 0 to 172\n", "Data columns (total 21 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 Rank 173 non-null int64 \n", " 1 Major_code 173 non-null int64 \n", " 2 Major 173 non-null object \n", " 3 Total 172 non-null float64\n", " 4 Men 172 non-null float64\n", " 5 Women 172 non-null float64\n", " 6 Major_category 173 non-null object \n", " 7 ShareWomen 172 non-null float64\n", " 8 Sample_size 173 non-null int64 \n", " 9 Employed 173 non-null int64 \n", " 10 Full_time 173 non-null int64 \n", " 11 Part_time 173 non-null int64 \n", " 12 Full_time_year_round 173 non-null int64 \n", " 13 Unemployed 173 non-null int64 \n", " 14 Unemployment_rate 173 non-null float64\n", " 15 Median 173 non-null int64 \n", " 16 P25th 173 non-null int64 \n", " 17 P75th 173 non-null int64 \n", " 18 College_jobs 173 non-null int64 \n", " 19 Non_college_jobs 173 non-null int64 \n", " 20 Low_wage_jobs 173 non-null int64 \n", "dtypes: float64(5), int64(14), object(2)\n", "memory usage: 28.5+ KB\n" ] } ], "source": [ "# Info on the dataset\n", "data.info()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Access individual columns of data\n", "\n", "This returns a `Series` object" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "hide-output": false, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Type of data1 is \n" ] }, { "data": { "text/plain": [ "0 PETROLEUM ENGINEERING\n", "1 MINING AND MINERAL ENGINEERING\n", "2 METALLURGICAL ENGINEERING\n", "3 NAVAL ARCHITECTURE AND MARINE ENGINEERING\n", "4 CHEMICAL ENGINEERING\n", "Name: Major, dtype: object" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data1 = data['Major']\n", "print('Type of data1 is ',type(data1))\n", "data1.head()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Access multiple columns of data\n", "\n", "This returns a `DataFrame` object again" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "hide-output": false, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Type of data2 is \n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MajorShareWomen
0PETROLEUM ENGINEERING0.120564
1MINING AND MINERAL ENGINEERING0.101852
2METALLURGICAL ENGINEERING0.153037
3NAVAL ARCHITECTURE AND MARINE ENGINEERING0.107313
4CHEMICAL ENGINEERING0.341631
\n", "
" ], "text/plain": [ " Major ShareWomen\n", "0 PETROLEUM ENGINEERING 0.120564\n", "1 MINING AND MINERAL ENGINEERING 0.101852\n", "2 METALLURGICAL ENGINEERING 0.153037\n", "3 NAVAL ARCHITECTURE AND MARINE ENGINEERING 0.107313\n", "4 CHEMICAL ENGINEERING 0.341631" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data2 = data[['Major', 'ShareWomen']]\n", "print('Type of data2 is ',type(data2))\n", "data2.head()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Add a new column Stata style" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "hide-output": false, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TotalEmployedEmployment rate
02339.019760.844805
1756.06400.846561
2856.06480.757009
31258.07580.602544
432260.0256940.796466
\n", "
" ], "text/plain": [ " Total Employed Employment rate\n", "0 2339.0 1976 0.844805\n", "1 756.0 640 0.846561\n", "2 856.0 648 0.757009\n", "3 1258.0 758 0.602544\n", "4 32260.0 25694 0.796466" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data['Employment rate'] = data['Employed'] / data['Total']\n", "data[['Total', 'Employed', 'Employment rate']].head()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Average unemployment rate…" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "hide-output": false, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "6.819083091329481" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data['Unemployment_rate'].mean() * 100" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Simple summary statistics\n", "\n", "`.describe()` returns useful summary statistics" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "hide-output": false, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "count 173.000000\n", "mean 0.068191\n", "std 0.030331\n", "min 0.000000\n", "25% 0.050306\n", "50% 0.067961\n", "75% 0.087557\n", "max 0.177226\n", "Name: Unemployment_rate, dtype: float64" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data['Unemployment_rate'].describe()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Simple plots\n", "\n", "Pandas also provides a simple way to generate matplotlib plots" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "hide-output": false, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Median salary')" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "data.plot(x='ShareWomen', y='Median', kind='scatter', figsize=(10, 8), color='red')\n", "plt.xlabel('Share of women')\n", "plt.ylabel('Median salary')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Selecting and filtering\n", "\n", "We can use integer slicing to select rows as follows" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "hide-output": false, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
RankMajor_codeMajorTotalMenWomenMajor_categoryShareWomenSample_sizeEmployed...Full_time_year_roundUnemployedUnemployment_rateMedianP25thP75thCollege_jobsNon_college_jobsLow_wage_jobsEmployment rate
012419PETROLEUM ENGINEERING2339.02057.0282.0Engineering0.120564361976...1207370.0183811100009500012500015343641930.844805
122416MINING AND MINERAL ENGINEERING756.0679.077.0Engineering0.1018527640...388850.117241750005500090000350257500.846561
232415METALLURGICAL ENGINEERING856.0725.0131.0Engineering0.1530373648...340160.024096730005000010500045617600.757009
\n", "

3 rows × 22 columns

\n", "
" ], "text/plain": [ " Rank Major_code Major Total Men Women \\\n", "0 1 2419 PETROLEUM ENGINEERING 2339.0 2057.0 282.0 \n", "1 2 2416 MINING AND MINERAL ENGINEERING 756.0 679.0 77.0 \n", "2 3 2415 METALLURGICAL ENGINEERING 856.0 725.0 131.0 \n", "\n", " Major_category ShareWomen Sample_size Employed ... \\\n", "0 Engineering 0.120564 36 1976 ... \n", "1 Engineering 0.101852 7 640 ... \n", "2 Engineering 0.153037 3 648 ... \n", "\n", " Full_time_year_round Unemployed Unemployment_rate Median P25th P75th \\\n", "0 1207 37 0.018381 110000 95000 125000 \n", "1 388 85 0.117241 75000 55000 90000 \n", "2 340 16 0.024096 73000 50000 105000 \n", "\n", " College_jobs Non_college_jobs Low_wage_jobs Employment rate \n", "0 1534 364 193 0.844805 \n", "1 350 257 50 0.846561 \n", "2 456 176 0 0.757009 \n", "\n", "[3 rows x 22 columns]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[:3]" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Majors with the highest share of women\n", "\n", "First we will sort our values by a column in the dataframe" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "hide-output": false, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
RankMajor_codeMajorTotalMenWomenMajor_categoryShareWomenSample_sizeEmployed...Full_time_year_roundUnemployedUnemployment_rateMedianP25thP75thCollege_jobsNon_college_jobsLow_wage_jobsEmployment rate
1641652307EARLY CHILDHOOD EDUCATION37589.01167.036422.0Education0.96895434232551...2074813600.04010528000210003500023515770528680.865971
1631646102COMMUNICATION DISORDERS SCIENCES AND SERVICES38279.01225.037054.0Health0.9679989529763...1446014870.04758428000200004000019957940451250.777528
51526104MEDICAL ASSISTING SERVICES11123.0803.010320.0Health0.927807679168...42904070.0425074200030000650002091694812700.824238
\n", "

3 rows × 22 columns

\n", "
" ], "text/plain": [ " Rank Major_code Major Total \\\n", "164 165 2307 EARLY CHILDHOOD EDUCATION 37589.0 \n", "163 164 6102 COMMUNICATION DISORDERS SCIENCES AND SERVICES 38279.0 \n", "51 52 6104 MEDICAL ASSISTING SERVICES 11123.0 \n", "\n", " Men Women Major_category ShareWomen Sample_size Employed ... \\\n", "164 1167.0 36422.0 Education 0.968954 342 32551 ... \n", "163 1225.0 37054.0 Health 0.967998 95 29763 ... \n", "51 803.0 10320.0 Health 0.927807 67 9168 ... \n", "\n", " Full_time_year_round Unemployed Unemployment_rate Median P25th \\\n", "164 20748 1360 0.040105 28000 21000 \n", "163 14460 1487 0.047584 28000 20000 \n", "51 4290 407 0.042507 42000 30000 \n", "\n", " P75th College_jobs Non_college_jobs Low_wage_jobs Employment rate \n", "164 35000 23515 7705 2868 0.865971 \n", "163 40000 19957 9404 5125 0.777528 \n", "51 65000 2091 6948 1270 0.824238 \n", "\n", "[3 rows x 22 columns]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.sort_values(by='ShareWomen', ascending=False)[:3]" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Using row index\n", "\n", "Another way to select rows is to use row labels, i.e. set a row index\n", "\n", "Similar to the column labels, we can add row labels (the index)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "hide-output": false, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
RankMajorTotalMenWomenMajor_categoryShareWomenSample_sizeEmployedFull_time...Full_time_year_roundUnemployedUnemployment_rateMedianP25thP75thCollege_jobsNon_college_jobsLow_wage_jobsEmployment rate
Major_code
24191PETROLEUM ENGINEERING2339.02057.0282.0Engineering0.1205643619761849...1207370.0183811100009500012500015343641930.844805
24162MINING AND MINERAL ENGINEERING756.0679.077.0Engineering0.1018527640556...388850.117241750005500090000350257500.846561
24153METALLURGICAL ENGINEERING856.0725.0131.0Engineering0.1530373648558...340160.024096730005000010500045617600.757009
24174NAVAL ARCHITECTURE AND MARINE ENGINEERING1258.01123.0135.0Engineering0.107313167581069...692400.05012570000430008000052910200.602544
24055CHEMICAL ENGINEERING32260.021239.011021.0Engineering0.3416312892569423170...1669716720.0610986500050000750001831444409720.796466
\n", "

5 rows × 21 columns

\n", "
" ], "text/plain": [ " Rank Major Total Men \\\n", "Major_code \n", "2419 1 PETROLEUM ENGINEERING 2339.0 2057.0 \n", "2416 2 MINING AND MINERAL ENGINEERING 756.0 679.0 \n", "2415 3 METALLURGICAL ENGINEERING 856.0 725.0 \n", "2417 4 NAVAL ARCHITECTURE AND MARINE ENGINEERING 1258.0 1123.0 \n", "2405 5 CHEMICAL ENGINEERING 32260.0 21239.0 \n", "\n", " Women Major_category ShareWomen Sample_size Employed \\\n", "Major_code \n", "2419 282.0 Engineering 0.120564 36 1976 \n", "2416 77.0 Engineering 0.101852 7 640 \n", "2415 131.0 Engineering 0.153037 3 648 \n", "2417 135.0 Engineering 0.107313 16 758 \n", "2405 11021.0 Engineering 0.341631 289 25694 \n", "\n", " Full_time ... Full_time_year_round Unemployed \\\n", "Major_code ... \n", "2419 1849 ... 1207 37 \n", "2416 556 ... 388 85 \n", "2415 558 ... 340 16 \n", "2417 1069 ... 692 40 \n", "2405 23170 ... 16697 1672 \n", "\n", " Unemployment_rate Median P25th P75th College_jobs \\\n", "Major_code \n", "2419 0.018381 110000 95000 125000 1534 \n", "2416 0.117241 75000 55000 90000 350 \n", "2415 0.024096 73000 50000 105000 456 \n", "2417 0.050125 70000 43000 80000 529 \n", "2405 0.061098 65000 50000 75000 18314 \n", "\n", " Non_college_jobs Low_wage_jobs Employment rate \n", "Major_code \n", "2419 364 193 0.844805 \n", "2416 257 50 0.846561 \n", "2415 176 0 0.757009 \n", "2417 102 0 0.602544 \n", "2405 4440 972 0.796466 \n", "\n", "[5 rows x 21 columns]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.set_index('Major_code').head()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Need to overwrite dataframe\n", "\n", "Note: we haven’t actually changed the DataFrame `data`\n", "\n", "Need to overwrite `data` with the new copy" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "hide-output": false, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
RankMajor_codeMajorTotalMenWomenMajor_categoryShareWomenSample_sizeEmployed...Full_time_year_roundUnemployedUnemployment_rateMedianP25thP75thCollege_jobsNon_college_jobsLow_wage_jobsEmployment rate
012419PETROLEUM ENGINEERING2339.02057.0282.0Engineering0.120564361976...1207370.0183811100009500012500015343641930.844805
122416MINING AND MINERAL ENGINEERING756.0679.077.0Engineering0.1018527640...388850.117241750005500090000350257500.846561
232415METALLURGICAL ENGINEERING856.0725.0131.0Engineering0.1530373648...340160.024096730005000010500045617600.757009
342417NAVAL ARCHITECTURE AND MARINE ENGINEERING1258.01123.0135.0Engineering0.10731316758...692400.05012570000430008000052910200.602544
452405CHEMICAL ENGINEERING32260.021239.011021.0Engineering0.34163128925694...1669716720.0610986500050000750001831444409720.796466
\n", "

5 rows × 22 columns

\n", "
" ], "text/plain": [ " Rank Major_code Major Total \\\n", "0 1 2419 PETROLEUM ENGINEERING 2339.0 \n", "1 2 2416 MINING AND MINERAL ENGINEERING 756.0 \n", "2 3 2415 METALLURGICAL ENGINEERING 856.0 \n", "3 4 2417 NAVAL ARCHITECTURE AND MARINE ENGINEERING 1258.0 \n", "4 5 2405 CHEMICAL ENGINEERING 32260.0 \n", "\n", " Men Women Major_category ShareWomen Sample_size Employed ... \\\n", "0 2057.0 282.0 Engineering 0.120564 36 1976 ... \n", "1 679.0 77.0 Engineering 0.101852 7 640 ... \n", "2 725.0 131.0 Engineering 0.153037 3 648 ... \n", "3 1123.0 135.0 Engineering 0.107313 16 758 ... \n", "4 21239.0 11021.0 Engineering 0.341631 289 25694 ... \n", "\n", " Full_time_year_round Unemployed Unemployment_rate Median P25th P75th \\\n", "0 1207 37 0.018381 110000 95000 125000 \n", "1 388 85 0.117241 75000 55000 90000 \n", "2 340 16 0.024096 73000 50000 105000 \n", "3 692 40 0.050125 70000 43000 80000 \n", "4 16697 1672 0.061098 65000 50000 75000 \n", "\n", " College_jobs Non_college_jobs Low_wage_jobs Employment rate \n", "0 1534 364 193 0.844805 \n", "1 350 257 50 0.846561 \n", "2 456 176 0 0.757009 \n", "3 529 102 0 0.602544 \n", "4 18314 4440 972 0.796466 \n", "\n", "[5 rows x 22 columns]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.head()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "hide-output": false, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
RankMajorTotalMenWomenMajor_categoryShareWomenSample_sizeEmployedFull_time...Full_time_year_roundUnemployedUnemployment_rateMedianP25thP75thCollege_jobsNon_college_jobsLow_wage_jobsEmployment rate
Major_code
24191PETROLEUM ENGINEERING2339.02057.0282.0Engineering0.1205643619761849...1207370.0183811100009500012500015343641930.844805
24162MINING AND MINERAL ENGINEERING756.0679.077.0Engineering0.1018527640556...388850.117241750005500090000350257500.846561
24153METALLURGICAL ENGINEERING856.0725.0131.0Engineering0.1530373648558...340160.024096730005000010500045617600.757009
24174NAVAL ARCHITECTURE AND MARINE ENGINEERING1258.01123.0135.0Engineering0.107313167581069...692400.05012570000430008000052910200.602544
24055CHEMICAL ENGINEERING32260.021239.011021.0Engineering0.3416312892569423170...1669716720.0610986500050000750001831444409720.796466
\n", "

5 rows × 21 columns

\n", "
" ], "text/plain": [ " Rank Major Total Men \\\n", "Major_code \n", "2419 1 PETROLEUM ENGINEERING 2339.0 2057.0 \n", "2416 2 MINING AND MINERAL ENGINEERING 756.0 679.0 \n", "2415 3 METALLURGICAL ENGINEERING 856.0 725.0 \n", "2417 4 NAVAL ARCHITECTURE AND MARINE ENGINEERING 1258.0 1123.0 \n", "2405 5 CHEMICAL ENGINEERING 32260.0 21239.0 \n", "\n", " Women Major_category ShareWomen Sample_size Employed \\\n", "Major_code \n", "2419 282.0 Engineering 0.120564 36 1976 \n", "2416 77.0 Engineering 0.101852 7 640 \n", "2415 131.0 Engineering 0.153037 3 648 \n", "2417 135.0 Engineering 0.107313 16 758 \n", "2405 11021.0 Engineering 0.341631 289 25694 \n", "\n", " Full_time ... Full_time_year_round Unemployed \\\n", "Major_code ... \n", "2419 1849 ... 1207 37 \n", "2416 556 ... 388 85 \n", "2415 558 ... 340 16 \n", "2417 1069 ... 692 40 \n", "2405 23170 ... 16697 1672 \n", "\n", " Unemployment_rate Median P25th P75th College_jobs \\\n", "Major_code \n", "2419 0.018381 110000 95000 125000 1534 \n", "2416 0.117241 75000 55000 90000 350 \n", "2415 0.024096 73000 50000 105000 456 \n", "2417 0.050125 70000 43000 80000 529 \n", "2405 0.061098 65000 50000 75000 18314 \n", "\n", " Non_college_jobs Low_wage_jobs Employment rate \n", "Major_code \n", "2419 364 193 0.844805 \n", "2416 257 50 0.846561 \n", "2415 176 0 0.757009 \n", "2417 102 0 0.602544 \n", "2405 4440 972 0.796466 \n", "\n", "[5 rows x 21 columns]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = data.set_index('Major_code')\n", "# Could also use data.set_index('Major_code', inplace=True)\n", "data.head()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### After index is set, we can access with `loc`\n", "\n", "Using `Major_code` variable values as labels for rows" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "hide-output": false, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "Rank 5\n", "Major CHEMICAL ENGINEERING\n", "Total 32260\n", "Men 21239\n", "Women 11021\n", "Major_category Engineering\n", "ShareWomen 0.341631\n", "Sample_size 289\n", "Employed 25694\n", "Full_time 23170\n", "Part_time 5180\n", "Full_time_year_round 16697\n", "Unemployed 1672\n", "Unemployment_rate 0.0610977\n", "Median 65000\n", "P25th 50000\n", "P75th 75000\n", "College_jobs 18314\n", "Non_college_jobs 4440\n", "Low_wage_jobs 972\n", "Employment rate 0.796466\n", "Name: 2405, dtype: object" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.loc[2405]" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "hide-output": false, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
RankMajorTotalMenWomenMajor_categoryShareWomenSample_sizeEmployedFull_time...Full_time_year_roundUnemployedUnemployment_rateMedianP25thP75thCollege_jobsNon_college_jobsLow_wage_jobsEmployment rate
Major_code
6102164COMMUNICATION DISORDERS SCIENCES AND SERVICES38279.01225.037054.0Health0.967998952976319975...1446014870.04758428000200004000019957940451250.777528
50018ASTRONOMY AND ASTROPHYSICS1792.0832.0960.0Physical Sciences0.5357141015261085...827330.02116762000315001090009725002200.851562
\n", "

2 rows × 21 columns

\n", "
" ], "text/plain": [ " Rank Major Total \\\n", "Major_code \n", "6102 164 COMMUNICATION DISORDERS SCIENCES AND SERVICES 38279.0 \n", "5001 8 ASTRONOMY AND ASTROPHYSICS 1792.0 \n", "\n", " Men Women Major_category ShareWomen Sample_size \\\n", "Major_code \n", "6102 1225.0 37054.0 Health 0.967998 95 \n", "5001 832.0 960.0 Physical Sciences 0.535714 10 \n", "\n", " Employed Full_time ... Full_time_year_round Unemployed \\\n", "Major_code ... \n", "6102 29763 19975 ... 14460 1487 \n", "5001 1526 1085 ... 827 33 \n", "\n", " Unemployment_rate Median P25th P75th College_jobs \\\n", "Major_code \n", "6102 0.047584 28000 20000 40000 19957 \n", "5001 0.021167 62000 31500 109000 972 \n", "\n", " Non_college_jobs Low_wage_jobs Employment rate \n", "Major_code \n", "6102 9404 5125 0.777528 \n", "5001 500 220 0.851562 \n", "\n", "[2 rows x 21 columns]" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "code_list = [6102, 5001]\n", "\n", "data.loc[code_list]" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Sorting index\n", "\n", "Recommended for efficient selecting and filtering" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "hide-output": false, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
RankMajorTotalMenWomenMajor_categoryShareWomenSample_sizeEmployedFull_time...Full_time_year_roundUnemployedUnemployment_rateMedianP25thP75thCollege_jobsNon_college_jobsLow_wage_jobsEmployment rate
Major_code
110065GENERAL AGRICULTURE10399.06053.04346.0Agriculture & Natural Resources0.41792515888847589...58881780.019642400003000050000241847178390.854313
110164AGRICULTURE PRODUCTION AND MANAGEMENT14240.09658.04582.0Agriculture & Natural Resources0.3217702731232311119...90936490.0500314000025000500001925622113620.865379
110272AGRICULTURAL ECONOMICS2439.01749.0690.0Agriculture & Natural Resources0.2829034421741819...15281820.077250400002700054000535893940.891349
1103153ANIMAL SCIENCES21573.05347.016226.0Agriculture & Natural Resources0.7521442551711214479...108249170.0508623000022000400005443957121250.793214
110422FOOD SCIENCENaNNaNNaNAgriculture & Natural ResourcesNaN3631492558...17353380.09693153000320007000011831274485NaN
\n", "

5 rows × 21 columns

\n", "
" ], "text/plain": [ " Rank Major Total Men \\\n", "Major_code \n", "1100 65 GENERAL AGRICULTURE 10399.0 6053.0 \n", "1101 64 AGRICULTURE PRODUCTION AND MANAGEMENT 14240.0 9658.0 \n", "1102 72 AGRICULTURAL ECONOMICS 2439.0 1749.0 \n", "1103 153 ANIMAL SCIENCES 21573.0 5347.0 \n", "1104 22 FOOD SCIENCE NaN NaN \n", "\n", " Women Major_category ShareWomen Sample_size \\\n", "Major_code \n", "1100 4346.0 Agriculture & Natural Resources 0.417925 158 \n", "1101 4582.0 Agriculture & Natural Resources 0.321770 273 \n", "1102 690.0 Agriculture & Natural Resources 0.282903 44 \n", "1103 16226.0 Agriculture & Natural Resources 0.752144 255 \n", "1104 NaN Agriculture & Natural Resources NaN 36 \n", "\n", " Employed Full_time ... Full_time_year_round Unemployed \\\n", "Major_code ... \n", "1100 8884 7589 ... 5888 178 \n", "1101 12323 11119 ... 9093 649 \n", "1102 2174 1819 ... 1528 182 \n", "1103 17112 14479 ... 10824 917 \n", "1104 3149 2558 ... 1735 338 \n", "\n", " Unemployment_rate Median P25th P75th College_jobs \\\n", "Major_code \n", "1100 0.019642 40000 30000 50000 2418 \n", "1101 0.050031 40000 25000 50000 1925 \n", "1102 0.077250 40000 27000 54000 535 \n", "1103 0.050862 30000 22000 40000 5443 \n", "1104 0.096931 53000 32000 70000 1183 \n", "\n", " Non_college_jobs Low_wage_jobs Employment rate \n", "Major_code \n", "1100 4717 839 0.854313 \n", "1101 6221 1362 0.865379 \n", "1102 893 94 0.891349 \n", "1103 9571 2125 0.793214 \n", "1104 1274 485 NaN \n", "\n", "[5 rows x 21 columns]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.sort_index(inplace=True)\n", "data.head()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Selecting rows\n", "\n", "Alternatively, we can filter our dataframe (select rows) using *boolean conditions*" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "hide-output": false, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
RankMajorTotalMenWomenMajor_categoryShareWomenSample_sizeEmployedFull_time...Full_time_year_roundUnemployedUnemployment_rateMedianP25thP75thCollege_jobsNon_college_jobsLow_wage_jobsEmployment rate
Major_code
6000150FINE ARTS74440.024786.049654.0Arts0.6670346235967942764...3187754860.0841863050021000410002079232725118800.801706
6001167DRAMA AND THEATER ARTS43249.014440.028809.0Arts0.6661193573616525147...1689130400.077541270001920035000699425313110680.836204
6002147MUSIC60633.029909.030724.0Arts0.5067214194766229010...2142539180.075960310002230042000137522878692860.786074
6003154VISUAL AND PERFORMING ARTS16250.04133.012117.0Arts0.745662132128708447...632214650.1021973000022000400003849763528400.792000
600496COMMERCIAL ART AND GRAPHIC DESIGN103480.032041.071439.0Arts0.69036511868348367448...5224389470.0967983500025000450003738938119148390.806755
\n", "

5 rows × 21 columns

\n", "
" ], "text/plain": [ " Rank Major Total Men \\\n", "Major_code \n", "6000 150 FINE ARTS 74440.0 24786.0 \n", "6001 167 DRAMA AND THEATER ARTS 43249.0 14440.0 \n", "6002 147 MUSIC 60633.0 29909.0 \n", "6003 154 VISUAL AND PERFORMING ARTS 16250.0 4133.0 \n", "6004 96 COMMERCIAL ART AND GRAPHIC DESIGN 103480.0 32041.0 \n", "\n", " Women Major_category ShareWomen Sample_size Employed \\\n", "Major_code \n", "6000 49654.0 Arts 0.667034 623 59679 \n", "6001 28809.0 Arts 0.666119 357 36165 \n", "6002 30724.0 Arts 0.506721 419 47662 \n", "6003 12117.0 Arts 0.745662 132 12870 \n", "6004 71439.0 Arts 0.690365 1186 83483 \n", "\n", " Full_time ... Full_time_year_round Unemployed \\\n", "Major_code ... \n", "6000 42764 ... 31877 5486 \n", "6001 25147 ... 16891 3040 \n", "6002 29010 ... 21425 3918 \n", "6003 8447 ... 6322 1465 \n", "6004 67448 ... 52243 8947 \n", "\n", " Unemployment_rate Median P25th P75th College_jobs \\\n", "Major_code \n", "6000 0.084186 30500 21000 41000 20792 \n", "6001 0.077541 27000 19200 35000 6994 \n", "6002 0.075960 31000 22300 42000 13752 \n", "6003 0.102197 30000 22000 40000 3849 \n", "6004 0.096798 35000 25000 45000 37389 \n", "\n", " Non_college_jobs Low_wage_jobs Employment rate \n", "Major_code \n", "6000 32725 11880 0.801706 \n", "6001 25313 11068 0.836204 \n", "6002 28786 9286 0.786074 \n", "6003 7635 2840 0.792000 \n", "6004 38119 14839 0.806755 \n", "\n", "[5 rows x 21 columns]" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "selection = data['Major_category'] == 'Arts'\n", "data[selection].head()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "hide-output": false, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
RankMajorTotalMenWomenMajor_categoryShareWomenSample_sizeEmployedFull_time...Full_time_year_roundUnemployedUnemployment_rateMedianP25thP75thCollege_jobsNon_college_jobsLow_wage_jobsEmployment rate
Major_code
600496COMMERCIAL ART AND GRAPHIC DESIGN103480.032041.071439.0Arts0.69036511868348367448...5224389470.0967983500025000450003738938119148390.806755
\n", "

1 rows × 21 columns

\n", "
" ], "text/plain": [ " Rank Major Total Men \\\n", "Major_code \n", "6004 96 COMMERCIAL ART AND GRAPHIC DESIGN 103480.0 32041.0 \n", "\n", " Women Major_category ShareWomen Sample_size Employed \\\n", "Major_code \n", "6004 71439.0 Arts 0.690365 1186 83483 \n", "\n", " Full_time ... Full_time_year_round Unemployed \\\n", "Major_code ... \n", "6004 67448 ... 52243 8947 \n", "\n", " Unemployment_rate Median P25th P75th College_jobs \\\n", "Major_code \n", "6004 0.096798 35000 25000 45000 37389 \n", "\n", " Non_college_jobs Low_wage_jobs Employment rate \n", "Major_code \n", "6004 38119 14839 0.806755 \n", "\n", "[1 rows x 21 columns]" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "selection = data['Major_category'] == 'Arts'\n", "data[selection & (data['Total'] > 100000)].head()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Grouping and aggregating data\n", "\n", "We might want to summarize our data by grouping it by major categories\n", "\n", "To do this, we will use the `.groupby()` function" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "hide-output": false, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "grouped = data.groupby('Major_category')\n", "grouped" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "hide-output": false, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n" ] }, { "data": { "text/plain": [ "{'Agriculture & Natural Resources': Int64Index([1100, 1101, 1102, 1103, 1104, 1105, 1106, 1199, 1302, 1303], dtype='int64', name='Major_code'),\n", " 'Arts': Int64Index([6000, 6001, 6002, 6003, 6004, 6005, 6007, 6099], dtype='int64', name='Major_code'),\n", " 'Biology & Life Science': Int64Index([1301, 3600, 3601, 3602, 3603, 3604, 3605, 3606, 3607, 3608, 3609,\n", " 3611, 3699, 4006],\n", " dtype='int64', name='Major_code'),\n", " 'Business': Int64Index([6200, 6201, 6202, 6203, 6204, 6205, 6206, 6207, 6209, 6210, 6211,\n", " 6212, 6299],\n", " dtype='int64', name='Major_code'),\n", " 'Communications & Journalism': Int64Index([1901, 1902, 1903, 1904], dtype='int64', name='Major_code'),\n", " 'Computers & Mathematics': Int64Index([2001, 2100, 2101, 2102, 2105, 2106, 2107, 3700, 3701, 3702, 4005], dtype='int64', name='Major_code'),\n", " 'Education': Int64Index([2300, 2301, 2303, 2304, 2305, 2306, 2307, 2308, 2309, 2310, 2311,\n", " 2312, 2313, 2314, 2399, 3501],\n", " dtype='int64', name='Major_code'),\n", " 'Engineering': Int64Index([1401, 2400, 2401, 2402, 2403, 2404, 2405, 2406, 2407, 2408, 2409,\n", " 2410, 2411, 2412, 2413, 2414, 2415, 2416, 2417, 2418, 2419, 2499,\n", " 2500, 2501, 2502, 2503, 2504, 2599, 5008],\n", " dtype='int64', name='Major_code'),\n", " 'Health': Int64Index([4002, 6100, 6102, 6103, 6104, 6105, 6106, 6107, 6108, 6109, 6110,\n", " 6199],\n", " dtype='int64', name='Major_code'),\n", " 'Humanities & Liberal Arts': Int64Index([1501, 2601, 2602, 2603, 3301, 3302, 3401, 3402, 4001, 4801, 4901,\n", " 5502, 6006, 6402, 6403],\n", " dtype='int64', name='Major_code'),\n", " 'Industrial Arts & Consumer Services': Int64Index([2201, 2901, 3801, 4101, 5601, 5701, 5901], dtype='int64', name='Major_code'),\n", " 'Interdisciplinary': Int64Index([4000], dtype='int64', name='Major_code'),\n", " 'Law & Public Policy': Int64Index([3201, 3202, 5301, 5401, 5402], dtype='int64', name='Major_code'),\n", " 'Physical Sciences': Int64Index([5000, 5001, 5002, 5003, 5004, 5005, 5006, 5007, 5098, 5102], dtype='int64', name='Major_code'),\n", " 'Psychology & Social Work': Int64Index([5200, 5201, 5202, 5203, 5205, 5206, 5299, 5403, 5404], dtype='int64', name='Major_code'),\n", " 'Social Science': Int64Index([4007, 5500, 5501, 5503, 5504, 5505, 5506, 5507, 5599], dtype='int64', name='Major_code')}" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print(type(grouped))\n", "print(type(grouped.groups))\n", "grouped.groups" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Reduce functions for the grouped data\n", "\n", "To return an *aggregated* dataframe, we need to specify the function we\n", "would like pandas to use to aggregate our groups\n", "\n", "- Mean \n", "- Sum \n", "- Count \n", "\n", "\n", "A list of built-in aggregatation functions [https://pandas.pydata.org/pandas-docs/stable/user_guide/groupby.html](https://pandas.pydata.org/pandas-docs/stable/user_guide/groupby.html)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "hide-output": false, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
RankTotalMenWomenShareWomenSample_sizeEmployedFull_timePart_timeFull_time_year_roundUnemployedUnemployment_rateMedianP25thP75thCollege_jobsNon_college_jobsLow_wage_jobsEmployment rate
Major_category
Agriculture & Natural Resources101.5000008402.2222224484.1111113918.1111110.405267110.4000006694.3000005814.3000001659.1000004362.600000382.4000000.05632836900.00000025400.00000048010.0000001986.0000003449.100000789.9000000.860603
Arts131.12500044641.25000016798.75000027842.5000000.603658407.50000036014.25000025971.62500014348.87500019138.8750003528.5000000.09017333062.50000021962.50000043662.50000011848.12500020465.0000007514.5000000.815670
Biology & Life Science95.35714332418.71428613208.50000019210.2142860.587193165.50000021628.35714317169.7857148338.28571411843.0000001632.4285710.06091836421.42857126614.28571446085.71428610802.3571439084.4285713053.0000000.700543
Business55.846154100182.76923151373.23076948809.5384620.4831981192.69230883749.38461576066.92307715148.92307760801.9230776144.3846150.07106443538.46153833461.53846254846.15384611426.00000038197.6923089752.9230770.829638
Communications & Journalism104.00000098150.25000032980.25000065170.0000000.6583841127.00000082665.00000068332.50000022454.25000053557.0000006713.0000000.07553834500.00000026250.00000044975.00000021639.00000043248.00000012398.7500000.844534
Computers & Mathematics57.00000027182.54545518975.0000008207.5454550.311772260.00000021626.72727318867.7272734842.72727314468.7272731670.2727270.08425642745.45454529290.90909158090.90909112532.6363646769.3636361466.9090910.799617
Education130.37500034945.5625006470.37500028475.1875000.748507296.37500029989.93750024878.6875007537.06250018001.9375001560.5625000.05170232350.00000026590.62500038562.50000021169.5625007610.0625002554.3750000.856697
Engineering22.62069018537.34482814079.5517244457.7931030.238889169.86206914495.58620713167.8275862935.7241389963.8620691028.1724140.06333457382.75862141555.17241470448.2758629302.3103453530.448276864.7931030.787311
Health96.50000038602.5000006293.08333332309.4166670.795152326.16666731012.25000024568.2500009549.33333319034.8333331851.0833330.06592036825.00000026166.66666750250.00000020453.4166679208.0000002605.8333330.758078
Humanities & Liberal Arts135.06666747564.53333318189.73333329374.8000000.631790356.00000036274.53333327795.93333314268.66666719704.0666673406.7333330.08100831913.33333323493.33333342073.33333312843.33333318435.4666676282.6666670.767983
Industrial Arts & Consumer Services105.14285732827.42857114825.85714318001.5714290.349523309.28571427006.14285721626.1428578731.71428616311.2857141646.5714290.04807136342.85714326771.42857145142.8571438171.42857114945.7142863798.5714290.715442
Interdisciplinary110.00000012296.0000002817.0000009479.0000000.770901128.0000009821.0000008032.0000003173.0000006234.000000749.0000000.07086135000.00000025000.00000044000.0000005176.0000003903.0000001061.0000000.798715
Law & Public Policy64.60000035821.40000018225.80000017595.6000000.483649387.00000028958.00000025388.0000007642.60000020090.8000002699.0000000.09080542200.00000032640.00000055000.0000005844.20000020004.8000004144.0000000.770304
Physical Sciences67.60000018547.9000009539.0000009008.9000000.508683113.70000013923.10000011285.2000004344.4000008563.500000788.0000000.04651141890.00000028350.00000057290.0000007655.2000004946.9000001407.8000000.776080
Psychology & Social Work143.00000053445.22222210901.66666742543.5555560.794397353.33333342260.44444432111.11111115332.44444424233.8888893699.1111110.07206530100.00000025333.33333338777.77777818256.11111118818.4444446249.5555560.795633
Social Science91.66666758885.11111128537.11111130348.0000000.553962509.00000044610.33333338571.22222213507.66666728357.6666674775.0000000.09572937344.44444428355.55555650111.11111112662.22222221138.4444446020.0000000.770296
\n", "
" ], "text/plain": [ " Rank Total Men \\\n", "Major_category \n", "Agriculture & Natural Resources 101.500000 8402.222222 4484.111111 \n", "Arts 131.125000 44641.250000 16798.750000 \n", "Biology & Life Science 95.357143 32418.714286 13208.500000 \n", "Business 55.846154 100182.769231 51373.230769 \n", "Communications & Journalism 104.000000 98150.250000 32980.250000 \n", "Computers & Mathematics 57.000000 27182.545455 18975.000000 \n", "Education 130.375000 34945.562500 6470.375000 \n", "Engineering 22.620690 18537.344828 14079.551724 \n", "Health 96.500000 38602.500000 6293.083333 \n", "Humanities & Liberal Arts 135.066667 47564.533333 18189.733333 \n", "Industrial Arts & Consumer Services 105.142857 32827.428571 14825.857143 \n", "Interdisciplinary 110.000000 12296.000000 2817.000000 \n", "Law & Public Policy 64.600000 35821.400000 18225.800000 \n", "Physical Sciences 67.600000 18547.900000 9539.000000 \n", "Psychology & Social Work 143.000000 53445.222222 10901.666667 \n", "Social Science 91.666667 58885.111111 28537.111111 \n", "\n", " Women ShareWomen Sample_size \\\n", "Major_category \n", "Agriculture & Natural Resources 3918.111111 0.405267 110.400000 \n", "Arts 27842.500000 0.603658 407.500000 \n", "Biology & Life Science 19210.214286 0.587193 165.500000 \n", "Business 48809.538462 0.483198 1192.692308 \n", "Communications & Journalism 65170.000000 0.658384 1127.000000 \n", "Computers & Mathematics 8207.545455 0.311772 260.000000 \n", "Education 28475.187500 0.748507 296.375000 \n", "Engineering 4457.793103 0.238889 169.862069 \n", "Health 32309.416667 0.795152 326.166667 \n", "Humanities & Liberal Arts 29374.800000 0.631790 356.000000 \n", "Industrial Arts & Consumer Services 18001.571429 0.349523 309.285714 \n", "Interdisciplinary 9479.000000 0.770901 128.000000 \n", "Law & Public Policy 17595.600000 0.483649 387.000000 \n", "Physical Sciences 9008.900000 0.508683 113.700000 \n", "Psychology & Social Work 42543.555556 0.794397 353.333333 \n", "Social Science 30348.000000 0.553962 509.000000 \n", "\n", " Employed Full_time Part_time \\\n", "Major_category \n", "Agriculture & Natural Resources 6694.300000 5814.300000 1659.100000 \n", "Arts 36014.250000 25971.625000 14348.875000 \n", "Biology & Life Science 21628.357143 17169.785714 8338.285714 \n", "Business 83749.384615 76066.923077 15148.923077 \n", "Communications & Journalism 82665.000000 68332.500000 22454.250000 \n", "Computers & Mathematics 21626.727273 18867.727273 4842.727273 \n", "Education 29989.937500 24878.687500 7537.062500 \n", "Engineering 14495.586207 13167.827586 2935.724138 \n", "Health 31012.250000 24568.250000 9549.333333 \n", "Humanities & Liberal Arts 36274.533333 27795.933333 14268.666667 \n", "Industrial Arts & Consumer Services 27006.142857 21626.142857 8731.714286 \n", "Interdisciplinary 9821.000000 8032.000000 3173.000000 \n", "Law & Public Policy 28958.000000 25388.000000 7642.600000 \n", "Physical Sciences 13923.100000 11285.200000 4344.400000 \n", "Psychology & Social Work 42260.444444 32111.111111 15332.444444 \n", "Social Science 44610.333333 38571.222222 13507.666667 \n", "\n", " Full_time_year_round Unemployed \\\n", "Major_category \n", "Agriculture & Natural Resources 4362.600000 382.400000 \n", "Arts 19138.875000 3528.500000 \n", "Biology & Life Science 11843.000000 1632.428571 \n", "Business 60801.923077 6144.384615 \n", "Communications & Journalism 53557.000000 6713.000000 \n", "Computers & Mathematics 14468.727273 1670.272727 \n", "Education 18001.937500 1560.562500 \n", "Engineering 9963.862069 1028.172414 \n", "Health 19034.833333 1851.083333 \n", "Humanities & Liberal Arts 19704.066667 3406.733333 \n", "Industrial Arts & Consumer Services 16311.285714 1646.571429 \n", "Interdisciplinary 6234.000000 749.000000 \n", "Law & Public Policy 20090.800000 2699.000000 \n", "Physical Sciences 8563.500000 788.000000 \n", "Psychology & Social Work 24233.888889 3699.111111 \n", "Social Science 28357.666667 4775.000000 \n", "\n", " Unemployment_rate Median \\\n", "Major_category \n", "Agriculture & Natural Resources 0.056328 36900.000000 \n", "Arts 0.090173 33062.500000 \n", "Biology & Life Science 0.060918 36421.428571 \n", "Business 0.071064 43538.461538 \n", "Communications & Journalism 0.075538 34500.000000 \n", "Computers & Mathematics 0.084256 42745.454545 \n", "Education 0.051702 32350.000000 \n", "Engineering 0.063334 57382.758621 \n", "Health 0.065920 36825.000000 \n", "Humanities & Liberal Arts 0.081008 31913.333333 \n", "Industrial Arts & Consumer Services 0.048071 36342.857143 \n", "Interdisciplinary 0.070861 35000.000000 \n", "Law & Public Policy 0.090805 42200.000000 \n", "Physical Sciences 0.046511 41890.000000 \n", "Psychology & Social Work 0.072065 30100.000000 \n", "Social Science 0.095729 37344.444444 \n", "\n", " P25th P75th College_jobs \\\n", "Major_category \n", "Agriculture & Natural Resources 25400.000000 48010.000000 1986.000000 \n", "Arts 21962.500000 43662.500000 11848.125000 \n", "Biology & Life Science 26614.285714 46085.714286 10802.357143 \n", "Business 33461.538462 54846.153846 11426.000000 \n", "Communications & Journalism 26250.000000 44975.000000 21639.000000 \n", "Computers & Mathematics 29290.909091 58090.909091 12532.636364 \n", "Education 26590.625000 38562.500000 21169.562500 \n", "Engineering 41555.172414 70448.275862 9302.310345 \n", "Health 26166.666667 50250.000000 20453.416667 \n", "Humanities & Liberal Arts 23493.333333 42073.333333 12843.333333 \n", "Industrial Arts & Consumer Services 26771.428571 45142.857143 8171.428571 \n", "Interdisciplinary 25000.000000 44000.000000 5176.000000 \n", "Law & Public Policy 32640.000000 55000.000000 5844.200000 \n", "Physical Sciences 28350.000000 57290.000000 7655.200000 \n", "Psychology & Social Work 25333.333333 38777.777778 18256.111111 \n", "Social Science 28355.555556 50111.111111 12662.222222 \n", "\n", " Non_college_jobs Low_wage_jobs \\\n", "Major_category \n", "Agriculture & Natural Resources 3449.100000 789.900000 \n", "Arts 20465.000000 7514.500000 \n", "Biology & Life Science 9084.428571 3053.000000 \n", "Business 38197.692308 9752.923077 \n", "Communications & Journalism 43248.000000 12398.750000 \n", "Computers & Mathematics 6769.363636 1466.909091 \n", "Education 7610.062500 2554.375000 \n", "Engineering 3530.448276 864.793103 \n", "Health 9208.000000 2605.833333 \n", "Humanities & Liberal Arts 18435.466667 6282.666667 \n", "Industrial Arts & Consumer Services 14945.714286 3798.571429 \n", "Interdisciplinary 3903.000000 1061.000000 \n", "Law & Public Policy 20004.800000 4144.000000 \n", "Physical Sciences 4946.900000 1407.800000 \n", "Psychology & Social Work 18818.444444 6249.555556 \n", "Social Science 21138.444444 6020.000000 \n", "\n", " Employment rate \n", "Major_category \n", "Agriculture & Natural Resources 0.860603 \n", "Arts 0.815670 \n", "Biology & Life Science 0.700543 \n", "Business 0.829638 \n", "Communications & Journalism 0.844534 \n", "Computers & Mathematics 0.799617 \n", "Education 0.856697 \n", "Engineering 0.787311 \n", "Health 0.758078 \n", "Humanities & Liberal Arts 0.767983 \n", "Industrial Arts & Consumer Services 0.715442 \n", "Interdisciplinary 0.798715 \n", "Law & Public Policy 0.770304 \n", "Physical Sciences 0.776080 \n", "Psychology & Social Work 0.795633 \n", "Social Science 0.770296 " ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "grouped.mean()" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "hide-output": false, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "Major_category\n", "Agriculture & Natural Resources 36900.000000\n", "Arts 33062.500000\n", "Biology & Life Science 36421.428571\n", "Business 43538.461538\n", "Communications & Journalism 34500.000000\n", "Computers & Mathematics 42745.454545\n", "Education 32350.000000\n", "Engineering 57382.758621\n", "Health 36825.000000\n", "Humanities & Liberal Arts 31913.333333\n", "Industrial Arts & Consumer Services 36342.857143\n", "Interdisciplinary 35000.000000\n", "Law & Public Policy 42200.000000\n", "Physical Sciences 41890.000000\n", "Psychology & Social Work 30100.000000\n", "Social Science 37344.444444\n", "Name: Median, dtype: float64" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "grouped['Median'].mean()" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "hide-output": false, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
meanmedianstd
Major_category
Agriculture & Natural Resources36900.000000350006935.416354
Arts33062.500000307507223.164621
Biology & Life Science36421.428571363004528.912006
Business43538.461538400007774.052832
Communications & Journalism34500.000000350001000.000000
Computers & Mathematics42745.454545450005108.691346
Education32350.000000327503892.728263
Engineering57382.7586215700013626.079747
Health36825.000000350005776.460854
Humanities & Liberal Arts31913.333333320003393.032076
Industrial Arts & Consumer Services36342.857143350007290.829204
Interdisciplinary35000.00000035000NaN
Law & Public Policy42200.000000360009066.421565
Physical Sciences41890.000000395008251.659766
Psychology & Social Work30100.000000300005381.914158
Social Science37344.444444380004750.555523
\n", "
" ], "text/plain": [ " mean median std\n", "Major_category \n", "Agriculture & Natural Resources 36900.000000 35000 6935.416354\n", "Arts 33062.500000 30750 7223.164621\n", "Biology & Life Science 36421.428571 36300 4528.912006\n", "Business 43538.461538 40000 7774.052832\n", "Communications & Journalism 34500.000000 35000 1000.000000\n", "Computers & Mathematics 42745.454545 45000 5108.691346\n", "Education 32350.000000 32750 3892.728263\n", "Engineering 57382.758621 57000 13626.079747\n", "Health 36825.000000 35000 5776.460854\n", "Humanities & Liberal Arts 31913.333333 32000 3393.032076\n", "Industrial Arts & Consumer Services 36342.857143 35000 7290.829204\n", "Interdisciplinary 35000.000000 35000 NaN\n", "Law & Public Policy 42200.000000 36000 9066.421565\n", "Physical Sciences 41890.000000 39500 8251.659766\n", "Psychology & Social Work 30100.000000 30000 5381.914158\n", "Social Science 37344.444444 38000 4750.555523" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "grouped['Median'].agg(['mean', 'median', 'std'])" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Plot from GroupBy objects" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "hide-output": false, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "grouped['Median'].mean().plot(kind='bar', figsize=(10, 8))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Merging and appending data\n", "\n", "Simple example with fictitious data" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "hide-output": false, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "raw_data_1 = {'subject_id': ['1', '2', '3', '4', '5'],\n", " 'first_name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],\n", " 'last_name': ['Anderson', 'Ackerman', 'Ali', 'Aoni', 'Atiches']}\n", "\n", "raw_data_2 = {'subject_id': ['4', '5', '6', '7', '8'],\n", " 'first_name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],\n", " 'last_name': ['Bonder', 'Black', 'Balwner', 'Brice', 'Btisan']}\n", "\n", "raw_data_3 = {'subject_id': ['1', '2', '3', '4', '5', '7', '8', '9', '10', '11'],\n", " 'test_id': [51, 15, 15, 61, 16, 14, 15, 1, 61, 16]}" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "hide-output": false, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "# Assign each to a dataframe called data1, data2, data3\n", "data1 = pd.DataFrame(raw_data_1, columns = ['subject_id', 'first_name', 'last_name'])\n", "data2 = pd.DataFrame(raw_data_2, columns = ['subject_id', 'first_name', 'last_name'])\n", "data3 = pd.DataFrame(raw_data_3, columns = ['subject_id','test_id'])" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "hide-output": false, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
subject_idfirst_namelast_name
01AlexAnderson
12AmyAckerman
23AllenAli
34AliceAoni
45AyoungAtiches
\n", "
" ], "text/plain": [ " subject_id first_name last_name\n", "0 1 Alex Anderson\n", "1 2 Amy Ackerman\n", "2 3 Allen Ali\n", "3 4 Alice Aoni\n", "4 5 Ayoung Atiches" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Print data 1\n", "data1" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "hide-output": false, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
subject_idfirst_namelast_name
04BillyBonder
15BrianBlack
26BranBalwner
37BryceBrice
48BettyBtisan
\n", "
" ], "text/plain": [ " subject_id first_name last_name\n", "0 4 Billy Bonder\n", "1 5 Brian Black\n", "2 6 Bran Balwner\n", "3 7 Bryce Brice\n", "4 8 Betty Btisan" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Print data 2\n", "data2" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "hide-output": false, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
subject_idtest_id
0151
1215
2315
3461
4516
5714
6815
791
81061
91116
\n", "
" ], "text/plain": [ " subject_id test_id\n", "0 1 51\n", "1 2 15\n", "2 3 15\n", "3 4 61\n", "4 5 16\n", "5 7 14\n", "6 8 15\n", "7 9 1\n", "8 10 61\n", "9 11 16" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Print data 3\n", "data3" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "hide-output": false, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
subject_idfirst_namelast_name
01AlexAnderson
12AmyAckerman
23AllenAli
34AliceAoni
45AyoungAtiches
04BillyBonder
15BrianBlack
26BranBalwner
37BryceBrice
48BettyBtisan
\n", "
" ], "text/plain": [ " subject_id first_name last_name\n", "0 1 Alex Anderson\n", "1 2 Amy Ackerman\n", "2 3 Allen Ali\n", "3 4 Alice Aoni\n", "4 5 Ayoung Atiches\n", "0 4 Billy Bonder\n", "1 5 Brian Black\n", "2 6 Bran Balwner\n", "3 7 Bryce Brice\n", "4 8 Betty Btisan" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Join the two dataframes along rows\n", "data_all_rows = pd.concat([data1, data2])\n", "data_all_rows" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "hide-output": false, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
subject_idfirst_namelast_namesubject_idfirst_namelast_name
01AlexAnderson4BillyBonder
12AmyAckerman5BrianBlack
23AllenAli6BranBalwner
34AliceAoni7BryceBrice
45AyoungAtiches8BettyBtisan
\n", "
" ], "text/plain": [ " subject_id first_name last_name subject_id first_name last_name\n", "0 1 Alex Anderson 4 Billy Bonder\n", "1 2 Amy Ackerman 5 Brian Black\n", "2 3 Allen Ali 6 Bran Balwner\n", "3 4 Alice Aoni 7 Bryce Brice\n", "4 5 Ayoung Atiches 8 Betty Btisan" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Join the two dataframes along columns\n", "data_all_col = pd.concat([data1, data2], axis = 1)\n", "data_all_col" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "hide-output": false, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
subject_idfirst_namelast_nametest_id
01AlexAnderson51
12AmyAckerman15
23AllenAli15
34AliceAoni61
44BillyBonder61
55AyoungAtiches16
65BrianBlack16
77BryceBrice14
88BettyBtisan15
\n", "
" ], "text/plain": [ " subject_id first_name last_name test_id\n", "0 1 Alex Anderson 51\n", "1 2 Amy Ackerman 15\n", "2 3 Allen Ali 15\n", "3 4 Alice Aoni 61\n", "4 4 Billy Bonder 61\n", "5 5 Ayoung Atiches 16\n", "6 5 Brian Black 16\n", "7 7 Bryce Brice 14\n", "8 8 Betty Btisan 15" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Merge data_all_rows and data3 along the subject_id value\n", "pd.merge(data_all_rows, data3, on='subject_id')" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "hide-output": false, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
subject_idfirst_name_xlast_name_xfirst_name_ylast_name_y
04AliceAoniBillyBonder
15AyoungAtichesBrianBlack
\n", "
" ], "text/plain": [ " subject_id first_name_x last_name_x first_name_y last_name_y\n", "0 4 Alice Aoni Billy Bonder\n", "1 5 Ayoung Atiches Brian Black" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Inner merge\n", "pd.merge(data1, data2, on='subject_id', how='inner')" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "hide-output": false, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
subject_idfirst_name_xlast_name_xfirst_name_ylast_name_y
01AlexAndersonNaNNaN
12AmyAckermanNaNNaN
23AllenAliNaNNaN
34AliceAoniBillyBonder
45AyoungAtichesBrianBlack
56NaNNaNBranBalwner
67NaNNaNBryceBrice
78NaNNaNBettyBtisan
\n", "
" ], "text/plain": [ " subject_id first_name_x last_name_x first_name_y last_name_y\n", "0 1 Alex Anderson NaN NaN\n", "1 2 Amy Ackerman NaN NaN\n", "2 3 Allen Ali NaN NaN\n", "3 4 Alice Aoni Billy Bonder\n", "4 5 Ayoung Atiches Brian Black\n", "5 6 NaN NaN Bran Balwner\n", "6 7 NaN NaN Bryce Brice\n", "7 8 NaN NaN Betty Btisan" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Outer merge\n", "pd.merge(data1, data2, on='subject_id', how='outer')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Further learning resources\n", "\n", "- Reference manual for Pandas\n", " [https://pandas.pydata.org/pandas-docs/stable/getting_started/](https://pandas.pydata.org/pandas-docs/stable/getting_started/) \n", "- Pandas at QuantEcon lectures\n", " [https://lectures.quantecon.org/py/pandas.html](https://lectures.quantecon.org/py/pandas.html)\n", " [https://lectures.quantecon.org/py/pandas_panel.html](https://lectures.quantecon.org/py/pandas_panel.html) \n", "- Pandas at QuantEcon DataScience\n", " [https://datascience.quantecon.org/pandas/](https://datascience.quantecon.org/pandas/) \n", "- QuantEcon [Stata-R-Pandas\n", " cheatsheet](https://cheatsheets.quantecon.org/stats-cheatsheet.html) \n", "- 📖 Kevin Sheppard “Introduction to Python for Econometrics, Statistics\n", " and Data Analysis.” *Chapter: 9, 16* " ] } ], "metadata": { "celltoolbar": "Slideshow", "date": 1612589584.85308, "download_nb": false, "filename": "15_pandas.rst", "filename_with_path": "15_pandas", "kernelspec": { "display_name": "Python", "language": "python3", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.6" }, "title": "Foundations of Computational Economics #15" }, "nbformat": 4, "nbformat_minor": 4 }