{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Intro to Tabular and Pandas\n",
"\n",
"Before we begin doing tabular modeling, let's learn about the `Pandas` library"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Pandas? Like the bear? No!\n",
"\n",
"`pandas` is a library we can use for reading and analyzing any bit of Tabular data. We'll work out of the newly released 1.0 version"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!pip install pandas --upgrade"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We do this by creating what are called `DataFrames`. These can come from a variety of forms. Most commonly:\n",
"\n",
"* `read_csv`\n",
"* `read_excel`\n",
"* `read_feather`\n",
"* `read_html`\n",
"* `read_json`\n",
"* `read_pickle`\n",
"* `read_sql`\n",
"* `read_table`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We'll focus on the `read_csv` function. We'll use the Titanic dataset for today's tutorial"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Titanic"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cloning into 'kaggle-titanic'...\n",
"remote: Enumerating objects: 19, done.\u001b[K\n",
"remote: Counting objects: 100% (19/19), done.\u001b[K\n",
"remote: Compressing objects: 100% (13/13), done.\u001b[K\n",
"remote: Total 19 (delta 0), reused 19 (delta 0), pack-reused 0\u001b[K\n",
"Unpacking objects: 100% (19/19), done.\n"
]
}
],
"source": [
"!git clone https://github.com/pcsanwald/kaggle-titanic.git"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's use the `Pathlib` library to read our data"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from fastai.basic_data import pathlib"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"path = pathlib.Path('kaggle-titanic')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And look at what we grabbed"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[PosixPath('kaggle-titanic/train.csv'),\n",
" PosixPath('kaggle-titanic/doc'),\n",
" PosixPath('kaggle-titanic/.git'),\n",
" PosixPath('kaggle-titanic/test.csv'),\n",
" PosixPath('kaggle-titanic/.gitignore'),\n",
" PosixPath('kaggle-titanic/README.md'),\n",
" PosixPath('kaggle-titanic/test'),\n",
" PosixPath('kaggle-titanic/project.clj'),\n",
" PosixPath('kaggle-titanic/src')]"
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"path.ls()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can see that we have a `train.csv` and `test.csv` file. We'll work out of the `train` file today. Let's make our `DataFrame`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"df = pd.read_csv(path/'train.csv')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And now for some common functionalities:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Pandas Functionalities:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Head and Tail\n",
"\n",
"`.head()` and `.tail()` will show the first and last few rows of a `DataFrame`. You can pass in `n` rows to look at (the default is 5)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" survived \n",
" pclass \n",
" name \n",
" sex \n",
" age \n",
" sibsp \n",
" parch \n",
" ticket \n",
" fare \n",
" cabin \n",
" embarked \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0 \n",
" 3 \n",
" Braund, Mr. Owen Harris \n",
" male \n",
" 22.0 \n",
" 1 \n",
" 0 \n",
" A/5 21171 \n",
" 7.2500 \n",
" NaN \n",
" S \n",
" \n",
" \n",
" 1 \n",
" 1 \n",
" 1 \n",
" Cumings, Mrs. John Bradley (Florence Briggs Th... \n",
" female \n",
" 38.0 \n",
" 1 \n",
" 0 \n",
" PC 17599 \n",
" 71.2833 \n",
" C85 \n",
" C \n",
" \n",
" \n",
" 2 \n",
" 1 \n",
" 3 \n",
" Heikkinen, Miss. Laina \n",
" female \n",
" 26.0 \n",
" 0 \n",
" 0 \n",
" STON/O2. 3101282 \n",
" 7.9250 \n",
" NaN \n",
" S \n",
" \n",
" \n",
" 3 \n",
" 1 \n",
" 1 \n",
" Futrelle, Mrs. Jacques Heath (Lily May Peel) \n",
" female \n",
" 35.0 \n",
" 1 \n",
" 0 \n",
" 113803 \n",
" 53.1000 \n",
" C123 \n",
" S \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" survived pclass ... cabin embarked\n",
"0 0 3 ... NaN S\n",
"1 1 1 ... C85 C\n",
"2 1 3 ... NaN S\n",
"3 1 1 ... C123 S\n",
"\n",
"[4 rows x 11 columns]"
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"df.head(n=4)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" survived \n",
" pclass \n",
" name \n",
" sex \n",
" age \n",
" sibsp \n",
" parch \n",
" ticket \n",
" fare \n",
" cabin \n",
" embarked \n",
" \n",
" \n",
" \n",
" \n",
" 888 \n",
" 0 \n",
" 3 \n",
" Johnston, Miss. Catherine Helen \"Carrie\" \n",
" female \n",
" NaN \n",
" 1 \n",
" 2 \n",
" W./C. 6607 \n",
" 23.45 \n",
" NaN \n",
" S \n",
" \n",
" \n",
" 889 \n",
" 1 \n",
" 1 \n",
" Behr, Mr. Karl Howell \n",
" male \n",
" 26.0 \n",
" 0 \n",
" 0 \n",
" 111369 \n",
" 30.00 \n",
" C148 \n",
" C \n",
" \n",
" \n",
" 890 \n",
" 0 \n",
" 3 \n",
" Dooley, Mr. Patrick \n",
" male \n",
" 32.0 \n",
" 0 \n",
" 0 \n",
" 370376 \n",
" 7.75 \n",
" NaN \n",
" Q \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" survived pclass ... cabin embarked\n",
"888 0 3 ... NaN S\n",
"889 1 1 ... C148 C\n",
"890 0 3 ... NaN Q\n",
"\n",
"[3 rows x 11 columns]"
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"df.tail(n=3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Selecting\n",
"\n",
"We can select a variety of ways in pandas: row, value, even by a column:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Row:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are two different ways we can select rows, `loc` and `iloc`. Each work a little differently"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `loc`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`loc` is used to get rows (or columns) with a particular **label** from an index. IE:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" survived \n",
" pclass \n",
" name \n",
" sex \n",
" age \n",
" sibsp \n",
" parch \n",
" ticket \n",
" fare \n",
" cabin \n",
" embarked \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0 \n",
" 3 \n",
" Braund, Mr. Owen Harris \n",
" male \n",
" 22.0 \n",
" 1 \n",
" 0 \n",
" A/5 21171 \n",
" 7.2500 \n",
" NaN \n",
" S \n",
" \n",
" \n",
" 1 \n",
" 1 \n",
" 1 \n",
" Cumings, Mrs. John Bradley (Florence Briggs Th... \n",
" female \n",
" 38.0 \n",
" 1 \n",
" 0 \n",
" PC 17599 \n",
" 71.2833 \n",
" C85 \n",
" C \n",
" \n",
" \n",
" 2 \n",
" 1 \n",
" 3 \n",
" Heikkinen, Miss. Laina \n",
" female \n",
" 26.0 \n",
" 0 \n",
" 0 \n",
" STON/O2. 3101282 \n",
" 7.9250 \n",
" NaN \n",
" S \n",
" \n",
" \n",
" 3 \n",
" 1 \n",
" 1 \n",
" Futrelle, Mrs. Jacques Heath (Lily May Peel) \n",
" female \n",
" 35.0 \n",
" 1 \n",
" 0 \n",
" 113803 \n",
" 53.1000 \n",
" C123 \n",
" S \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" survived pclass ... cabin embarked\n",
"0 0 3 ... NaN S\n",
"1 1 1 ... C85 C\n",
"2 1 3 ... NaN S\n",
"3 1 1 ... C123 S\n",
"\n",
"[4 rows x 11 columns]"
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"df.loc[:3]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here we grabbed rows 0 through 3"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `iloc`\n",
"`iloc` is used when we want to get rows (or columns) from a *position* on an index"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" survived \n",
" pclass \n",
" name \n",
" sex \n",
" age \n",
" sibsp \n",
" parch \n",
" ticket \n",
" fare \n",
" cabin \n",
" embarked \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0 \n",
" 3 \n",
" Braund, Mr. Owen Harris \n",
" male \n",
" 22.0 \n",
" 1 \n",
" 0 \n",
" A/5 21171 \n",
" 7.2500 \n",
" NaN \n",
" S \n",
" \n",
" \n",
" 1 \n",
" 1 \n",
" 1 \n",
" Cumings, Mrs. John Bradley (Florence Briggs Th... \n",
" female \n",
" 38.0 \n",
" 1 \n",
" 0 \n",
" PC 17599 \n",
" 71.2833 \n",
" C85 \n",
" C \n",
" \n",
" \n",
" 2 \n",
" 1 \n",
" 3 \n",
" Heikkinen, Miss. Laina \n",
" female \n",
" 26.0 \n",
" 0 \n",
" 0 \n",
" STON/O2. 3101282 \n",
" 7.9250 \n",
" NaN \n",
" S \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" survived pclass ... cabin embarked\n",
"0 0 3 ... NaN S\n",
"1 1 1 ... C85 C\n",
"2 1 3 ... NaN S\n",
"\n",
"[3 rows x 11 columns]"
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"df.iloc[:3]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Whereas here we grabbed the first three rows"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Column\n",
"\n",
"We can pass in either a string, an index, or multiple columns to select:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 0\n",
"1 1\n",
"2 1\n",
"3 1\n",
"4 0\n",
"Name: survived, dtype: int64"
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"df['survived'].head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To select multiple columns, pass in a double array of your names"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" sex \n",
" age \n",
" survived \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" male \n",
" 22.0 \n",
" 0 \n",
" \n",
" \n",
" 1 \n",
" female \n",
" 38.0 \n",
" 1 \n",
" \n",
" \n",
" 2 \n",
" female \n",
" 26.0 \n",
" 1 \n",
" \n",
" \n",
" 3 \n",
" female \n",
" 35.0 \n",
" 1 \n",
" \n",
" \n",
" 4 \n",
" male \n",
" 35.0 \n",
" 0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" sex age survived\n",
"0 male 22.0 0\n",
"1 female 38.0 1\n",
"2 female 26.0 1\n",
"3 female 35.0 1\n",
"4 male 35.0 0"
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"df[['sex', 'age', 'survived']].head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And to pass as an index, first do the number of rows followed by the column index"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 0\n",
"1 1\n",
"2 1\n",
"3 1\n",
"4 0\n",
" ..\n",
"886 0\n",
"887 1\n",
"888 0\n",
"889 1\n",
"890 0\n",
"Name: survived, Length: 891, dtype: int64"
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"df.iloc[:,0]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" survived \n",
" pclass \n",
" name \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0 \n",
" 3 \n",
" Braund, Mr. Owen Harris \n",
" \n",
" \n",
" 1 \n",
" 1 \n",
" 1 \n",
" Cumings, Mrs. John Bradley (Florence Briggs Th... \n",
" \n",
" \n",
" 2 \n",
" 1 \n",
" 3 \n",
" Heikkinen, Miss. Laina \n",
" \n",
" \n",
" 3 \n",
" 1 \n",
" 1 \n",
" Futrelle, Mrs. Jacques Heath (Lily May Peel) \n",
" \n",
" \n",
" 4 \n",
" 0 \n",
" 3 \n",
" Allen, Mr. William Henry \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" 886 \n",
" 0 \n",
" 2 \n",
" Montvila, Rev. Juozas \n",
" \n",
" \n",
" 887 \n",
" 1 \n",
" 1 \n",
" Graham, Miss. Margaret Edith \n",
" \n",
" \n",
" 888 \n",
" 0 \n",
" 3 \n",
" Johnston, Miss. Catherine Helen \"Carrie\" \n",
" \n",
" \n",
" 889 \n",
" 1 \n",
" 1 \n",
" Behr, Mr. Karl Howell \n",
" \n",
" \n",
" 890 \n",
" 0 \n",
" 3 \n",
" Dooley, Mr. Patrick \n",
" \n",
" \n",
"
\n",
"
891 rows × 3 columns
\n",
"
"
],
"text/plain": [
" survived pclass name\n",
"0 0 3 Braund, Mr. Owen Harris\n",
"1 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th...\n",
"2 1 3 Heikkinen, Miss. Laina\n",
"3 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel)\n",
"4 0 3 Allen, Mr. William Henry\n",
".. ... ... ...\n",
"886 0 2 Montvila, Rev. Juozas\n",
"887 1 1 Graham, Miss. Margaret Edith\n",
"888 0 3 Johnston, Miss. Catherine Helen \"Carrie\"\n",
"889 1 1 Behr, Mr. Karl Howell\n",
"890 0 3 Dooley, Mr. Patrick\n",
"\n",
"[891 rows x 3 columns]"
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"df.iloc[:,0:3]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Value\n",
"\n",
"We can select based on a value a few different ways, most involving a boolean argument:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# df.loc[df['column_name'] == some_value]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" survived \n",
" pclass \n",
" name \n",
" sex \n",
" age \n",
" sibsp \n",
" parch \n",
" ticket \n",
" fare \n",
" cabin \n",
" embarked \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" 1 \n",
" 1 \n",
" Cumings, Mrs. John Bradley (Florence Briggs Th... \n",
" female \n",
" 38.0 \n",
" 1 \n",
" 0 \n",
" PC 17599 \n",
" 71.2833 \n",
" C85 \n",
" C \n",
" \n",
" \n",
" 2 \n",
" 1 \n",
" 3 \n",
" Heikkinen, Miss. Laina \n",
" female \n",
" 26.0 \n",
" 0 \n",
" 0 \n",
" STON/O2. 3101282 \n",
" 7.9250 \n",
" NaN \n",
" S \n",
" \n",
" \n",
" 3 \n",
" 1 \n",
" 1 \n",
" Futrelle, Mrs. Jacques Heath (Lily May Peel) \n",
" female \n",
" 35.0 \n",
" 1 \n",
" 0 \n",
" 113803 \n",
" 53.1000 \n",
" C123 \n",
" S \n",
" \n",
" \n",
" 8 \n",
" 1 \n",
" 3 \n",
" Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg) \n",
" female \n",
" 27.0 \n",
" 0 \n",
" 2 \n",
" 347742 \n",
" 11.1333 \n",
" NaN \n",
" S \n",
" \n",
" \n",
" 9 \n",
" 1 \n",
" 2 \n",
" Nasser, Mrs. Nicholas (Adele Achem) \n",
" female \n",
" 14.0 \n",
" 1 \n",
" 0 \n",
" 237736 \n",
" 30.0708 \n",
" NaN \n",
" C \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" survived pclass ... cabin embarked\n",
"1 1 1 ... C85 C\n",
"2 1 3 ... NaN S\n",
"3 1 1 ... C123 S\n",
"8 1 3 ... NaN S\n",
"9 1 2 ... NaN C\n",
"\n",
"[5 rows x 11 columns]"
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"df.loc[df['sex'] == 'female'].head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Or even a series of values:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" survived \n",
" pclass \n",
" name \n",
" sex \n",
" age \n",
" sibsp \n",
" parch \n",
" ticket \n",
" fare \n",
" cabin \n",
" embarked \n",
" \n",
" \n",
" \n",
" \n",
" 14 \n",
" 0 \n",
" 3 \n",
" Vestrom, Miss. Hulda Amanda Adolfina \n",
" female \n",
" 14.0 \n",
" 0 \n",
" 0 \n",
" 350406 \n",
" 7.8542 \n",
" NaN \n",
" S \n",
" \n",
" \n",
" 18 \n",
" 0 \n",
" 3 \n",
" Vander Planke, Mrs. Julius (Emelia Maria Vande... \n",
" female \n",
" 31.0 \n",
" 1 \n",
" 0 \n",
" 345763 \n",
" 18.0000 \n",
" NaN \n",
" S \n",
" \n",
" \n",
" 24 \n",
" 0 \n",
" 3 \n",
" Palsson, Miss. Torborg Danira \n",
" female \n",
" 8.0 \n",
" 3 \n",
" 1 \n",
" 349909 \n",
" 21.0750 \n",
" NaN \n",
" S \n",
" \n",
" \n",
" 38 \n",
" 0 \n",
" 3 \n",
" Vander Planke, Miss. Augusta Maria \n",
" female \n",
" 18.0 \n",
" 2 \n",
" 0 \n",
" 345764 \n",
" 18.0000 \n",
" NaN \n",
" S \n",
" \n",
" \n",
" 40 \n",
" 0 \n",
" 3 \n",
" Ahlin, Mrs. Johan (Johanna Persdotter Larsson) \n",
" female \n",
" 40.0 \n",
" 1 \n",
" 0 \n",
" 7546 \n",
" 9.4750 \n",
" NaN \n",
" S \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" survived pclass ... cabin embarked\n",
"14 0 3 ... NaN S\n",
"18 0 3 ... NaN S\n",
"24 0 3 ... NaN S\n",
"38 0 3 ... NaN S\n",
"40 0 3 ... NaN S\n",
"\n",
"[5 rows x 11 columns]"
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"df.loc[(df['sex'] == 'female') & (df['survived'] == 0)].head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now that we have the basic selects done, let's go into some more complex ideas"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Plotting\n",
"\n",
"We can plot out any data we want from our `DataFrames`, like so:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQI\ngy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktSIgYKe\nZG2Se5NMJrlihv1vSrInydbu6+LhjypJOpwl/RYkOR74MHA2sAu4K8nGqto+bektVXXpPMwoSRrA\nIEfoa4DJqvphVf0KuBlYN79jSZLmapCgLwfun3J9V7dtur9Kck+SW5OsHMp0kqSBDeuXov8GrKqq\nFwG3ATfOtCjJ+iSbk2zes2fPkB5akgSDBX03MPWIe0W37beq6qGq+mV39aPAi2e6o6raUFUTVTUx\nNjZ2JPNKkmYxSNDvAlYneVaSJwHnAxunLkhy8pSrrwV2DG9ESdIg+r7KpaoOJLkU+ApwPHBDVW1L\n8h5gc1VtBN6a5LXAAeBh4E3zOLMkaQZ9gw5QVZuATdO2XTXl8pXAlcMdTZI0F75TVJIaYdAlqREG\nXZIaYdAlqREGXZIaYdAlqREGXZIaYdAlqREGXZIaYdAlqREGXZIaYdAlqREGXZIaYdAlqREGXZIa\nYdAlqREGXZIaYdAlqREGXZIaYdAlqREGXZIaYdAlqREGXZIaYdAlqREGXZIaYdAlqREDBT3J2iT3\nJplMcsUM+09Icku3/84kq4Y9qCTp8PoGPcnxwIeBVwPPBy5I8vxpy94MPFJVpwIfAN437EElSYc3\nyBH6GmCyqn5YVb8CbgbWTVuzDrixu3wrcFaSDG9MSVI/qarDL0jOA9ZW1cXd9TcAL6mqS6es+V63\nZld3/b5uzYPT7ms9sL67+lzg3mF9I0dhGfBg31WLg8/FIT4Xh/hcHHIsPBenVNXYTDuWLOQUVbUB\n2LCQj9lPks1VNTHqOY4FPheH+Fwc4nNxyLH+XAxyymU3sHLK9RXdthnXJFkCPA14aBgDSpIGM0jQ\n7wJWJ3lWkicB5wMbp63ZCLyxu3wecHv1O5cjSRqqvqdcqupAkkuBrwDHAzdU1bYk7wE2V9VG4Hrg\nE0kmgYfpRf+J4pg6BTRiPheH+Fwc4nNxyDH9XPT9pagk6YnBd4pKUiMMuiQ1wqBLUiMW9HXoo5bk\nefTe1bq827Qb2FhVO0Y3lUat+7lYDtxZVfunbF9bVV8e3WQLL8kaoKrqru4jPtYC36+qTSMebeSS\n3FRVF456jsNZNL8UTfIO4AJ6H12wq9u8gt4rcm6uqmtGNduxJslFVfWxUc+xEJK8FbgE2AGcBlxW\nVf/a7dtSVWeMcr6FlORqep/ZtAS4DXgJcAdwNvCVqnrvCMdbUEmmvzQ7wF8CtwNU1WsXfKgBLKag\n/w/wgqr69bTtTwK2VdXq0Ux27Enyv1U1Puo5FkKS7wIvq6r93aeE3gp8oqo+mOS/q+r0kQ64gLrn\n4jTgBODHwIqq2pfkKfT+9fKikQ64gJJsAbYDHwWKXtA/TfeS7Kr62uimm91iOuXyOPBM4EfTtp/c\n7VtUktwz2y7g6Qs5y4gdd/A0S1XtTHImcGuSU+g9F4vJgar6DfBokvuqah9AVT2WZLH9PzIBXAa8\nC3h7VW1N8tixGvKDFlPQLwf+M8kPgPu7bePAqcCls96qXU8HXgU8Mm17gP9a+HFG5idJTquqrQDd\nkfq5wA3AC0c72oL7VZLfq6pHgRcf3JjkaSyyg56qehz4QJJ/6f77E54AvTzmBxyWqvpykufQ+zjg\nqb8Uvas7KllsvgA89WDIpkry1YUfZ2QuBA5M3VBVB4ALk/zTaEYamVdU1S/ht0E7aCmHPtpjUek+\nQfZ1SV4D7Bv1PP0smnPoktQ6X4cuSY0w6JLUCIMuSY0w6JLUCIMuSY34f4CzEsQIXG4NAAAAAElF\nTkSuQmCC\n",
"text/plain": [
""
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
}
],
"source": [
"df['pclass'].iloc[:5].plot(kind='bar', title='pclass')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
}
],
"source": [
"df['fare'].plot(title='fare')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also plot multiple columns:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
}
],
"source": [
"df[['survived', 'pclass']][:20].plot(kind='bar')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Dealing with multiple `DataFrames`\n",
"\n",
"Sometimes, we have multiple dataframes of data. How do we combine them?"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"df1 = df[['sibsp', 'parch', 'ticket', 'fare', 'cabin', 'embarked', 'name']].iloc[:50]\n",
"df2 = df[df.columns[:6]].iloc[:50]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Merge\n",
"\n",
"`merge` allows you to do standard database operations on a `DataFrame` or `Series`. Here is the doc line, let's break it down:\n",
"```python\n",
"pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,\n",
" left_index=False, right_index=False, sort=True,\n",
" suffixes=('_x', '_y'), copy=True, indicator=False,\n",
" validate=None)\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* `left` and `right` should be two `DataFrame` or `Series` objects. \n",
"* `on` is a **column** or **index** name to join on and must be found in **both** dataframes. \n",
"* `left_index` and `right_index` uses the respective input's index to use as a key instead\n",
"* `how`: Either `left`, `right`, `outer`, or `inner`. "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" sibsp \n",
" parch \n",
" ticket \n",
" fare \n",
" cabin \n",
" embarked \n",
" name \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 1 \n",
" 0 \n",
" A/5 21171 \n",
" 7.2500 \n",
" NaN \n",
" S \n",
" Braund, Mr. Owen Harris \n",
" \n",
" \n",
" 1 \n",
" 1 \n",
" 0 \n",
" PC 17599 \n",
" 71.2833 \n",
" C85 \n",
" C \n",
" Cumings, Mrs. John Bradley (Florence Briggs Th... \n",
" \n",
" \n",
" 2 \n",
" 0 \n",
" 0 \n",
" STON/O2. 3101282 \n",
" 7.9250 \n",
" NaN \n",
" S \n",
" Heikkinen, Miss. Laina \n",
" \n",
" \n",
" 3 \n",
" 1 \n",
" 0 \n",
" 113803 \n",
" 53.1000 \n",
" C123 \n",
" S \n",
" Futrelle, Mrs. Jacques Heath (Lily May Peel) \n",
" \n",
" \n",
" 4 \n",
" 0 \n",
" 0 \n",
" 373450 \n",
" 8.0500 \n",
" NaN \n",
" S \n",
" Allen, Mr. William Henry \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" sibsp parch ... embarked name\n",
"0 1 0 ... S Braund, Mr. Owen Harris\n",
"1 1 0 ... C Cumings, Mrs. John Bradley (Florence Briggs Th...\n",
"2 0 0 ... S Heikkinen, Miss. Laina\n",
"3 1 0 ... S Futrelle, Mrs. Jacques Heath (Lily May Peel)\n",
"4 0 0 ... S Allen, Mr. William Henry\n",
"\n",
"[5 rows x 7 columns]"
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"df1.head()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" survived \n",
" pclass \n",
" name \n",
" sex \n",
" age \n",
" sibsp \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0 \n",
" 3 \n",
" Braund, Mr. Owen Harris \n",
" male \n",
" 22.0 \n",
" 1 \n",
" \n",
" \n",
" 1 \n",
" 1 \n",
" 1 \n",
" Cumings, Mrs. John Bradley (Florence Briggs Th... \n",
" female \n",
" 38.0 \n",
" 1 \n",
" \n",
" \n",
" 2 \n",
" 1 \n",
" 3 \n",
" Heikkinen, Miss. Laina \n",
" female \n",
" 26.0 \n",
" 0 \n",
" \n",
" \n",
" 3 \n",
" 1 \n",
" 1 \n",
" Futrelle, Mrs. Jacques Heath (Lily May Peel) \n",
" female \n",
" 35.0 \n",
" 1 \n",
" \n",
" \n",
" 4 \n",
" 0 \n",
" 3 \n",
" Allen, Mr. William Henry \n",
" male \n",
" 35.0 \n",
" 0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" survived pclass ... age sibsp\n",
"0 0 3 ... 22.0 1\n",
"1 1 1 ... 38.0 1\n",
"2 1 3 ... 26.0 0\n",
"3 1 1 ... 35.0 1\n",
"4 0 3 ... 35.0 0\n",
"\n",
"[5 rows x 6 columns]"
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"df2.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's practice merging on `name`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"merge = pd.merge(df1, df2, on='name')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" sibsp_x \n",
" parch \n",
" ticket \n",
" fare \n",
" cabin \n",
" embarked \n",
" name \n",
" survived \n",
" pclass \n",
" sex \n",
" age \n",
" sibsp_y \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 1 \n",
" 0 \n",
" A/5 21171 \n",
" 7.2500 \n",
" NaN \n",
" S \n",
" Braund, Mr. Owen Harris \n",
" 0 \n",
" 3 \n",
" male \n",
" 22.0 \n",
" 1 \n",
" \n",
" \n",
" 1 \n",
" 1 \n",
" 0 \n",
" PC 17599 \n",
" 71.2833 \n",
" C85 \n",
" C \n",
" Cumings, Mrs. John Bradley (Florence Briggs Th... \n",
" 1 \n",
" 1 \n",
" female \n",
" 38.0 \n",
" 1 \n",
" \n",
" \n",
" 2 \n",
" 0 \n",
" 0 \n",
" STON/O2. 3101282 \n",
" 7.9250 \n",
" NaN \n",
" S \n",
" Heikkinen, Miss. Laina \n",
" 1 \n",
" 3 \n",
" female \n",
" 26.0 \n",
" 0 \n",
" \n",
" \n",
" 3 \n",
" 1 \n",
" 0 \n",
" 113803 \n",
" 53.1000 \n",
" C123 \n",
" S \n",
" Futrelle, Mrs. Jacques Heath (Lily May Peel) \n",
" 1 \n",
" 1 \n",
" female \n",
" 35.0 \n",
" 1 \n",
" \n",
" \n",
" 4 \n",
" 0 \n",
" 0 \n",
" 373450 \n",
" 8.0500 \n",
" NaN \n",
" S \n",
" Allen, Mr. William Henry \n",
" 0 \n",
" 3 \n",
" male \n",
" 35.0 \n",
" 0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" sibsp_x parch ticket fare ... pclass sex age sibsp_y\n",
"0 1 0 A/5 21171 7.2500 ... 3 male 22.0 1\n",
"1 1 0 PC 17599 71.2833 ... 1 female 38.0 1\n",
"2 0 0 STON/O2. 3101282 7.9250 ... 3 female 26.0 0\n",
"3 1 0 113803 53.1000 ... 1 female 35.0 1\n",
"4 0 0 373450 8.0500 ... 3 male 35.0 0\n",
"\n",
"[5 rows x 12 columns]"
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"merge.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Appending\n",
"\n",
"We can tag one dataframe onto another:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"df_top = df.iloc[:5]\n",
"df_bottom = df.iloc[5:10]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(5, 5)"
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"len(df_top), len(df_bottom)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" survived \n",
" pclass \n",
" name \n",
" sex \n",
" age \n",
" sibsp \n",
" parch \n",
" ticket \n",
" fare \n",
" cabin \n",
" embarked \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0 \n",
" 3 \n",
" Braund, Mr. Owen Harris \n",
" male \n",
" 22.0 \n",
" 1 \n",
" 0 \n",
" A/5 21171 \n",
" 7.2500 \n",
" NaN \n",
" S \n",
" \n",
" \n",
" 1 \n",
" 1 \n",
" 1 \n",
" Cumings, Mrs. John Bradley (Florence Briggs Th... \n",
" female \n",
" 38.0 \n",
" 1 \n",
" 0 \n",
" PC 17599 \n",
" 71.2833 \n",
" C85 \n",
" C \n",
" \n",
" \n",
" 2 \n",
" 1 \n",
" 3 \n",
" Heikkinen, Miss. Laina \n",
" female \n",
" 26.0 \n",
" 0 \n",
" 0 \n",
" STON/O2. 3101282 \n",
" 7.9250 \n",
" NaN \n",
" S \n",
" \n",
" \n",
" 3 \n",
" 1 \n",
" 1 \n",
" Futrelle, Mrs. Jacques Heath (Lily May Peel) \n",
" female \n",
" 35.0 \n",
" 1 \n",
" 0 \n",
" 113803 \n",
" 53.1000 \n",
" C123 \n",
" S \n",
" \n",
" \n",
" 4 \n",
" 0 \n",
" 3 \n",
" Allen, Mr. William Henry \n",
" male \n",
" 35.0 \n",
" 0 \n",
" 0 \n",
" 373450 \n",
" 8.0500 \n",
" NaN \n",
" S \n",
" \n",
" \n",
" 5 \n",
" 0 \n",
" 3 \n",
" Moran, Mr. James \n",
" male \n",
" NaN \n",
" 0 \n",
" 0 \n",
" 330877 \n",
" 8.4583 \n",
" NaN \n",
" Q \n",
" \n",
" \n",
" 6 \n",
" 0 \n",
" 1 \n",
" McCarthy, Mr. Timothy J \n",
" male \n",
" 54.0 \n",
" 0 \n",
" 0 \n",
" 17463 \n",
" 51.8625 \n",
" E46 \n",
" S \n",
" \n",
" \n",
" 7 \n",
" 0 \n",
" 3 \n",
" Palsson, Master. Gosta Leonard \n",
" male \n",
" 2.0 \n",
" 3 \n",
" 1 \n",
" 349909 \n",
" 21.0750 \n",
" NaN \n",
" S \n",
" \n",
" \n",
" 8 \n",
" 1 \n",
" 3 \n",
" Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg) \n",
" female \n",
" 27.0 \n",
" 0 \n",
" 2 \n",
" 347742 \n",
" 11.1333 \n",
" NaN \n",
" S \n",
" \n",
" \n",
" 9 \n",
" 1 \n",
" 2 \n",
" Nasser, Mrs. Nicholas (Adele Achem) \n",
" female \n",
" 14.0 \n",
" 1 \n",
" 0 \n",
" 237736 \n",
" 30.0708 \n",
" NaN \n",
" C \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" survived pclass ... cabin embarked\n",
"0 0 3 ... NaN S\n",
"1 1 1 ... C85 C\n",
"2 1 3 ... NaN S\n",
"3 1 1 ... C123 S\n",
"4 0 3 ... NaN S\n",
"5 0 3 ... NaN Q\n",
"6 0 1 ... E46 S\n",
"7 0 3 ... NaN S\n",
"8 1 3 ... NaN S\n",
"9 1 2 ... NaN C\n",
"\n",
"[10 rows x 11 columns]"
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"df_top.append(df_bottom)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Dropping\n",
"\n",
"You can drop a column or row, and by default `pandas` will return the dropped table. If you choose to do `inplace`, it will directly modify the dataframe. You can also pass in an `axis` parameter. By default it is `1`, which will drop a row. `0` drops a column"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" survived \n",
" pclass \n",
" name \n",
" sex \n",
" age \n",
" sibsp \n",
" parch \n",
" ticket \n",
" fare \n",
" cabin \n",
" embarked \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" 1 \n",
" 1 \n",
" Cumings, Mrs. John Bradley (Florence Briggs Th... \n",
" female \n",
" 38.0 \n",
" 1 \n",
" 0 \n",
" PC 17599 \n",
" 71.2833 \n",
" C85 \n",
" C \n",
" \n",
" \n",
" 2 \n",
" 1 \n",
" 3 \n",
" Heikkinen, Miss. Laina \n",
" female \n",
" 26.0 \n",
" 0 \n",
" 0 \n",
" STON/O2. 3101282 \n",
" 7.9250 \n",
" NaN \n",
" S \n",
" \n",
" \n",
" 3 \n",
" 1 \n",
" 1 \n",
" Futrelle, Mrs. Jacques Heath (Lily May Peel) \n",
" female \n",
" 35.0 \n",
" 1 \n",
" 0 \n",
" 113803 \n",
" 53.1000 \n",
" C123 \n",
" S \n",
" \n",
" \n",
" 4 \n",
" 0 \n",
" 3 \n",
" Allen, Mr. William Henry \n",
" male \n",
" 35.0 \n",
" 0 \n",
" 0 \n",
" 373450 \n",
" 8.0500 \n",
" NaN \n",
" S \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" survived pclass ... cabin embarked\n",
"1 1 1 ... C85 C\n",
"2 1 3 ... NaN S\n",
"3 1 1 ... C123 S\n",
"4 0 3 ... NaN S\n",
"\n",
"[4 rows x 11 columns]"
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"df_top.drop(0)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" pclass \n",
" name \n",
" sex \n",
" age \n",
" sibsp \n",
" parch \n",
" ticket \n",
" fare \n",
" cabin \n",
" embarked \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 3 \n",
" Braund, Mr. Owen Harris \n",
" male \n",
" 22.0 \n",
" 1 \n",
" 0 \n",
" A/5 21171 \n",
" 7.2500 \n",
" NaN \n",
" S \n",
" \n",
" \n",
" 1 \n",
" 1 \n",
" Cumings, Mrs. John Bradley (Florence Briggs Th... \n",
" female \n",
" 38.0 \n",
" 1 \n",
" 0 \n",
" PC 17599 \n",
" 71.2833 \n",
" C85 \n",
" C \n",
" \n",
" \n",
" 2 \n",
" 3 \n",
" Heikkinen, Miss. Laina \n",
" female \n",
" 26.0 \n",
" 0 \n",
" 0 \n",
" STON/O2. 3101282 \n",
" 7.9250 \n",
" NaN \n",
" S \n",
" \n",
" \n",
" 3 \n",
" 1 \n",
" Futrelle, Mrs. Jacques Heath (Lily May Peel) \n",
" female \n",
" 35.0 \n",
" 1 \n",
" 0 \n",
" 113803 \n",
" 53.1000 \n",
" C123 \n",
" S \n",
" \n",
" \n",
" 4 \n",
" 3 \n",
" Allen, Mr. William Henry \n",
" male \n",
" 35.0 \n",
" 0 \n",
" 0 \n",
" 373450 \n",
" 8.0500 \n",
" NaN \n",
" S \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" pclass name ... cabin embarked\n",
"0 3 Braund, Mr. Owen Harris ... NaN S\n",
"1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... ... C85 C\n",
"2 3 Heikkinen, Miss. Laina ... NaN S\n",
"3 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) ... C123 S\n",
"4 3 Allen, Mr. William Henry ... NaN S\n",
"\n",
"[5 rows x 10 columns]"
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"df_top.drop('survived', axis=1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" survived \n",
" pclass \n",
" name \n",
" sex \n",
" age \n",
" sibsp \n",
" parch \n",
" ticket \n",
" fare \n",
" cabin \n",
" embarked \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0 \n",
" 3 \n",
" Braund, Mr. Owen Harris \n",
" male \n",
" 22.0 \n",
" 1 \n",
" 0 \n",
" A/5 21171 \n",
" 7.2500 \n",
" NaN \n",
" S \n",
" \n",
" \n",
" 1 \n",
" 1 \n",
" 1 \n",
" Cumings, Mrs. John Bradley (Florence Briggs Th... \n",
" female \n",
" 38.0 \n",
" 1 \n",
" 0 \n",
" PC 17599 \n",
" 71.2833 \n",
" C85 \n",
" C \n",
" \n",
" \n",
" 2 \n",
" 1 \n",
" 3 \n",
" Heikkinen, Miss. Laina \n",
" female \n",
" 26.0 \n",
" 0 \n",
" 0 \n",
" STON/O2. 3101282 \n",
" 7.9250 \n",
" NaN \n",
" S \n",
" \n",
" \n",
" 3 \n",
" 1 \n",
" 1 \n",
" Futrelle, Mrs. Jacques Heath (Lily May Peel) \n",
" female \n",
" 35.0 \n",
" 1 \n",
" 0 \n",
" 113803 \n",
" 53.1000 \n",
" C123 \n",
" S \n",
" \n",
" \n",
" 4 \n",
" 0 \n",
" 3 \n",
" Allen, Mr. William Henry \n",
" male \n",
" 35.0 \n",
" 0 \n",
" 0 \n",
" 373450 \n",
" 8.0500 \n",
" NaN \n",
" S \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" survived pclass ... cabin embarked\n",
"0 0 3 ... NaN S\n",
"1 1 1 ... C85 C\n",
"2 1 3 ... NaN S\n",
"3 1 1 ... C123 S\n",
"4 0 3 ... NaN S\n",
"\n",
"[5 rows x 11 columns]"
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"df_top.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# GroupBy\n",
"\n",
"GroupBy can be used to split our data into groups if they fall into some criteria. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"```python\n",
"df_top.groupby(by=None, axis=0, level=None, as_index: bool=True, sort: bool=True, group_keys: bool=True, squeeze: bool=False, observed: bool=False)\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Parameters:\n",
"* `by`: mapping, function, string or some iterable\n",
"* `axis`: default is 0\n",
"* `level`: If the axis is heirarchical, group by levels or a particular level\n",
"* `group_keys`: Add group keys to index to identify pieces"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For an example, let's group by `survived`:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"surv = df.groupby('survived')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If we call `first`, we'll see the first entry in each group:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" pclass \n",
" name \n",
" sex \n",
" age \n",
" sibsp \n",
" parch \n",
" ticket \n",
" fare \n",
" cabin \n",
" embarked \n",
" \n",
" \n",
" survived \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 3 \n",
" Braund, Mr. Owen Harris \n",
" male \n",
" 22.0 \n",
" 1 \n",
" 0 \n",
" A/5 21171 \n",
" 7.2500 \n",
" E46 \n",
" S \n",
" \n",
" \n",
" 1 \n",
" 1 \n",
" Cumings, Mrs. John Bradley (Florence Briggs Th... \n",
" female \n",
" 38.0 \n",
" 1 \n",
" 0 \n",
" PC 17599 \n",
" 71.2833 \n",
" C85 \n",
" C \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" pclass ... embarked\n",
"survived ... \n",
"0 3 ... S\n",
"1 1 ... C\n",
"\n",
"[2 rows x 10 columns]"
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"surv.first()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To grab the group, we can call `get_group` and pass in either one of our classes:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" pclass \n",
" name \n",
" sex \n",
" age \n",
" sibsp \n",
" parch \n",
" ticket \n",
" fare \n",
" cabin \n",
" embarked \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" 1 \n",
" Cumings, Mrs. John Bradley (Florence Briggs Th... \n",
" female \n",
" 38.0 \n",
" 1 \n",
" 0 \n",
" PC 17599 \n",
" 71.2833 \n",
" C85 \n",
" C \n",
" \n",
" \n",
" 2 \n",
" 3 \n",
" Heikkinen, Miss. Laina \n",
" female \n",
" 26.0 \n",
" 0 \n",
" 0 \n",
" STON/O2. 3101282 \n",
" 7.9250 \n",
" NaN \n",
" S \n",
" \n",
" \n",
" 3 \n",
" 1 \n",
" Futrelle, Mrs. Jacques Heath (Lily May Peel) \n",
" female \n",
" 35.0 \n",
" 1 \n",
" 0 \n",
" 113803 \n",
" 53.1000 \n",
" C123 \n",
" S \n",
" \n",
" \n",
" 8 \n",
" 3 \n",
" Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg) \n",
" female \n",
" 27.0 \n",
" 0 \n",
" 2 \n",
" 347742 \n",
" 11.1333 \n",
" NaN \n",
" S \n",
" \n",
" \n",
" 9 \n",
" 2 \n",
" Nasser, Mrs. Nicholas (Adele Achem) \n",
" female \n",
" 14.0 \n",
" 1 \n",
" 0 \n",
" 237736 \n",
" 30.0708 \n",
" NaN \n",
" C \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" 875 \n",
" 3 \n",
" Najib, Miss. Adele Kiamie \"Jane\" \n",
" female \n",
" 15.0 \n",
" 0 \n",
" 0 \n",
" 2667 \n",
" 7.2250 \n",
" NaN \n",
" C \n",
" \n",
" \n",
" 879 \n",
" 1 \n",
" Potter, Mrs. Thomas Jr (Lily Alexenia Wilson) \n",
" female \n",
" 56.0 \n",
" 0 \n",
" 1 \n",
" 11767 \n",
" 83.1583 \n",
" C50 \n",
" C \n",
" \n",
" \n",
" 880 \n",
" 2 \n",
" Shelley, Mrs. William (Imanita Parrish Hall) \n",
" female \n",
" 25.0 \n",
" 0 \n",
" 1 \n",
" 230433 \n",
" 26.0000 \n",
" NaN \n",
" S \n",
" \n",
" \n",
" 887 \n",
" 1 \n",
" Graham, Miss. Margaret Edith \n",
" female \n",
" 19.0 \n",
" 0 \n",
" 0 \n",
" 112053 \n",
" 30.0000 \n",
" B42 \n",
" S \n",
" \n",
" \n",
" 889 \n",
" 1 \n",
" Behr, Mr. Karl Howell \n",
" male \n",
" 26.0 \n",
" 0 \n",
" 0 \n",
" 111369 \n",
" 30.0000 \n",
" C148 \n",
" C \n",
" \n",
" \n",
"
\n",
"
342 rows × 10 columns
\n",
"
"
],
"text/plain": [
" pclass name ... cabin embarked\n",
"1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... ... C85 C\n",
"2 3 Heikkinen, Miss. Laina ... NaN S\n",
"3 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) ... C123 S\n",
"8 3 Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg) ... NaN S\n",
"9 2 Nasser, Mrs. Nicholas (Adele Achem) ... NaN C\n",
".. ... ... ... ... ...\n",
"875 3 Najib, Miss. Adele Kiamie \"Jane\" ... NaN C\n",
"879 1 Potter, Mrs. Thomas Jr (Lily Alexenia Wilson) ... C50 C\n",
"880 2 Shelley, Mrs. William (Imanita Parrish Hall) ... NaN S\n",
"887 1 Graham, Miss. Margaret Edith ... B42 S\n",
"889 1 Behr, Mr. Karl Howell ... C148 C\n",
"\n",
"[342 rows x 10 columns]"
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"surv.get_group(1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also group by multiple columns. Let's combine both `survived` and `sex`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"surs = df.groupby(['survived', 'sex'])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" pclass \n",
" name \n",
" age \n",
" sibsp \n",
" parch \n",
" ticket \n",
" fare \n",
" cabin \n",
" embarked \n",
" \n",
" \n",
" survived \n",
" sex \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" female \n",
" 3 \n",
" Vestrom, Miss. Hulda Amanda Adolfina \n",
" 14.0 \n",
" 0 \n",
" 0 \n",
" 350406 \n",
" 7.8542 \n",
" C49 \n",
" S \n",
" \n",
" \n",
" male \n",
" 3 \n",
" Braund, Mr. Owen Harris \n",
" 22.0 \n",
" 1 \n",
" 0 \n",
" A/5 21171 \n",
" 7.2500 \n",
" E46 \n",
" S \n",
" \n",
" \n",
" 1 \n",
" female \n",
" 1 \n",
" Cumings, Mrs. John Bradley (Florence Briggs Th... \n",
" 38.0 \n",
" 1 \n",
" 0 \n",
" PC 17599 \n",
" 71.2833 \n",
" C85 \n",
" C \n",
" \n",
" \n",
" male \n",
" 2 \n",
" Williams, Mr. Charles Eugene \n",
" 34.0 \n",
" 0 \n",
" 0 \n",
" 244373 \n",
" 13.0000 \n",
" D56 \n",
" S \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" pclass ... embarked\n",
"survived sex ... \n",
"0 female 3 ... S\n",
" male 3 ... S\n",
"1 female 1 ... C\n",
" male 2 ... S\n",
"\n",
"[4 rows x 9 columns]"
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"surs.first()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we can further analyze and split our data based on whatever queries we want to use!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Map\n",
"\n",
"`map` can be used to map values from two different `series` (column) that share a same column. Basically we can repeat our adjust values:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"pandas.core.series.Series"
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"type(df['survived'])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 0\n",
"1 1\n",
"2 1\n",
"3 1\n",
"4 0\n",
"Name: survived, dtype: int64"
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"df['survived'].head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can use a function or a dictionary:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 dead\n",
"1 survived\n",
"2 survived\n",
"3 survived\n",
"4 dead\n",
"Name: survived, dtype: object"
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"df['survived'].map({0:'dead', 1:'survived'}).head()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 I am a 0\n",
"1 I am a 1\n",
"2 I am a 1\n",
"3 I am a 1\n",
"4 I am a 0\n",
"Name: survived, dtype: object"
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"df['survived'].map('I am a {}'.format).head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# .apply"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Apply let's you pass in a function to apply to every value in a series. It takes in a function, `convert_dtype`, and some argumetns"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's make a basic one that returns if someone survived:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def lived(num):\n",
" if num == 0:\n",
" return \"Died\"\n",
" else:\n",
" return \"Lived\""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"new = df['survived'].apply(lived)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 Died\n",
"1 Lived\n",
"2 Lived\n",
"3 Lived\n",
"4 Died\n",
"Name: survived, dtype: object"
]
},
"execution_count": null,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"new.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also use a lambda:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"new = df['age'].apply(lambda age: age + 5)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 22.0\n",
"1 38.0\n",
"2 26.0\n",
"3 35.0\n",
"4 35.0\n",
"Name: age, dtype: float64\n",
"0 27.0\n",
"1 43.0\n",
"2 31.0\n",
"3 40.0\n",
"4 40.0\n",
"Name: age, dtype: float64\n"
]
}
],
"source": [
"print(f'{df[\"age\"].head()}\\n{new.head()}')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
}
},
"nbformat": 4,
"nbformat_minor": 1
}