diff --git a/src/analysis/survival_01.ipynb b/src/analysis/survival_01.ipynb index b62d902..1bf5dd2 100644 --- a/src/analysis/survival_01.ipynb +++ b/src/analysis/survival_01.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 301, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -15,7 +15,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -47,7 +47,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -62,7 +62,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -97,9 +97,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "1234891" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "len(df_patients_teeth) # 1,231,726" ] @@ -108,14 +119,28 @@ "cell_type": "code", "execution_count": 8, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "female 128026\n", + "male 101388\n", + "Name: gender, dtype: int64" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# print number of patients\n", "# alternative method: df_patients.count() # 229,414\n", "# len(df_patients) # simplier -> 229,414\n", "\n", "# get counts of genders\n", - "group = df_patients.gender.value_counts()" + "group = df_patients.gender.value_counts()\n", + "group" ] }, { @@ -160,19 +185,41 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "1234891" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# len(df_teeth) # left join -> 1,238,655; inner join -> 1,227,812; right join -> 1,227,812\n", - "# len(df_patients_teeth) # 1,227,812" + "# len(df_teeth) \n", + "# len(df_patients_teeth) " ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "1696526" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# merge teeth and procedures data frames\n", "temp = df_tooth_procedures[df_tooth_procedures.tooth_id.isin(df_teeth.tooth_id)]\n", @@ -180,13 +227,13 @@ "# len(temp) # 1,675,416\n", "\n", "df_procedures = pds.merge(df_teeth, temp, how='left', on=['tooth_id', 'tooth_num'])\n", - "# len(df_procedures) # 1,682,057\n", + "len(df_procedures) \n", "# df_procedures.head()" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -195,7 +242,7 @@ "1696526" ] }, - "execution_count": 13, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -208,12 +255,12 @@ "# len(temp) # 1,241,352\n", "\n", "df_obs = pds.merge(df_procedures, temp, how='left', on=['event_id', 'tooth_id', 'tooth_num'])\n", - "len(df_obs) # 1,682,057; this matches df_procedures count above ... good" + "len(df_obs)" ] }, { "cell_type": "code", - "execution_count": 198, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ @@ -228,7 +275,7 @@ }, { "cell_type": "code", - "execution_count": 199, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -273,7 +320,7 @@ }, { "cell_type": "code", - "execution_count": 200, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -283,7 +330,7 @@ }, { "cell_type": "code", - "execution_count": 201, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -293,7 +340,7 @@ "Index(['practice', 'patient_id', 'gender', 'dob', 'first_visit', 'last_visit',\n", " 'tooth_id', 'tooth_num', 'first_PCR', 'first_RCT', 'extract_date',\n", " 'missing_date', 'event_id', 'event_name', 'event_date', 'ada_code', 'm',\n", - " 'o', 'd', 'b', 'l', 'f', 'i', 'patient_age', 'missing_flag'],\n", + " 'o', 'd', 'b', 'l', 'f', 'i'],\n", " dtype='object')\n" ] } @@ -305,7 +352,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ @@ -324,7 +371,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ @@ -336,7 +383,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ @@ -350,7 +397,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ @@ -366,7 +413,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ @@ -379,7 +426,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 22, "metadata": {}, "outputs": [], "source": [ @@ -396,7 +443,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -426,7 +473,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -464,7 +511,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -488,9 +535,22 @@ }, { "cell_type": "code", - "execution_count": 202, + "execution_count": 28, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/anaconda3/lib/python3.6/site-packages/pandas/core/generic.py:4405: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", + " self[name] = value\n" + ] + } + ], "source": [ "df_fillings.num_restored_surfaces = pds.to_numeric(df_fillings.num_restored_surfaces)\n", "df_fillings = df_fillings[df_fillings.num_restored_surfaces > 0]\n", @@ -499,7 +559,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 29, "metadata": {}, "outputs": [], "source": [ @@ -508,7 +568,7 @@ }, { "cell_type": "code", - "execution_count": 204, + "execution_count": 30, "metadata": {}, "outputs": [], "source": [ @@ -524,12 +584,12 @@ }, { "cell_type": "code", - "execution_count": 205, + "execution_count": 31, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -549,7 +609,7 @@ "# configure labels\n", "# note the use of '\\n' to create space between ticks and labels\n", "ax.set_xlabel(\"\\nTooth Number\", fontsize=15)\n", - "ax.set_ylabel(\"Procedure Count\\n\", fontsize=15)\n", + "ax.set_ylabel(\"Filling Procedure Count\\n\", fontsize=15)\n", "ax.tick_params(labelsize='large')\n", "\n", "plt.show()" @@ -557,7 +617,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -630,7 +690,7 @@ "130 A_1_1_3529_30 30 2014-10-18" ] }, - "execution_count": 31, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" } @@ -648,7 +708,7 @@ }, { "cell_type": "code", - "execution_count": 206, + "execution_count": 31, "metadata": {}, "outputs": [], "source": [ @@ -660,7 +720,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -670,7 +730,7 @@ "Name: tooth_num, dtype: int64" ] }, - "execution_count": 33, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -681,7 +741,7 @@ }, { "cell_type": "code", - "execution_count": 207, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -703,7 +763,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 34, "metadata": {}, "outputs": [ { @@ -713,7 +773,7 @@ "Name: tooth_num, dtype: int64" ] }, - "execution_count": 35, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -724,7 +784,7 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 35, "metadata": {}, "outputs": [], "source": [ @@ -733,7 +793,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 36, "metadata": {}, "outputs": [ { @@ -743,7 +803,7 @@ "Name: tooth_num, dtype: int64" ] }, - "execution_count": 37, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -755,7 +815,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 37, "metadata": {}, "outputs": [ { @@ -765,7 +825,7 @@ "Name: tooth_num, dtype: int64" ] }, - "execution_count": 38, + "execution_count": 37, "metadata": {}, "output_type": "execute_result" } @@ -777,7 +837,7 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 38, "metadata": {}, "outputs": [], "source": [ @@ -786,7 +846,7 @@ }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 39, "metadata": {}, "outputs": [], "source": [ @@ -795,7 +855,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 40, "metadata": {}, "outputs": [], "source": [ @@ -806,7 +866,7 @@ }, { "cell_type": "code", - "execution_count": 92, + "execution_count": 41, "metadata": {}, "outputs": [], "source": [ @@ -816,7 +876,7 @@ }, { "cell_type": "code", - "execution_count": 76, + "execution_count": 42, "metadata": {}, "outputs": [ { @@ -876,7 +936,7 @@ }, { "cell_type": "code", - "execution_count": 86, + "execution_count": 43, "metadata": {}, "outputs": [ { @@ -902,7 +962,7 @@ }, { "cell_type": "code", - "execution_count": 93, + "execution_count": 44, "metadata": {}, "outputs": [], "source": [ @@ -912,7 +972,7 @@ }, { "cell_type": "code", - "execution_count": 88, + "execution_count": 45, "metadata": {}, "outputs": [ { @@ -951,7 +1011,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 46, "metadata": {}, "outputs": [], "source": [ @@ -989,7 +1049,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 47, "metadata": {}, "outputs": [ { @@ -1050,7 +1110,7 @@ "[0 rows x 25 columns]" ] }, - "execution_count": 48, + "execution_count": 47, "metadata": {}, "output_type": "execute_result" } @@ -1061,7 +1121,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 48, "metadata": {}, "outputs": [], "source": [ @@ -1073,7 +1133,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 49, "metadata": {}, "outputs": [], "source": [ @@ -1086,7 +1146,7 @@ }, { "cell_type": "code", - "execution_count": 89, + "execution_count": 50, "metadata": {}, "outputs": [ { @@ -1114,7 +1174,7 @@ }, { "cell_type": "code", - "execution_count": 208, + "execution_count": 51, "metadata": {}, "outputs": [], "source": [ @@ -1127,7 +1187,7 @@ }, { "cell_type": "code", - "execution_count": 210, + "execution_count": 52, "metadata": {}, "outputs": [], "source": [ @@ -1140,7 +1200,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 53, "metadata": {}, "outputs": [], "source": [ @@ -1152,7 +1212,7 @@ }, { "cell_type": "code", - "execution_count": 211, + "execution_count": 54, "metadata": {}, "outputs": [], "source": [ @@ -1170,7 +1230,7 @@ }, { "cell_type": "code", - "execution_count": 212, + "execution_count": 55, "metadata": {}, "outputs": [ { @@ -1200,7 +1260,7 @@ }, { "cell_type": "code", - "execution_count": 213, + "execution_count": 56, "metadata": {}, "outputs": [ { @@ -1233,7 +1293,7 @@ }, { "cell_type": "code", - "execution_count": 188, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -1244,11 +1304,11 @@ }, { "cell_type": "code", - "execution_count": 190, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ - "# add meta info about tooth type and region in mouth\n", + "# # add meta info about tooth type and region in mouth\n", "# posterior_tooth = [1, 2, 3, 4, 5, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 28, 29, 30, 31, 32]\n", "# anterior_tooth = [6, 7, 8, 9, 10, 11, 22, 23, 24, 25, 26, 27]\n", "\n", @@ -1266,12 +1326,61 @@ "# tooth_info['left lower'] = tooth_info.tooth_label.map(lambda label: 1 if \"Left lower \" in label else 0)\n", "# tooth_info['posterior'] = tooth_info.tooth.map(lambda tooth: 1 if tooth in posterior_tooth else 0)\n", "# tooth_info['anterior'] = tooth_info.tooth.map(lambda tooth: 1 if tooth in anterior_tooth else 0)\n", + "\n", + "# ########### molars by mouth region\n", + "# tooth_info['right upper molar'] = \\\n", + "# tooth_info.tooth_label.map(lambda label: 1 if \"Right upper \" in label and \" molar \" in label else 0)\n", + "# tooth_info['left upper molar'] = \\\n", + "# tooth_info.tooth_label.map(lambda label: 1 if \"Left upper \" in label and \" molar \" in label else 0)\n", + "\n", + "# tooth_info['right lower molar'] = \\\n", + "# tooth_info.tooth_label.map(lambda label: 1 if \"Right lower \" in label and \" molar \" in label else 0)\n", + "# tooth_info['left lower molar'] = \\\n", + "# tooth_info.tooth_label.map(lambda label: 1 if \"Left lower \" in label and \" molar \" in label else 0)\n", + "\n", + "# ########### premolars by mouth region\n", + "# tooth_info['right upper premolar'] = \\\n", + "# tooth_info.tooth_label.map(lambda label: 1 if \"Right upper \" in label and \"premolar \" in label else 0)\n", + "# tooth_info['left upper premolar'] = \\\n", + "# tooth_info.tooth_label.map(lambda label: 1 if \"Left upper \" in label and \"premolar \" in label else 0)\n", + "\n", + "# tooth_info['right lower premolar'] = \\\n", + "# tooth_info.tooth_label.map(lambda label: 1 if \"Right lower \" in label and \"premolar \" in label else 0)\n", + "# tooth_info['left lower premolar'] = \\\n", + "# tooth_info.tooth_label.map(lambda label: 1 if \"Left lower \" in label and \"premolar \" in label else 0)\n", + "\n", + "# ########### canines by mouth region\n", + "# tooth_info['right upper canine'] = \\\n", + "# tooth_info.tooth_label.map(lambda label: 1 if \"Right upper \" in label and \"canine \" in label else 0)\n", + "# tooth_info['left upper canine'] = \\\n", + "# tooth_info.tooth_label.map(lambda label: 1 if \"Left upper \" in label and \"canine \" in label else 0)\n", + "\n", + "# tooth_info['right lower canine'] = \\\n", + "# tooth_info.tooth_label.map(lambda label: 1 if \"Right lower \" in label and \"canine \" in label else 0)\n", + "# tooth_info['left lower canine'] = \\\n", + "# tooth_info.tooth_label.map(lambda label: 1 if \"Left lower \" in label and \"canine \" in label else 0)\n", + "\n", + "# ########### incisors by mouth region\n", + "# tooth_info['right upper incisor'] = \\\n", + "# tooth_info.tooth_label.map(lambda label: 1 if \"Right upper \" in label and \"incisor \" in label else 0)\n", + "# tooth_info['left upper incisor'] = \\\n", + "# tooth_info.tooth_label.map(lambda label: 1 if \"Left upper \" in label and \"incisor \" in label else 0)\n", + "\n", + "# tooth_info['right lower incisor'] = \\\n", + "# tooth_info.tooth_label.map(lambda label: 1 if \"Right lower \" in label and \"incisor \" in label else 0)\n", + "# tooth_info['left lower incisor'] = \\\n", + "# tooth_info.tooth_label.map(lambda label: 1 if \"Left lower \" in label and \"incisor \" in label else 0)\n", + "\n", + "# tooth_info[['tooth_label', 'right upper molar', 'left upper molar', 'right lower molar', 'left lower molar']]\n", + "# tooth_info[['tooth_label', 'right upper premolar', 'left upper premolar', 'right lower premolar', 'left lower premolar']]\n", + "# tooth_info[['tooth_label', 'right upper canine', 'left upper canine', 'right lower canine', 'left lower canine']]\n", + "# tooth_info[['tooth_label', 'right upper incisor', 'left upper incisor', 'right lower incisor', 'left lower incisor']]\n", "# tooth_info" ] }, { "cell_type": "code", - "execution_count": 214, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ @@ -1280,19 +1389,121 @@ }, { "cell_type": "code", - "execution_count": 192, + "execution_count": 22, "metadata": {}, "outputs": [], "source": [ - "# tooth_info = pds.read_csv(\"tooth_meta_info.csv\", index_col='tooth')\n", - "# tooth_info = pds.read_csv(\"tooth_meta_info.csv\")\n", - "# tooth_info.set_index('tooth', inplace=True)\n", + "tooth_info = pds.read_csv(\"tooth_meta_info.csv\", index_col='tooth')\n", "# tooth_info" ] }, { "cell_type": "code", - "execution_count": 222, + "execution_count": 148, + "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", + "
0
num_restored_surfacestooth_num
1.013151
1011438
1112283
1213519
1310888
\n", + "
" + ], + "text/plain": [ + " 0\n", + "num_restored_surfaces tooth_num \n", + "1.0 1 3151\n", + " 10 11438\n", + " 11 12283\n", + " 12 13519\n", + " 13 10888" + ] + }, + "execution_count": 148, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# calc number of surfaces restored on a tooth for each procedure (i.e., number of surfaces filled during procedure)\n", + "temp = pds.DataFrame(df_fillings[['tooth_num', 'num_restored_surfaces']]\\\n", + " .groupby(['num_restored_surfaces', 'tooth_num']).size())\n", + "\n", + "temp.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": {}, + "outputs": [], + "source": [ + "# note the use of fill_values for NaN\n", + "restored_surface_counts = temp.unstack('num_restored_surfaces', fill_value=0)\n", + "restored_surface_counts.columns = ['1', '2', '3', '4', '5', '6']\n", + "\n", + "restored_surface_counts" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 84, "metadata": {}, "outputs": [], "source": [ @@ -1301,43 +1512,60 @@ }, { "cell_type": "code", - "execution_count": 228, + "execution_count": 119, "metadata": {}, "outputs": [], "source": [ - "# restored_surface_counts.drop(columns='index', inplace=True)" + "# restored_surface_counts" ] }, { "cell_type": "code", - "execution_count": 231, + "execution_count": 120, "metadata": {}, "outputs": [], "source": [ - "# restored_surface_counts.columns.name = None" + "# for some reason the index gets named 'num_surfaces_restored', re-asserting the column names removes this\n", + "# restored_surface_counts.columns = ['tooth_num', '1', '2', '3', '4', '5', '6']\n", + "\n", + "# this also works\n", + "# restored_surface_counts.columns.name = None\n", + "\n", + "# restored_surface_counts" ] }, { "cell_type": "code", - "execution_count": 235, + "execution_count": 108, "metadata": {}, "outputs": [], "source": [ - "# restored_surface_counts.tooth_num = restored_surface_counts.tooth_num.astype(int)" + "# change datatype of tooth num column to int\n", + "restored_surface_counts.tooth_num = restored_surface_counts.tooth_num.astype(int)" ] }, { "cell_type": "code", - "execution_count": 239, + "execution_count": 109, "metadata": {}, "outputs": [], "source": [ - "# restored_surface_counts = restored_surface_counts.merge(tooth_info, left_on='tooth_num', right_on='tooth', how='left')" + "# resest the index so that indexes become column names \n", + "# restored_surface_counts.reset_index(inplace=True)" ] }, { "cell_type": "code", - "execution_count": 241, + "execution_count": 147, + "metadata": {}, + "outputs": [], + "source": [ + "restored_surface_counts = restored_surface_counts.merge(tooth_info, left_on='tooth_num', right_on='tooth', how='left')" + ] + }, + { + "cell_type": "code", + "execution_count": 32, "metadata": {}, "outputs": [], "source": [ @@ -1346,7 +1574,7 @@ }, { "cell_type": "code", - "execution_count": 271, + "execution_count": 122, "metadata": {}, "outputs": [], "source": [ @@ -1362,7 +1590,7 @@ }, { "cell_type": "code", - "execution_count": 272, + "execution_count": 123, "metadata": {}, "outputs": [ { @@ -1448,7 +1676,7 @@ "28 6 12144 9097 4103 1296 179 0" ] }, - "execution_count": 272, + "execution_count": 123, "metadata": {}, "output_type": "execute_result" } @@ -1459,7 +1687,7 @@ }, { "cell_type": "code", - "execution_count": 306, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1468,7 +1696,7 @@ }, { "cell_type": "code", - "execution_count": 289, + "execution_count": 124, "metadata": {}, "outputs": [], "source": [ @@ -1480,7 +1708,7 @@ }, { "cell_type": "code", - "execution_count": 312, + "execution_count": 125, "metadata": {}, "outputs": [], "source": [ @@ -1495,7 +1723,7 @@ }, { "cell_type": "code", - "execution_count": 314, + "execution_count": 34, "metadata": {}, "outputs": [], "source": [ @@ -1504,7 +1732,7 @@ }, { "cell_type": "code", - "execution_count": 335, + "execution_count": 127, "metadata": {}, "outputs": [ { @@ -1535,7 +1763,7 @@ }, { "cell_type": "code", - "execution_count": 336, + "execution_count": 128, "metadata": {}, "outputs": [], "source": [ @@ -1545,7 +1773,7 @@ }, { "cell_type": "code", - "execution_count": 337, + "execution_count": 129, "metadata": {}, "outputs": [], "source": [ @@ -1556,7 +1784,7 @@ }, { "cell_type": "code", - "execution_count": 338, + "execution_count": 130, "metadata": {}, "outputs": [ { @@ -1587,7 +1815,7 @@ }, { "cell_type": "code", - "execution_count": 339, + "execution_count": 131, "metadata": {}, "outputs": [], "source": [ @@ -1597,7 +1825,7 @@ }, { "cell_type": "code", - "execution_count": 340, + "execution_count": 132, "metadata": {}, "outputs": [], "source": [ @@ -1608,7 +1836,7 @@ }, { "cell_type": "code", - "execution_count": 341, + "execution_count": 133, "metadata": {}, "outputs": [ { @@ -1637,6 +1865,41 @@ "plt.show()" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df_fillings.head() " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df_fillings.tooth_num = df_fillings.tooth_num.astype(int)\n", + "temp = pds.merge(df_fillings, tooth_info, left_on='tooth_num', right_on='tooth', how='left')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "temp" + ] + }, { "cell_type": "code", "execution_count": null, diff --git a/src/analysis/survival_02.ipynb b/src/analysis/survival_02.ipynb index 3769698..02dfea9 100644 --- a/src/analysis/survival_02.ipynb +++ b/src/analysis/survival_02.ipynb @@ -166,7 +166,7 @@ }, { "cell_type": "code", - "execution_count": 176, + "execution_count": 292, "metadata": {}, "outputs": [], "source": [ @@ -176,7 +176,7 @@ }, { "cell_type": "code", - "execution_count": 177, + "execution_count": 293, "metadata": {}, "outputs": [], "source": [ @@ -192,7 +192,7 @@ }, { "cell_type": "code", - "execution_count": 178, + "execution_count": 294, "metadata": {}, "outputs": [], "source": [ @@ -209,7 +209,7 @@ }, { "cell_type": "code", - "execution_count": 128, + "execution_count": 295, "metadata": {}, "outputs": [], "source": [ @@ -219,75 +219,153 @@ }, { "cell_type": "code", - "execution_count": 129, + "execution_count": 296, "metadata": {}, "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/anaconda3/lib/python3.6/site-packages/pandas/core/generic.py:4405: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", - " self[name] = value\n", - "/usr/local/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py:3790: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame\n", - "\n", - "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", - " downcast=downcast, **kwargs)\n" - ] - } - ], - "source": [ - "df_fillings.m = pds.to_numeric(df_fillings.m)\n", - "df_fillings.o = pds.to_numeric(df_fillings.o)\n", - "df_fillings.d = pds.to_numeric(df_fillings.d)\n", - "df_fillings.b = pds.to_numeric(df_fillings.b)\n", - "df_fillings.l = pds.to_numeric(df_fillings.l)\n", - "df_fillings.f = pds.to_numeric(df_fillings.f)\n", - "df_fillings.i = pds.to_numeric(df_fillings.i)\n", - "df_fillings.fillna(0, inplace=True)\n", - "# df_fillings.head()" - ] - }, - { - "cell_type": "code", - "execution_count": 180, - "metadata": {}, - "outputs": [], - "source": [ - "# df_obs.head()" - ] - }, - { - "cell_type": "code", - "execution_count": 131, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:2: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", - " \n" - ] + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
tooth_idtooth_numada_codeevent_namemodblfi
0A_1_1_155_1919D2750porcelain fused to high noble metal crown rest...NaNNaNNaNNaNNaNNaNNaN
1A_1_1_155_1919D2750porcelain fused to high noble metal crown rest...NaNNaNNaNNaNNaNNaNNaN
2A_1_1_155_1818D2750porcelain fused to high noble metal crown rest...NaNNaNNaNNaNNaNNaNNaN
3A_1_1_155_1818D2750porcelain fused to high noble metal crown rest...NaNNaNNaNNaNNaNNaNNaN
4A_1_1_155_1010D2750porcelain fused to high noble metal crown rest...NaNNaNNaNNaNNaNNaNNaN
\n", + "
" + ], + "text/plain": [ + " tooth_id tooth_num ada_code \\\n", + "0 A_1_1_155_19 19 D2750 \n", + "1 A_1_1_155_19 19 D2750 \n", + "2 A_1_1_155_18 18 D2750 \n", + "3 A_1_1_155_18 18 D2750 \n", + "4 A_1_1_155_10 10 D2750 \n", + "\n", + " event_name m o d b l f \\\n", + "0 porcelain fused to high noble metal crown rest... NaN NaN NaN NaN NaN NaN \n", + "1 porcelain fused to high noble metal crown rest... NaN NaN NaN NaN NaN NaN \n", + "2 porcelain fused to high noble metal crown rest... NaN NaN NaN NaN NaN NaN \n", + "3 porcelain fused to high noble metal crown rest... NaN NaN NaN NaN NaN NaN \n", + "4 porcelain fused to high noble metal crown rest... NaN NaN NaN NaN NaN NaN \n", + "\n", + " i \n", + "0 NaN \n", + "1 NaN \n", + "2 NaN \n", + "3 NaN \n", + "4 NaN " + ] + }, + "execution_count": 296, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "# add column with number of surfaces restored during procedure\n", - "df_fillings['num_restored_surfaces'] = df_fillings.m + df_fillings.o + df_fillings.d \\\n", - " + df_fillings.b + df_fillings.l + df_fillings.f + df_fillings.i" + "df_fillings.head()" ] }, { "cell_type": "code", - "execution_count": 194, + "execution_count": 297, "metadata": {}, "outputs": [ { @@ -308,7 +386,7 @@ " dtype='object')" ] }, - "execution_count": 194, + "execution_count": 297, "metadata": {}, "output_type": "execute_result" } @@ -319,7 +397,7 @@ }, { "cell_type": "code", - "execution_count": 244, + "execution_count": 298, "metadata": {}, "outputs": [], "source": [ @@ -353,7 +431,7 @@ }, { "cell_type": "code", - "execution_count": 243, + "execution_count": 299, "metadata": {}, "outputs": [ { @@ -368,6 +446,8 @@ } ], "source": [ + "%matplotlib inline\n", + "\n", "# draw bar chart showing the number of procedures performed on each tooth (number)\n", "ax = temp.plot.bar(figsize=(15,10), width=0.4, legend=False, color = ['gbym']) \n", "# ax = temp.plot.bar(figsize=(2,10), width=0.4, legend=False) \n", @@ -392,39 +472,99 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 300, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "data": { + "text/plain": [ + "female 937968\n", + "male 758552\n", + "Name: gender, dtype: int64" + ] + }, + "execution_count": 300, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "genders = df_obs.gender.value_counts()\n", + "genders" + ] }, { "cell_type": "code", - "execution_count": 133, + "execution_count": 302, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "ax = sns.barplot(x=genders.index, y=genders.values)\n", + "plt.show()" + ] }, { "cell_type": "code", - "execution_count": 133, + "execution_count": 325, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "ages = df_obs[['gender', 'patient_age']]\n", + "counts = ages.patient_age.value_counts()" + ] }, { "cell_type": "code", - "execution_count": 134, + "execution_count": 331, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "# ages.index\n", + "females = ages[ages.gender == 'female'].patient_age.value_counts()\n", + "# females" + ] }, { "cell_type": "code", - "execution_count": 135, + "execution_count": 329, "metadata": {}, "outputs": [], "source": [] }, + { + "cell_type": "code", + "execution_count": 329, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "ax = sns.barplot(x=counts.index, y=counts.values)\n", + "plt.show()" + ] + }, { "cell_type": "code", "execution_count": null,