{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Pandas Basics — Part 1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*Note: You can explore the [associated workbook](https://mybinder.org/v2/gh/melaniewalsh/Intro-Cultural-Analytics/master?urlpath=lab/tree/book/03-Data-Analysis/workbooks/01.5-Pandas-Basics-Part1-WORKBOOK.ipynb) for this chapter in the cloud.*"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In this lesson, we're going to introduce some of the basics of [Pandas](https://pandas.pydata.org/pandas-docs/stable/getting_started/overview.html), a powerful Python library for working with tabular data like CSV files.\n",
"\n",
"We will cover how to:\n",
"\n",
"* Import Pandas\n",
"* Read in a CSV file\n",
"* Explore and filter data\n",
"* Make simple plots and data visualizations\n",
"* Write a CSV file\n",
"\n",
"___\n",
"\n",
"## Dataset\n",
"### The Bellevue Almshouse Dataset"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"
\n",
"\n",
"Nineteenth-century immigration data was produced with the express purpose of reducing people to bodies; bodies to easily quantifiable aspects; and assigning value to those aspects which proved that the marginalized people to who they belonged were worth less than their elite counterparts.\n",
"\n",
"-Anelise Shrout, [\"(Re)Humanizing Data\"](https://crdh.rrchnm.org/essays/v01-10-(re)-humanizing-data/)\n",
"
\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The dataset that we're working with in this lesson is the [Bellevue Almshouse Dataset](https://www.nyuirish.net/almshouse/the-almshouse-records/), created by historian and DH scholar Anelise Shrout. It includes information about Irish-born immigrants who were admitted to New York City's Bellevue Almshouse in the 1840s.\n",
"\n",
"The Bellevue Almshouse was part of New York City's public health system, a place where poor, sick, homeless, and otherwise marginalized people were sent — sometimes voluntarily and sometimes forcibly. Devastated by widespread famine in Ireland, many Irish people fled their homes for New York City in the 1840s, and many of them ended up in the Bellevue Almshouse.\n",
"\n",
"We're using the [Bellevue Almshouse Dataset](https://www.nyuirish.net/almshouse/the-almshouse-records/) to practice data analysis with Pandas because we want to think deeply about the consequences of reducing human life to data. As Shrout argues in [her essay](https://crdh.rrchnm.org/essays/v01-10-(re)-humanizing-data/), this data purposely reduced people to bodies and \"easily quantifiable aspects\" in order to devalue their lives, potentially enacting \"both epistemic and physical violence\" on them.\n",
"\n",
"We want to think about how responsible data analysis requires more than just technical tools like Pandas. It also requires an interrogation of the data. Who collected this data? How and why was this data collected? What assumptions are present in this data? What are the consequences of this data in the world? What does this data reflect about the world? For example, Shrout claims that the \"Bellevue administrators framed any ailments or difficulties inmates might have had as a consequence of [their immigration] status\" — perhaps best exemplified by the fact that a frequent \"disease\" in the dataset is \"recent emigrant.\" Below we're going to explore the prevalence of \"recent emigrant\" in the data as well as other salient patterns.\n",
"\n",
"___\n",
"\n",
"## Import Pandas\n",
"\n",
":::{note}\n",
"If you installed Python with Anaconda, you should already have Pandas installed. If you did not install Python with Anaconda, see Pandas Installation.\n",
":::\n",
"\n",
"To use the Pandas library, we first need to `import` it."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The above `import` statement not only imports the Pandas library but also gives it an alias or nickname — `pd`. This alias will save us from having to type out the entire words `pandas` each time we need to use it. Many Python libraries have commonly used aliases like `pd`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Set Display Settings"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"By default, Pandas will display 60 rows and 20 columns. I often change [Pandas' default display settings](https://pandas.pydata.org/pandas-docs/stable/user_guide/options.html) to show more rows or columns."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"pd.options.display.max_rows = 100"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Read in CSV File"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To read in a CSV file, we will use the function `pd.read_csv()` and insert the name of our desired file path. "
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"bellevue_df = pd.read_csv('../data/bellevue_almshouse_modified.csv', delimiter=\",\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This creates a Pandas [DataFrame object](https://pandas.pydata.org/pandas-docs/stable/user_guide/dsintro.html#dataframe) — often abbreviated as *df*, e.g., *bellevue_df*. A DataFrame looks and acts a lot like a spreadsheet. But it has special powers and functions that we will discuss in the next few lessons.\n",
"\n",
"When reading in the CSV file, we also specified the `encoding` and `delimiter`. The `delimiter` specifies the character that separates or \"delimits\" the columns in our dataset. For CSV files, the delimiter will most often be a comma. (CSV is short for *Comma Separated Values*.) Sometimes, however, the delimiter of a CSV file might be a tab (`\\t`) or, more rarely, another character.\n",
"\n",
"## Display Data\n",
"\n",
"We can display a DataFrame in a Jupyter notebook simply by running a cell with the variable name of the DataFrame.\n",
"\n",
":::{admonition}Pandas Review\n",
":class: pandasreview\n",
"NaN is the Pandas value for any missing data. See \"Working with missing data\" for more information.\n",
":::"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
date_in
\n",
"
first_name
\n",
"
last_name
\n",
"
age
\n",
"
disease
\n",
"
profession
\n",
"
gender
\n",
"
children
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
1847-04-17
\n",
"
Mary
\n",
"
Gallagher
\n",
"
28.0
\n",
"
recent emigrant
\n",
"
married
\n",
"
w
\n",
"
Child Alana 10 days
\n",
"
\n",
"
\n",
"
1
\n",
"
1847-04-08
\n",
"
John
\n",
"
Sanin (?)
\n",
"
19.0
\n",
"
recent emigrant
\n",
"
laborer
\n",
"
m
\n",
"
Catherine 2 mo
\n",
"
\n",
"
\n",
"
2
\n",
"
1847-04-17
\n",
"
Anthony
\n",
"
Clark
\n",
"
60.0
\n",
"
recent emigrant
\n",
"
laborer
\n",
"
m
\n",
"
Charles Riley afed 10 days
\n",
"
\n",
"
\n",
"
3
\n",
"
1847-04-08
\n",
"
Lawrence
\n",
"
Feeney
\n",
"
32.0
\n",
"
recent emigrant
\n",
"
laborer
\n",
"
m
\n",
"
Child
\n",
"
\n",
"
\n",
"
4
\n",
"
1847-04-13
\n",
"
Henry
\n",
"
Joyce
\n",
"
21.0
\n",
"
recent emigrant
\n",
"
NaN
\n",
"
m
\n",
"
Child 1 mo
\n",
"
\n",
"
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
\n",
"
\n",
"
9579
\n",
"
1847-06-17
\n",
"
Mary
\n",
"
Smith
\n",
"
47.0
\n",
"
NaN
\n",
"
NaN
\n",
"
w
\n",
"
NaN
\n",
"
\n",
"
\n",
"
9580
\n",
"
1847-06-22
\n",
"
Francis
\n",
"
Riley
\n",
"
29.0
\n",
"
lame
\n",
"
superintendent
\n",
"
m
\n",
"
NaN
\n",
"
\n",
"
\n",
"
9581
\n",
"
1847-07-02
\n",
"
Martin
\n",
"
Dunn
\n",
"
4.0
\n",
"
NaN
\n",
"
NaN
\n",
"
m
\n",
"
NaN
\n",
"
\n",
"
\n",
"
9582
\n",
"
1847-07-08
\n",
"
Elizabeth
\n",
"
Post
\n",
"
32.0
\n",
"
NaN
\n",
"
NaN
\n",
"
w
\n",
"
NaN
\n",
"
\n",
"
\n",
"
9583
\n",
"
1847-04-28
\n",
"
Bridget
\n",
"
Ryan
\n",
"
28.0
\n",
"
destitution
\n",
"
spinster
\n",
"
w
\n",
"
NaN
\n",
"
\n",
" \n",
"
\n",
"
9584 rows × 8 columns
\n",
"
"
],
"text/plain": [
" date_in first_name last_name age disease profession \\\n",
"0 1847-04-17 Mary Gallagher 28.0 recent emigrant married \n",
"1 1847-04-08 John Sanin (?) 19.0 recent emigrant laborer \n",
"2 1847-04-17 Anthony Clark 60.0 recent emigrant laborer \n",
"3 1847-04-08 Lawrence Feeney 32.0 recent emigrant laborer \n",
"4 1847-04-13 Henry Joyce 21.0 recent emigrant NaN \n",
"... ... ... ... ... ... ... \n",
"9579 1847-06-17 Mary Smith 47.0 NaN NaN \n",
"9580 1847-06-22 Francis Riley 29.0 lame superintendent \n",
"9581 1847-07-02 Martin Dunn 4.0 NaN NaN \n",
"9582 1847-07-08 Elizabeth Post 32.0 NaN NaN \n",
"9583 1847-04-28 Bridget Ryan 28.0 destitution spinster \n",
"\n",
" gender children \n",
"0 w Child Alana 10 days \n",
"1 m Catherine 2 mo \n",
"2 m Charles Riley afed 10 days \n",
"3 m Child \n",
"4 m Child 1 mo \n",
"... ... ... \n",
"9579 w NaN \n",
"9580 m NaN \n",
"9581 m NaN \n",
"9582 w NaN \n",
"9583 w NaN \n",
"\n",
"[9584 rows x 8 columns]"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bellevue_df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are a few important things to note about the DataFrame displayed here:\n",
"\n",
"* Index\n",
" * The bolded ascending numbers in the very left-hand column of the DataFrame is called the Pandas *Index*. You can select rows based on the Index.\n",
" * By default, the Index is a sequence of numbers starting with zero. However, you can change the Index to something else, such as one of the columns in your dataset.\n",
"\n",
"* Truncation\n",
" * The DataFrame is truncated, signaled by the ellipses in the middle `...` of every column.\n",
" * The DataFrame is truncated because we set our default display settings to 100 rows. Anything more than 100 rows will be truncated. To display all the rows, we would need to alter Pandas' default display settings yet again.\n",
"\n",
"* Rows x Columns\n",
" * Pandas reports how many rows and columns are in this dataset at the bottom of the output (9584 x 8 columns).\n",
" * This is very useful!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Display First *n* Rows\n",
"\n",
"To look at the first *n* rows in a DataFrame, we can use a method called `.head()`."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
date_in
\n",
"
first_name
\n",
"
last_name
\n",
"
age
\n",
"
disease
\n",
"
profession
\n",
"
gender
\n",
"
children
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
1847-04-17
\n",
"
Mary
\n",
"
Gallagher
\n",
"
28.0
\n",
"
recent emigrant
\n",
"
married
\n",
"
w
\n",
"
Child Alana 10 days
\n",
"
\n",
"
\n",
"
1
\n",
"
1847-04-08
\n",
"
John
\n",
"
Sanin (?)
\n",
"
19.0
\n",
"
recent emigrant
\n",
"
laborer
\n",
"
m
\n",
"
Catherine 2 mo
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" date_in first_name last_name age disease profession gender \\\n",
"0 1847-04-17 Mary Gallagher 28.0 recent emigrant married w \n",
"1 1847-04-08 John Sanin (?) 19.0 recent emigrant laborer m \n",
"\n",
" children \n",
"0 Child Alana 10 days \n",
"1 Catherine 2 mo "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bellevue_df.head(2)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
date_in
\n",
"
first_name
\n",
"
last_name
\n",
"
age
\n",
"
disease
\n",
"
profession
\n",
"
gender
\n",
"
children
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
1847-04-17
\n",
"
Mary
\n",
"
Gallagher
\n",
"
28.0
\n",
"
recent emigrant
\n",
"
married
\n",
"
w
\n",
"
Child Alana 10 days
\n",
"
\n",
"
\n",
"
1
\n",
"
1847-04-08
\n",
"
John
\n",
"
Sanin (?)
\n",
"
19.0
\n",
"
recent emigrant
\n",
"
laborer
\n",
"
m
\n",
"
Catherine 2 mo
\n",
"
\n",
"
\n",
"
2
\n",
"
1847-04-17
\n",
"
Anthony
\n",
"
Clark
\n",
"
60.0
\n",
"
recent emigrant
\n",
"
laborer
\n",
"
m
\n",
"
Charles Riley afed 10 days
\n",
"
\n",
"
\n",
"
3
\n",
"
1847-04-08
\n",
"
Lawrence
\n",
"
Feeney
\n",
"
32.0
\n",
"
recent emigrant
\n",
"
laborer
\n",
"
m
\n",
"
Child
\n",
"
\n",
"
\n",
"
4
\n",
"
1847-04-13
\n",
"
Henry
\n",
"
Joyce
\n",
"
21.0
\n",
"
recent emigrant
\n",
"
NaN
\n",
"
m
\n",
"
Child 1 mo
\n",
"
\n",
"
\n",
"
5
\n",
"
1847-04-14
\n",
"
Bridget
\n",
"
Hart
\n",
"
20.0
\n",
"
recent emigrant
\n",
"
spinster
\n",
"
w
\n",
"
Child
\n",
"
\n",
"
\n",
"
6
\n",
"
1847-04-14
\n",
"
Mary
\n",
"
Green
\n",
"
40.0
\n",
"
recent emigrant
\n",
"
spinster
\n",
"
w
\n",
"
And child 2 months
\n",
"
\n",
"
\n",
"
7
\n",
"
1847-04-19
\n",
"
Daniel
\n",
"
Loftus
\n",
"
27.0
\n",
"
destitution
\n",
"
laborer
\n",
"
m
\n",
"
NaN
\n",
"
\n",
"
\n",
"
8
\n",
"
1847-04-10
\n",
"
James
\n",
"
Day
\n",
"
35.0
\n",
"
recent emigrant
\n",
"
laborer
\n",
"
m
\n",
"
NaN
\n",
"
\n",
"
\n",
"
9
\n",
"
1847-04-10
\n",
"
Margaret
\n",
"
Farrell
\n",
"
30.0
\n",
"
recent emigrant
\n",
"
widow
\n",
"
w
\n",
"
NaN
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" date_in first_name last_name age disease profession gender \\\n",
"0 1847-04-17 Mary Gallagher 28.0 recent emigrant married w \n",
"1 1847-04-08 John Sanin (?) 19.0 recent emigrant laborer m \n",
"2 1847-04-17 Anthony Clark 60.0 recent emigrant laborer m \n",
"3 1847-04-08 Lawrence Feeney 32.0 recent emigrant laborer m \n",
"4 1847-04-13 Henry Joyce 21.0 recent emigrant NaN m \n",
"5 1847-04-14 Bridget Hart 20.0 recent emigrant spinster w \n",
"6 1847-04-14 Mary Green 40.0 recent emigrant spinster w \n",
"7 1847-04-19 Daniel Loftus 27.0 destitution laborer m \n",
"8 1847-04-10 James Day 35.0 recent emigrant laborer m \n",
"9 1847-04-10 Margaret Farrell 30.0 recent emigrant widow w \n",
"\n",
" children \n",
"0 Child Alana 10 days \n",
"1 Catherine 2 mo \n",
"2 Charles Riley afed 10 days \n",
"3 Child \n",
"4 Child 1 mo \n",
"5 Child \n",
"6 And child 2 months \n",
"7 NaN \n",
"8 NaN \n",
"9 NaN "
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bellevue_df.head(10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Display Random Sample"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To look at a random sample of rows, we can use the `.sample()` method."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
date_in
\n",
"
first_name
\n",
"
last_name
\n",
"
age
\n",
"
disease
\n",
"
profession
\n",
"
gender
\n",
"
children
\n",
"
\n",
" \n",
" \n",
"
\n",
"
5768
\n",
"
1847-10-27
\n",
"
Elizabeth
\n",
"
Phinney
\n",
"
40.0
\n",
"
destitution
\n",
"
seamstress
\n",
"
w
\n",
"
NaN
\n",
"
\n",
"
\n",
"
441
\n",
"
1847-03-01
\n",
"
Catherine
\n",
"
Mullin
\n",
"
1.0
\n",
"
recent emigrant
\n",
"
NaN
\n",
"
w
\n",
"
NaN
\n",
"
\n",
"
\n",
"
1397
\n",
"
1847-04-30
\n",
"
Mary Anne
\n",
"
Graham
\n",
"
30.0
\n",
"
sickness
\n",
"
widow
\n",
"
w
\n",
"
NaN
\n",
"
\n",
"
\n",
"
7170
\n",
"
1847-10-22
\n",
"
Ellen
\n",
"
Reynolds
\n",
"
18.0
\n",
"
sickness
\n",
"
spinster
\n",
"
w
\n",
"
NaN
\n",
"
\n",
"
\n",
"
8203
\n",
"
1847-05-19
\n",
"
Richard
\n",
"
Hennesy
\n",
"
63.0
\n",
"
destitution
\n",
"
baker
\n",
"
m
\n",
"
NaN
\n",
"
\n",
"
\n",
"
1708
\n",
"
1847-03-13
\n",
"
Patrick
\n",
"
Kane
\n",
"
52.0
\n",
"
recent emigrant
\n",
"
laborer
\n",
"
m
\n",
"
NaN
\n",
"
\n",
"
\n",
"
4026
\n",
"
1846-08-05
\n",
"
Henry
\n",
"
Reddy
\n",
"
33.0
\n",
"
NaN
\n",
"
peddler
\n",
"
m
\n",
"
NaN
\n",
"
\n",
"
\n",
"
3108
\n",
"
1846-01-07
\n",
"
Rhoda (Johanna)
\n",
"
Dunn
\n",
"
24.0
\n",
"
NaN
\n",
"
widow
\n",
"
w
\n",
"
NaN
\n",
"
\n",
"
\n",
"
5313
\n",
"
1847-03-22
\n",
"
Terence
\n",
"
Smith
\n",
"
37.0
\n",
"
sickness
\n",
"
laborer
\n",
"
m
\n",
"
NaN
\n",
"
\n",
"
\n",
"
8043
\n",
"
1846-08-03
\n",
"
Eliza
\n",
"
Duffy
\n",
"
22.0
\n",
"
NaN
\n",
"
spinster
\n",
"
w
\n",
"
NaN
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" date_in first_name last_name age disease \\\n",
"5768 1847-10-27 Elizabeth Phinney 40.0 destitution \n",
"441 1847-03-01 Catherine Mullin 1.0 recent emigrant \n",
"1397 1847-04-30 Mary Anne Graham 30.0 sickness \n",
"7170 1847-10-22 Ellen Reynolds 18.0 sickness \n",
"8203 1847-05-19 Richard Hennesy 63.0 destitution \n",
"1708 1847-03-13 Patrick Kane 52.0 recent emigrant \n",
"4026 1846-08-05 Henry Reddy 33.0 NaN \n",
"3108 1846-01-07 Rhoda (Johanna) Dunn 24.0 NaN \n",
"5313 1847-03-22 Terence Smith 37.0 sickness \n",
"8043 1846-08-03 Eliza Duffy 22.0 NaN \n",
"\n",
" profession gender children \n",
"5768 seamstress w NaN \n",
"441 NaN w NaN \n",
"1397 widow w NaN \n",
"7170 spinster w NaN \n",
"8203 baker m NaN \n",
"1708 laborer m NaN \n",
"4026 peddler m NaN \n",
"3108 widow w NaN \n",
"5313 laborer m NaN \n",
"8043 spinster w NaN "
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bellevue_df.sample(10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Get Info"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To get important info about all the columns in the DataFrame, we can use `.info()`."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"RangeIndex: 9584 entries, 0 to 9583\n",
"Data columns (total 8 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 date_in 9584 non-null object \n",
" 1 first_name 9580 non-null object \n",
" 2 last_name 9584 non-null object \n",
" 3 age 9534 non-null float64\n",
" 4 disease 6497 non-null object \n",
" 5 profession 8565 non-null object \n",
" 6 gender 9584 non-null object \n",
" 7 children 37 non-null object \n",
"dtypes: float64(1), object(7)\n",
"memory usage: 599.1+ KB\n"
]
}
],
"source": [
"bellevue_df.info()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This report will tell us how many non-null, or non-blank, values are in each column, as well as what *type* of data is in each column.\n",
"\n",
"\n",
"\n",
"| **Pandas Data Type** | **Explanation** |\n",
"|:-------------:|:---------------------------------------------------------------------------------------------------:|\n",
"| `object` | string |\n",
"| `float64` | float |\n",
"| `int64` | integer |\n",
"| `datetime64` | date time "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Calculate Summary Statistics"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To calculate summary statistics for every column in our DataFrame, we can use the `.describe()` method."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
age
\n",
"
\n",
" \n",
" \n",
"
\n",
"
count
\n",
"
9534.000000
\n",
"
\n",
"
\n",
"
mean
\n",
"
30.332604
\n",
"
\n",
"
\n",
"
std
\n",
"
14.179608
\n",
"
\n",
"
\n",
"
min
\n",
"
0.080000
\n",
"
\n",
"
\n",
"
25%
\n",
"
21.000000
\n",
"
\n",
"
\n",
"
50%
\n",
"
28.000000
\n",
"
\n",
"
\n",
"
75%
\n",
"
39.000000
\n",
"
\n",
"
\n",
"
max
\n",
"
97.000000
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" age\n",
"count 9534.000000\n",
"mean 30.332604\n",
"std 14.179608\n",
"min 0.080000\n",
"25% 21.000000\n",
"50% 28.000000\n",
"75% 39.000000\n",
"max 97.000000"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bellevue_df.describe()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"By default, `.describe()` will only compute columns with numerical data. To include all columns, we can use `include='all`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
":::{admonition} Pandas Review\n",
":class: pandasreview\n",
"NaN is the Pandas value for any missing data. See \"Working with missing data\" for more information.\n",
":::"
]
},
{
"cell_type": "code",
"execution_count": 109,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
date_in
\n",
"
first_name
\n",
"
last_name
\n",
"
age
\n",
"
disease
\n",
"
profession
\n",
"
gender
\n",
"
children
\n",
"
\n",
" \n",
" \n",
"
\n",
"
count
\n",
"
9584
\n",
"
9580
\n",
"
9584
\n",
"
9534.000000
\n",
"
6497
\n",
"
8565
\n",
"
9584
\n",
"
37
\n",
"
\n",
"
\n",
"
unique
\n",
"
653
\n",
"
523
\n",
"
3142
\n",
"
NaN
\n",
"
75
\n",
"
172
\n",
"
5
\n",
"
36
\n",
"
\n",
"
\n",
"
top
\n",
"
1847-05-24 00:00:00
\n",
"
Mary
\n",
"
Kelly
\n",
"
NaN
\n",
"
sickness
\n",
"
laborer
\n",
"
m
\n",
"
Child
\n",
"
\n",
"
\n",
"
freq
\n",
"
113
\n",
"
979
\n",
"
137
\n",
"
NaN
\n",
"
2706
\n",
"
3108
\n",
"
4958
\n",
"
2
\n",
"
\n",
"
\n",
"
first
\n",
"
1846-01-01 00:00:00
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
\n",
"
\n",
"
last
\n",
"
1847-12-31 00:00:00
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
\n",
"
\n",
"
mean
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
30.332604
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
\n",
"
\n",
"
std
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
14.179608
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
\n",
"
\n",
"
min
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
0.080000
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
\n",
"
\n",
"
25%
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
21.000000
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
\n",
"
\n",
"
50%
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
28.000000
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
\n",
"
\n",
"
75%
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
39.000000
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
\n",
"
\n",
"
max
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
97.000000
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" date_in first_name last_name age disease \\\n",
"count 9584 9580 9584 9534.000000 6497 \n",
"unique 653 523 3142 NaN 75 \n",
"top 1847-05-24 00:00:00 Mary Kelly NaN sickness \n",
"freq 113 979 137 NaN 2706 \n",
"first 1846-01-01 00:00:00 NaN NaN NaN NaN \n",
"last 1847-12-31 00:00:00 NaN NaN NaN NaN \n",
"mean NaN NaN NaN 30.332604 NaN \n",
"std NaN NaN NaN 14.179608 NaN \n",
"min NaN NaN NaN 0.080000 NaN \n",
"25% NaN NaN NaN 21.000000 NaN \n",
"50% NaN NaN NaN 28.000000 NaN \n",
"75% NaN NaN NaN 39.000000 NaN \n",
"max NaN NaN NaN 97.000000 NaN \n",
"\n",
" profession gender children \n",
"count 8565 9584 37 \n",
"unique 172 5 36 \n",
"top laborer m Child \n",
"freq 3108 4958 2 \n",
"first NaN NaN NaN \n",
"last NaN NaN NaN \n",
"mean NaN NaN NaN \n",
"std NaN NaN NaN \n",
"min NaN NaN NaN \n",
"25% NaN NaN NaN \n",
"50% NaN NaN NaN \n",
"75% NaN NaN NaN \n",
"max NaN NaN NaN "
]
},
"execution_count": 109,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bellevue_df.describe(include='all')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here are some insights that can be gleaned from these summary statistics:\n",
"- For the column **date_in**, the earliest recorded admission to the Bellevue Almshouse (**first**) is 1846-01-01 and the latest (**last**) is 1847-12-31 \n",
"- For the column **first_name**, the most frequently occurring first name (**top**) is Mary, which appears 979 times (**freq**)\n",
"- For the column **last_name**, the most frequently occurring last name (**top**) is Kelly, which appears 137 times (**freq**)\n",
"- For the column **age**, average age in the dataset (**mean**) is 30, the youngest (**min**) is .8, and the oldest (**max**) is 97\n",
"- For the columns **disease** and **profession**, there are 75 unique (**unique**) diseases and 172 unique (**unique**) professions\n",
"- For the column **children**, there are 37 rows that include information about children (**count**) (i.e., rows that do not have blank values)\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Select Columns"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To select a column from the DataFrame, we will type the name of the DataFrame followed by square brackets and a column name in quotations marks."
]
},
{
"cell_type": "code",
"execution_count": 110,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 recent emigrant\n",
"1 recent emigrant\n",
"2 recent emigrant\n",
"3 recent emigrant\n",
"4 recent emigrant\n",
" ... \n",
"9579 NaN\n",
"9580 lame\n",
"9581 NaN\n",
"9582 NaN\n",
"9583 destitution\n",
"Name: disease, Length: 9584, dtype: object"
]
},
"execution_count": 110,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bellevue_df['disease']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
":::{admonition} Python Review\n",
":class: pythonreview\n",
"\n",
"**Dictionary**\n",
" \n",
"\n",
"person1 = {\"name\": \"Mary Gallagher\",\n",
" \"age\": 28,\n",
" \"profession\": \"married\"}\n",
"\n",
"\n",
"**Key** -> **Value** \n",
"\n",
"\n",
"person1['name'] —> \"Mary Gallagher\"\n",
"\n",
"::: "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Technically, a single column in a DataFrame is a [*Series* object](https://pandas.pydata.org/pandas-docs/stable/user_guide/dsintro.html#dsintro)."
]
},
{
"cell_type": "code",
"execution_count": 111,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"pandas.core.series.Series"
]
},
"execution_count": 111,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(bellevue_df['disease'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A Series object displays differently than a DataFrame object. To select a column as a DataFrame and not as a Series object, we will use two square brackets."
]
},
{
"cell_type": "code",
"execution_count": 112,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
"
],
"text/plain": [
" first_name last_name disease\n",
"0 Mary Gallagher recent emigrant\n",
"1 John Sanin (?) recent emigrant\n",
"2 Anthony Clark recent emigrant\n",
"3 Lawrence Feeney recent emigrant\n",
"4 Henry Joyce recent emigrant\n",
"... ... ... ...\n",
"9579 Mary Smith NaN\n",
"9580 Francis Riley lame\n",
"9581 Martin Dunn NaN\n",
"9582 Elizabeth Post NaN\n",
"9583 Bridget Ryan destitution\n",
"\n",
"[9584 rows x 3 columns]"
]
},
"execution_count": 114,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bellevue_df[['first_name', 'last_name', 'disease']]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"``` {warning}\n",
"Heads up! The code below will cause an error.\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"See what happens if we try to select multiple columns as a Series..."
]
},
{
"cell_type": "code",
"execution_count": 115,
"metadata": {
"tags": [
"hide-output"
]
},
"outputs": [
{
"ename": "KeyError",
"evalue": "('first_name', 'last_name', 'disease')",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m~/opt/anaconda3/lib/python3.7/site-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key, method, tolerance)\u001b[0m\n\u001b[1;32m 2645\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2646\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2647\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n",
"\u001b[0;31mKeyError\u001b[0m: ('first_name', 'last_name', 'disease')",
"\nDuring handling of the above exception, another exception occurred:\n",
"\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mbellevue_df\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'first_name'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'last_name'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'disease'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m~/opt/anaconda3/lib/python3.7/site-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36m__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 2798\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnlevels\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2799\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getitem_multilevel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2800\u001b[0;31m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2801\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mis_integer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mindexer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2802\u001b[0m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mindexer\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/opt/anaconda3/lib/python3.7/site-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key, method, tolerance)\u001b[0m\n\u001b[1;32m 2646\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2647\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2648\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_maybe_cast_indexer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2649\u001b[0m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_indexer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtolerance\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtolerance\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2650\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mindexer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndim\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m1\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mindexer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msize\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n",
"\u001b[0;31mKeyError\u001b[0m: ('first_name', 'last_name', 'disease')"
]
}
],
"source": [
"bellevue_df['first_name', 'last_name', 'disease']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Count Values"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To count the number of *unique* values in a column, we can use the `.value_counts()` method."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"```{sidebar} On Bellevue Almshouse \"Diseases\"\n",
"> Some were diagnosed with medically recognizable illnesses, including “fever,” “dropsy” and “neuralgia.” Others were diagnosed with “diseases” that made visible the ways in which immigrants were failing to meet the expectations of urban citizenship. These included “destitution” and “recent emigrant.” Neither of these diagnoses reflected an immigrant’s health. Nevertheless, they were treated as pathologies, and those pathologies governed city officials perceptions of immigrants. Sickness, injuries or destitution were subsumed under the pathology of “recent emigrant.” This diagnosis also determined immigrants’ paths through the New York City public health system.\n",
"\n",
"-Anelise Shrout, [\"(Re)Humanizing Data: Digitally Navigating the Bellevue Almshouse\"](https://crdh.rrchnm.org/essays/v01-10-(re)-humanizing-data/)\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 116,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"sickness 2706\n",
"recent emigrant 1974\n",
"destitution 841\n",
"fever 192\n",
"insane 138\n",
"pregnant 134\n",
"sore 79\n",
"intemperance 71\n",
"illegible 47\n",
"typhus 46\n",
"injuries 31\n",
"ulcers 26\n",
"ophthalmia 19\n",
"vagrant 17\n",
"lame 15\n",
"debility 11\n",
"rheumatism 11\n",
"bronchitis 9\n",
"blind 9\n",
"dropsy 8\n",
"phthisis 8\n",
"old age 7\n",
"syphilis 7\n",
"erysipelas 6\n",
"dysentery 6\n",
"diarrhea 6\n",
"broken bone 5\n",
"cripple 5\n",
"measles 3\n",
"burn 3\n",
"drunkenness 3\n",
"abandonment 2\n",
"scrofula 2\n",
"tuberculosis 2\n",
"delusion dreams 2\n",
"jaundice 2\n",
"pneumonia 2\n",
"sprain 2\n",
"scarletina 2\n",
"fits 2\n",
"piles 2\n",
"ascites 1\n",
"sunburn 1\n",
"colic 1\n",
"ungovernable 1\n",
"del femur 1\n",
"congested head 1\n",
"hernia 1\n",
"cut 1\n",
"tumor 1\n",
"eczema 1\n",
"emotional 1\n",
"paralysis 1\n",
"orchitis 1\n",
"neuralgia 1\n",
"contusion 1\n",
"asthma 1\n",
"beggar 1\n",
"from trial 1\n",
"disabled 1\n",
"hypochondria 1\n",
"ague 1\n",
"abscess 1\n",
"bleeding 1\n",
"spinal disease 1\n",
"smallpox 1\n",
"severed limb 1\n",
"horrors 1\n",
"throat cut 1\n",
"seizure 1\n",
"rickets 1\n",
"phagadaena 1\n",
"deaf 1\n",
"bruise 1\n",
"poorly 1\n",
"Name: disease, dtype: int64"
]
},
"execution_count": 116,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bellevue_df['disease'].value_counts()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Look through the so-called \"diseases\" recorded in the Bellevue Almshouse data and consider what these categories reflect about New York City in the 1840s, particularly with regard to immigration status."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To select the top 10 most frequent values in the \"disease\" column, we can combine `value_counts()` with regular Python list slicing."
]
},
{
"cell_type": "code",
"execution_count": 117,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"sickness 2706\n",
"recent emigrant 1974\n",
"destitution 841\n",
"fever 192\n",
"insane 138\n",
"pregnant 134\n",
"sore 79\n",
"intemperance 71\n",
"illegible 47\n",
"typhus 46\n",
"Name: disease, dtype: int64"
]
},
"execution_count": 117,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bellevue_df['disease'].value_counts()[:10]"
]
},
{
"cell_type": "code",
"execution_count": 119,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"laborer 3108\n",
"married 1584\n",
"spinster 1521\n",
"widow 1053\n",
"shoemaker 158\n",
"tailor 116\n",
"blacksmith 104\n",
"mason 98\n",
"weaver 66\n",
"carpenter 65\n",
"Name: profession, dtype: int64"
]
},
"execution_count": 119,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bellevue_df['profession'].value_counts()[:10]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In a similar vein, consider what these \"professions\" reflect about New York City in the 1840s."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Make and Save Plots"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Pandas makes it easy to create plots and data visualizations. We can make a simple plot by adding `.plot()` to any DataFrame or Series object that has appropriate numeric data."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"bellevue_df['disease'].value_counts()[:10].plot(kind='bar', title='Bellevue Almshouse:\\nMost Frequent \"Diseases\"')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We specify the title with the `title=` parameter and the kind of plot by altering the `kind=` parameter:\n",
"* ‘bar’ or ‘barh’ for bar plots\n",
"\n",
"* ‘hist’ for histogram\n",
"\n",
"* ‘box’ for boxplot\n",
"\n",
"* ‘kde’ or ‘density’ for density plots\n",
"\n",
"* ‘area’ for area plots\n",
"\n",
"* ‘scatter’ for scatter plots\n",
"\n",
"* ‘hexbin’ for hexagonal bin plots\n",
"\n",
"* ‘pie’ for pie plots\n",
" \n",
"For example, to make a horizontal bar chart, we can set `kind='barh'`"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"bellevue_df['profession'].value_counts()[:10].plot(kind='pie', figsize=(10, 10), title='Bellevue Almshouse:\\nMost Frequent \"Professions\"')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To save a plot as an image file or PDF file, we can assign the plot to a variable called `ax`, short for axes.\n",
"\n",
"Then we can use `ax.figure.savefig('FILE-NAME.png')` or `ax.figure.savefig('FILE-NAME.pdf')`."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"ax = bellevue_df['profession'].value_counts()[:10].plot(kind='pie', figsize=(10, 10), title='Bellevue Almshouse:\\nMost Frequent \"Professions\"')\n",
"ax.figure.savefig('Bellevue-professions_pie-chart.pdf')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If your plot is being cut off in the image, see Pandas Basics Part 2 (\"Prevent Labels From Getting Cut Off\")."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Filter/Subset Data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can filter a Pandas DataFrame to select only certain values. Filtering data by certain values is similar to selecting columns.\n",
"\n",
"We type the name of the DataFrame followed by square brackets and then, instead of inserting a column name, we insert a True/False condition. For example, to select only rows that contain the value \"teacher,\" we insert the condition `bellevue_df['profession'] == 'teacher'`"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
date_in
\n",
"
first_name
\n",
"
last_name
\n",
"
age
\n",
"
disease
\n",
"
profession
\n",
"
gender
\n",
"
children
\n",
"
\n",
" \n",
" \n",
"
\n",
"
2195
\n",
"
1847-03-12
\n",
"
Michael
\n",
"
Rush
\n",
"
40.0
\n",
"
recent emigrant
\n",
"
teacher
\n",
"
m
\n",
"
NaN
\n",
"
\n",
"
\n",
"
2692
\n",
"
1846-03-11
\n",
"
Thomas
\n",
"
Brady
\n",
"
45.0
\n",
"
NaN
\n",
"
teacher
\n",
"
m
\n",
"
NaN
\n",
"
\n",
"
\n",
"
3773
\n",
"
1846-07-06
\n",
"
Henry
\n",
"
Dunlap
\n",
"
66.0
\n",
"
NaN
\n",
"
teacher
\n",
"
m
\n",
"
NaN
\n",
"
\n",
"
\n",
"
4283
\n",
"
1846-09-03
\n",
"
John B.
\n",
"
Murray
\n",
"
45.0
\n",
"
NaN
\n",
"
teacher
\n",
"
m
\n",
"
NaN
\n",
"
\n",
"
\n",
"
4286
\n",
"
1846-09-03
\n",
"
Alexander
\n",
"
Alcock
\n",
"
46.0
\n",
"
NaN
\n",
"
teacher
\n",
"
m
\n",
"
NaN
\n",
"
\n",
"
\n",
"
4611
\n",
"
1846-10-15
\n",
"
John
\n",
"
Dillon
\n",
"
32.0
\n",
"
NaN
\n",
"
teacher
\n",
"
m
\n",
"
NaN
\n",
"
\n",
"
\n",
"
5224
\n",
"
1847-03-01
\n",
"
George F.
\n",
"
Robins
\n",
"
57.0
\n",
"
destitution
\n",
"
teacher
\n",
"
m
\n",
"
NaN
\n",
"
\n",
"
\n",
"
6251
\n",
"
1847-08-05
\n",
"
Patrick
\n",
"
McGowen
\n",
"
24.0
\n",
"
sickness
\n",
"
teacher
\n",
"
m
\n",
"
NaN
\n",
"
\n",
"
\n",
"
8293
\n",
"
1847-05-27
\n",
"
William
\n",
"
Smith
\n",
"
29.0
\n",
"
destitution
\n",
"
teacher
\n",
"
m
\n",
"
NaN
\n",
"
\n",
"
\n",
"
8641
\n",
"
1847-06-23
\n",
"
Thomas
\n",
"
Gleason
\n",
"
50.0
\n",
"
sickness
\n",
"
teacher
\n",
"
m
\n",
"
NaN
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" date_in first_name last_name age disease profession gender \\\n",
"2195 1847-03-12 Michael Rush 40.0 recent emigrant teacher m \n",
"2692 1846-03-11 Thomas Brady 45.0 NaN teacher m \n",
"3773 1846-07-06 Henry Dunlap 66.0 NaN teacher m \n",
"4283 1846-09-03 John B. Murray 45.0 NaN teacher m \n",
"4286 1846-09-03 Alexander Alcock 46.0 NaN teacher m \n",
"4611 1846-10-15 John Dillon 32.0 NaN teacher m \n",
"5224 1847-03-01 George F. Robins 57.0 destitution teacher m \n",
"6251 1847-08-05 Patrick McGowen 24.0 sickness teacher m \n",
"8293 1847-05-27 William Smith 29.0 destitution teacher m \n",
"8641 1847-06-23 Thomas Gleason 50.0 sickness teacher m \n",
"\n",
" children \n",
"2195 NaN \n",
"2692 NaN \n",
"3773 NaN \n",
"4283 NaN \n",
"4286 NaN \n",
"4611 NaN \n",
"5224 NaN \n",
"6251 NaN \n",
"8293 NaN \n",
"8641 NaN "
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bellevue_df[bellevue_df['profession'] == 'teacher']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It can be helpful to isolate this condition and see that it produces a long list of True/False pairs for every row."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 False\n",
"1 False\n",
"2 False\n",
"3 False\n",
"4 False\n",
" ... \n",
"9579 False\n",
"9580 False\n",
"9581 False\n",
"9582 False\n",
"9583 False\n",
"Name: profession, Length: 9584, dtype: bool"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bellevue_df['profession'] == 'teacher'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Filtering DataFrames can sometimes get confusing and unwieldy (as conditions within conditions pile up like Russian dolls). It can be helpful to make a separate variable for a filter, as below."
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {},
"outputs": [],
"source": [
"teacher_filter = bellevue_df['profession'] == 'teacher'"
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
date_in
\n",
"
first_name
\n",
"
last_name
\n",
"
age
\n",
"
disease
\n",
"
profession
\n",
"
gender
\n",
"
children
\n",
"
\n",
" \n",
" \n",
"
\n",
"
2195
\n",
"
1847-03-12
\n",
"
Michael
\n",
"
Rush
\n",
"
40.0
\n",
"
recent emigrant
\n",
"
teacher
\n",
"
m
\n",
"
NaN
\n",
"
\n",
"
\n",
"
2692
\n",
"
1846-03-11
\n",
"
Thomas
\n",
"
Brady
\n",
"
45.0
\n",
"
NaN
\n",
"
teacher
\n",
"
m
\n",
"
NaN
\n",
"
\n",
"
\n",
"
3773
\n",
"
1846-07-06
\n",
"
Henry
\n",
"
Dunlap
\n",
"
66.0
\n",
"
NaN
\n",
"
teacher
\n",
"
m
\n",
"
NaN
\n",
"
\n",
"
\n",
"
4283
\n",
"
1846-09-03
\n",
"
John B.
\n",
"
Murray
\n",
"
45.0
\n",
"
NaN
\n",
"
teacher
\n",
"
m
\n",
"
NaN
\n",
"
\n",
"
\n",
"
4286
\n",
"
1846-09-03
\n",
"
Alexander
\n",
"
Alcock
\n",
"
46.0
\n",
"
NaN
\n",
"
teacher
\n",
"
m
\n",
"
NaN
\n",
"
\n",
"
\n",
"
4611
\n",
"
1846-10-15
\n",
"
John
\n",
"
Dillon
\n",
"
32.0
\n",
"
NaN
\n",
"
teacher
\n",
"
m
\n",
"
NaN
\n",
"
\n",
"
\n",
"
5224
\n",
"
1847-03-01
\n",
"
George F.
\n",
"
Robins
\n",
"
57.0
\n",
"
destitution
\n",
"
teacher
\n",
"
m
\n",
"
NaN
\n",
"
\n",
"
\n",
"
6251
\n",
"
1847-08-05
\n",
"
Patrick
\n",
"
McGowen
\n",
"
24.0
\n",
"
sickness
\n",
"
teacher
\n",
"
m
\n",
"
NaN
\n",
"
\n",
"
\n",
"
8293
\n",
"
1847-05-27
\n",
"
William
\n",
"
Smith
\n",
"
29.0
\n",
"
destitution
\n",
"
teacher
\n",
"
m
\n",
"
NaN
\n",
"
\n",
"
\n",
"
8641
\n",
"
1847-06-23
\n",
"
Thomas
\n",
"
Gleason
\n",
"
50.0
\n",
"
sickness
\n",
"
teacher
\n",
"
m
\n",
"
NaN
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" date_in first_name last_name age disease profession gender \\\n",
"2195 1847-03-12 Michael Rush 40.0 recent emigrant teacher m \n",
"2692 1846-03-11 Thomas Brady 45.0 NaN teacher m \n",
"3773 1846-07-06 Henry Dunlap 66.0 NaN teacher m \n",
"4283 1846-09-03 John B. Murray 45.0 NaN teacher m \n",
"4286 1846-09-03 Alexander Alcock 46.0 NaN teacher m \n",
"4611 1846-10-15 John Dillon 32.0 NaN teacher m \n",
"5224 1847-03-01 George F. Robins 57.0 destitution teacher m \n",
"6251 1847-08-05 Patrick McGowen 24.0 sickness teacher m \n",
"8293 1847-05-27 William Smith 29.0 destitution teacher m \n",
"8641 1847-06-23 Thomas Gleason 50.0 sickness teacher m \n",
"\n",
" children \n",
"2195 NaN \n",
"2692 NaN \n",
"3773 NaN \n",
"4283 NaN \n",
"4286 NaN \n",
"4611 NaN \n",
"5224 NaN \n",
"6251 NaN \n",
"8293 NaN \n",
"8641 NaN "
]
},
"execution_count": 86,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bellevue_df[teacher_filter]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In a similar vein, it's often useful to make a new variable for a filtered DataFrame. For example, let's say we wanted to look at only the women in the dataset and see the most commons professions."
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"women_filter = bellevue_df['gender'] == 'w'"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"bellevue_women = bellevue_df[women_filter]"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"married 1564\n",
"spinster 1507\n",
"widow 1043\n",
"laborer 27\n",
"seamstress 3\n",
"baker 2\n",
"single 2\n",
"waiter 2\n",
"(illegible) 1\n",
"gardener 1\n",
"weaver 1\n",
"servant 1\n",
"peddler 1\n",
"cook 1\n",
"sham 1\n",
"carpenter 1\n",
"tailor 1\n",
"Name: profession, dtype: int64"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bellevue_women['profession'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"bellevue_women['profession'].value_counts().plot(kind='pie', figsize=(10,10), title='Bellevue Almshouse:\\nMost Frequent \"Professions\" Among Women')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There's a lot we can do with filters beyond exact value matches with an equals operator `==`.\n",
"\n",
"We can also incorporate `>`, `<`, `>=`, `<=` with integers, floats, and even dates. For example, we can filter the DataFrame for only people who arrived to the Bellevue Almshouse on or after '1847-04-17'"
]
},
{
"cell_type": "code",
"execution_count": 120,
"metadata": {},
"outputs": [],
"source": [
"date_filter = bellevue_df['date_in'] >= '1847-04-17'"
]
},
{
"cell_type": "code",
"execution_count": 121,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
date_in
\n",
"
first_name
\n",
"
last_name
\n",
"
age
\n",
"
disease
\n",
"
profession
\n",
"
gender
\n",
"
children
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
1847-04-17
\n",
"
Mary
\n",
"
Gallagher
\n",
"
28.0
\n",
"
recent emigrant
\n",
"
married
\n",
"
w
\n",
"
Child Alana 10 days
\n",
"
\n",
"
\n",
"
1
\n",
"
1847-04-08
\n",
"
John
\n",
"
Sanin (?)
\n",
"
19.0
\n",
"
recent emigrant
\n",
"
laborer
\n",
"
m
\n",
"
Catherine 2 mo
\n",
"
\n",
"
\n",
"
2
\n",
"
1847-04-17
\n",
"
Anthony
\n",
"
Clark
\n",
"
60.0
\n",
"
recent emigrant
\n",
"
laborer
\n",
"
m
\n",
"
Charles Riley afed 10 days
\n",
"
\n",
"
\n",
"
3
\n",
"
1847-04-08
\n",
"
Lawrence
\n",
"
Feeney
\n",
"
32.0
\n",
"
recent emigrant
\n",
"
laborer
\n",
"
m
\n",
"
Child
\n",
"
\n",
"
\n",
"
4
\n",
"
1847-04-13
\n",
"
Henry
\n",
"
Joyce
\n",
"
21.0
\n",
"
recent emigrant
\n",
"
NaN
\n",
"
m
\n",
"
Child 1 mo
\n",
"
\n",
"
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
\n",
"
\n",
"
9564
\n",
"
1846-07-03
\n",
"
Michael
\n",
"
Brown
\n",
"
37.0
\n",
"
NaN
\n",
"
laborer
\n",
"
m
\n",
"
NaN
\n",
"
\n",
"
\n",
"
9565
\n",
"
1846-02-11
\n",
"
Thomas
\n",
"
Kennedy
\n",
"
69.0
\n",
"
NaN
\n",
"
laborer
\n",
"
m
\n",
"
NaN
\n",
"
\n",
"
\n",
"
9568
\n",
"
1847-04-02
\n",
"
Ann
\n",
"
Gedney
\n",
"
30.0
\n",
"
sickness
\n",
"
widow
\n",
"
w
\n",
"
NaN
\n",
"
\n",
"
\n",
"
9574
\n",
"
1846-08-14
\n",
"
Ann
\n",
"
Murray
\n",
"
25.0
\n",
"
NaN
\n",
"
NaN
\n",
"
w
\n",
"
NaN
\n",
"
\n",
"
\n",
"
9578
\n",
"
1846-05-23
\n",
"
Joseph
\n",
"
Aton
\n",
"
69.0
\n",
"
NaN
\n",
"
shoemaker
\n",
"
m
\n",
"
NaN
\n",
"
\n",
" \n",
"
\n",
"
4614 rows × 8 columns
\n",
"
"
],
"text/plain": [
" date_in first_name last_name age disease profession \\\n",
"0 1847-04-17 Mary Gallagher 28.0 recent emigrant married \n",
"1 1847-04-08 John Sanin (?) 19.0 recent emigrant laborer \n",
"2 1847-04-17 Anthony Clark 60.0 recent emigrant laborer \n",
"3 1847-04-08 Lawrence Feeney 32.0 recent emigrant laborer \n",
"4 1847-04-13 Henry Joyce 21.0 recent emigrant NaN \n",
"... ... ... ... ... ... ... \n",
"9564 1846-07-03 Michael Brown 37.0 NaN laborer \n",
"9565 1846-02-11 Thomas Kennedy 69.0 NaN laborer \n",
"9568 1847-04-02 Ann Gedney 30.0 sickness widow \n",
"9574 1846-08-14 Ann Murray 25.0 NaN NaN \n",
"9578 1846-05-23 Joseph Aton 69.0 NaN shoemaker \n",
"\n",
" gender children \n",
"0 w Child Alana 10 days \n",
"1 m Catherine 2 mo \n",
"2 m Charles Riley afed 10 days \n",
"3 m Child \n",
"4 m Child 1 mo \n",
"... ... ... \n",
"9564 m NaN \n",
"9565 m NaN \n",
"9568 w NaN \n",
"9574 w NaN \n",
"9578 m NaN \n",
"\n",
"[4614 rows x 8 columns]"
]
},
"execution_count": 121,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bellevue_df[date_filter]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Write to CSV"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To output a new CSV file, we can use the `.to_csv` method with a name for the file in quotation marks. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here's how we might output a new CSV file that only includes rows with women."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"bellevue_women.to_csv(\"Bellevue_women.csv\", encoding='utf-8', index=False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In addition to a filename, we're also specifying that the encoding is utf-8 and that the Index (the bolded left-most column) is not included in the CSV file."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Further Resources"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- [10 minutes to Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html), Pandas Official Documentation\n",
"- [\"Data Manipulation with Pandas\"](https://jakevdp.github.io/PythonDataScienceHandbook/03.00-introduction-to-pandas.html), *Python Data Science*, Jake VanderPlas"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.8"
}
},
"nbformat": 4,
"nbformat_minor": 4
}