{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 人工智能与机器学习-实验1\n",
"## Part IV. Pandas库的使用\n",
"\n",
"|学号 |姓名 |\n",
"|----------|--------|\n",
"|***REMOVED***|***REMOVED***|\n",
"\n",
"本部分的实验,需要自己在网络学习相关基础函数使用。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Step 1: 导入可能需要的库"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import numpy as np\n",
"\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Step 2: 读取数据集"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"titanic = pd.read_csv('titanic.csv')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Step3: 显示数据集的前5行和后5行"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" PassengerId | \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",
" 886 | \n",
" 887 | \n",
" 0 | \n",
" 2 | \n",
" Montvila, Rev. Juozas | \n",
" male | \n",
" 27.0 | \n",
" 0 | \n",
" 0 | \n",
" 211536 | \n",
" 13.00 | \n",
" NaN | \n",
" S | \n",
"
\n",
" \n",
" 887 | \n",
" 888 | \n",
" 1 | \n",
" 1 | \n",
" Graham, Miss. Margaret Edith | \n",
" female | \n",
" 19.0 | \n",
" 0 | \n",
" 0 | \n",
" 112053 | \n",
" 30.00 | \n",
" B42 | \n",
" S | \n",
"
\n",
" \n",
" 888 | \n",
" 889 | \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",
" 890 | \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",
" 891 | \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": [
" PassengerId Survived Pclass Name \\\n",
"886 887 0 2 Montvila, Rev. Juozas \n",
"887 888 1 1 Graham, Miss. Margaret Edith \n",
"888 889 0 3 Johnston, Miss. Catherine Helen \"Carrie\" \n",
"889 890 1 1 Behr, Mr. Karl Howell \n",
"890 891 0 3 Dooley, Mr. Patrick \n",
"\n",
" Sex Age SibSp Parch Ticket Fare Cabin Embarked \n",
"886 male 27.0 0 0 211536 13.00 NaN S \n",
"887 female 19.0 0 0 112053 30.00 B42 S \n",
"888 female NaN 1 2 W./C. 6607 23.45 NaN S \n",
"889 male 26.0 0 0 111369 30.00 C148 C \n",
"890 male 32.0 0 0 370376 7.75 NaN Q "
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"titanic.head(5)\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" PassengerId | \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",
" 886 | \n",
" 887 | \n",
" 0 | \n",
" 2 | \n",
" Montvila, Rev. Juozas | \n",
" male | \n",
" 27.0 | \n",
" 0 | \n",
" 0 | \n",
" 211536 | \n",
" 13.00 | \n",
" NaN | \n",
" S | \n",
"
\n",
" \n",
" 887 | \n",
" 888 | \n",
" 1 | \n",
" 1 | \n",
" Graham, Miss. Margaret Edith | \n",
" female | \n",
" 19.0 | \n",
" 0 | \n",
" 0 | \n",
" 112053 | \n",
" 30.00 | \n",
" B42 | \n",
" S | \n",
"
\n",
" \n",
" 888 | \n",
" 889 | \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",
" 890 | \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",
" 891 | \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": [
" PassengerId Survived Pclass Name \\\n",
"886 887 0 2 Montvila, Rev. Juozas \n",
"887 888 1 1 Graham, Miss. Margaret Edith \n",
"888 889 0 3 Johnston, Miss. Catherine Helen \"Carrie\" \n",
"889 890 1 1 Behr, Mr. Karl Howell \n",
"890 891 0 3 Dooley, Mr. Patrick \n",
"\n",
" Sex Age SibSp Parch Ticket Fare Cabin Embarked \n",
"886 male 27.0 0 0 211536 13.00 NaN S \n",
"887 female 19.0 0 0 112053 30.00 B42 S \n",
"888 female NaN 1 2 W./C. 6607 23.45 NaN S \n",
"889 male 26.0 0 0 111369 30.00 C148 C \n",
"890 male 32.0 0 0 370376 7.75 NaN Q "
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"titanic.tail(5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Step 4: 该数据集有多少行和列?"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(891, 12)\n"
]
}
],
"source": [
"print(titanic.shape)\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Step 5: 将PassengerID设置为索引"
]
},
{
"cell_type": "code",
"execution_count": 13,
"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",
" PassengerId | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 1 | \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",
" 2 | \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",
" 3 | \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",
" 4 | \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",
" 5 | \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",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 887 | \n",
" 0 | \n",
" 2 | \n",
" Montvila, Rev. Juozas | \n",
" male | \n",
" 27.0 | \n",
" 0 | \n",
" 0 | \n",
" 211536 | \n",
" 13.0000 | \n",
" NaN | \n",
" S | \n",
"
\n",
" \n",
" 888 | \n",
" 1 | \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",
" 0 | \n",
" 3 | \n",
" Johnston, Miss. Catherine Helen \"Carrie\" | \n",
" female | \n",
" NaN | \n",
" 1 | \n",
" 2 | \n",
" W./C. 6607 | \n",
" 23.4500 | \n",
" NaN | \n",
" S | \n",
"
\n",
" \n",
" 890 | \n",
" 1 | \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",
" 891 | \n",
" 0 | \n",
" 3 | \n",
" Dooley, Mr. Patrick | \n",
" male | \n",
" 32.0 | \n",
" 0 | \n",
" 0 | \n",
" 370376 | \n",
" 7.7500 | \n",
" NaN | \n",
" Q | \n",
"
\n",
" \n",
"
\n",
"
891 rows × 11 columns
\n",
"
"
],
"text/plain": [
" Survived Pclass \\\n",
"PassengerId \n",
"1 0 3 \n",
"2 1 1 \n",
"3 1 3 \n",
"4 1 1 \n",
"5 0 3 \n",
"... ... ... \n",
"887 0 2 \n",
"888 1 1 \n",
"889 0 3 \n",
"890 1 1 \n",
"891 0 3 \n",
"\n",
" Name Sex Age \\\n",
"PassengerId \n",
"1 Braund, Mr. Owen Harris male 22.0 \n",
"2 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 \n",
"3 Heikkinen, Miss. Laina female 26.0 \n",
"4 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 \n",
"5 Allen, Mr. William Henry male 35.0 \n",
"... ... ... ... \n",
"887 Montvila, Rev. Juozas male 27.0 \n",
"888 Graham, Miss. Margaret Edith female 19.0 \n",
"889 Johnston, Miss. Catherine Helen \"Carrie\" female NaN \n",
"890 Behr, Mr. Karl Howell male 26.0 \n",
"891 Dooley, Mr. Patrick male 32.0 \n",
"\n",
" SibSp Parch Ticket Fare Cabin Embarked \n",
"PassengerId \n",
"1 1 0 A/5 21171 7.2500 NaN S \n",
"2 1 0 PC 17599 71.2833 C85 C \n",
"3 0 0 STON/O2. 3101282 7.9250 NaN S \n",
"4 1 0 113803 53.1000 C123 S \n",
"5 0 0 373450 8.0500 NaN S \n",
"... ... ... ... ... ... ... \n",
"887 0 0 211536 13.0000 NaN S \n",
"888 0 0 112053 30.0000 B42 S \n",
"889 1 2 W./C. 6607 23.4500 NaN S \n",
"890 0 0 111369 30.0000 C148 C \n",
"891 0 0 370376 7.7500 NaN Q \n",
"\n",
"[891 rows x 11 columns]"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"titanic.set_index('PassengerId')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Step 6:数据中有缺失值吗?"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"PassengerId False\n",
"Survived False\n",
"Pclass False\n",
"Name False\n",
"Sex False\n",
"Age True\n",
"SibSp False\n",
"Parch False\n",
"Ticket False\n",
"Fare False\n",
"Cabin True\n",
"Embarked True\n",
"dtype: bool"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"titanic.isnull().any()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Step 7: 乘客的最大年龄和最小年龄是多少?"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"80.0\n",
"0.42\n"
]
}
],
"source": [
"print(titanic['Age'].max())"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.42\n"
]
}
],
"source": [
"print(titanic['Age'].min())\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Step 8: 有多少人生还?"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"342\n"
]
}
],
"source": [
"survived = titanic[titanic['Survived'] == 1]\n",
"\n",
"print(survived.shape[0])\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Step 9: 男性和女性的生还比例分别是多少?"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"male:0.18890814558058924\n",
"female: 0.7420382165605095\n"
]
}
],
"source": [
"male=titanic[titanic['Sex']=='male']\n",
"survived=male[male['Survived'] == 1]\n",
"print(\"male:\" ,end=\"\")\n",
"print(survived.shape[0]/male.shape[0])\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"female: 0.7420382165605095\n"
]
}
],
"source": [
"female=titanic[titanic['Sex']=='female']\n",
"survived=female[female['Survived'] == 1]\n",
"print(\"female: \",end=\"\")\n",
"print(survived.shape[0]/female.shape[0])\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Step 10: 按照船票价格降序排列"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" PassengerId | \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",
" 258 | \n",
" 259 | \n",
" 1 | \n",
" 1 | \n",
" Ward, Miss. Anna | \n",
" female | \n",
" 35.0 | \n",
" 0 | \n",
" 0 | \n",
" PC 17755 | \n",
" 512.3292 | \n",
" NaN | \n",
" C | \n",
"
\n",
" \n",
" 737 | \n",
" 738 | \n",
" 1 | \n",
" 1 | \n",
" Lesurer, Mr. Gustave J | \n",
" male | \n",
" 35.0 | \n",
" 0 | \n",
" 0 | \n",
" PC 17755 | \n",
" 512.3292 | \n",
" B101 | \n",
" C | \n",
"
\n",
" \n",
" 679 | \n",
" 680 | \n",
" 1 | \n",
" 1 | \n",
" Cardeza, Mr. Thomas Drake Martinez | \n",
" male | \n",
" 36.0 | \n",
" 0 | \n",
" 1 | \n",
" PC 17755 | \n",
" 512.3292 | \n",
" B51 B53 B55 | \n",
" C | \n",
"
\n",
" \n",
" 88 | \n",
" 89 | \n",
" 1 | \n",
" 1 | \n",
" Fortune, Miss. Mabel Helen | \n",
" female | \n",
" 23.0 | \n",
" 3 | \n",
" 2 | \n",
" 19950 | \n",
" 263.0000 | \n",
" C23 C25 C27 | \n",
" S | \n",
"
\n",
" \n",
" 27 | \n",
" 28 | \n",
" 0 | \n",
" 1 | \n",
" Fortune, Mr. Charles Alexander | \n",
" male | \n",
" 19.0 | \n",
" 3 | \n",
" 2 | \n",
" 19950 | \n",
" 263.0000 | \n",
" C23 C25 C27 | \n",
" S | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 633 | \n",
" 634 | \n",
" 0 | \n",
" 1 | \n",
" Parr, Mr. William Henry Marsh | \n",
" male | \n",
" NaN | \n",
" 0 | \n",
" 0 | \n",
" 112052 | \n",
" 0.0000 | \n",
" NaN | \n",
" S | \n",
"
\n",
" \n",
" 413 | \n",
" 414 | \n",
" 0 | \n",
" 2 | \n",
" Cunningham, Mr. Alfred Fleming | \n",
" male | \n",
" NaN | \n",
" 0 | \n",
" 0 | \n",
" 239853 | \n",
" 0.0000 | \n",
" NaN | \n",
" S | \n",
"
\n",
" \n",
" 822 | \n",
" 823 | \n",
" 0 | \n",
" 1 | \n",
" Reuchlin, Jonkheer. John George | \n",
" male | \n",
" 38.0 | \n",
" 0 | \n",
" 0 | \n",
" 19972 | \n",
" 0.0000 | \n",
" NaN | \n",
" S | \n",
"
\n",
" \n",
" 732 | \n",
" 733 | \n",
" 0 | \n",
" 2 | \n",
" Knight, Mr. Robert J | \n",
" male | \n",
" NaN | \n",
" 0 | \n",
" 0 | \n",
" 239855 | \n",
" 0.0000 | \n",
" NaN | \n",
" S | \n",
"
\n",
" \n",
" 674 | \n",
" 675 | \n",
" 0 | \n",
" 2 | \n",
" Watson, Mr. Ennis Hastings | \n",
" male | \n",
" NaN | \n",
" 0 | \n",
" 0 | \n",
" 239856 | \n",
" 0.0000 | \n",
" NaN | \n",
" S | \n",
"
\n",
" \n",
"
\n",
"
891 rows × 12 columns
\n",
"
"
],
"text/plain": [
" PassengerId Survived Pclass Name \\\n",
"258 259 1 1 Ward, Miss. Anna \n",
"737 738 1 1 Lesurer, Mr. Gustave J \n",
"679 680 1 1 Cardeza, Mr. Thomas Drake Martinez \n",
"88 89 1 1 Fortune, Miss. Mabel Helen \n",
"27 28 0 1 Fortune, Mr. Charles Alexander \n",
".. ... ... ... ... \n",
"633 634 0 1 Parr, Mr. William Henry Marsh \n",
"413 414 0 2 Cunningham, Mr. Alfred Fleming \n",
"822 823 0 1 Reuchlin, Jonkheer. John George \n",
"732 733 0 2 Knight, Mr. Robert J \n",
"674 675 0 2 Watson, Mr. Ennis Hastings \n",
"\n",
" Sex Age SibSp Parch Ticket Fare Cabin Embarked \n",
"258 female 35.0 0 0 PC 17755 512.3292 NaN C \n",
"737 male 35.0 0 0 PC 17755 512.3292 B101 C \n",
"679 male 36.0 0 1 PC 17755 512.3292 B51 B53 B55 C \n",
"88 female 23.0 3 2 19950 263.0000 C23 C25 C27 S \n",
"27 male 19.0 3 2 19950 263.0000 C23 C25 C27 S \n",
".. ... ... ... ... ... ... ... ... \n",
"633 male NaN 0 0 112052 0.0000 NaN S \n",
"413 male NaN 0 0 239853 0.0000 NaN S \n",
"822 male 38.0 0 0 19972 0.0000 NaN S \n",
"732 male NaN 0 0 239855 0.0000 NaN S \n",
"674 male NaN 0 0 239856 0.0000 NaN S \n",
"\n",
"[891 rows x 12 columns]"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"titanic.sort_values(by='Fare', ascending=False)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Step 11: 绘制一个展示船票价格的直方图"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA1IAAAGsCAYAAADXIZZHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy89olMNAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAqoElEQVR4nO3df5SWdZ3/8dfAMKMgMwjKjKwglj/JXysWzkn3uykr6eTxB51jRkrGyc1GV0UtPWtqthukm79KpbNroKd1LdqsVVcT0fCk+At/a5KaBgYDlsEAxe/r+4df7m+z6Mo1jtwDPB7n3OdwX9c19/2+6nPG8zzXfd1TUxRFEQAAADZZr2oPAAAAsKURUgAAACUJKQAAgJKEFAAAQElCCgAAoCQhBQAAUJKQAgAAKKm22gP0BOvXr8+CBQvSv3//1NTUVHscAACgSoqiyLJlyzJkyJD06vXu152EVJIFCxZk6NCh1R4DAADoIebPn59dd931XfcLqST9+/dP8vb/WA0NDVWeBgAAqJaOjo4MHTq00gjvRkgllY/zNTQ0CCkAAOA9b/nxZRMAAAAlCSkAAICShBQAAEBJQgoAAKAkIQUAAFCSkAIAAChJSAEAAJQkpAAAAEoSUgAAACUJKQAAgJKEFAAAQElCCgAAoCQhBQAAUJKQAgAAKElIAQAAlCSkAAAASqqt9gBsbPiFd1V7hIrXJ7dWewQAAOhxXJECAAAoSUgBAACUJKQAAABKElIAAAAlCSkAAICShBQAAEBJQgoAAKAkIQUAAFCSkAIAAChJSAEAAJQkpAAAAEoSUgAAACUJKQAAgJKEFAAAQElCCgAAoCQhBQAAUJKQAgAAKElIAQAAlCSkAAAAShJSAAAAJQkpAACAkoQUAABASUIKAACgJCEFAABQkpACAAAoSUgBAACUJKQAAABKElIAAAAlCSkAAICShBQAAEBJQgoAAKAkIQUAAFCSkAIAAChJSAEAAJQkpAAAAEqqakhddtllqamp6fTYZ599KvtXrlyZtra2DBo0KDvssEPGjh2bRYsWdXqNefPmpbW1NX379s3gwYNzwQUXZO3atZv7VAAAgG1IbbUH+MhHPpL77ruv8ry29v+PdO655+auu+7K9OnT09jYmDPPPDMnnnhiHnrooSTJunXr0tramubm5jz88MNZuHBhTj311PTp0yff/OY3N/u5AAAA24aqh1RtbW2am5s32r506dLcdNNNufXWW3PEEUckSaZOnZp99903jzzySA499NDce++9efHFF3PfffelqakpBx10UL7xjW/kq1/9ai677LLU1dVt7tMBAAC2AVW/R+rll1/OkCFD8qEPfSjjxo3LvHnzkiRz5szJmjVrMnr06Mqx++yzT4YNG5bZs2cnSWbPnp39998/TU1NlWPGjBmTjo6OvPDCC+/6nqtWrUpHR0enBwAAwKaqakiNGjUq06ZNyz333JMbb7wxr732Wg4//PAsW7Ys7e3tqaury4ABAzr9TFNTU9rb25Mk7e3tnSJqw/4N+97NpEmT0tjYWHkMHTq0e08MAADYqlX1o31HH3105d8HHHBARo0ald122y0/+tGPsv32239g73vRRRdl4sSJlecdHR1iCgAA2GRV/2jfXxowYED22muvvPLKK2lubs7q1auzZMmSTscsWrSock9Vc3PzRt/it+H5O913tUF9fX0aGho6PQAAADZVjwqp5cuX59VXX80uu+ySkSNHpk+fPpk5c2Zl/9y5czNv3ry0tLQkSVpaWvLcc89l8eLFlWNmzJiRhoaGjBgxYrPPDwAAbBuq+tG+888/P8cee2x22223LFiwIJdeeml69+6dk08+OY2NjZkwYUImTpyYgQMHpqGhIWeddVZaWlpy6KGHJkmOOuqojBgxIqecckquuOKKtLe35+KLL05bW1vq6+ureWoAAMBWrKoh9cYbb+Tkk0/OH/7wh+y888457LDD8sgjj2TnnXdOklx99dXp1atXxo4dm1WrVmXMmDG54YYbKj/fu3fv3HnnnTnjjDPS0tKSfv36Zfz48bn88surdUoAAMA2oKYoiqLaQ1RbR0dHGhsbs3Tp0h5xv9TwC++q9ggVr09urfYIAACw2WxqG/Soe6QAAAC2BEIKAACgJCEFAABQkpACAAAoSUgBAACUJKQAAABKElIAAAAlCSkAAICShBQAAEBJQgoAAKAkIQUAAFCSkAIAAChJSAEAAJQkpAAAAEoSUgAAACUJKQAAgJKEFAAAQElCCgAAoCQhBQAAUJKQAgAAKElIAQAAlCSkAAAAShJSAAAAJQkpAACAkoQUAABASUIKAACgJCEFAABQkpACAAAoSUgBAACUJKQAAABKElIAAAAlCSkAAICShBQAAEBJQgoAAKAkIQUAAFCS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/OQn3TIcAABAT9SlkBowYEBOOOGE7p4FAABgi9ClkJo6dWp3zwEAALDF6NI9Ukmydu3a3Hffffne976XZcuWJUkWLFiQ5cuXd9twAAAAPVGXQuq3v/1t9t9//xx33HFpa2vLm2++mST51re+lfPPP3+TX+fGG2/MAQcckIaGhjQ0NKSlpSV33313Zf/KlSvT1taWQYMGZYcddsjYsWOzaNGiTq8xb968tLa2pm/fvhk8eHAuuOCCrF27tiunBQAAsEm6FFJnn312DjnkkPzxj3/M9ttvX9l+wgknZObMmZv8OrvuumsmT56cOXPm5IknnsgRRxyR4447Li+88EKS5Nxzz80dd9yR6dOnZ9asWVmwYEFOPPHEys+vW7cura2tWb16dR5++OHcfPPNmTZtWi655JKunBYAAMAmqSm68B3mgwYNysMPP5y99947/fv3zzPPPJMPfehDef311zNixIj86U9/6vJAAwcOzJVXXplPf/rT2XnnnXPrrbfm05/+dJLkpZdeyr777pvZs2fn0EMPzd13351PfepTWbBgQZqampIkU6ZMyVe/+tW8+eabqaur26T37OjoSGNjY5YuXZqGhoYuz95dhl94V7VHqHh9cmu1RwAAgM1mU9ugS1ek1q9fn3Xr1m20/Y033kj//v278pJZt25dbrvttqxYsSItLS2ZM2dO1qxZk9GjR1eO2WeffTJs2LDMnj07STJ79uzsv//+lYhKkjFjxqSjo6NyVeudrFq1Kh0dHZ0eAAAAm6pLIXXUUUflmmuuqTyvqanJ8uXLc+mll+aYY44p9VrPPfdcdthhh9TX1+dLX/pSbr/99owYMSLt7e2pq6vLgAEDOh3f1NSU9vb2JEl7e3uniNqwf8O+dzNp0qQ0NjZWHkOHDi01MwAAsG3rUkh9+9vfzkMPPZQRI0Zk5cqV+exnP5vhw4fnd7/7Xb71rW+Veq299947Tz/9dB599NGcccYZGT9+fF588cWujLXJLrrooixdurTymD9//gf6fgAAwNalS39Hatddd80zzzyT2267Lc8++2yWL1+eCRMmZNy4cZ2+fGJT1NXVZY899kiSjBw5Mo8//niuvfbanHTSSVm9enWWLFnS6arUokWL0tzcnCRpbm7OY4891un1Nnyr34Zj3kl9fX3q6+tLzQkAALBBl0IqSWpra/O5z32uO2dJ8vb9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s7P//vtXIipJxowZk46Ojrzwwgvv+D6rVq1KR0dHpwcAAMCm6jEhtX79+pxzzjn5+Mc/nv322y9J0t7enrq6ugwYMKDTsU1NTWlvb68c85cRtWH/hn3vZNKkSWlsbKw8hg4d2s1nAwAAbM16TEi1tbXl+eefz2233faBv9dFF12UpUuXVh7z58//wN8TAADYetRWe4AkOfPMM3PnnXfmwQcfzK677lrZ3tzcnNWrV2fJkiWdrkotWrQozc3NlWMee+yxTq+34Vv9NhzzP9XX16e+vr6bzwIAANhWVPWKVFEUOfPMM3P77bfn/vvvz+67795p/8iRI9OnT5/MnDmzsm3u3LmZN29eWlpakiQtLS157rnnsnjx4soxM2bMSENDQ0aMGLF5TgQAANimVPWKVFtbW2699db87Gc/S//+/Sv3NDU2Nmb77bdPY2NjJkyYkIkTJ2bgwIFpaGjIWWedlZaWlhx66KFJkqOOOiojRozIKaeckiuuuCLt7e25+OKL09bW5qoTAADwgahqSN14441Jkr/927/ttH3q1Kn5/Oc/nyS5+uqr06tXr4wdOzarVq3KmDFjcsMNN1SO7d27d+68886cccYZaWlpSb9+/TJ+/Phcfvnlm+s0AACAbUyP+jtS1eLvSL07f0cKAIBtyRb5d6QAAAC2BEIKAACgJCEFAABQkpACAAAoSUgBAACUJKQAAABKElIAAAAlCSkAAICShBQAAEBJQgoAAKAkIQUAAFCSkAIAACipttoD0LMNv/Cuao9Q8frk1mqPAAAASVyRAgAAKE1IAQAAlCSkAAAAShJSAAAAJQkpAACAkoQUAABASUIKAACgJCEFAABQkpACAAAoSUgBAACUJKQAAABKElIAAAAlCSkAAICShBQAAEBJQgoAAKAkIQUAAFCSkAIAAChJSAEAAJQkpAAAAEoSUgAAACUJKQAAgJKEFAAAQElCCgAAoCQhBQAAUJKQAgAAKElIAQAAlCSkAAAAShJSAAAAJQkpAACAkoQUAABASUIKAACgJCEFAABQkpACAAAoSUgBAACUJKQAAABKElIAAAAlCSkAAICShBQAAEBJQgoAAKAkIQUAAFCSkAIAACipqiH14IMP5thjj82QIUNSU1OTn/70p532F0WRSy65JLvssku23377jB49Oi+//HKnY956662MGzcuDQ0NGTBgQCZM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t9MxK1euTFtbWwYNGpQddtghY8eO3egPls+bNy+tra3p27dvBg8enAsuuCBr167dnKfCB+TGG2/MAQcckIaGhjQ0NKSlpSV33313Zb/1wTuZPHlyampqcs4551S2WSvbtssuuyw1NTWdHvvss09lv/XxNiHVQ/zwhz/MxIkTc+mll+bJJ5/MgQcemDFjxmTx4sXVHo3NZMWKFTnwwANz/fXXv+P+K664Itddd12mTJmSRx99NP369cuYMWOycuXKyjHjxo3LCy+8kBkzZuTOO+/Mgw8+mNNPP31znQIfsFmzZqWtrS2PPPJIZsyYkTVr1uSoo47KihUrKsece+65ueOOOzJ9+vTMmjUrCxYsyIknnljZv27durS2tmb16tV5+OGHc/PNN2fatGm55JJLqnFKdLNdd901kydPzpw5c/LEE0/kiCOOyHHHHZcXXnghifXBxh5//PF873vfywEHHNBpu7XCRz7ykSxcuLDy+OUvf1nZZ338PwU9wsc+9rGira2t8nzdunXFkCFDikmTJlVxKqolSXH77bdXnq9fv75obm4urrzyysq2JUuWFPX19cV//Md/FEVRFC+++GKRpHj88ccrx9x9991FTU1N8bvf/W6zzc7ms3jx4iJJMWvWrKIo3l4Tffr0KaZPn1455le/+lWRpJg9e3ZRFEXx3//930WvXr2K9vb2yjE33nhj0dDQUKxatWrzngCbxY477lj827/9m/XBRpYtW1bsueeexYwZM4r/83/+T3H22WcXReF3CUVx6aWXFgceeOA77rM+/j9XpHqA1atXZ86cORk9enRlW69evTJ69OjMnj27ipPRU7z22mtpb2/vtEYaGxszatSoyhqZPXt2BgwYkEMOOaRyzOjRo9OrV688+uijm31mPnhLly5NkgwcODBJMmfOnKxZs6bTOtlnn30ybNiwTutk//33T1NTU+WYMWPGpKOjo3LVgq3DunXrctttt2XFihVpaWmxPthIW1tbWltbO62JxO8S3vbyyy9nyJAh+dCHPpRx48Zl3rx5SayPv1Rb7QFIfv/732fdunWdFluSNDU15aWXXqrSVPQk7e3tSfKOa2TDvvb29gwePLjT/tra2gwcOLByDFuP9evX55xzzsnHP/7x7LfffkneXgN1dXUZMGBAp2P/5zp5p3W0YR9bvueeey4tLS1ZuXJldthhh9x+++0ZMWJEnn76aeuDittuuy1PPvlkHn/88Y32+V3CqFGjMm3atOy9995ZuHBhvv71r+fwww/P888/b338BSEFsAVqa2vL888/3+kz65Ake++9d55++uksXbo0P/7xjzN+/PjMmjWr2mPRg8yfPz9nn312ZsyYke22267a49ADHX300ZV/H3DAARk1alR22223/OhHP8r2229fxcl6Fh/t6wF22mmn9O7de6NvO1m0aFGam5urNBU9yYZ18L+tkebm5o2+nGTt2rV56623rKOtzJlnnpk777wzDzzwQHbdddfK9ubm5qxevTpLlizpdPz/XCfvtI427GPLV1dXlz322CMjR47MpEmTcuCBB+baa6+1PqiYM2dOFi9enIMPPji1tbWpra3NrFmzct1116W2tjZNTU3WCp0MGDAge+21V1555RW/S/6CkOoB6urqMnLkyMycObOybf369Zk5c2ZaWlqqOBk9xe67757m5uZOa6SjoyOPPvpoZY20tLRkyZIlmTNnTuWY+++/P+vXr8+oUaM2+8x0v6IocuaZZ+b222/P/fffn913373T/pEjR6ZPnz6d1sncuXMzb968Tuvkueee6xTdM2bMSENDQ0aMGLF5ToTNav369Vm1apX1QcWRRx6Z5557Lk8//XTlccghh2TcuHGVf1sr/KXly5fn1VdfzS677OJ3yV+q9rdd8LbbbrutqK+vL6ZNm1a8+OKLxemnn14MGDCg07edsHVbtmxZ8dRTTxVPPfVUkaS46qqriqeeeqr47W9/WxRFUUyePLkYMGBA8bOf/ax49tlni+OOO67Yfffdiz//+c+V1/jkJz9Z/PVf/3Xx6KOPFr/85S+LPffcszj55JOrdUp0szPOOKNobGwsfvGLXxQLFy6sPP70pz9VjvnSl75UDBs2rLj//vuLJ554omhpaSlaWloq+9euXVvst99+xVFHHVU8/fTTxT333FPsvPPOxUUXXVSNU6KbXXjhhcWsWbOK1157rXj22WeLCy+8sKipqSnuvffeoiisD97dX35rX1FYK9u68847r/jFL35RvPbaa8VDDz1UjB49uthpp52KxYsXF0VhfWwgpHqQ73znO8WwYcOKurq64mMf+1jxyCOPVHskNqMHHnigSLLRY/z48UVRvP0V6F/72teKpqamor6+vjjyyCOLuXPndnqNP/zhD8XJJ59c7LDDDkVDQ0Nx2mmnFcuWLavC2fBBeKf1kaSYOnVq5Zg///nPxZe//OVixx13LPr27VuccMIJxcKFCzu9zuuvv14cffTRxfbbb1/stNNOxXnnnVesWbNmM58NH4QvfOELxW677VbU1dUVO++8c3HkkUdWIqoorA/e3f8MKWtl23bSSScVu+yyS1FXV1f81V/9VXHSSScVr7zySmW/9fG2mqIoiupcCwMAANgyuUcKAACgJCEFAABQkpACAAAoSUgBAACUJKQAAABKElIAAAAlCSkAAICShBQAAEBJQgoAAKAkIQUAAFCSkAIAACjp/wKGyGu8/gM1nAAAAABJRU5ErkJggg==",
"text/plain": [
"