{ "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
survivedpclassnamesexagesibspparchticketfarecabinembarked
003Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
111Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
213Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
311Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
survivedpclassnamesexagesibspparchticketfarecabinembarked
88803Johnston, Miss. Catherine Helen \"Carrie\"femaleNaN12W./C. 660723.45NaNS
88911Behr, Mr. Karl Howellmale26.00011136930.00C148C
89003Dooley, Mr. Patrickmale32.0003703767.75NaNQ
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
survivedpclassnamesexagesibspparchticketfarecabinembarked
003Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
111Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
213Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
311Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
survivedpclassnamesexagesibspparchticketfarecabinembarked
003Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
111Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
213Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sexagesurvived
0male22.00
1female38.01
2female26.01
3female35.01
4male35.00
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
survivedpclassname
003Braund, Mr. Owen Harris
111Cumings, Mrs. John Bradley (Florence Briggs Th...
213Heikkinen, Miss. Laina
311Futrelle, Mrs. Jacques Heath (Lily May Peel)
403Allen, Mr. William Henry
............
88602Montvila, Rev. Juozas
88711Graham, Miss. Margaret Edith
88803Johnston, Miss. Catherine Helen \"Carrie\"
88911Behr, Mr. Karl Howell
89003Dooley, Mr. Patrick
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
survivedpclassnamesexagesibspparchticketfarecabinembarked
111Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
213Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
311Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
813Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)female27.00234774211.1333NaNS
912Nasser, Mrs. Nicholas (Adele Achem)female14.01023773630.0708NaNC
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
survivedpclassnamesexagesibspparchticketfarecabinembarked
1403Vestrom, Miss. Hulda Amanda Adolfinafemale14.0003504067.8542NaNS
1803Vander Planke, Mrs. Julius (Emelia Maria Vande...female31.01034576318.0000NaNS
2403Palsson, Miss. Torborg Danirafemale8.03134990921.0750NaNS
3803Vander Planke, Miss. Augusta Mariafemale18.02034576418.0000NaNS
4003Ahlin, Mrs. Johan (Johanna Persdotter Larsson)female40.01075469.4750NaNS
\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": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEICAYAAACktLTqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0\ndHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO2deZgU1bn/v+/MsCObIEFAQcUFTUBE\n0ahRQSNGDd5fTKIxkasYblwSc2/uNWg0UeO+RNQY3BWNxrhFCaDIvsk2yDqsw8AwA7PB7Pt09/n9\n0VU91dW1nOqu6qX6/TzPPFNdderUqVOnvvXWW+85h4QQYBiGYfxFTqoLwDAMw7gPizvDMIwPYXFn\nGIbxISzuDMMwPoTFnWEYxoewuDMMw/gQFncmKyGi04hoMxE1ENFvUl0ehnGbvFQXgGFSxD0Algoh\nxqa6IAzjBWy5M9nKiQAKnO5ERGwQMRkBizuTdRDREgCXAfgrETUS0d1EtImI6omohIge1KQdQUSC\niKYR0UEAS5T15xPR10RUS0RbiOjSlJwMw5jA4s5kHUKIiQBWArhLCNEbwBYANwPoB+BqALcT0XW6\n3S4BcAaAK4loKIB5AB4BMADA/wL4hIgGJekUGMYWFncm6xFCLBNCbBNChIQQWwH8A2Ex1/KgEKJJ\nCNEC4OcA5gsh5iv7LASQD+AHSS46w5jC4s5kPUQ0gYiWElEVEdUB+BWAgbpkJZrlEwH8WHHJ1BJR\nLYCLAAxJUpEZxhYWd4YB3gcwB8BwIURfAC8DIF0a7fCpJQDeFUL00/z1EkI8kaTyMowtLO4MAxwD\noFoI0UpE5wH4mU36vwO4loiuJKJcIupORJcS0TDvi8owcrC4MwxwB4CHiagBwB8BfGiVWAhRAmAK\ngPsAVCFsyf8f+H5i0gjiyToYhmH8B1saDMMwPoTFnWEYxoewuDMMw/gQFneGYRgfkhaDIA0cOFCM\nGDEi1cVgGIbJKDZu3HhECGE47EVaiPuIESOQn5+f6mIwDMNkFERUbLaN3TIMwzA+hMWdYRjGh7C4\nMwzD+BAWd4ZhGB/C4s4wDONDWNwZhmF8CIs7wzCMD2FxZ0wJhQQ+zC9BIBhKdVGYDCQYEvhwQwmC\nIXdGnq1r7sDcrYddySsbYHFnTPl4Yynu+XgrXlu5P9VFYTKQd9ccwD2fbMXf15r2s3HErz/YhLve\n34SS6mZX8vM7LO6MKTXN7VH/GcYJ1c0dANxrP4dqwqLeFgi6kp/fkRJ3IjpARNuIaDMR5SvrBhDR\nQiLaq/zvr6wnInqBiAqJaCsRjfPyBBiGYZhYnFjulwkhxgohxiu/ZwBYLIQYBWCx8hsArgIwSvmb\nDmCWW4VlGIZh5EjELTMFwGxleTaA6zTr3xFh1gLoR0RDEjgOwzAM4xBZcRcAviKijUQ0XVk3WAhR\npiyXAxisLA9FeMJglVJlXRRENJ2I8okov6qqKo6iM17Ds+syTOYiO+TvRUKIQ0R0HICFRLRLu1EI\nIYjIkRYIIV4F8CoAjB8/nnWEYRjGRaQsdyHEIeV/JYB/ATgPQIXqblH+VyrJDwEYrtl9mLKOYRiG\nSRK24k5EvYjoGHUZwPcBbAcwB8BUJdlUAJ8ry3MA3KxEzZwPoE7jvmEYJlsQ7r6Q8+u9M2TcMoMB\n/IuI1PTvCyG+JKINAD4komkAigH8REk/H8APABQCaAZwi+ulZhiGYSyxFXchRBGAMQbrjwKYZLBe\nALjTldIxDMMwccE9VBmGYXwIiztjC6W6AAzDOIbFnWEYxoewuDMMkxHwG6QzWNwZhmF8CIs7wzCM\nD2FxZxjGU4gdKimBxZ1hGMaHsLgzDJMR8PADzmBxZxiG8SEs7gzDMD6ExZ0xxeVB/RiGSSIs7gzD\nMD6ExZ1hGMaHsLgzDMP4EBZ3hmE8gT/ZpBYWd4ZhGB/C4s4wDONDWNwZe3hoEIbJOFjcGYbJMNja\nkIHFnWGYDIM/1crA4s4wDONDWNwZhmF8CIs7wzCMD2FxZxjGU4i/f6YEFneGYRgfwuLOMAzjQ1jc\nGYbxFJ4XIDWwuDOmCI4nZtISduLLIC3uRJRLRJuIaK7yeyQRrSOiQiL6JxF1VdZ3U34XKttHeFN0\nhmEYxgwnlvvdAHZqfj8J4DkhxCkAagBMU9ZPA1CjrH9OSccwDMMkESlxJ6JhAK4G8LrymwBMBPCx\nkmQ2gOuU5SnKbyjbJynpGYZhmCQha7nPBHAPgJDy+1gAtUKIgPK7FMBQZXkogBIAULbXKekZhmGY\nJGEr7kR0DYBKIcRGNw9MRNOJKJ+I8quqqtzMmnEZ4g9YTFrBH/plkLHcLwTwQyI6AOADhN0xzwPo\nR0R5SpphAA4py4cADAcAZXtfAEf1mQohXhVCjBdCjB80aFBCJ8EwDMNEYyvuQoh7hRDDhBAjANwA\nYIkQ4iYASwFcrySbCuBzZXmO8hvK9iVCcKQrw2Qrbn9xYzWRI5E4998D+B8iKkTYp/6Gsv4NAMcq\n6/8HwIzEisgwDMM4Jc8+SSdCiGUAlinLRQDOM0jTCuDHLpSNYRgmBjbc5eAeqgzDMD6ExZ1hGMaH\nsLgzDJNR8AdVOVjcGYZhfAiLO8MwGQWPVioHiztjCr/+MkzmwuLOMIwneGUcsNEhB4s7wzCMD2Fx\nZxgmo2DLXQ4Wd4ZhGB/C4s4wTEbB0TJysLgzDMP4EBZ3xhaeJJFJC9hgdwSLO8MwGQV/UJWDxZ1h\nGMaHsLgzDOMp7NVLDSzuDMMwPoTFnWGYjIJ97nKwuDMMkxmwf8cRLO4Mw2QU3IlJDhZ3hmEYH8Li\nzjBMZsAGuyNY3BmGySj4g6ocLO4MwzA+hMWdYRhP8OrDJxvucrC4MwzD+BAWd4ZhMgrBTncpWNwZ\nhmF8CIs7wzAZBdvtcrC4M7Zwr2+GyTxsxZ2IuhPReiLaQkQFRPSQsn4kEa0jokIi+icRdVXWd1N+\nFyrbR3h7CgzDZBPscpdDxnJvAzBRCDEGwFgAk4nofABPAnhOCHEKgBoA05T00wDUKOufU9IxDMMw\nScRW3EWYRuVnF+VPAJgI4GNl/WwA1ynLU5TfULZPIuJZOBmGYZKJlM+diHKJaDOASgALAewDUCuE\nCChJSgEMVZaHAigBAGV7HYBjDfKcTkT5RJRfVVWV2FkwDJNFsF9GBilxF0IEhRBjAQwDcB6A0xM9\nsBDiVSHEeCHE+EGDBiWaHcMwDKPBUbSMEKIWwFIAFwDoR0R5yqZhAA4py4cADAcAZXtfAEddKS3D\nMBmH205Z/qAqh0y0zCAi6qcs9wBwBYCdCIv89UqyqQA+V5bnKL+hbF8iuEsZwzBMUsmzT4IhAGYT\nUS7CD4MPhRBziWgHgA+I6BEAmwC8oaR/A8C7RFQIoBrADR6Um2GYLIUtRTlsxV0IsRXA2QbrixD2\nv+vXtwL4sSulYxiGYeKCe6gyprA3jUlHuFnKweLOMIynsBinBhZ3hmEyCn6jlIPFnWEYxoewuDMM\nw/gQFnfGFh4ZiEkE1zsxuZudb2FxZxiG8SFZIe47y+pd/QgTDAnsLm9wLT+mk7K6FtQ0tae0DDVN\n7Sira0lpGRhz+HuqHL4X9yW7KnDV8yvx8cZS1/KcuWgPrpy5AnsqWOBlqGlqx4gZ8/DB+oO2aS94\nfAkmPL44CaUyZ/yji3DB40tSWgbGnBtfW4sJjy1KdTHSHt+L+77KJgBw1dLedLAWAFBR3+pann7m\nYHUzAOB9CXEHgPZAyMvi2BIMsWmY7lTUt6W6CGmP78WdYRgmG2FxZzyH7WCGST4s7kzS4IhKhkke\nLO4eU3C4LuU+5FSwpaSWu4kzTAphcfeQkupmXP3CKvx57o5UFyWpLN9ThSkvrcY7a4pTXRQmhfCz\nPbWwuHtItRKvvaW0NsUlSS5qdIwaKsoWPMMkHxZ3JnnwOAYMkzRY3BlT3DK42W5nmOTD4s4kDbbb\nGSZ5sLgznsMud4ZJPizuTNJglzvDJA/fi7vw0OPLFml6UFTViPfWZVfY5QfrD6KwMrMHrnt9ZVHM\n6JvbD9Xh882HUlQif+F7cfeCbLNAyam3POap5+1TcMpfV+MP/9ru6THSjRmfbsPkmStTXYy4Kalu\nxiPzdmL6Oxuj1l/z4irc/cHmFJXKX/he3B0LkwRsscuhfwh69UxsaAsAyPx4eiEElu+pkj6PQIaM\nXkkG1pBa9vrWjmQXJ2vwvbh7iawFn+Ga45hUnW6m1/Pnmw9j6pvr8d46uaGRM5l4HvQZfnmTDou7\nh2Sb+0aPF29NVmT6zX+otiXqP8MkAos74znJsqgz3S3DMG7C4s4kDSPfa6IcaeyckSdbpD1TH2JF\nVY2R2cucnMGBI00Jz2m7uaQWze2BhPLINPJSXQCGSYTrXlodWc5QzXNMpp7nxGeXAwAOPHF1ZJ3M\n4/7SZ5YBAEYO7BXXcWua2nHdS6vx/dGD8erN4+PKIxNhy53JaEprOi06L/s0pBPZcZbu0dIRBABs\nO1SX4pIkF1txJ6LhRLSUiHYQUQER3a2sH0BEC4lor/K/v7KeiOgFIiokoq1ENM7rk7CCOzGlnmRV\nU7Zcj0x1yxjhnzNJP2Qs9wCA3wkhRgM4H8CdRDQawAwAi4UQowAsVn4DwFUARil/0wHMcr3UceCm\nuzfbo2DihavNHfwgiNwWvMdW3IUQZUKIb5TlBgA7AQwFMAXAbCXZbADXKctTALwjwqwF0I+Ihrhe\ncoe4aez4yHDyFdlyXbLlPPXwA8EZjnzuRDQCwNkA1gEYLIQoUzaVAxisLA8FUKLZrVRZp89rOhHl\nE1F+VVWVw2I7KLOHTYIt+PQiW3zuoWxVd8YR0uJORL0BfALgt0KIeu02EXYCOmpxQohXhRDjhRDj\nBw0a5GRXJkm4JSHJi3NPznEYOfhypBYpcSeiLggL+3tCiE+V1RWqu0X5X6msPwRguGb3Yco6Jsvx\n+k0nW8QkWx9iWXracSMTLUMA3gCwUwjxF82mOQCmKstTAXyuWX+zEjVzPoA6jfuGyUKSFd3hpygS\nK7LF/cQkhkwnpgsB/ALANiJSx+K8D8ATAD4komkAigH8RNk2H8APABQCaAZwi6slZpJOohZ3sqQo\nQwZJTJhsOU8mMWzFXQixCuYfqicZpBcA7kywXEwa4NoE2UkLdE/ScVKMn95QfHQqaYfve6hyJ6bU\no4qR16NEZou7wg9n6YdzSHd8L+4qqejElOniH69Y6s+be6i6ix/OMxVvH36oNydkjbin4sJmWVsy\nJWmhkMk5TOrxwYn64BTSHt+Leyqn2ct032i8xY+4YZSqT5a7JNPrWxY/dGJK5imEdO0xW/C9uHuJ\nXWPJ/FswMdTqiUR3cJy7K/jjPJN3Fj54FsYFi7uHZHqjUouf6HkkL849KYdJOZn2hmJU3gw7hYyE\nxd1TuAUD0bWwr6oRO8vqTdMmdpzsqG8/nGXEcEjC2STzQVJY2Yhd5d60b6fwTEwekvHWiXICCd+A\nyu4EYJLBbDyuken1LUmmtSuj8ibzHJL50L/8Lx62b4f43nJPZZx7Mq2TdCZZH7SypZYzzS1jhN09\n4eY5+qC64sL34q7iRZy7XZvJ9Eblns894aKk1XFSTaadplF5bQ0jN+df8CDPTCBrxN0L7KwLP1hY\nbpC80Qeyo7790Kxk33rdOZYPKiwOskbcvbi+tpa7+4dMKmqdqedx6dNL8bPX1trud6i2c9LqXeX1\nCNqMdDVixjzc++m2eIsZIZ0H1NpVXo+QSwV06yFWVNWIETPmYdXeI67kZ4ahz11zDqGQiPkI6apb\nxrWcMgvfi3tqOzG5fuikoheRA0eb8fW+o7b7vbZyPwBgR1k9Js9ciReX7AVgfS3+sf5gwjd0ulpo\nBYfrMHnmSvx1aaEr+bn1ENtwoBoAMGdL8qdb0F6qV1YUYfLMldhcUtu53dVjcScmX7P/SBMqG1rd\nzdT21TJ5YlNS3RxlMbtJvJpZXh+u74LDcqFhmeLbd0pZbbgetmjEKxHS9SEWD0IAW0vD9XKoprP9\nutkL10fV5YisEffFuypx3qOLXc3TVryT2KgufmopLnxiiat5JnpT5OWYNy8jF0WW3oOOyTSxMrpP\ntOdgZFF78UE128gacfeCZH4UykRyc6LvWu1N3B4MxaRP3C2T0O5MEtEKvtfXLVvbBYt7AiQznCsV\nJBqnn5dj7uRsCxiIe1xH0e6f4RUuSaZNoiLbiUn78HfXcs+OdqHH9+LuaSemFB47lcha2HrLXUt7\nIISG1g5dvs7K0dIeTGj/ZOF2sdweFdLrSVSMSOa9k67twmt8L+5eEOnEZBvnnoTCeIjoNN2jMHKp\nGJGXa968PtpYgm8/+BUKDtdF1s34dKuj8p3xxy+jfrtd3en64TLdSnXgSBMOHGmKWa8PpY3elrx7\nJ1KOdKs4j+GxZRLA73HuZtjFravk6gxC7Wv3oh0VAIBdZQ2RdZ9+k1hInttiLER6hs+l20Pn0meW\nAXA2nkoy7x2/vkHbwZZ7Atj73DO7Uak3hf4sZOOsrZIFlY0WATWOcd1ydzk/tx4UmdKqIqIax5C/\nPLZM4vhe3L31J9q8Wnp45FQi6/O1ShYMhV07OS6axtlyE/vjPBXDQZj1YHXxSEpm6fgW5iW+F3cv\nkL65Mv0mjBhe0Sci5FzulqcfCKq9Bt2849x2y6TnBUzXcsVgUUzDaBmb7fEXI0Pqy2VY3BPAPs7d\nn41KOlpDl077FuXFPKBqlm2BYNwCqP2ekK5Xz61yJev8DD+oxrOTBKGQQLsuzFamKbQFgvaJMgwW\n9wSw/SiUruogSSRYRnceQckTs/LNy36UdUJIALXN7Tjt/i/x8vKiuPJQJ1sA0vf6uV0ur9wVVsX0\nyjD6/Sdbcer9X0iXAwgP6nba/V/ii21lcR0zXfG9uKd0so40FYdEkfa5W9S9F+IuIFDZ0AYA+GxT\nfJE3+zUhfen65pVO5eqQCIs17sTkTSjkRxtLHR9ra0k4HHfxrsr4Dpqm+F7cvcR2NpkklcOORTsq\nDOOQ7VBvCv15yN54IYv7PuCFuGs+zu2uaMCRxraE83MDt33kVvWabJrbzd0ZVued3FBI5b9Npn77\n3sriHgednZis06XLh6/b3smPxCK7gazlrk+nff13a2xzLfpiTX8n3/VjpJKapnb8bVmhVP0v213p\n+TjtgJyv2sgIWrGnynK70b0T82Hfhagts+P7Ae7ElAB+78Rk1rPPDV1W/fbuTsogoLW/yusSG+LZ\ni2fz0wt2oUtuDn57+amO9/39J1vx1Y4KdM/LtU37n29tAOD9RM1WbxHa+tNf578t2xeTPmpsmQTL\nJYTQRGLJ5ea3UElby52I3iSiSiLarlk3gIgWEtFe5X9/ZT0R0QtEVEhEW4lonJeFTzW+H37AZL2s\n1W1lYXric3c5S/ctOsJLS/dh5qK9Uql/+8EmPL1gF1bsqcIlTy/F0aZ2AHJ+7mQh8xZhFstulM5o\nWUUfNmuVZ8gmr2xAxi3zNoDJunUzACwWQowCsFj5DQBXARil/E0HMMudYmYq/mxVVje09oFndVN5\n4XP3G59tPoyXlu7DQ/8uQPHRZhysbgbgYiikCxlZtgXJdMb7Sjw0LLZpj5etLc1W3IUQKwBU61ZP\nATBbWZ4N4DrN+ndEmLUA+hHRELcKGw/pMM1eploOnQM/RZ+AlS5rzzXjLfc0uW7xftBOBlIWOeQE\nNsowl7L0zRNp2576puk3t4sd8X5QHSyEUINCywEMVpaHAijRpCtV1sVARNOJKJ+I8quqqoySpD3Z\nOlmHrLVm+drsUSiku/mlJ26fZyKiZ/WQtnOzWG2TOUPZOHrbb2PpeqETJOFoGRF+fDquHiHEq0KI\n8UKI8YMGDUq0GCnBNhQywxtNZOAw3XnIWkxWp6+6ZeK14I2jKXS/48rZ+hhx5ZPg/pHPgmnYntzo\n82CYPvLWK/fw0BPVDiUPnYpx7b0kXnGvUN0tyn81+v8QgOGadMOUdSkjlZ2YvOhinw5Y6XHU67CE\nWyZecTfaze3aTtbVe3HxXvzijXVJOpq7WLrobAYHi6VTXNV9ZfK3K1e8/VGCIYFLnl6K+RnaczVe\ncZ8DYKqyPBXA55r1NytRM+cDqNO4b1KCF/oqHefu/qEdo7d8lu6ujJogQ8u20rro+GOTEzAT5HMf\nXYSXlnaGuOn310Y7qKGQ8Yu7keUubG/koqpG6W7m2kO0B0KobW6X2u/sh7/C2Ie/iolqCZjEDT67\ncA9WOohJd61zlQst1CsDxk3L3WLk4Sj07qmG1g4UH23GjE/sJ5GpamjzxNWYCDKhkP8AsAbAaURU\nSkTTADwB4Aoi2gvgcuU3AMwHUASgEMBrAO7wpNQO8LK67X15qb/Y+vZ2y1sbcPULqwzTXvvXVbj5\nzfUSecaeVygkUNXQhhcWd4b5WYmHmkW8UTNmflqtfhqlmfjsctz+3jeSB+lc/NXfN2Lswwuldqtp\n7kBtcwfeXVMctb61I9HBqVLfnvRYR04p/yEkH0ixLj0nZ1zX0jlto3bk0nh97up6u5FLS2uace6j\ni/C3ZYUSpUwetp2YhBA3mmyaZJBWALgz0UK5iZf6mg7ibUcilpVqacb2DIxNW6+bDxWI7eBidIu4\nbbm7aUlqH05L4hh3pKE1oJQr/LulI774dLUUalWlU7uTHQpB5i0hOjbd+HtPVJ66bWMe+kqTVxw+\nd10DFSbr9ZQpneWW7k6vwBDfDz+gb1RmLgmV9furMWLGPBRWNlimC+dtsz0N7kEzsbvk6aW46fW1\nlvuW1xmPzWKUZ21zrLjLEP8HVeN12vWJhr4FQwJLdlW4IKaqCyqxzkdqXbnmlnEhH6mHqY3PvfPh\nFSvI2vs3xsiw9LkLqXRW283O7fpZX2OWQQ9bGW5+cz2e/Wp3XPs6xffirsfMJaHy4pKwW2F3eaN9\nZrY+93ACM5EpOFyX8OBWdpjdVMVHm7G68KjlvodqWwAAS3R+eiM9rlH80b275WnSRSfsop9U1SCN\nLIaWO+Kz2MyYvaYYt76dj39vTeyzkVpf8XYsVWtN9ek6eR4++eUuFFUZt+VOsYz/KSgfLSORRsQu\nOw2h7CyXebqK+lbsLrc33iLx8crvV5bvw+aSWuQX1+DJL3fZ7m/Eij1VeHFJctw3vhd3mbZXfLQp\nIl7qeCTHdLcfdkf7xN9aWot/rD9oeuxZy/bh4NHmqO1Xv7AKk2eusC9gAmhvvqa2gKN9qxrCdVFS\n3RL1UFy2uxITHluEFs2IgPWKC6JH185xT/R13yU3trnF7XM3Wifc/cBXWhO+XuV1LZpjyOevto87\nFB9/oh/cOsNH5Z8Ss5btw8Rnl2PEjHkxY+2YFScQDOHip5YYRolsKamNPPSt8gA662pjcY3UdXFi\nbYfTmPOURnzVfFUja8Jji3Gl4X0X/ZALRvYLr3/8i1247qXVpsdMt0BK34u7DJc8vSwiXmoDUF+B\nG9sCMR/CjNrpD/+6Gvd+us0w3Z6KRjz55S7851uxHyuPNMpFYMSL9uazaphGdASNb5+Zi/aior4N\nxdWdwwgHFLNU28CtRoVUceqW2X+kCZc9swxVDbFvPE3tgagHjhfYlddK/GUnObHbP94H4vZD0S5J\nM8Gtbw2gpLoF9/1rW8y2KS+txoVPLAmXJyQib2wAUNfcYVg/+cU1cY8tY225m2/Ujuser/s0MhWk\nzf7pSsaL+/ZDdZYDKcXrL1VvoLP+tMDkKS8fCqlO+9XU7sxydgPtzba3UsLVpMGJpRnxB2vW6fc2\nqi+n4v76yiLsP9JkaFXe8tYG/Oz1znhx62gdBxa4JqmdQFudT7xvFU1t4QdWKGK5u/N2omYT77eJ\nP8/dgVuU0ScBYMzDX+HhfxdEfkeVUso1r7Xc1TKa76i+LUpkLIW+HvQWvxPS4aN3Rot7UVUjrnlx\nFR6bv9M0jdM6VnupaV99i3XulEjeNnnFe4GFEHhu4Z6IW0DPP9YfxMbiGsNtS3ZVRAlfIo3MiYVo\n9LEvpseoQXbxWqGvLI/vg5aK1GEN0th5RKzE3+5haXatyutbo/J2S9ydtI2OYAivrYieunDOlsMx\n6YzWAeYPWm0ZosNYY40FPeobhB1mPa0/UNyoZsfobJtkWlfBkMDTX8Z+IK1uasfjX+yMvNGmgowW\n92plCNStpeYRME5vA/UpbSU6XnViWlt0FAWH67CvqhHPL96L2/9uHI9976fb8KNZXxtuu/Xt/IiP\nF0hs7HUnboTOtNoPmtH7G93g8UaQSFttJhgJpJn4atfaWd9Wm+0eZLbtScjlI4vZuRitf2dNMR61\nMKKMsHrQG6UzGrrCDQvYLIsZOjeq3kDXtgezKv963xGsP6AfVxF4eO4OvLK8CAt3VDgpqqtktLjL\nEG/bkLGOwp0zBArN3B0Oj33Dq2tx9QurIg2pRbLTi+xYL05xYiEaWu66NMZumTgK5gJG9WImmvG6\nZWTeXKK2W2+OYNbT1SlqUetbOnD2w19hgyJS6jloxc7px3g9Tl+UOkMh7Xl5+T789JU15vnG6XRX\n2wOR+b1g1mZUV1qi31kSwfczMTnpYr25pDbyZdzsY6KWdUXVaGoL4LH5xmFR8fp8VbeKrNUiO9aL\nE4QQjsRdPY7V2DJGuaVq/B2j4+rP17C8NnVi6ZZxYPVbfph1KcJILc+W0lrUNHfghcV78e60CYb5\n58Tjd7Z4izNMH5Um1lgw6yn6xBfWYYnxtjDtQ06mnUZNI6n661P4OZYtdw3XvbQ60ohl3AVzthyO\nEfaQheWmxeoGlZ2pJ3JMiwPFq50y+hFl0SrVFeXC0IulQZ5HPYwWko2DVukwueZakbITVivxj7bq\nBR6ZuyMqgkXbfd7qMO753MP/9QJklL9dF/xInibr9eduhGFsugunKmsk6U8xKGG5m6Gmj+eh6BYZ\nLe5e2Hxan7v2RpUdNEpruenLp72JZF7X1BTr91djnkVHGi8mxZDZT3vcYGSoAu12/R6xeX7yTWnM\numRgdH5B3duakSi4FS3z9ILdeH3V/ih3wpur90vlY+dz/7rQeBAyQvit8PEvwr5zs4evsbhbHtIQ\nbVV1aPL8ep9x5zkjl54bg5upOZTXtxqO72P6QNJY37PXHIjZ/s1B46AGILFIG7fIaHFX2WPR28xp\n0+iMlhFo1ziEH/i8wGyXKEQNYAwAABcySURBVKx8rlpqmiS66wvgptfX4ievrMGd75sPdmVtoTq/\nOUIhOZeM1tCNWO5Wbpk479Mfzfoa33tqaXw7m2Ak3DI+d7tzCBkIlIq2TtUJoo0sYiHkH9j689h+\nqC4qHFTPHe99g1eWF0WVVVuEYEhofM2dG3ISVClt1MhNJuXT9y4uqW5GjWZYC6NrZhZRpkW7X/6B\naEEOaow4AqGsriXSh0JruT9lEBHz//5mHNQQfS7hSJtUjBjpC3FvaAtg0rPL0BYw+ABp0CCsKjpi\nuQejxb1FE6Nu52658/1v8MLivZZWx8Rnl5lnosFqiAA1ft5tt8xJ982X+mintWLV5WhXjb0PW4aN\nxTWR+UOdYHU8Q8td4ga89sVV2Kfrzh8KCUyeuQLztpY5fosyem0XsH64ah9Carr2QAgPzilA0ZEm\ns91Mfe5qkWua23HyffPx+soiZX3nHrLuhdrmDoyYMQ9zthyOOp7120Z42/2fbdesEbj4qaW47Jll\nlse76En7h772kujbdUcwBO0L2wWPL8G5jy4C0Fm38RhI6r4Hq5vwizfW46T75jvOI1F8Ie4AsK+q\nCXsrYqNWjC6LZZij8j8YEhHxjN5iTVAIzNtahr8s3GMprM1x9qTU3nCn3v8FFhSUe/JBVSYgQytA\n6gNTe7TYaJHkWy9mGNWZ/sY3Km1lQxue130TaQ+GsKu8Af/9z80xonzDq51uF6Nj5hiophDW7h+t\n+0hN98X2Mrz99QE87iBcsTOWPPy/Qomn/2BDSUxapx8G7/5gU3SZJcJMo8vm6HCWaLPSl6M9GLKM\nYQ//d35MtSk9Nn8XVilusmRb7xkt7jIf7Iw7zphfrS1KzHwgJNAWiE7X3B7AiBnzIhfLrkyJXkqj\n/fXtY/HOCksBj7c9yVju0T73WCtHJlrGS6zkSCZaxow8nSCrPaTbgyF8V9exZm1RZwy0Uf65hm4Z\n69d4I8tdxUn4rLqrWfPRumWcemV6dc2LytfpSIiuinuU5R6dcUcgZHrdO8XdubobPZyTHRaZ0eKu\nvyhGlWfkGukI2FdyMBSKstyJgIp6+xEcoxpPghdTb1EY+cJziKImJtATr+Uu0xADwViRsYoJT7bh\nbnU4mTj3SKy1Lq3e2g6Yhc0K+/ZpZrlbR8t0XnC1zOqgbPqPwlq051zT3BHjlrG6Pk597t3ycqLK\nuaDAWWceN6fHtIp26ggK07pOZCrIeN1+bpLZ4q4XPyNxN6jPjlAIj83ficfm7zR9JQvo3DKyTdtL\ny701EDQYjIusLfc4G5RMnH+U5a57xQcM3DJxlcQbErn5Yix3E8tOn51RWzP2uctHy6jXVy2TWVm0\naQFg3J8XaoYitvcttxp9z7IgEBJSbcgMNwyBkIHBEWO5B0OmkS1qvejf4KPLaeJuMvrWl2TrJqM7\nMcVaWkaWu8F+QYFXlXEyRg7sZZx3UMRY7jJEhUImeC31Y9q0tAfRvUtu1DoiOws1vmM3S/RI1ApQ\np0CYp0+2z93qcIbuOhMx0qc9cLQJzy3cg99ePgpEZCpi+rA7ebeMtRBoy6neA3nKWPmmbxGINYYa\n28KRKKpbqcZkwpVluysNo0WsyM2hqICEVNAeDKF7Tq7O5x6KSWNmAKnltxJ37Slu0ETiGGWZbMs9\no8Vd/wqqvwhFVY1YajA9mnYUyblbjQc6CvvcO29OAkldnFbNVGqyYnbB44tx0SkDbdO1dASRpxsT\nPYeshSBea6FBRty1/vWIAzeuwxnS2hGMiUxxCxnL3exU1hZVY21RNaZ+dwQG9OpqOjiUfhRQo+Zj\nGAppEy3TqLk2+o9+VsEC+jzVsZnMRFgt2TKD6ePs5oO9eNRA6eGXjZqoG1ZuRzCE7l1yo+5DvUs2\nbLmHl/XDLdwhMdeumT/e6Pq1WzwkvCCzxV1Yi/vEZ5cb7mf1QapzfSjmYlgNLayiHYNDn7OZ9V9W\n1xo1/rQZLe1B9OoafckINm6ZOG8SmbFEggYWpJthmQ98tl2qXuJhTdFRnDCgZ5TP2+wjslmx1fRm\nlrvM4GbaiS8ixxPWVp62J6uaTqZtbtMNsKeKu92+RvWinQjdiJCQK5NZm1Bj8aPS2uYWjdF10YdL\nB4JC41LspEay06LZw9ToPrB6A/CCzPa56yp2wfZyTJ65wtQaV9FaWmYuykBIoC0Y7ZaRaazaaAW3\nvRAP/rsAm0tro9blkPlxHvhsO9aY9AZUuefjLYbrGyWEKcpyV5YtQ/gcvpZuMBhtz60ef/d+ug2v\nrowWELPymfWibetQxd24XTQkMHKl1UMyXnF/fdX+qN9qZx0zi/KoMmxtm8HE3uqDwYyOQEj6u43R\nNZ1nMF6/0/Bho34geoHVhkJqq9wuvl5FP0GPiozlvqCgHMv3eDepdmZb7roKVONz73p/EwoO15vu\n12EQJ6xn/f5qnH/SsZHfX2wvxwqJC6FtgG572FYXHo3p1ERk7C4KhQTeXVtsm+eH+aV46voxMetl\n3DL/9e5GrP/DJBx3THepyZsTfdV+8stdOFgda+nGy56K6J7NeitMLa/ZeP6qFfhRvrH417fEN2m4\n3aBtWnEPRMTded2qs4BZPXONLGgZAqGQlM89JOSNIKcjU6oPPG3++odGa0ew07Wldd9I1qfZA9zO\nch8xY15kefMfr0C/nl2ljucEX4m7FqvZyQMGoWR6iqqaYp60TRKWg/ZDpJnPfdrbGwzXx8PbXx/A\nuSMGxKx3MuvT959bjjl3XRS17p6Pt0rt+9mmQ/hs02GMPaGfbdp1+2MtcSc4nXH+SGMbHpxTgAd/\neCYAYJNuLBBVLJ79arfhpMVW4/kAwOV/WYFBx3QznPIPkH+11zN7TbH0QF3BkEBTWyCuSSHq4nz4\nAPaC3B4UUm8TRxrbsNjgu5gRTi139R7QlnXTweg335+9tg6Tz/wWgPDbhlsY6YphD3qE3/bt7x7n\n+MotI4v2qXzE5MZs6QhGfbiSxaoBltW1Iv9AtXRjliW/OFY0nZR9T0UjKiVi+I14bP4u7Cirx3KD\nj26J4sabz9tfH4gs/4duLJAFBRX4fPOhhGajNxN2AKhOYMRLbbkfvHa0abo1RUdx5p8WYOlud9uU\nHf/ML7F0zQSCISlx95LJM1fi882HDF08Wr4sKAdg/mE5HkoMhsv44V+N5zD2at7frBT3LzQX2+iD\nlko8gqe1hoysm+tfNp9UwIyBvbuiT3fzl6wDBuOJyPjMtTS0xW/FAdY9Wt+YOh5D+/WQzkt2pisn\nTDaZB/et1QfcO4gOM9dW3x5dHOVz1beH4NoxxxtuW7Mv3FvaaSchr+kIxgYkpIK7P9iMJZLGlNG3\nhXhxIk2yvYqdktHiHu90Y/oPS2ZUNrQ6zlsr7m5NiD371vOQazFy0wEDn/CUl4ytBDMS+fgHWI+/\nceEpA9G9i7OmFu4e7466B5SxX4zYXFJruN5L3pg63lH6vBwydRkkO3Zalo5gYp2YUoGZ28Rr2HI3\nwOuxGiotXrnN0Ir7Vy5YU8f26oozj+9rKe77DSx3p/7Jm99c77hsWqxuDLuu6+/cel7UbyGA22bn\no7TGnY+n2tEGZejZtbOjWK+uuVjxf5fho19d4EpZAKBbXq59Ig15OTkxb1Y9lM5s8Q5A5zXpYrk7\nIVWdrthyNyDo8cUwnRvVAq247ygzj9iR5aji1zQSyAeuMffFOsXoRjznxP7S+1tZ/nbDxX7v1EEx\n69z8LmE0yqEVZw3tG1luag/ihGN7JjyeuZZuDt9ienbLxbeHhj+5qQ+eEUrP6pV7zQexSyUFh+tx\npDG+7zipotVFt4wT2HI3wMu3vu5dcrD/SBOIwtazFVqrWjYCQT8+idP0L//8HNx64QhHeTjlk9u/\n60o+RCQd/QEA14093pGP3m2MuqO7OV1a11z52+7AE1ejS24Ofvf9U/HF3RdHHjwnmQybkU446bTz\nzQNXeFgSOWQm/vACttwN0Hf9PXeEvKVpx4UnD1TyHGDr++2S23nny368eXfahJh1Y4ebB0SN14U7\ntgWCjgTTjmu+M8S1vPQQgP495T8izrzhbNceLFYcd0w3w/W/njQqZl0XB4JsRY8uuegj+UFV2666\n5ObgjCF90Eux3IcNcP/h98ovzrFNY+UeVDH6vjLGom0DwIBeXXHrhSMt0wzuY3y93GD4gB5So746\nYc8jV+H2S0823X75GccB8M5y9yTOnYgmA3geQC6A14UQT3hxnF7dwsW//IzB+O3lo3DisT3x+0+2\n4qqzhuCjjaXo0SUHJwzoiddW7sePxg3D4D7dsH5/NaZ/7yR8ve8odhyux/H9uuOMIX1w+ejBeHTe\nTizZVYmnrv8OLjjpWJw+5BjccO4JWFV4BFtL63DJqYOwuaQW3z9zMF5etg/BkMCRpnY8cPUZmLu1\nDNVN7ejeJQcnD+oNANhb2YgrRg9GbXM7TvtWH/xo1tcIhgQuPW0QLjj5WGx/6Eqc9acFAIA/XTsa\nV575LUx5aTUaWwN48cazsfFgDa5UYnAf/Y+z0NgWwLLdlQgJoKkt3CD+dtM4rCs6ipOP640FBeU4\n7pju+NemQ/jNxFPwgibE789TzsTW0jp065KDlvYQjumehz7d81DZ0IbbLh6JxrYglu+uwtD+PXDy\noN74/pmDAQBzf30RrnlxFQBgzLC+kfHuVcYM74ezju+DjcU1uPG8E1Ba04zXVu7Hd4b1xVYlbU4O\n4cUbx+F/P9qCqd8dgffWFWPi6cfhj58X4PyTwg+t528Yi+Kjzbj8jPBxv9W3O+bcdWEkfOy2i8I3\nvv5jeJ/ueZFu/pedNgiXnnYcNhbXgAjonpeLbw/ri6ON7eial4P31xejRNMJ6p7Jp2PJrgpsOFCD\nUcf1xreH9sUn35TinBP7Y/0fJuF3H27BTRNOAACcOvgY3HXZKRjcpxvmbi1DXi5FOpTdfMGJuGnC\niZj+bn6kw9Oi/7kEzyzYjf1HmnDHZSejoTWAWcv24e5Jo9C/Zxf8ZuIpKDrSFHmgPzIvPMnGj8YN\nw86yegRDAu//MtYA+NmEE3GksR3XjR2KPt27YOGOCggA+yobccdlJ6Oyvg3XnzMMGw5U45rvHI+j\nTW14bP4urNhThTOG9MFOxVU4ZezxGN6/J47r0w1//LwA9151Oq4881tYe+8kfJRfgrOG9sUtmv4Y\nz/x4DEJCYOzwfrj17Q0Y2q9HpN/CrJvG4fb3vsElpw7C8f164KqzvhX5hvPyz8/BqMG9MbRfD8xc\ntBejjuuNvyzcg5EDe+GY7nkYPqAnzhhyDADgj9eOxrG9u6JbXg4embcT0y4aiS65OXh9ZRECIYFB\nx3TDT8cPx+jj+6CqoQ1jh/fHnC2HMLhPd+woq0dpdQuKq5vQ2BrARaMGory+DVtKatGzay6a24MY\nM7wfqpvacOmpx6FbXg5GDuqFHYfrUd8awMmDekUmpp9x1el44ovoie8B4OrvDEG33By0B0M4a2hf\n7ClvwKebDgEAnvrRd3C4rgV3TxqFV1cUoayuFV3zcvD7yadj/f5qbCwO97E4/6QBOLZXNywoKMet\nF45EDhGGePSWSm6P1EdEuQD2ALgCQCmADQBuFELsMNtn/PjxIj8/39Vy+JWH/l2At1YfwB9+cAZ+\n+b2TYrYLIVDfEkBfB5ayHRMeW4SK+jYs/t0lmKQbr+fAE1cb7vPl9nL86u8bccXowXjtZuPokLK6\nFvTv2TVmpEsZgiGBlo4gjja24ZKnl+H5G8Ziytihtvst3FGBX76Tj8tOG4S3bjnPNr0Z87eV4Y73\nvok6PyEERt4bnk7NrF5SycvL9+GJL3bhtotG4n6J7zVtgSBOu/9LAMbnEwqFhw7Qv0HWtXRgzENf\nme7nlPwD1bj+5TUYd0I/fHrHhQnnZ0QwJHDyfZ3XTu1Bqho07047DxePiv02VN3UjgE2btv61g48\n/O8duP/qM1zviUpEG4UQhjeYF5b7eQAKhRBFysE/ADAFgKm4M/L0VxqHWRgoEbkq7EDnMLLH95W3\nMFSjwSqme4iD/PTk5hB6d8tD72552PPIVeiaJ+c2UYcEGNa/Z9zHBjpdBNHDQqdwqnsJ1Mia4yUt\nRfXbgNY9pMVoohEAOKabNx3fZd1Z8WDmbjq+X4+Yt1UtdsIOAH26d8EzP44d4sNrvLgKQwFowxNK\nAcS8XxLRdADTAeCEE07woBj+5JcXn4TGtgCmfvfEpB3z77dNwKq9R9Cjay7+dtM4dO+Sg2AIll3e\nLx89GP91yUm4/RJzn6NbyAo7AFwzZgh2VzTg1xNPSeiYZw/vj99MGoWfnjs8av0D14zGhJGxw0Gk\nA7ddPBKtHUH8bILc/UZEuP/qM3DRKPvhqLXk5IT3047NlAjjTuiPOy49Gf/53RGu5GfGcz8dgwG9\nwg/tl39+DoQQOHfkAJx4bC9c4NK5JBMv3DLXA5gshLhN+f0LABOEEHeZ7cNuGYZhGOdYuWW8iJY5\nBEBrzgxT1jEMwzBJwgtx3wBgFBGNJKKuAG4AMMeD4zAMwzAmuO5zF0IEiOguAAsQDoV8UwhR4PZx\nGIZhGHM8+awthJgPYL4XeTMMwzD2ZHQPVYZhGMYYFneGYRgfwuLOMAzjQ1jcGYZhfIjrnZjiKgRR\nFYDiOHcfCCA9B7VOHVwn0XB9RMP1EUum1smJQojYQW+QJuKeCESUb9ZDK1vhOomG6yMaro9Y/Fgn\n7JZhGIbxISzuDMMwPsQP4v5qqguQhnCdRMP1EQ3XRyy+q5OM97kzDMMwsfjBcmcYhmF0sLgzDMP4\nkIwWdyKaTES7iaiQiGakujzJgIiGE9FSItpBRAVEdLeyfgARLSSivcr//sp6IqIXlDraSkTjUnsG\n3kBEuUS0iYjmKr9HEtE65bz/qQw/DSLqpvwuVLaPSGW5vYKI+hHRx0S0i4h2EtEF2dxGiOi/lftl\nOxH9g4i6+72NZKy4KxNxvwTgKgCjAdxIRPaz/mY+AQC/E0KMBnA+gDuV854BYLEQYhSAxcpvIFw/\no5S/6QBmJb/ISeFuADs1v58E8JwQ4hQANQCmKeunAahR1j+npPMjzwP4UghxOoAxCNdNVrYRIhoK\n4DcAxgshzkJ4KPIb4Pc2IoTIyD8AFwBYoPl9L4B7U12uFNTD5wCuALAbwBBl3RAAu5XlVwDcqEkf\nSeeXP4Rn+1oMYCKAuQAI4d6Gefq2gvA8Axcoy3lKOkr1ObhcH30B7NefV7a2EXTO6zxAueZzAVzp\n9zaSsZY7jCfiHpqisqQE5XXxbADrAAwWQpQpm8oBDFaWs6GeZgK4B4A6Y/exAGqFEAHlt/acI/Wh\nbK9T0vuJkQCqALyluKpeJ6JeyNI2IoQ4BOAZAAcBlCF8zTfC520kk8U9qyGi3gA+AfBbIUS9dpsI\nmxxZEeNKRNcAqBRCbEx1WdKIPADjAMwSQpwNoAmdLhgAWddG+gOYgvBD73gAvQBMTmmhkkAmi3vW\nTsRNRF0QFvb3hBCfKqsriGiIsn0IgEplvd/r6UIAPySiAwA+QNg18zyAfkSkzjSmPedIfSjb+wI4\nmswCJ4FSAKVCiHXK748RFvtsbSOXA9gvhKgSQnQA+BThduPrNpLJ4p6VE3ETEQF4A8BOIcRfNJvm\nAJiqLE9F2Bevrr9ZiYg4H0Cd5tU84xFC3CuEGCaEGIFwG1gihLgJwFIA1yvJ9PWh1tP1SnpfWbBC\niHIAJUR0mrJqEoAdyNI2grA75nwi6qncP2p9+LuNpNrpn+CHkh8A2ANgH4A/pLo8STrnixB+nd4K\nYLPy9wOEfYKLAewFsAjAACU9IRxVtA/ANoQjBlJ+Hh7VzaUA5irLJwFYD6AQwEcAuinruyu/C5Xt\nJ6W63B7VxVgA+Uo7+QxA/2xuIwAeArALwHYA7wLo5vc2wsMPMAzD+JBMdsswDMMwJrC4MwzD+BAW\nd4ZhGB/C4s4wDONDWNwZhmF8CIs7wzCMD2FxZxiG8SH/H9+IKO/KN5KPAAAAAElFTkSuQmCC\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sibspparchticketfarecabinembarkedname
010A/5 211717.2500NaNSBraund, Mr. Owen Harris
110PC 1759971.2833C85CCumings, Mrs. John Bradley (Florence Briggs Th...
200STON/O2. 31012827.9250NaNSHeikkinen, Miss. Laina
31011380353.1000C123SFutrelle, Mrs. Jacques Heath (Lily May Peel)
4003734508.0500NaNSAllen, Mr. William Henry
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
survivedpclassnamesexagesibsp
003Braund, Mr. Owen Harrismale22.01
111Cumings, Mrs. John Bradley (Florence Briggs Th...female38.01
213Heikkinen, Miss. Lainafemale26.00
311Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01
403Allen, Mr. William Henrymale35.00
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sibsp_xparchticketfarecabinembarkednamesurvivedpclasssexagesibsp_y
010A/5 211717.2500NaNSBraund, Mr. Owen Harris03male22.01
110PC 1759971.2833C85CCumings, Mrs. John Bradley (Florence Briggs Th...11female38.01
200STON/O2. 31012827.9250NaNSHeikkinen, Miss. Laina13female26.00
31011380353.1000C123SFutrelle, Mrs. Jacques Heath (Lily May Peel)11female35.01
4003734508.0500NaNSAllen, Mr. William Henry03male35.00
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
survivedpclassnamesexagesibspparchticketfarecabinembarked
003Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
111Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
213Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
311Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
403Allen, Mr. William Henrymale35.0003734508.0500NaNS
503Moran, Mr. JamesmaleNaN003308778.4583NaNQ
601McCarthy, Mr. Timothy Jmale54.0001746351.8625E46S
703Palsson, Master. Gosta Leonardmale2.03134990921.0750NaNS
813Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)female27.00234774211.1333NaNS
912Nasser, Mrs. Nicholas (Adele Achem)female14.01023773630.0708NaNC
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
survivedpclassnamesexagesibspparchticketfarecabinembarked
111Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
213Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
311Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
403Allen, Mr. William Henrymale35.0003734508.0500NaNS
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
pclassnamesexagesibspparchticketfarecabinembarked
03Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
11Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
23Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
31Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
43Allen, Mr. William Henrymale35.0003734508.0500NaNS
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
survivedpclassnamesexagesibspparchticketfarecabinembarked
003Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
111Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
213Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
311Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
403Allen, Mr. William Henrymale35.0003734508.0500NaNS
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
pclassnamesexagesibspparchticketfarecabinembarked
survived
03Braund, Mr. Owen Harrismale22.010A/5 211717.2500E46S
11Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
pclassnamesexagesibspparchticketfarecabinembarked
11Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
23Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
31Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
83Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)female27.00234774211.1333NaNS
92Nasser, Mrs. Nicholas (Adele Achem)female14.01023773630.0708NaNC
.................................
8753Najib, Miss. Adele Kiamie \"Jane\"female15.00026677.2250NaNC
8791Potter, Mrs. Thomas Jr (Lily Alexenia Wilson)female56.0011176783.1583C50C
8802Shelley, Mrs. William (Imanita Parrish Hall)female25.00123043326.0000NaNS
8871Graham, Miss. Margaret Edithfemale19.00011205330.0000B42S
8891Behr, Mr. Karl Howellmale26.00011136930.0000C148C
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
pclassnameagesibspparchticketfarecabinembarked
survivedsex
0female3Vestrom, Miss. Hulda Amanda Adolfina14.0003504067.8542C49S
male3Braund, Mr. Owen Harris22.010A/5 211717.2500E46S
1female1Cumings, Mrs. John Bradley (Florence Briggs Th...38.010PC 1759971.2833C85C
male2Williams, Mr. Charles Eugene34.00024437313.0000D56S
\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 }