{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Project: Vitória No-show Medical Appointment\n", "\n", "\n", "## Table of Contents\n", "\n", "\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Student Tags\n", "\n", "Author: Anderson Hitoshi Uyekita \n", "Course: Data Science - Foundation I \n", "COD: ND110 \n", "Date: 13/12/2018 \n", "Dataset: No-show appointments \n", "Version: 1.0\n", "\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Introduction \n", "\n", "I decided to face this specific problem because I am from Brazil and it will be a big challenge for me to make any conclusions using this data. I am an Electrical Engineer, and I have never been to Vitória, even more, I do not anything about the public health care systems.\n", "\n", "It's a bit complicated to address any kind of question (beforehand) if I do not have a clue about the variables in this dataset. Obviously, (Now) I have already loaded the data and printed some summaries, and my approach for this Project is aggregate new variables (all these new information are public and free to access) to enhance my analysis.\n", "\n", "With these new variables, such as Average Income per Month, Number of inhabitants in each Neighborhood (divided into male and female), Neighborhood, and Regional Administration.\n", "\n", "I hope at the end this document I have made good questions, and the most important, I have \"answered\" properly.\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Objectivies\n", "\n", "Although I do not have a question yet, I wonder to this project an opportunity to practice all the content learned \"in class\". So, my objectives for this project are:\n", "\n", "* Having practised Data Wrangling\n", " * Gathering;\n", " * Assessing;\n", " * Cleaning;\n", "* Having practised EDA;\n", "* Having practised in Python Coding;\n", " * Also in Jupyter Notebook;\n", "* Making a reproducible research;\n", "* Having fun.\n", "\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Synopsis\n", "\n", "I have made along this document three questions:\n", "\n", ">**1. Are patients with many appointments are more likely to show-up then the patients with less than two appointments?**\n", ">>Seems to be true, but I lack information to affirm it, what I could say is when I analyse patient with a higher number of appointments, they tend to have a better rate of show-up.\n", "\n", ">**2. Are patients with many appointments in average older than those with few appointments?**\n", ">>I also identify a positive correlation, when I analyse patients with higher number of appointments they tend to have an age average higher than the population.\n", "\n", ">**3. Are patients with disabilities tend to have better rates of show-up? Is the number of disabilities raises the show-up rates?**\n", ">>Due to the small number of patients with disabilities, it is difficult to answer this question, but I have found a better rate of show-up in the group of patients with disabilities, however, patients with many disabilities tend to have worse show-up rates.\n", "\n", "All these questions I have answered using the original data and additional data collected on the web. My report is linear and I start with a Data Wrangling (Gather and Assess), after that I start with the EDA, in this step I stopped a while to gather new data on the internet, and I came back to finish the EDA and to pose and answer the questions.\n", "\n", "In the final of the document, I have inserted an appendix to segregate from the main document the Additional Data I have found.\n", "\n", "\n", "_Obs.: I really do not know if I am doing great and for this reason, I have decided to submit my report to receive a feedback. I am not sure If I am on the \"right path\". I know I have not used all the resources I have gathered in the web, and I do want to use them to pose a new question, but first I need a preliminary feedback._\n", "\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Reproducibility\n", "\n", "I have written this report using the Jupyter Notebook to allow anyone the reproducibility of each step. Despite I have created some dataset to enhance my analysis, which turns everything much harder to reproduce, I have stored it in Github, so it's available to anyone to download and to use it.\n", "\n", "### Work envinronment\n", "\n", "All this research is performed using:\n", "\n", "* Dell Notebook Inspiron 7348;\n", "* Intel(R) Core(TM) i7-5500U CPU @ 2.40GHz 2.40GHz;\n", "* 8.00 GB;\n", "* Windows 10 Pro 64-bits.\n", "\n", "### Softwares\n", "\n", "To be honest, I did not use the Python IDLE in this project, because I wrote directly in Jupyter Notebook, so to perform study I code everything directly in Opera.\n", "\n", "* Opera\n", "* Atom\n", "\n", "I have used the Atom to push to Github repository, and nothing more than this.\n", "\n", "### Packages\n", "\n", "I kindly ask you to install each of this packages before you run the next steps.\n", "\n", "* Jupyter Notebook\n", "* Pandas\n", "* Numpy\n", "* Matplotlib\n", "\n", "### Repository\n", "\n", "You can access all files of this report in this repository:\n", "\n", "* https://github.com/AndersonUyekita/udacity_data_science_foundation_01\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data Wrangling \n", "\n", "This file is available at Kaggle and maintained by [@JoniHoppen][data_1], is also available to download at GDrive.\n", "\n", "* Kaggle (uploaded by JoniHoppen), and;\n", "* GDrive\n", "\n", "### Brief about Vitória City\n", "\n", "This dataset records medical appointments from March to june of 2016, realized in publics hospitals in [Vitória](https://en.wikipedia.org/wiki/Vitória,_Espírito_Santo), a medium size city (almost 320.000 inhabitants) of Brazil located in the southeast region.\n", "\n", "\n", " \n", " \n", " \n", " \n", "

\n", "
Figure 1a - Brazil Map with Espírito Santo State Highlighted.
\n", "
Figure 1b - Vitória City, Capital of Espírito Santo State.

\n", "\n", "(**) Both pictures extracted from Wikipedia.\n", "\n", "Vitória is the Capital of Espírito Santo State, and has almost 320.000 inhabitants (also according with the Wikipedia) spread in 9 Regional Administration areas, which has a total of 80 neighborhoods.\n", "\n", "The public health systems are compounded by Basic Units of Health (_Unidade Básica de Saúde_, for the sake of this document UBS) spread all over the city, the Figure 2 shows how these UBS are located in the city.\n", "\n", "\n", "\n", "
Figure 2 - UBS in Vitória City.
\n", "\n", "I have extracted this illustration from the document [_Relatório de Gestão 2008_][data_2] from the _Sistema Único de Saúde_ of Vitória Council Health Secretary, based on this document and on these two:\n", "\n", "* [Equipamento de Saúde][data_3]: This document shows each UBS address;\n", "* [Município de Vitória - Territórios de Saúde][data_4]: Summarize the number of each kind of UBS.\n", "\n", "After a briefly compilation of info from these three sources, I have summed up 38 (See details here) UBS (or similars) in Vitória City.\n", "\n", "* Basic Units of Health with Family Strategy(US Família): 19 units;\n", "* Community Agent Health Program (US PACS): 8 units;\n", "* Polyclinic, Specialized or Reference Center: 11.\n", "\n", "I will assume for this report all appointments could be done in any of this 38 premises listed above.\n", "\n", "**Observation:** This is not important to the project, but could be important to someone who wants to learn more about this dataset. The Regional Administration Area is slightly different from the Health Territory Area because the Regional Administration Area has 9 areas and the Health Territory Area has 6, which means some neighbourhood were relocated to other regions. It could be much explicit if you compare these two files ([Regional Administrative Area][data_5] and [Health Territory Area][data_4]).\n", "\n", "If you are still curious about the location of each UBS, you can access the [GeoWeb][data_6], this is a web-based tool with a thematic map.\n", "\n", "### Data Structure\n", "\n", "Unfortunately, this dataset lacks a codebook, despite this hurdle, much of the problems could be solved reading the Kaggle Discussions Channel. This dataset has:\n", "\n", "* 110.527 rows (observations).\n", "* 14 columns (variable or features);\n", "\n", "Each of these variables could be interpreted by using the Table 1.\n", "\n", "
Table 1 - Variables Types Description
\n", "\n", "|Variable|Type|Description|\n", "|:-:|:-:|:-:|\n", "|PatientId|int|Internal ID to track the patient\n", "|AppointmentID|date|Internal ID to track the appointment\n", "|Gender|cat|F: Female and M: Male\n", "|ScheduledDay|date|Planned date to appointment\n", "|AppointmentDay|date|When the appointment occurs\n", "|Age|int|Person Age, if Age is negative the person is pregnant\n", "|Neighbourhood|str|In Brazil, each city is divided into Regional Administration (_Regiões Administrativas_)
and then in neighborhood (_bairros_). Read more in Appendix A.\n", "|Scholarship|bool|0: No and 1: Yes\n", "|Hipertension|bool|0: No and 1: Yes\n", "|Diabetes|bool|0: No and 1: Yes\n", "|Alcoholism|bool| 0: No and 1: Yes\n", "|Handcap|int| Means the quantity of disabilities of this person (0,1,2,3,4).\n", "|SMS_received|int|Number of SMS sent to the patient|\n", "|No-show|cat| No: Show-up and Yes: No-show\n", "\n", "### Additional Data\n", "\n", "I have found some good information available on the internet, and I decided to aggregate for my analysis. In the final of this document, in Appendix chapter, I have added some details from where I get this info. As results of it, I have written two datasets:\n", "\n", "* Vitória Regional Administration Data;\n", "* Vitória Neighborhood Data.\n", "* Vitória Age Data.\n", "* Vitória UBS Dataset.\n", "\n", "\n", "[data_1]: https://www.kaggle.com/joniarroba\n", "[data_2]: http://www.vitoria.es.gov.br/arquivos/20100519_saude_relator_gestao_2008.pdf\n", "[data_3]: http://sistemas7.vitoria.es.gov.br/GeoWebApi/Downloads/pdf/saude/Equipamentos_de_Saude.pdf\n", "[data_4]: http://sistemas7.vitoria.es.gov.br/GeoWebApi/Downloads/pdf/saude/Regioes_Territoriais_de_Saude.pdf\n", "[data_5]: http://sistemas7.vitoria.es.gov.br/GeoWebApi/Downloads/pdf/politicos/Regionais_Administrativas.pdf\n", "[data_6]: http://geoweb.vitoria.es.gov.br/\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data Assess\n", "\n", "Let's start analysing the number of rows, columns, number of null values, number of duplicated rows, and data types. I am also interested in the first and last rows to assess if there is any problem with a header or a non-standard value in the final of the archive.\n", "\n", "### Requirements\n", "\n", "These are all the libraries I will use during this report these libraries:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# Importing Libraries.\n", "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "% matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's load the `noshowappointments-kagglev2-may-2016.csv` file, according with the instructions:\n", "\n", ">_This dataset collects information from **100k medical appointments** in Brazil and is focused on the question of whether or not patients show up for their appointment. A number of characteristics about the patient are included in each row._\n", "\n", "Has 100.000 medical appointments." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Rows: 110527\n", "Columns: 14\n" ] } ], "source": [ "# Loading the dataset.\n", "df_vit = pd.read_csv('noshowappointments-kagglev2-may-2016.csv')\n", "\n", "# Plot the dimensions\n", "print(\"Rows: {}\\nColumns: {}\".format(*df_vit.shape))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As I expected, the number of rows is roughly 110k and 14 columns.\n", "\n", "Now, I want to see the first and the last 10 rows, just to ensure if everything is ok. " ] }, { "cell_type": "code", "execution_count": 3, "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", "
PatientIdAppointmentIDGenderScheduledDayAppointmentDayAgeNeighbourhoodScholarshipHipertensionDiabetesAlcoholismHandcapSMS_receivedNo-show
02.987250e+135642903F2016-04-29T18:38:08Z2016-04-29T00:00:00Z62JARDIM DA PENHA010000No
15.589978e+145642503M2016-04-29T16:08:27Z2016-04-29T00:00:00Z56JARDIM DA PENHA000000No
24.262962e+125642549F2016-04-29T16:19:04Z2016-04-29T00:00:00Z62MATA DA PRAIA000000No
38.679512e+115642828F2016-04-29T17:29:31Z2016-04-29T00:00:00Z8PONTAL DE CAMBURI000000No
48.841186e+125642494F2016-04-29T16:07:23Z2016-04-29T00:00:00Z56JARDIM DA PENHA011000No
\n", "
" ], "text/plain": [ " PatientId AppointmentID Gender ScheduledDay \\\n", "0 2.987250e+13 5642903 F 2016-04-29T18:38:08Z \n", "1 5.589978e+14 5642503 M 2016-04-29T16:08:27Z \n", "2 4.262962e+12 5642549 F 2016-04-29T16:19:04Z \n", "3 8.679512e+11 5642828 F 2016-04-29T17:29:31Z \n", "4 8.841186e+12 5642494 F 2016-04-29T16:07:23Z \n", "\n", " AppointmentDay Age Neighbourhood Scholarship Hipertension \\\n", "0 2016-04-29T00:00:00Z 62 JARDIM DA PENHA 0 1 \n", "1 2016-04-29T00:00:00Z 56 JARDIM DA PENHA 0 0 \n", "2 2016-04-29T00:00:00Z 62 MATA DA PRAIA 0 0 \n", "3 2016-04-29T00:00:00Z 8 PONTAL DE CAMBURI 0 0 \n", "4 2016-04-29T00:00:00Z 56 JARDIM DA PENHA 0 1 \n", "\n", " Diabetes Alcoholism Handcap SMS_received No-show \n", "0 0 0 0 0 No \n", "1 0 0 0 0 No \n", "2 0 0 0 0 No \n", "3 0 0 0 0 No \n", "4 1 0 0 0 No " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_vit.head(5) # Print the first 5 rows." ] }, { "cell_type": "code", "execution_count": 4, "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", "
PatientIdAppointmentIDGenderScheduledDayAppointmentDayAgeNeighbourhoodScholarshipHipertensionDiabetesAlcoholismHandcapSMS_receivedNo-show
1105222.572134e+125651768F2016-05-03T09:15:35Z2016-06-07T00:00:00Z56MARIA ORTIZ000001No
1105233.596266e+125650093F2016-05-03T07:27:33Z2016-06-07T00:00:00Z51MARIA ORTIZ000001No
1105241.557663e+135630692F2016-04-27T16:03:52Z2016-06-07T00:00:00Z21MARIA ORTIZ000001No
1105259.213493e+135630323F2016-04-27T15:09:23Z2016-06-07T00:00:00Z38MARIA ORTIZ000001No
1105263.775115e+145629448F2016-04-27T13:30:56Z2016-06-07T00:00:00Z54MARIA ORTIZ000001No
\n", "
" ], "text/plain": [ " PatientId AppointmentID Gender ScheduledDay \\\n", "110522 2.572134e+12 5651768 F 2016-05-03T09:15:35Z \n", "110523 3.596266e+12 5650093 F 2016-05-03T07:27:33Z \n", "110524 1.557663e+13 5630692 F 2016-04-27T16:03:52Z \n", "110525 9.213493e+13 5630323 F 2016-04-27T15:09:23Z \n", "110526 3.775115e+14 5629448 F 2016-04-27T13:30:56Z \n", "\n", " AppointmentDay Age Neighbourhood Scholarship Hipertension \\\n", "110522 2016-06-07T00:00:00Z 56 MARIA ORTIZ 0 0 \n", "110523 2016-06-07T00:00:00Z 51 MARIA ORTIZ 0 0 \n", "110524 2016-06-07T00:00:00Z 21 MARIA ORTIZ 0 0 \n", "110525 2016-06-07T00:00:00Z 38 MARIA ORTIZ 0 0 \n", "110526 2016-06-07T00:00:00Z 54 MARIA ORTIZ 0 0 \n", "\n", " Diabetes Alcoholism Handcap SMS_received No-show \n", "110522 0 0 0 1 No \n", "110523 0 0 0 1 No \n", "110524 0 0 0 1 No \n", "110525 0 0 0 1 No \n", "110526 0 0 0 1 No " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_vit.tail(5) # Print the last 5 rows." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "After check the first and last rows, and confirm nothing is wrong with it. I will analyse the number of duplicated entries." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of duplicated rows: 0\n" ] } ], "source": [ "# Sum the number of rows with duplicated entries.\n", "dupe = sum(df_vit.duplicated())\n", "\n", "print(\"Number of duplicated rows: {}\".format(dupe))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nice dataframe, no duplicated entries (identical row). Now, let's find any NA value or any kind of strange value using the `.info()` method. Note with results of `.info()` I can check if there is inconsistency in the data type of each variable." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 110527 entries, 0 to 110526\n", "Data columns (total 14 columns):\n", "PatientId 110527 non-null float64\n", "AppointmentID 110527 non-null int64\n", "Gender 110527 non-null object\n", "ScheduledDay 110527 non-null object\n", "AppointmentDay 110527 non-null object\n", "Age 110527 non-null int64\n", "Neighbourhood 110527 non-null object\n", "Scholarship 110527 non-null int64\n", "Hipertension 110527 non-null int64\n", "Diabetes 110527 non-null int64\n", "Alcoholism 110527 non-null int64\n", "Handcap 110527 non-null int64\n", "SMS_received 110527 non-null int64\n", "No-show 110527 non-null object\n", "dtypes: float64(1), int64(8), object(5)\n", "memory usage: 11.8+ MB\n" ] } ], "source": [ "# Check if any rows has NA values.\n", "df_vit.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Based on the `.info()` results, I have found some problem, so I will only comment which I think is wrong.\n", "\n", "* `PatientId`: ID to identify the patient, must be int;\n", "* `ScheduledDay` and `AppointmentDay`: Are dates, I will need to fix it;\n", "* `Scholarship`, `Hipertension`, `Diabetes`, `No-show`, and `Alcoholism`: Boolean variables, I also need to fix it later.\n", "\n", "Let's see the columns names, maybe it will be necessary an adjustment in the upper case to lower case." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['PatientId', 'AppointmentID', 'Gender', 'ScheduledDay',\n", " 'AppointmentDay', 'Age', 'Neighbourhood', 'Scholarship', 'Hipertension',\n", " 'Diabetes', 'Alcoholism', 'Handcap', 'SMS_received', 'No-show'],\n", " dtype='object')" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Print the columns names.\n", "df_vit.columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Fortunately, I did not find any space between the variable's name, however, there is a plenty of variable with One uppercase in the middle of the variable. To put everything uniformly, later I will apply the `.lower()`.\n", "\n", "The `.nunique()` method prints the number of unique values for each variable. " ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "PatientId 62299\n", "AppointmentID 110527\n", "Gender 2\n", "ScheduledDay 103549\n", "AppointmentDay 27\n", "Age 104\n", "Neighbourhood 81\n", "Scholarship 2\n", "Hipertension 2\n", "Diabetes 2\n", "Alcoholism 2\n", "Handcap 5\n", "SMS_received 2\n", "No-show 2\n", "dtype: int64" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Print the number of unique values for each variable.\n", "df_vit.nunique()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `.nunique()` method results are very clarifying because I realize some `PatientId` appointed more than once." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Appointed more than once: 43.63%\n", "Appointed one time: 56.37%\n" ] } ], "source": [ "unique_patientid = round(100*(110527-62299)/110527,2),round(100*(62299)/110527,2)\n", "\n", "print(\"Appointed more than once: {}%\\nAppointed one time: {}%\".format(*unique_patientid))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's take a look in the `Age` variable, I want to know the `.max()`, `.min()`, `.mean()` etc, the `.decribe()` shows a very good summary." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "count 110527.000000\n", "mean 37.088874\n", "std 23.110205\n", "min -1.000000\n", "25% 18.000000\n", "50% 37.000000\n", "75% 55.000000\n", "max 115.000000\n", "Name: Age, dtype: float64" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Shows the mean, max, min etc.\n", "df_vit['Age'].describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The minimum age of -1 is quite weird. So, I will print all the observations with less than zero age." ] }, { "cell_type": "code", "execution_count": 11, "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", "
PatientIdAppointmentIDGenderScheduledDayAppointmentDayAgeNeighbourhoodScholarshipHipertensionDiabetesAlcoholismHandcapSMS_receivedNo-show
998324.659432e+145775010F2016-06-06T08:58:13Z2016-06-06T00:00:00Z-1ROMÃO000000No
\n", "
" ], "text/plain": [ " PatientId AppointmentID Gender ScheduledDay \\\n", "99832 4.659432e+14 5775010 F 2016-06-06T08:58:13Z \n", "\n", " AppointmentDay Age Neighbourhood Scholarship Hipertension \\\n", "99832 2016-06-06T00:00:00Z -1 ROMÃO 0 0 \n", "\n", " Diabetes Alcoholism Handcap SMS_received No-show \n", "99832 0 0 0 0 No " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Cases of age less than zero.\n", "df_vit[df_vit.Age < 0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Only one observation has age below of zero, for this reason, in the next chapter (Data Cleaning) I will remove this observation.\n", "\n", "I would also like to record when this appointment happens." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "nov: 1\n", "dez: 61\n", "jan: 60\n", "fev: 281\n", "mar: 3614\n", "mar: 25339\n", "aph: 67421\n", "jun: 13750\n" ] } ], "source": [ "nov = sum(df_vit['ScheduledDay'].str.contains('2015-11'))\n", "dez = sum(df_vit['ScheduledDay'].str.contains('2015-12'))\n", "jan = sum(df_vit['ScheduledDay'].str.contains('2016-01'))\n", "fev = sum(df_vit['ScheduledDay'].str.contains('2016-02'))\n", "mar = sum(df_vit['ScheduledDay'].str.contains('2016-03'))\n", "aph = sum(df_vit['ScheduledDay'].str.contains('2016-04'))\n", "may = sum(df_vit['ScheduledDay'].str.contains('2016-05'))\n", "jun = sum(df_vit['ScheduledDay'].str.contains('2016-06'))\n", "\n", "print(\"nov: {}\\ndez: {}\\njan: {}\\nfev: {}\\nmar: {}\\nmar: {}\\naph: {}\\njun: {}\".format(nov,dez,jan,fev,mar,aph,may,jun))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The appointment distribution is very left-skewed, most of the record observation was made in April, March, and June.\n", "\n", "Move on to `Handcap` variable, which has 5 levels:\n", "\n", "* 0: No disabilities;\n", "* 1: One disability;\n", "* 2: Two disabilities, and so on." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 108286\n", "1 2042\n", "2 183\n", "3 13\n", "4 3\n", "Name: Handcap, dtype: int64" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# If a person has disabilities (blind, dumb, etc.)\n", "df_vit['Handcap'].value_counts() # This is cummulative and I do not know what kind o disabilities each patient has." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "After that, most of the patients do not have disabilities.\n", "\n", "Let's see the patient gender. " ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "F 71840\n", "M 38687\n", "Name: Gender, dtype: int64" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Gender\n", "df_vit.Gender.value_counts()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Women are predominant in this medical appointments.\n", "\n", "The next variable is `SMS_received`, adopting the interpretation of the creator/maintainer of the dataset, this variable is the number of messages sent/received by the patient." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 75045\n", "1 35482\n", "Name: SMS_received, dtype: int64" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_vit.SMS_received.value_counts()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This variable looks like a boolean, but let's assume as quantity because the maintainer said this is the number of messages sent to the patient.\n", "\n", "The next 4 variables are all boolean, so I will bind the results into a single table." ] }, { "cell_type": "code", "execution_count": 16, "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", "
ScholarshipAlcoholismHipertensionDiabetes
09966610716788726102584
1108613360218017943
\n", "
" ], "text/plain": [ " Scholarship Alcoholism Hipertension Diabetes\n", "0 99666 107167 88726 102584\n", "1 10861 3360 21801 7943" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Just o save some lines of report\n", "b_family = df_vit['Scholarship'].value_counts() # Counts the number of Scholarship\n", "b_alcohol = df_vit['Alcoholism'].value_counts() # Counts the number of Alcoholism\n", "b_hiper = df_vit['Hipertension'].value_counts() # Counts the number of Hipertension\n", "b_diab = df_vit['Diabetes'].value_counts() # Counts the number of Diabetes\n", "\n", "pd.concat([b_family,b_alcohol,b_hiper,b_diab],axis = 1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "After this extense Data Assessing, let start the Data Clean.\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data Cleaning\n", "\n", "In this chapter I will edit the `df_vit` dataframe modifying some variables types, removing non-desireable observations, etc.\n", "\n", "Based on the long Data Assessing, this dataframe is quite clean, I just need to convert some variable and remove a non-standard negative age. \n", "\n", "### Renaming Columns names\n", "\n", "Renaming the columns will turn the study much easier and fast, due to the uppercase in the middle of the variable names, it's annoying because you must record the exact form to type." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['patientid', 'appointmentid', 'gender', 'scheduledday',\n", " 'appointmentday', 'age', 'neighbourhood', 'scholarship', 'hipertension',\n", " 'diabetes', 'alcoholism', 'handcap', 'sms_received', 'no_show'],\n", " dtype='object')" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# The rename methods deals with changing dash to underscores and lower casing everything.\n", "df_vit.rename(columns=lambda x: x.strip().lower().replace(\"-\", \"_\"), inplace=True)\n", "\n", "# Print columns name to ensure the modification.\n", "df_vit.columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This minor changing will save me time in future, avoiding me to commit typos problems.\n", "\n", "### Converting Data Types\n", "\n", "Now, let's convert `patientid`, `scheduledday`, and `appointmentday`." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "# Convert float to int\n", "df_vit.patientid = df_vit.patientid.astype(np.int64) # I am coercing to int64, because the default converts to int32." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The conversion of `scheduledday` and `appointmentday` will be performed by the `numpy` package." ] }, { "cell_type": "code", "execution_count": 19, "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", "
patientidappointmentidgenderscheduleddayappointmentdayageneighbourhoodscholarshiphipertensiondiabetesalcoholismhandcapsms_receivedno_show
0298724998242965642903F2016-04-29 18:38:082016-04-2962JARDIM DA PENHA010000No
15589977766944385642503M2016-04-29 16:08:272016-04-2956JARDIM DA PENHA000000No
242629622999515642549F2016-04-29 16:19:042016-04-2962MATA DA PRAIA000000No
38679512131745642828F2016-04-29 17:29:312016-04-298PONTAL DE CAMBURI000000No
488411864481835642494F2016-04-29 16:07:232016-04-2956JARDIM DA PENHA011000No
\n", "
" ], "text/plain": [ " patientid appointmentid gender scheduledday appointmentday \\\n", "0 29872499824296 5642903 F 2016-04-29 18:38:08 2016-04-29 \n", "1 558997776694438 5642503 M 2016-04-29 16:08:27 2016-04-29 \n", "2 4262962299951 5642549 F 2016-04-29 16:19:04 2016-04-29 \n", "3 867951213174 5642828 F 2016-04-29 17:29:31 2016-04-29 \n", "4 8841186448183 5642494 F 2016-04-29 16:07:23 2016-04-29 \n", "\n", " age neighbourhood scholarship hipertension diabetes alcoholism \\\n", "0 62 JARDIM DA PENHA 0 1 0 0 \n", "1 56 JARDIM DA PENHA 0 0 0 0 \n", "2 62 MATA DA PRAIA 0 0 0 0 \n", "3 8 PONTAL DE CAMBURI 0 0 0 0 \n", "4 56 JARDIM DA PENHA 0 1 1 0 \n", "\n", " handcap sms_received no_show \n", "0 0 0 No \n", "1 0 0 No \n", "2 0 0 No \n", "3 0 0 No \n", "4 0 0 No " ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Converting the ScheduledDay to date.\n", "df_vit.scheduledday = df_vit.scheduledday.apply(np.datetime64)\n", "\n", "# Converting the AppointmentDay to date.\n", "df_vit.appointmentday = df_vit.appointmentday.apply(np.datetime64)\n", "\n", "# Print the first 5 rows.\n", "df_vit.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Both `datetime` variables are converted but have minor differences.\n", "\n", "* `scheduledday`: It is OK;\n", "* `appointmentday`: Lose the hours, minutes, and seconds, probably is due to all the cases have the same time `00:00:00`.\n", "\n", "Now, let's convert the categorical variable, such as:\n", "\n", "* `gender`: male and female categories;\n", "* `no-show`: yes or no." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "# Converting the No-show variable as categorical\n", "df_vit['no_show'] = pd.Categorical(df_vit['no_show'])\n", "\n", "# Converting the Gender variable as categorical\n", "df_vit['gender'] = pd.Categorical(df_vit['gender'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, I will convert all boolean variables." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "# Converting int64 variables to bool.\n", "df_vit.scholarship = df_vit.scholarship.apply(bool)\n", "df_vit.hipertension = df_vit.hipertension.apply(bool)\n", "df_vit.diabetes = df_vit.diabetes.apply(bool)\n", "df_vit.alcoholism = df_vit.alcoholism.apply(bool)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's print the `.info()` once again to ensure the conversion." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 110527 entries, 0 to 110526\n", "Data columns (total 14 columns):\n", "patientid 110527 non-null int64\n", "appointmentid 110527 non-null int64\n", "gender 110527 non-null category\n", "scheduledday 110527 non-null datetime64[ns]\n", "appointmentday 110527 non-null datetime64[ns]\n", "age 110527 non-null int64\n", "neighbourhood 110527 non-null object\n", "scholarship 110527 non-null bool\n", "hipertension 110527 non-null bool\n", "diabetes 110527 non-null bool\n", "alcoholism 110527 non-null bool\n", "handcap 110527 non-null int64\n", "sms_received 110527 non-null int64\n", "no_show 110527 non-null category\n", "dtypes: bool(4), category(2), datetime64[ns](2), int64(5), object(1)\n", "memory usage: 7.4+ MB\n" ] } ], "source": [ "df_vit.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Data Filtering\n", "\n", "I will remove all observations with age below of zero because it is not correct. I know there is only one observation with this characteristics, it is not likely this deletion will affect all the analysis." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of rows: 110526\n" ] } ], "source": [ "# Cases of Age less than zero. I have updated my variable name to lowercase age.\n", "df_vit = df_vit[df_vit.age >= 0]\n", "\n", "# Print the number of rows\n", "print(\"Number of rows: {}\".format(df_vit.shape[0]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As I expected, the number of rows has decreased one unit.\n", "\n", "Here, I finished the Data Wrangling.\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exploratory Data Analysis \n", "\n", "Sadly, I did not come up with a good and interesting question, but as a kickstart to my Exploratory Analysis, I will try to find any relationship between the patient who has appointed more than one time and no-showed.\n", "\n", "> My Question: Is there a relationship between patients with many appointments to do show-up more frequently?\n", "\n", "First, I want to know how is the percentage of a no-show of all appointments." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "No 88207\n", "Yes 22319\n", "Name: no_show, dtype: int64\n", "Appointments with Show-up: 88207\n", "Appointments with No-show: 22319\n", "\n", "No-show Percentage: 20.0%\n" ] } ], "source": [ "no_show_p = df_vit['no_show'].value_counts() # First show-up and second no-show.\n", "\n", "print(no_show_p)\n", "\n", "print(\"Appointments with Show-up: {}\\nAppointments with No-show: {}\\n\".format(*no_show_p)) # No-show: Yes : 22319\n", "print(\"No-show Percentage: {}%\".format(round(100*no_show_p[1]/sum(no_show_p)),2)) # Show-up: No : 88207" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The no-show rate is 20.0% for all appointments but I know that some patients have an appointment more than once. Let's get deep in this question plotting the histogram." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4sAAAEWCAYAAADPdALXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzt3XuYZFV59/3vzwGUk4CiI8IoJBIVQREnQDQm4wkHT2CiEaICBkNMMBqDj6KPETy90UQk4hmFDCg6goeAiiIeWiUR5CA6IBrmQZQBBTkziOLg/f6xV2vR1d3Tc6jZM/T3c111ddXaa+991101NX33WntVqgpJkiRJkgbdq+8AJEmSJEnrH4tFSZIkSdIQi0VJkiRJ0hCLRUmSJEnSEItFSZIkSdIQi0VJkiRJ0hCLRUmzUpKjk3xsmu2XJlmwDkNaZUkekmR5kjkz6Ltzku8leehK+n0xycFrL8q7HfuDSf5lFMdel0aZI62e9u/gD/qOY21J8sIkX+47DkmyWJS0XkhyQJLzktye5Lp2/x+SpI94qupRVTW2qvslOT7Jj5L8Nskhq3v+JH/ScrHlJNu+m+TlVfXTqtqiqu5q7WNJXjpJ/62ADwPPq6qfTHfeqtq3qk5azZiT5BVJLmmxL0tyWpLd2rFfVlVvaX0XJFm2OueZcM5DklSSv1rTY83UquRoqtdkXVhbOR6F9rrd1Yq8W5NcnORZM9x3KKft38EVayGuRUneupI+leRh7f7RSX6T5LZ2+98k702y3TT7H5LknEnar0zy1PZ8TqmqfdZGvJK0JiwWJfUuyRHAu4F/Bx4EzAVeBjwB2GSKfVY6mtaT7wH/AFy0Jgepqm8Dy4C/HGxPsiuwC/CJVTjWLVW1oKoun6pPK/TW9P+EdwOvBF4B3A/4I+C/gGeu4XGnczBwY/up9VCSjabY9O2q2gLYGjgBODXJ/dZdZGvNJ6tqS7r3/HPpPsMunK5g3BBM87pJmk2qyps3b956uwFbAbcDf7mSfouADwBntv5PpStCvgvcClwFHD3Qf0eggMOAa4CfAUcMbD8aOBU4GbgNuBSYP7D9SuCp7f4c4PXA/2t9LwTmrSTec4BD1jA3rwe+NqHt34DPTHiOGwFvA+4CfgUsB97b+jweOB+4pf18/MCxxtp+/w3cATystb20bf9D4GvADcD1wCnA1lPEunM7/54reQ3fCmzezvfbFuty4MHAL4H7D/R/HPALYOMpjvfQdoy/BFYAcwe2LaArtl/fYr8SeOGEWD4InN1e028ADx3YvrK8jefokPZavxO4CfgxsG/bNtVrUnR/ULi8nfstLdffpnsvnwpsMnC+ZwEXAzcD/wM8esL79NXA91usnwTuM02O9wQuaOe5FnjXFLldWf7u3Z7zT9txPghsOmHf1wI/Bz46yfEPAc4ZeLx5y8t8YBvg8+21v6nd32EGOX3YKsR2BHAd3efCS9q2w4DfAHe2Y39uitwMnuto4GMTts+h+6PRO6fY/27PfYrPnN/1AQIc2+K9pb3Wu04VL/BIuvfozXSfa88ZOMf9gc+11/98un+P50x4bofTvTd/3NreTff5eivdZ98TJ3yOngZ8jO69vITuj0Sva/FeBeyzJp+D3rx56/fmyKKkvv0J3S93p8+g71/T/bK4Jd0v6LcDB9GNTDwT+Psk+0/Y50l0hcw+wJHj07ya5wCL2/5nAO+d4rz/DBwIPAO4L/A3dIXNqH0UeGKShwC0kb+/pitw76aq/i/wLeDl1U3Je3kbpfkCcBzdL4nvAr6Q5P4Du76Y7pfOLYGJU1QD/CtdkfFIYB7dL4eTeQqwrKq+s7InVVW3A/sC17RYt6iqa+h+wR2cTvoiYHFV/WaKQx0EXFBVnwYuA144YfuDgG2B7elGHo9P8vCB7S+kK9S2pSvGTgGYYd4G7QX8qB3n34ATkmSy12Rgn4V0xfDewGuA41s88+gKgQNbLHsAJwJ/12L5EHBGknsPHOuv2vF2Ah5N90eKqXL8buDdVXVfugL11Cme08ry9w66omB3uj8ybA+8ccK+96Mr6A+b5hzjI1gvpSt4Lqeb9fSfbd+H0BW974XJ3+eTHHImsW3V2g8F3pdkm6o6nu498G/t2M+eLu6pVDct/HTgiauz/yT2Af6M7jltDbwAuGGyeJNsTFcMfhl4IPCPwCkDr9v76D43H0T3mk42Ir8/3Xt6l/b4fLpc3g/4OHBakvsM9H823WfVNnR/vDuL7jXcHngz3XtW0gbKYlFS37YFrq+qFeMNSf4nyc1J7kjyZwN9T6+q/66q31bVr6pqrKqWtMffp5ua+ecTjv+mqrq9qpbQ/QJ64MC2c6rqzPbL3UeBx0wR40uBN1TVj6rzvaq6YU2f+MpU1VV0I14vak1PoRs1+sIMD/FM4PKq+mhVraiqTwA/pPvlbtyiqrq0bb9bUVZVS6vq7Kr6dVX9gq5ompjfcfenG6VZEyfRnmubZnwg3esylYPofnml/ZzsF99/afF/gy5vg8XoF6rqm1X1a+D/An+SZB4zy9ugn1TVh9v76CRgO7qp1NN5R1XdWlWXApcAX66qK6rqFuCLwGNbv78FPlRV51XVXdVdK/lruiJz3HFVdU1V3UhXKOw+zXl/AzwsybZVtbyqzl1JnEP5a9cR/y3wqqq6sapuA/4/4ICB/X4LHNX2vWOKY++d5Ga60ccDgedWN2X6hqr6dFX9sh37bUz9vrubGcb2G+DNVfWbqjqTrkh9+PDR1sg1dMXVVPZun3G/u9EVxpP5Dd0fcx4BpKouq6qp/q3tDWwBvL2q7qyqr9GNzB7Y/k39Jd3r8suq+gHd+3Wif225uwOgqj7WXpMVVXUM3R/3BvP1rao6q32GnwY8oJ3/N3R/jNsxydbT5ELSesxiUVLfbgC2Hbw+pqoeX1Vbt22Dn1NXDe6YZK8kX0/yiyS30F3nuO2E4w/u8xO6UbJxPx+4/0vgPlNcpzOPbgrqWpPfr2S6PMnyabqeRFcUQTcK+PFpRtomejDDo4U/ofuL/7irmEKSByZZnOTqJLfSTTWbmN9xN9AVSWvidGCXdKtaPg24ZaqRyiRPoBtJW9yaPg7slmSwULqpjbCNm/j6/+65V9VyumsfH8zM8jbod++jqhofcd5iir7jrh24f8ckj8f3fyhwxISiYh7Tv4+nO/ehdCNUP0xy/koWlZkqfw8ANqO7Lm88pi+19nG/qKpfTXNsgHOrauuq2raq9q6qrwAk2SzJh5L8pL3vvglsPcPrlGcS2w2Df5xi5TlbHdvTvZ+mMv7cf3ejmzY7pBV876UbFbw23SJa953iuA8Grqqq3w60jb93H0A3ZX3w3/xk//4nfs4ekeSyJLe0fG7F3T8HJr53r29/OBl/DGs/v5LWEYtFSX37Nt1IyX4z6FsTHn+cbvrovKraiu7apImrp84buP8Qur/4r6qr6KbsrTX1+5VMt6hukY+pfAbYPsmTgL9gkimog4ed8PgaumJj0EOAq6fZZ9C/tu2PbtMWX8Rwfsd9FdghyfxpjjddrLTi4lS66ZgvZvpRxYNbLBcn+TlwXms/aKDPNkk2H3g88fX/3XsjyRZ0I0HXMLO8zdR0+Z2Jq4C3TSgsNmujnat87qq6vKoOpJui+A7gUxNyNGiq/F1PVwQ8aiCmrSa8j9fkeR9BN3K1V3vfjc8uGH/vTXfsmcQ2nTV9vcaniz+bbrrsWlFVx1XV44BH0RX7/2d804Su1wDzJixWNf7e/QXdtb07DGwb/Hz83enG7yR5It21p38FbNOK2luY+nNA0j2MxaKkXlXVzcCbgPcneV6SLZLcq40QTfVL7LgtgRur6ldJ9qS7nm+if2kjFY8CXkK3AMiq+gjwlnTfVZgkj57q+rUkm7TreQJsnOQ+a7LKaBvZ+RTdFNqfVNUF03S/Fhj8rrkzgT9K8tdJNkryArrrkD4/w9NvSTdF7+Yk2/P7X1Ani/Ny4P3AJ9J9ZcMm7bkfkOTIKWK9f7qv9Rh0Mt3iHs+hG8kc0vL7V3TXwu0+cPtH4IUTRoff1GJ5It1CMacNbHtGkj9NsgndtYvntam/a5q3ic9zTb7/78PAy9ooepJsnuSZmeQrVaY4991ynORFSR7QRp5ubs13Tbp3Zyh/bd8PA8cmeWA77vZJnr46T3ASW9IVfDenu370qAnbp8zpWohttV+vJBsneSTddPgH0U3bXmNJ/ri9/hvTXW/4K37/mk2M97zW5zUtngV0heviNtr3GeDo9pn4CO7+x5XJbElXYP4C2CjJG+mu25Y0S1gsSupdVf0b3SIyr6FbQe9aukURXku3+uNU/gF4c5Lb6BawmGyxjm8AS+lGvt5ZVavzRdfvasf+Mt2KgCcAm07R98t0v+g+nm7Rkjv4/cjI6jqJbqRrulFF6BYveV6Sm5Ic166rfBbdSM0NdPl9VlVdP8PzvgnYg24k4Qt0v2hO5xX8frrczXRTd59Ldx3d3VTVD+l+qb6iTRd8cGv/b7rr3S6qqiunOM/+dHk9uap+Pn6je13m0C32At30zJvoRltOAV7Wzjvu43SFyI10i828sMWwpnkbdLfXZFV3bn8c+Fu6vN5E914+ZIb7TpbjhcClberzu4EDppkuOl3+XttiObdNFf0Ka++6v/+g+/d1PXAu3TTSQSvL6ZrEdgLdVOibk/zXDPd5QcvnzXQzHW4AHlfdgkJrw33pCuCb6KaU3kC32utQvFV1J90fWvaly9/7gYMGXreX000j/TndyP0n6GZ2TOUsumto/7ed+1dMM3Vd0j1PqtZ4xoUkrXeS7Ej3NQYbT7g+Seu5JF+juzbzI2twjAV0X2mwwxTbF9Gt3vqG1T3HPdnK8qd7hiTvAB5UVX5PqaRJObIoSVpvJPljutHM1ZkuLGkaSR7RptGnTd0/FPhs33FJWn9NtuqfJEnrXJKT6KaYvrJ95YGktWtLuqmnD6ab8n8MM/uOW0mzlNNQJUmSJElDnIYqSZIkSRoy66ahbrvttrXjjjv2HcaQ22+/nc03X9m3BGgUzH1/zH1/zH1/zH1/zH1/zH2/zH9/1tfcX3jhhddX1QNW1m/WFYs77rgjF1ww3deU9WNsbIwFCxb0HcasZO77Y+77Y+77Y+77Y+77Y+77Zf77s77mPslPZtLPaaiSJEmSpCEWi5IkSZKkIRaLkiRJkqQhFouSJEmSpCEWi5IkSZKkIRaLkiRJkqQhFouSJEmSpCEWi5IkSZKkIRaLkiRJkqQhG/UdgDpLrr6FQ478Qt9hzEqLFm7edwiSJEnSeseRRUmSJEnSEItFSZIkSdIQi0VJkiRJ0hCLRUmSJEnSEItFSZIkSdIQi0VJkiRJ0hCLRUmSJEnSEItFSZIkSdIQi0VJkiRJ0hCLRUmSJEnSEItFSZIkSdKQkRWLSe6T5DtJvpfk0iRvau2Lkvw4ycXttntrT5LjkixN8v0kewwc6+Akl7fbwQPtj0uypO1zXJKM6vlIkiRJ0myy0QiP/WvgyVW1PMnGwDlJvti2/Z+q+tSE/vsCO7fbXsAHgL2S3A84CpgPFHBhkjOq6qbW5zDgXOBMYCHwRSRJkiRJa2RkI4vVWd4ebtxuNc0u+wEnt/3OBbZOsh3wdODsqrqxFYhnAwvbtvtW1berqoCTgf1H9XwkSZIkaTYZ6TWLSeYkuRi4jq7gO69telubanpsknu3tu2BqwZ2X9bapmtfNkm7JEmSJGkNjXIaKlV1F7B7kq2BzybZFXgd8HNgE+B44LXAm4HJrjes1WgfkuQwuumqzJ07l7GxsVV7IuvA3E3hiN1W9B3GrLR8+fL18j0xG5j7/pj7/pj7/pj7/pj7fpn//mzouR9psTiuqm5OMgYsrKp3tuZfJ/lP4NXt8TJg3sBuOwDXtPYFE9rHWvsOk/Sf7PzH0xWmzJ8/vxYsWDBZt16955TTOWbJOnk5NMGihZuzPr4nZoOxsTFz3xNz3x9z3x9z3x9z3y/z358NPfejXA31AW1EkSSbAk8FftiuNaStXLo/cEnb5QzgoLYq6t7ALVX1M+AsYJ8k2yTZBtgHOKttuy3J3u1YBwGnj+r5SJIkSdJsMsqhrO2Ak5LMoStKT62qzyf5WpIH0E0jvRh4Wet/JvAMYCnwS+AlAFV1Y5K3AOe3fm+uqhvb/b8HFgGb0q2C6kqokiRJkrQWjKxYrKrvA4+dpP3JU/Qv4PAptp0InDhJ+wXArmsWqSRJkiRpopGuhipJkiRJ2jBZLEqSJEmShlgsSpIkSZKGWCxKkiRJkoZYLEqSJEmShlgsSpIkSZKGWCxKkiRJkoZYLEqSJEmShlgsSpIkSZKGWCxKkiRJkoZYLEqSJEmShlgsSpIkSZKGWCxKkiRJkoZYLEqSJEmShlgsSpIkSZKGWCxKkiRJkoZYLEqSJEmShlgsSpIkSZKGWCxKkiRJkoaMrFhMcp8k30nyvSSXJnlTa98pyXlJLk/yySSbtPZ7t8dL2/YdB471utb+oyRPH2hf2NqWJjlyVM9FkiRJkmabUY4s/hp4clU9BtgdWJhkb+AdwLFVtTNwE3Bo638ocFNVPQw4tvUjyS7AAcCjgIXA+5PMSTIHeB+wL7ALcGDrK0mSJElaQyMrFquzvD3cuN0KeDLwqdZ+ErB/u79fe0zb/pQkae2Lq+rXVfVjYCmwZ7straorqupOYHHrK0mSJElaQxuN8uBt9O9C4GF0o4D/D7i5qla0LsuA7dv97YGrAKpqRZJbgPu39nMHDju4z1UT2veaIo7DgMMA5s6dy9jY2Bo9r1GYuykcsduKlXfUWrd8+fL18j0xG5j7/pj7/pj7/pj7/pj7fpn//mzouR9psVhVdwG7J9ka+CzwyMm6tZ+ZYttU7ZONitYkbVTV8cDxAPPnz68FCxZMH3gP3nPK6RyzZKQvh6awaOHmrI/vidlgbGzM3PfE3PfH3PfH3PfH3PfL/PdnQ8/9OlkNtapuBsaAvYGtk4xXRTsA17T7y4B5AG37VsCNg+0T9pmqXZIkSZK0hka5GuoD2ogiSTYFngpcBnwdeF7rdjBwert/RntM2/61qqrWfkBbLXUnYGfgO8D5wM5tddVN6BbBOWNUz0eSJEmSZpNRznvcDjipXbd4L+DUqvp8kh8Ai5O8FfgucELrfwLw0SRL6UYUDwCoqkuTnAr8AFgBHN6mt5Lk5cBZwBzgxKq6dITPR5IkSZJmjZEVi1X1feCxk7RfQbeS6cT2XwHPn+JYbwPeNkn7mcCZaxysJEmSJOlu1sk1i5IkSZKkDYvFoiRJkiRpiMWiJEmSJGmIxaIkSZIkaYjFoiRJkiRpiMWiJEmSJGmIxaIkSZIkaYjFoiRJkiRpiMWiJEmSJGmIxaIkSZIkaYjFoiRJkiRpiMWiJEmSJGmIxaIkSZIkaYjFoiRJkiRpiMWiJEmSJGmIxaIkSZIkaYjFoiRJkiRpiMWiJEmSJGnIyIrFJPOSfD3JZUkuTfLK1n50kquTXNxuzxjY53VJlib5UZKnD7QvbG1Lkxw50L5TkvOSXJ7kk0k2GdXzkSRJkqTZZJQjiyuAI6rqkcDewOFJdmnbjq2q3dvtTIC27QDgUcBC4P1J5iSZA7wP2BfYBThw4DjvaMfaGbgJOHSEz0eSJEmSZo2RFYtV9bOquqjdvw24DNh+ml32AxZX1a+r6sfAUmDPdltaVVdU1Z3AYmC/JAGeDHyq7X8SsP9ono0kSZIkzS6pqtGfJNkR+CawK/DPwCHArcAFdKOPNyV5L3BuVX2s7XMC8MV2iIVV9dLW/mJgL+Do1v9hrX0e8MWq2nWS8x8GHAYwd+7cxy1evHgkz3NNXHfjLVx7R99RzE47bTWHLbbYou8wZqXly5eb+56Y+/6Y+/6Y+/6Y+36Z//6sr7l/0pOedGFVzV9Zv41GHUiSLYBPA/9UVbcm+QDwFqDaz2OAvwEyye7F5KOfNU3/4caq44HjAebPn18LFixYxWcxeu855XSOWTLyl0OTWLRwc9bH98RsMDY2Zu57Yu77Y+77Y+77Y+77Zf77s6HnfqTVSZKN6QrFU6rqMwBVde3A9g8Dn28PlwHzBnbfAbim3Z+s/Xpg6yQbVdWKCf0lSZIkSWtglKuhBjgBuKyq3jXQvt1At+cCl7T7ZwAHJLl3kp2AnYHvAOcDO7eVTzehWwTnjOrmz34deF7b/2Dg9FE9H0mSJEmaTWY0sphk16q6ZOU97+YJwIuBJUkubm2vp1vNdHe6KaNXAn8HUFWXJjkV+AHdSqqHV9Vd7fwvB84C5gAnVtWl7XivBRYneSvwXbriVJIkSZK0hmY6DfWDbVRvEfDxqrp5ZTtU1TlMfl3hmdPs8zbgbZO0nznZflV1Bd1qqZIkSZKktWhG01Cr6k+BF9JdO3hBko8nedpII5MkSZIk9WbG1yxW1eXAG+imfv45cFySHyb5i1EFJ0mSJEnqx4yKxSSPTnIscBnwZODZVfXIdv/YEcYnSZIkSerBTK9ZfC/wYeD1VfW7r46vqmuSvGEkkUmSJEmSejPTYvEZwB0Dq5PeC7hPVf2yqj46sugkSZIkSb2Y6TWLXwE2HXi8WWuTJEmSJN0DzbRYvE9VLR9/0O5vNpqQJEmSJEl9m2mxeHuSPcYfJHkccMc0/SVJkiRJG7CZXrP4T8BpSa5pj7cDXjCakCRJkiRJfZtRsVhV5yd5BPBwIMAPq+o3I41MkiRJktSbmY4sAvwxsGPb57FJqKqTRxKVJEmSJKlXMyoWk3wU+EPgYuCu1lyAxaIkSZIk3QPNdGRxPrBLVdUog5EkSZIkrR9muhrqJcCDRhmIJEmSJGn9MdORxW2BHyT5DvDr8caqes5IopIkSZIk9WqmxeLRowxCkiRJkrR+melXZ3wjyUOBnavqK0k2A+aMNjRJkiRJUl9mdM1ikr8FPgV8qDVtD/zXqIKSJEmSJPVrpgvcHA48AbgVoKouBx443Q5J5iX5epLLklya5JWt/X5Jzk5yefu5TWtPkuOSLE3y/SR7DBzr4Nb/8iQHD7Q/LsmSts9xSbJqT1+SJEmSNJmZFou/rqo7xx8k2YjuexanswI4oqoeCewNHJ5kF+BI4KtVtTPw1fYYYF9g53Y7DPhAO9f9gKOAvYA9gaPGC8zW57CB/RbO8PlIkiRJkqYx02LxG0leD2ya5GnAacDnptuhqn5WVRe1+7cBl9FNX90POKl1OwnYv93fDzi5OucCWyfZDng6cHZV3VhVNwFnAwvbtvtW1bfb9z+ePHAsSZIkSdIamGmxeCTwC2AJ8HfAmcAbZnqSJDsCjwXOA+ZW1c+gKyj5/XTW7YGrBnZb1tqma182SbskSZIkaQ3NdDXU3wIfbrdVkmQL4NPAP1XVrdNcVjjZhlqN9sliOIxuuipz585lbGxsJVGve3M3hSN2W9F3GLPS8uXL18v3xGxg7vtj7vtj7vtj7vtj7vtl/vuzoed+RsVikh8zSSFWVX+wkv02pisUT6mqz7Tma5NsV1U/a1NJr2vty4B5A7vvAFzT2hdMaB9r7TtM0n9IVR0PHA8wf/78WrBgwWTdevWeU07nmCUz/dpLrU2LFm7O+viemA3GxsbMfU/MfX/MfX/MfX/Mfb/Mf3829NzPdBrqfOCP2+2JwHHAx6bboa1MegJwWVW9a2DTGcD4iqYHA6cPtB/UVkXdG7ilTVM9C9gnyTZtYZt9gLPattuS7N3OddDAsSRJkiRJa2Cm01BvmND0H0nOAd44zW5PAF4MLElycWt7PfB24NQkhwI/BZ7ftp0JPANYCvwSeEk7941J3gKc3/q9uapubPf/HlgEbAp8sd0kSZIkSWtoptNQ9xh4eC+6kcYtp9unqs5h8usKAZ4ySf+i+z7HyY51InDiJO0XALtOF4ckSZIkadXN9CK5YwburwCuBP5qrUcjSZIkSVovzHQa6pNGHYgkSZIkaf0x02mo/zzd9gkL2EiSJEmSNnAznYY6vhrqGe3xs4FvAleNIihJkiRJUr9mWixuC+xRVbcBJDkaOK2qXjqqwCRJkiRJ/Znp9yw+BLhz4PGdwI5rPRpJkiRJ0nphpiOLHwW+k+SzQAHPBU4eWVSSJEmSpF7NdDXUtyX5IvDE1vSSqvru6MKSJEmSJPVpptNQATYDbq2qdwPLkuw0opgkSZIkST2bUbGY5CjgtcDrWtPGwMdGFZQkSZIkqV8zHVl8LvAc4HaAqroG2HJUQUmSJEmS+jXTYvHOqiq6xW1IsvnoQpIkSZIk9W2mxeKpST4EbJ3kb4GvAB8eXViSJEmSpD7NdDXUdyZ5GnAr8HDgjVV19kgjkyRJkiT1ZqXFYpI5wFlV9VTAAlGSJEmSZoGVTkOtqruAXybZah3EI0mSJElaD8xoGirwK2BJkrNpK6ICVNUrRhKVJEmSJKlXMy0Wv9BukiRJkqRZYNpiMclDquqnVXXSugpIkiRJktS/lV2z+F/jd5J8elUOnOTEJNcluWSg7egkVye5uN2eMbDtdUmWJvlRkqcPtC9sbUuTHDnQvlOS85JcnuSTSTZZlfgkSZIkSVNbWbGYgft/sIrHXgQsnKT92Kravd3OBEiyC3AA8Ki2z/uTzGkrsb4P2BfYBTiw9QV4RzvWzsBNwKGrGJ8kSZIkaQorKxZrivsrVVXfBG6cYff9gMVV9euq+jGwFNiz3ZZW1RVVdSewGNgvSYAnA59q+58E7L8q8UmSJEmSprayBW4ek+RWuhHGTdt92uOqqvuuxjlfnuQg4ALgiKq6CdgeOHegz7LWBnDVhPa9gPsDN1fVikn6D0lyGHAYwNy5cxkbG1uNsEdr7qZwxG4rVt5Ra93y5cvXy/fEbGDu+2Pu+2Pu+2Pu+2Pu+2X++7Oh537aYrGq5qzl830AeAvdKOVbgGOAv+Hu011/d3omH/msafpPqqqOB44HmD9/fi1YsGCVgl4X3nPK6RyzZKaL02ptWrRwc9bH98RsMDY2Zu57Yu77Y+77Y+77Y+77Zf77s6Hnfp1WJ1V17fj9JB8GPt8eLgPmDXTdAbim3Z+s/Xpg6yQbtdHFwf6SJEmSpDW0smsW16ok2w08fC4wvlLqGcABSe6dZCdgZ+A7wPnAzm3l003oFsE5o6oK+DrwvLb/wcDp6+K6UmVLAAARD0lEQVQ5SJIkSdJsMLKRxSSfABYA2yZZBhwFLEiyO92U0SuBvwOoqkuTnAr8AFgBHF5Vd7XjvBw4C5gDnFhVl7ZTvBZYnOStwHeBE0b1XCRJkiRpthlZsVhVB07SPGVBV1VvA942SfuZwJmTtF9Bt1qqJEmSJGktc0UVzXpLrr6FQ478Qt9hzEqLFm7edwiSJEmawjq9ZlGSJEmStGGwWJQkSZIkDbFYlCRJkiQNsViUJEmSJA2xWJQkSZIkDbFYlCRJkiQNsViUJEmSJA2xWJQkSZIkDbFYlCRJkiQNsViUJEmSJA2xWJQkSZIkDbFYlCRJkiQNsViUJEmSJA2xWJQkSZIkDbFYlCRJkiQNsViUJEmSJA2xWJQkSZIkDRlZsZjkxCTXJblkoO1+Sc5Ocnn7uU1rT5LjkixN8v0kewzsc3Drf3mSgwfaH5dkSdvnuCQZ1XORJEmSpNlmlCOLi4CFE9qOBL5aVTsDX22PAfYFdm63w4APQFdcAkcBewF7AkeNF5itz2ED+008lyRJkiRpNY2sWKyqbwI3TmjeDzip3T8J2H+g/eTqnAtsnWQ74OnA2VV1Y1XdBJwNLGzb7ltV366qAk4eOJYkSZIkaQ1ttI7PN7eqfgZQVT9L8sDWvj1w1UC/Za1tuvZlk7RPKslhdKOQzJ07l7GxsTV7FiMwd1M4YrcVfYcxK5n7/ixfvny9/Pc4G5j7/pj7/pj7/pj7fpn//mzouV/XxeJUJrvesFajfVJVdTxwPMD8+fNrwYIFqxHiaL3nlNM5Zsn68nLMLkfstsLc92TRws1ZH/89zgZjY2Pmvifmvj/mvj/mvl/mvz8beu7X9Wqo17YppLSf17X2ZcC8gX47ANespH2HSdolSZIkSWvBui4WzwDGVzQ9GDh9oP2gtirq3sAtbbrqWcA+SbZpC9vsA5zVtt2WZO+2CupBA8eSJEmSJK2hkc29S/IJYAGwbZJldKuavh04NcmhwE+B57fuZwLPAJYCvwReAlBVNyZ5C3B+6/fmqhpfNOfv6VZc3RT4YrtJkiRJktaCkRWLVXXgFJueMknfAg6f4jgnAidO0n4BsOuaxChJkiRJmty6noYqSZIkSdoAWCxKkiRJkoZYLEqSJEmShlgsSpIkSZKGWCxKkiRJkoZYLEqSJEmShlgsSpIkSZKGWCxKkiRJkoZYLEqSJEmShlgsSpIkSZKGWCxKkiRJkoZYLEqSJEmShlgsSpIkSZKGWCxKkiRJkoZYLEqSJEmShlgsSpIkSZKGWCxKkiRJkoZYLEqSJEmShvRSLCa5MsmSJBcnuaC13S/J2Ukubz+3ae1JclySpUm+n2SPgeMc3PpfnuTgPp6LJEmSJN0TbdTjuZ9UVdcPPD4S+GpVvT3Jke3xa4F9gZ3bbS/gA8BeSe4HHAXMBwq4MMkZVXXTunwSklbfkqtv4ZAjv9B3GLPSooWb9x2CJElaz61P01D3A05q908C9h9oP7k65wJbJ9kOeDpwdlXd2ArEs4GF6zpoSZIkSbonSlWt+5MmPwZuohsR/FBVHZ/k5qraeqDPTVW1TZLPA2+vqnNa+1fpRhwXAPepqre29n8B7qiqd05yvsOAwwDmzp37uMWLF4/2Ca6G6268hWvv6DuK2Wnuppj7npj7/uy01Ry22GKLvsOYlZYvX27ue2Lu+2Pu+2X++7O+5v5JT3rShVU1f2X9+pqG+oSquibJA4Gzk/xwmr6ZpK2maR9urDoeOB5g/vz5tWDBglUMd/Tec8rpHLOkz1nBs9cRu60w9z0x9/1ZtHBz1sfPwtlgbGzM3PfE3PfH3PfL/PdnQ899L9NQq+qa9vM64LPAnsC1bXop7ed1rfsyYN7A7jsA10zTLkmSJElaQ+u8WEyyeZItx+8D+wCXAGcA4yuaHgyc3u6fARzUVkXdG7ilqn4GnAXsk2SbtnLqPq1NkiRJkrSG+pj/NRf4bJLx83+8qr6U5Hzg1CSHAj8Fnt/6nwk8A1gK/BJ4CUBV3ZjkLcD5rd+bq+rGdfc0JEmSJOmea50Xi1V1BfCYSdpvAJ4ySXsBh09xrBOBE9d2jJIkSZI0261PX50hSZIkSVpPWCxKkiRJkoZYLEqSJEmShlgsSpIkSZKGWCxKkiRJkoZYLEqSJEmShlgsSpIkSZKGWCxKkiRJkoZYLEqSJEmShmzUdwCSpHVvydW3cMiRX+g7jFlp0cLN+w5BkqQZcWRRkiRJkjTEYlGSJEmSNMRiUZIkSZI0xGJRkiRJkjTEYlGSJEmSNMRiUZIkSZI0xK/OkCRpHfJrS/rj15ZI0qpxZFGSJEmSNMRiUZIkSZI0ZIOfhppkIfBuYA7wkap6e88hSZKk9ZBTgPvjFGBpw7RBF4tJ5gDvA54GLAPOT3JGVf2g38gkSZI0zkK9X0fstsL892RD/0PJhj4NdU9gaVVdUVV3AouB/XqOSZIkSZI2eKmqvmNYbUmeByysqpe2xy8G9qqql0/odxhwWHv4cOBH6zTQmdkWuL7vIGYpc98fc98fc98fc98fc98fc98v89+f9TX3D62qB6ys0wY9DRXIJG1D1W9VHQ8cP/pwVl+SC6pqft9xzEbmvj/mvj/mvj/mvj/mvj/mvl/mvz8beu439Gmoy4B5A493AK7pKRZJkiRJusfY0IvF84Gdk+yUZBPgAOCMnmOSJEmSpA3eBj0NtapWJHk5cBbdV2ecWFWX9hzW6lqvp8new5n7/pj7/pj7/pj7/pj7/pj7fpn//mzQud+gF7iRJEmSJI3Ghj4NVZIkSZI0AhaLkiRJkqQhFos9S3JikuuSXNJ3LLNJknlJvp7ksiSXJnll3zHNJknuk+Q7Sb7X8v+mvmOaTZLMSfLdJJ/vO5bZJsmVSZYkuTjJBX3HM5sk2TrJp5L8sH32/0nfMc0GSR7e3u/jt1uT/FPfcc0WSV7V/p+9JMknktyn75hmiySvbHm/dEN+z3vNYs+S/BmwHDi5qnbtO57ZIsl2wHZVdVGSLYELgf2r6gc9hzYrJAmweVUtT7IxcA7wyqo6t+fQZoUk/wzMB+5bVc/qO57ZJMmVwPyqWh+/oPkeLclJwLeq6iNtBfXNqurmvuOaTZLMAa4G9qqqn/Qdzz1dku3p/n/dparuSHIqcGZVLeo3snu+JLsCi4E9gTuBLwF/X1WX9xrYanBksWdV9U3gxr7jmG2q6mdVdVG7fxtwGbB9v1HNHtVZ3h5u3G7+5WodSLID8EzgI33HIq0rSe4L/BlwAkBV3Wmh2IunAP/PQnGd2gjYNMlGwGb4feTryiOBc6vql1W1AvgG8NyeY1otFoua9ZLsCDwWOK/fSGaXNhXyYuA64OyqMv/rxn8ArwF+23cgs1QBX05yYZLD+g5mFvkD4BfAf7Yp2B9JsnnfQc1CBwCf6DuI2aKqrgbeCfwU+BlwS1V9ud+oZo1LgD9Lcv8kmwHPAOb1HNNqsVjUrJZkC+DTwD9V1a19xzObVNVdVbU7sAOwZ5uyoRFK8izguqq6sO9YZrEnVNUewL7A4e1SBI3eRsAewAeq6rHA7cCR/YY0u7Spv88BTus7ltkiyTbAfsBOwIOBzZO8qN+oZoequgx4B3A23RTU7wEreg1qNVksatZq18p9Gjilqj7TdzyzVZsKNgYs7DmU2eAJwHPadXOLgScn+Vi/Ic0uVXVN+3kd8Fm661k0esuAZQMzGD5FVzxq3dkXuKiqru07kFnkqcCPq+oXVfUb4DPA43uOadaoqhOqao+q+jO6S842uOsVwWJRs1RbYOUE4LKqelff8cw2SR6QZOt2f1O6/9B+2G9U93xV9bqq2qGqdqSbDva1qvKvzOtIks3bglq0KZD70E1V0ohV1c+Bq5I8vDU9BXBBs3XrQJyCuq79FNg7yWbt956n0K3RoHUgyQPbz4cAf8EG+v7fqO8AZrsknwAWANsmWQYcVVUn9BvVrPAE4MXAknbdHMDrq+rMHmOaTbYDTmor490LOLWq/BoH3dPNBT7b/c7GRsDHq+pL/YY0q/wjcEqbDnkF8JKe45k12jVbTwP+ru9YZpOqOi/Jp4CL6KZAfhc4vt+oZpVPJ7k/8Bvg8Kq6qe+AVodfnSFJkiRJGuI0VEmSJEnSEItFSZIkSdIQi0VJkiRJ0hCLRUmSJEnSEItFSZIkSdIQi0VJ0sgkeW6SSvKIER3/zUmeupI+C5KM/Iuo19V5pjn/0UmuTnJxkkuSPGcl/e8Wb5KXJTloNc+9Y5K/nmbbJQPnvCXJd5P8KMk3kzxrdc4pSRo9i0VJ0igdCJwDHDCKg1fVG6vqKyvptgBYF0XcujoPAO17Sic6tqp2B54PnJhkuv/nFzAQb1V9sKpOXs1wdgQmLRYn8a2qemxVPRx4BfDeJE9ZzfNKkkbIYlGSNBJJtgCeABzKQLHYRpe+meSzSX6Q5IPjRU2S5UmOSXJRkq8meUBr3z3JuUm+3/bbprUvSvK8dv/KJG9q+y5J8ogkOwIvA17VRtye2Pb5QJKvJ7kiyZ8nOTHJZUkWDcS5T5Jvt+Od1p7Pqpzn+W2E73tJvjlJfqbLw3TnfmOSc+gKwklV1WV0X8K9bZJnJzmvjeZ9JcncKeI9Osmr23n+MMmXklyY5FvjI8Mtd8cl+Z+Wu+e1U74deGI71qtm+Bahqi4G3gy8fKb7SJLWHYtFSdKo7A98qar+F7gxyR4D2/YEjgB2A/4Q+IvWvjlwUVXtAXwDOKq1nwy8tqoeDSwZaJ/o+rbvB4BXV9WVwAdpI25V9a3WbxvgycCrgM8BxwKPAnZrhem2wBuAp7bjXQD88yqe543A06vqMcBUU0KH8jCDc/+qqv60qhZPcUyS7AX8FvgF3cju3lX1WGAx8Jpp8jLueOAfq+pxwKuB9w9s2w74U+BZdEUiwJF0I4a7V9WxU8U1hYuAkUxTliStmY36DkCSdI91IPAf7f7i9vii9vg7VXUFQJJP0BUfn6IrcD7Z+nwM+EySrYCtq+obrf0k4LQpzvmZ9vNCfl+ATuZzVVVJlgDXVtWSFsuldFMqdwB2Af47CcAmwLdX8Tz/DSxKcupA/4kmy8OvVnLuT048yIBXJXkRcBvwgvYcdwA+mWS7dqwfT7P/+Ijw44HT2vkB7j3Q5b+q6rfAD5LMne5YM5SVd5Ek9cFiUZK01iW5P93I3a5JCpgDVJLXtC41YZeJj1fWPpVft593Mf3/ceP9fjtwf/zxRm3/s6vqwNU9T1W9rI3wPRO4OMnuVXXDxG6TPM5Kzn37FO3QjRS+c0Lbe4B3VdUZSRYAR0+zP3Szjm5u1z5OZjBfa6PQeyxw2Vo4jiRpLXMaqiRpFJ4HnFxVD62qHatqHt2I1p+27Xsm2aldo/cCuqmS0P2/NH4d3F8D51TVLcBNSZ7Y2l9MN0V1pm4DtlzF+M8FnpDkYQBJNkvyR6tyniR/WFXnVdUbgeuBeZPsM1keVufc09kKuLrdP3iqeMdV1a3Aj5M8v50/SR6zknOsTo5J8mjgX4D3req+kqTRs1iUJI3CgcBnJ7R9mt+vmPltuuvdLqErIsf73g48KsmFdCOTb27tBwP/nuT7wO4D7TPxOeC54wu5zGSHqvoFcAjwiXbOc1n5dXUTz/PvbQGcS4BvAt+bZJ+hPKzmuadzNN2U0m/RFa1TxTvohcChSb4HXArst5JzfB9Y0RbzWdkCN09si+38iK5IfEVVfXWmT0aStO6kalVn+EiStPraVMhXV9XQ9+slWV5VW6z7qNa96fIgSdL6wJFFSZIkSdIQRxYlSZIkSUMcWZQkSZIkDbFYlCRJkiQNsViUJEmSJA2xWJQkSZIkDbFYlCRJkiQN+f8B3LSj4DHPJzUAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Histogram of patient id.\n", "df_vit['patientid'].value_counts().hist(bins = [1, 2, 3, 4, 5, 6, 7, 8, 9], # 9 Levels of bons to be showed\n", " figsize= [15,4], # Strech a image to horizontal\n", " cumulative = False); # Do not cumulative\n", "\n", "plt.title('Graphic 1 - Vitória City Appointments per Patient ID Histogram') # Add title\n", "plt.xlabel('Appointments per Patient ID') # X axis Label\n", "plt.ylabel('Frequency'); # Y axis Label" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Although it seems to be **not** clear that only a few patients have several appointments. I will plot the `patientid` with most appointments to analyse this in details." ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "822145925426128 88\n", "99637671331 84\n", "26886125921145 70\n", "33534783483176 65\n", "258424392677 62\n", "Name: patientid, dtype: int64" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# This is the patientid with multiple appointments.\n", "df_vit['patientid'].value_counts().head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As you can see, there are some patients with high frequency, for this reason, I would like to test the theory of [80/20][1], so I will `.sum()` the first 20% of `patientid` with higher frequency.\n", "\n", "[1]: https://en.wikipedia.org/wiki/Pareto_principle" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of appointments : 48767\n", "Number of appointments (%): 44%\n" ] } ], "source": [ "# Number of unique patient id \n", "unq_pat = df_vit['patientid'].nunique()\n", "\n", "# Summation of the 20% patients with higher number of appointments\n", "res = sum(df_vit['patientid'].value_counts().head(int(unq_pat * 0.20))) # I use the int() to ensure a integer number as index.\n", "\n", "# Print\n", "print('Number of appointments : {}'.format(res))\n", "print('Number of appointments (%): {}%'.format(round(100*res/110526),2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The 20% with higher frequency (`patientid` with many appointments) are responsible for 44% of the total appointments, it is far from the 80%, but it shows a kind of \"asymmetry\".\n", "\n", "### Question 1\n", "\n", ">**Are patients with many appointments are more likely to show-up then the patients with less than two appointments?**\n", "\n", "Let's divide the dataset into two groups using a threshold of at least 3 appointments to classify each patientid.\n", "\n", "* First group (`df_gp1`) that one with a higher number of appointments, and;\n", "* Second group (`df_gp2`) that one with a lower number of appointments." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False 51814\n", "True 10484\n", "Name: patientid, dtype: int64" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Counts the number of appointment for each patient id. # I have decided to split in several lines\n", "n_appoin_per_pat_id = df_vit['patientid'].value_counts() # because in the future this is much easier for \n", " # me to revise this code, and to understand.\n", "# Creates a \"vector\" of boolean (True or False) for each patient id.\n", "is_greater_3 = n_appoin_per_pat_id >= 3\n", "is_not_great_3 = n_appoin_per_pat_id < 3\n", "\n", "# Quantity of Patients with more or equal 3 appointments.\n", "is_greater_3.value_counts()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are 10,484 patients with more than or equal to 3 appointments and 51,814 patients with less than 3 appointments.\n", "\n", "_Obs.: I have read [this](https://stackoverflow.com/questions/26640145/python-pandas-how-to-get-the-row-names-from-index-of-a-dataframe) thread in Stack overflow to understand how to extract the \"rows names.\"_" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[822145925426128,\n", " 99637671331,\n", " 26886125921145,\n", " 33534783483176,\n", " 258424392677,\n", " 75797461494159,\n", " 871374938638855,\n", " 6264198675331,\n", " 66844879846766,\n", " 872278549442]" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Creating a list of patientid with more than 3 appointments.\n", "more_3 = list(n_appoin_per_pat_id[is_greater_3].index) # List of patient id with more than 3 appointments\n", "less_3 = list(n_appoin_per_pat_id[is_not_great_3].index) # List of patient id less than 3 appointments\n", "\n", "# First 10 patients id with more than 3 appointments.\n", "more_3[:10] # Slicing an Example" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `more_3` and `less_3` are two lists of `patientid`, they will be used to select the rows of `df_vit`." ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n" ] } ], "source": [ "# Testing if any less of information.\n", "print(df_vit['patientid'].nunique() == len(more_3) + len(less_3)) # The total must be equal to these two subsets." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I have inserted a test to ensure if these two subsetted data frames have the same quantity of observation from the original dataframe. If the results are `True`, is everything OK!" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Dataframe with higher number appointments: 10484\n", "Dataframe with lower number appointments: 51814\n" ] } ], "source": [ "# Print the number of patient id in each list.\n", "print(\"Dataframe with higher number appointments: {}\\nDataframe with lower number appointments: {}\".format(len(more_3),len(less_3)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "These two vectors (`more_3` and `less_3`) will be used to \"filter\" and separate which rows pertain to `df_gp1` or `df_gp2`.\n", "\n", "_Obs.: I have read [this](https://stackoverflow.com/questions/12065885/filter-dataframe-rows-if-value-in-column-is-in-a-set-list-of-values) Stack overflow thread to learn how to use `.isin()`._" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "df_gp1\n", "Observations: 44817\n", "Columns: 14\n", "\n", "df_gp2\n", "Observations: 65709\n", "Columns: 14\n" ] } ], "source": [ "# Subsetting the Dataframe with the Patients with more than 3 appointments\n", "df_gp1 = df_vit[df_vit['patientid'].isin(more_3)]\n", "\n", "# Subsetting the Dataframe with the Patients with less than 3 appointments\n", "df_gp2 = df_vit[df_vit['patientid'].isin(less_3)]\n", "\n", "# Printing the dimension of each dataframe\n", "print(\"df_gp1\\nObservations: {}\\nColumns: {}\\n\\ndf_gp2\\nObservations: {}\\nColumns: {}\".format(*df_gp1.shape,*df_gp2.shape))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Both data frames are ready to calculate the no-show rate." ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "No-show: 21.09%\n" ] } ], "source": [ "# Assign the results of value count to a variable, I need it to make calculations\n", "df_gp1_res_no_show = df_gp1.no_show.value_counts()\n", "\n", "# Percentage Calculation\n", "df_gp1_res_no_show_p = 100 * df_gp1_res_no_show[1]/(df_gp1_res_no_show[0] + df_gp1_res_no_show[1])\n", "\n", "# Print results and rounding.\n", "print(\"No-show: {}%\".format(round(df_gp1_res_no_show_p,2)))" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "No-show: 19.58%\n" ] } ], "source": [ "# Assign the results of value count to a variable, I need it to make calculations\n", "df_gp2_res_no_show = df_gp2.no_show.value_counts()\n", "\n", "# Percentage Calculation\n", "df_gp2_res_no_show_p = 100 * df_gp2_res_no_show[1]/(df_gp2_res_no_show[0] + df_gp2_res_no_show[1])\n", "\n", "print(\"No-show: {}%\".format(round(df_gp2_res_no_show_p,2)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Although the difference between these two results is slight, patients from the group `df_gp1` have a higher percentage of a no-show from the `df_gp2`. Going to the opposite way from my expectations (and negating my question).\n", "\n", "I will make a sensible analysis, varying the threshold of 3 appointments to 4, 5 and so on, therefore I will create a function to encapsulate this lines of codes." ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "# I decided to encapsulate in one function because it will save me line codes.\n", "def attendance(data, n, complete = False):\n", " \"\"\"\n", " -----------------------------------------------------------------------------------------------------\n", " |DESCRIPTION: |\n", " | |\n", " | This function calculate the no-show rate separating the dataframe into two group based on a |\n", " | threshold n. |\n", " | |\n", " -----------------------------------------------------------------------------------------------------\n", " |INPUT: |\n", " | |\n", " | VARIABLE TYPE DESCRIPTION |\n", " | |\n", " | data dataframe This dataset must be the 'noshowappointments-kagglev2-may-2016.csv' |\n", " | imported file but it is required an treatment before use this function.|\n", " | The columns name should be renamed to lower case. |\n", " | |\n", " | n int The threshold number of appointment to classify each patient id. |\n", " | |\n", " | complete bool If False return percentage and If True also returns data frames. |\n", " | |\n", " -----------------------------------------------------------------------------------------------------\n", " |OUTPUT: |\n", " | |\n", " | VARIABLE TYPE DESCRIPTION |\n", " | |\n", " | [m_no_show_p, list The first element of the list is the percentage of no-show of patients|\n", " | l_no_show_p] with more than or equal to n appointments in the data , the second |\n", " | element is the percentage of the group with less than n appointments. |\n", " | |\n", " | df_more, data frame The former with patientid with more or equal n appointments and the |\n", " | df_less latter with patientid with less than n appointments. |\n", " | |\n", " -----------------------------------------------------------------------------------------------------\n", " \"\"\"\n", " greater = data['patientid'].value_counts() >= n # Creating a vector to filter the rows\n", " lesser = data['patientid'].value_counts() < n # Creating a vector to filter the rows\n", " \n", " # Extracting the patient id as list\n", " more = list((data['patientid'].value_counts())[greater].index)\n", " less = list((data['patientid'].value_counts())[lesser].index)\n", " \n", " # Subsetting the data into two dataframes.\n", " df_more = data[data['patientid'].isin(more)]\n", " df_less = data[data['patientid'].isin(less)]\n", " \n", " # Calculation of no-show from the first dataframe (Patients with more than or equal to n appointments)\n", " m_no_show = df_more.no_show.value_counts()\n", " m_no_show_p = 100 * m_no_show[1]/(m_no_show[0] + m_no_show[1])\n", " \n", " # Calculation of no-show from the first dataframe (Patients with less than n appointments)\n", " l_no_show = df_less.no_show.value_counts()\n", " l_no_show_p = 100 * l_no_show[1]/(l_no_show[0] + l_no_show[1])\n", " \n", " if complete == False:\n", " return [round(m_no_show_p,2), round(l_no_show_p,2)] # Return results in percentage and in a list.\n", " else:\n", " return [round(m_no_show_p,2), round(l_no_show_p,2), df_more, df_less]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The function `attendance` will calculate for each quantity of appointments the probability of these two groups." ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "# Variable Initialization\n", "res_no_show_2_88 = []\n", "\n", "# Loop to generate for each index value (threshold) the probabilities.\n", "for index in range(2,88):\n", " res_no_show_2_88.append(attendance(df_vit, index))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The variable `res_no_show_2_88` is a list with each element a pair of no-show percentage. For this reason, I need to unpack this list to plot in the graphic." ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "# Unpacking the res_no_show_2_88 variable\n", "no_show_2_88, show_up_2_88 = zip(*res_no_show_2_88)\n", "\n", "# X axis variable\n", "threshold = np.arange(2,88)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I have created two variables (`no_show_2_88` and `show_up_2_88`) to be plotted and a third variable to simulate my threshold number (`threshold`)." ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Defining the size of the Plot.\n", "plt.figure(figsize= [12,4])\n", "\n", "# red dashes, blue squares and green triangles\n", "plt.plot(threshold, no_show_2_88, 'r--',threshold,show_up_2_88, 'bs')\n", "\n", "plt.xlabel('Number of appointments by Patient ID') # X label\n", "plt.ylabel('No-show [%]') # Y label\n", "plt.title('Graphic 2 - No-show rate by Patient ID') # Graphic Title\n", "plt.text(25, 5.5, r'Knee') # Text \n", "plt.grid(True) # Grid\n", "plt.legend(('Group1', 'Group2')) # Legend\n", "\n", "plt.show() # Plot the graphic" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The graphic above shows the behaviour of the no-show rate when the threshold varies from 2 to 88. Keep in mind, that I defined threshold as the number of appointments by each patient.\n", "\n", "#### Analyzing the red line (Group 1):\n", "\n", "* Roughly, from 7 to 25 there is a negative linear relationship between the patient with more appointment and no-show rate;\n", " * Patient tend to do not miss an appointment;\n", "* Patients with more than 25 appointments have a very low no-show rate.\n", "\n", "#### Analyzing the blue line (Group 2):\n", "\n", "* Do not show any changes varying the threshold.\n", "\n", "### Answer Question 1\n", "\n", ">As I expected the higher appointment frequency given of a `patientid` leads a higher shop-ups (or lower no-show), this is probably a consequence from the illness severity (chemotherapy, radiotherapy, dialysis, etc.), which obliges the patient to go several times to the hospital.\n", "\n", "I have recognised a shortage of information, that is why I will stop here this analysis to collect new data. Later, I will come back to a deeper analysis because I think there is an opportunity for more exploratory analysis.\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data Merging\n", "\n", "I have gathered some additional data from [Vitória Council Website](http://legado.vitoria.es.gov.br/regionais/home.asp), let's load them to make a new analysis. I have not yet figure out the second question and binding this additional data could lead me a new insight." ] }, { "cell_type": "code", "execution_count": 39, "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", "
id_rareg_admnbhpop_2000pop_2010malefemaleavg_inc_mon
01CentroCentro92409838441654221791,15
11CentroDo Moscoso854795369426647,05
21CentroFonte Grande14591231592639706,03
31CentroIlha do Príncipe2810261311941419623,21
41CentroParque Moscoso170817737919821754,79
\n", "
" ], "text/plain": [ " id_ra reg_adm nbh pop_2000 pop_2010 male female \\\n", "0 1 Centro Centro 9240 9838 4416 5422 \n", "1 1 Centro Do Moscoso 854 795 369 426 \n", "2 1 Centro Fonte Grande 1459 1231 592 639 \n", "3 1 Centro Ilha do Príncipe 2810 2613 1194 1419 \n", "4 1 Centro Parque Moscoso 1708 1773 791 982 \n", "\n", " avg_inc_mon \n", "0 1791,15 \n", "1 647,05 \n", "2 706,03 \n", "3 623,21 \n", "4 1754,79 " ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Loading the Vitoria Auxiliary data.\n", "vit_aux = pd.read_csv('02-Datasets/vit_aux.csv', sep=\";\");\n", "\n", "# Print the first 5 rows.\n", "vit_aux.head()" ] }, { "cell_type": "code", "execution_count": 40, "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", "
patientidappointmentidgenderscheduleddayappointmentdayageneighbourhoodscholarshiphipertensiondiabetesalcoholismhandcapsms_receivedno_show
0298724998242965642903F2016-04-29 18:38:082016-04-2962JARDIM DA PENHAFalseTrueFalseFalse00No
15589977766944385642503M2016-04-29 16:08:272016-04-2956JARDIM DA PENHAFalseFalseFalseFalse00No
\n", "
" ], "text/plain": [ " patientid appointmentid gender scheduledday appointmentday \\\n", "0 29872499824296 5642903 F 2016-04-29 18:38:08 2016-04-29 \n", "1 558997776694438 5642503 M 2016-04-29 16:08:27 2016-04-29 \n", "\n", " age neighbourhood scholarship hipertension diabetes alcoholism \\\n", "0 62 JARDIM DA PENHA False True False False \n", "1 56 JARDIM DA PENHA False False False False \n", "\n", " handcap sms_received no_show \n", "0 0 0 No \n", "1 0 0 No " ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_vit.head(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Comparing these two datasets, I realized the only variable in common is the neighborhood (or neighbourhood in Britain English), sadly the variable name and the content is not equivalent. It means I need to edit the column from both data frames. Again, I will use a tailored function to deal with this problem." ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [], "source": [ "def lower_ahu(data):\n", " \"\"\"\n", " -----------------------------------------------------------------------------------------------------\n", " |DESCRIPTION: |\n", " | |\n", " | This function converts any uppercase letter to lowercase, converts space into underscore and |\n", " | change any non-standard letter such as: á,é,í,ó,ú,ã,õ,ç etc. to a \"regular\" letter without the|\n", " | accent. |\n", " | |\n", " -----------------------------------------------------------------------------------------------------\n", " |INPUT: |\n", " | |\n", " | VARIABLE TYPE DESCRIPTION |\n", " | |\n", " | data list The input expected a list with strings. |\n", " | |\n", " | |\n", " -----------------------------------------------------------------------------------------------------\n", " |OUTPUT: |\n", " | |\n", " | VARIABLE TYPE DESCRIPTION |\n", " | |\n", " | data list The converted version of the list, without any word with weird accent. |\n", " | |\n", " -----------------------------------------------------------------------------------------------------\n", " \"\"\"\n", " # This helps to reduce the number of \"types\" of letters.\n", " data = [x.lower() for x in data]\n", " \n", " # My list of non standard letter and its accents.\n", " non_standard = [['ã','a'],['á','a'],['à','a'],['â','a'],\n", " ['é','e'],['è','e'],['ê','e'],\n", " ['í','i'],['ì','i'],\n", " ['õ','o'],['ó','o'],['ò','o'],['ô','o'],\n", " ['ú','u'],['ù','u'],\n", " ['ç','c'],\n", " [\" \",'_'],[\"-\",'_'],[\"'\",'_'],[\"`\",'_'],[\"´\",'_'],[\",\",'.']]\n", " \n", " for wrong,correct in non_standard:\n", " data = [x.replace(wrong,correct) for x in data] # Where the magic happens! \n", " \n", " return data # Return the data without acccents." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "After defining a function, let's use it." ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Converting the content of the nbh varible to lowercase and removing portuguese accents.\n", "vit_aux['nbh'] = lower_ahu(vit_aux['nbh'])\n", "vit_aux['reg_adm'] = lower_ahu(vit_aux['reg_adm'])\n", "\n", "# Converting the content of the neighbourhood varible to lowercase and removing portuguese accents.\n", "df_vit['neighbourhood'] = lower_ahu(df_vit['neighbourhood'])\n", "\n", "# Let's compare both categories.\n", "sorted(list(vit_aux.nbh.unique())) is sorted(list(df_vit.neighbourhood.unique()))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Unfortunately, is `False`. Let's dig to find out the problem of different numbers of neighborhoods." ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Auxiliary Dataframe: 80\n", "Vitória Hospital Appointment: 81\n" ] } ], "source": [ "# Number of neighborhood in each dataframe.\n", "nbh_comparison = len(vit_aux.nbh.unique()),len(df_vit.neighbourhood.unique())\n", "\n", "print(\"Auxiliary Dataframe: {}\\nVitória Hospital Appointment: {}\".format(*nbh_comparison))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So, there is one neighborhood lacking in `vit_aux` data frame, and this neighborhood, after few minutes comparing these two lists, is `ilhas_oceanicas_de_trindade`. Curiously, this island is 1,200 kilometers far from the coast, it means this is an ultra-marine territory, a place where only 32 Marines lives and no one else." ] }, { "cell_type": "code", "execution_count": 44, "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", "
patientidappointmentidgenderscheduleddayappointmentdayageneighbourhoodscholarshiphipertensiondiabetesalcoholismhandcapsms_receivedno_show
487545349868551145583947F2016-04-14 12:25:432016-05-1351ilhas_oceanicas_de_trindadeFalseFalseFalseFalse00Yes
4876572564297524815583948F2016-04-14 12:26:132016-05-1358ilhas_oceanicas_de_trindadeFalseFalseFalseFalse00Yes
\n", "
" ], "text/plain": [ " patientid appointmentid gender scheduledday appointmentday \\\n", "48754 534986855114 5583947 F 2016-04-14 12:25:43 2016-05-13 \n", "48765 7256429752481 5583948 F 2016-04-14 12:26:13 2016-05-13 \n", "\n", " age neighbourhood scholarship hipertension diabetes \\\n", "48754 51 ilhas_oceanicas_de_trindade False False False \n", "48765 58 ilhas_oceanicas_de_trindade False False False \n", "\n", " alcoholism handcap sms_received no_show \n", "48754 False 0 0 Yes \n", "48765 False 0 0 Yes " ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Print all observation from ilhas_oceanicas_de_trindade.\n", "df_vit[df_vit['neighbourhood'] == 'ilhas_oceanicas_de_trindade']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As you can see, there are only 2 observations, from two different patients, and both no-showed. Due to the inconsistency of this two observations, I will remove them because I am convinced doing it will not affect my results." ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Rows: 110524\n", "Columns: 14\n" ] } ], "source": [ "# Creating a vector to remove only the observations with the ilhas_oceanicas_de_trindade as neighbourhood.\n", "rm_trindade = list(map(lambda x : not(x), df_vit['neighbourhood'] == 'ilhas_oceanicas_de_trindade'))\n", "\n", "# Subsetting using the vector rm_trindade to remove this observations.\n", "df_vit = df_vit[rm_trindade]\n", "\n", "# Print dimensions\n", "print(\"Rows: {}\\nColumns: {}\".format(*df_vit.shape))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, I can compare the neighborhood columns of this two data frames." ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Comparing the categories of these two columns. If true, I could join them.\n", "sorted(list(df_vit.neighbourhood.unique())) == sorted(list(vit_aux.nbh.unique()))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is OK, so I will continue to rename the columns to have the same name (`neighbourhood` will be replaced by `nbh`)." ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [], "source": [ "# Creating a vector to assign a new name to the variable neighbourhood\n", "new_name_column = list(df_vit.columns)\n", "\n", "# Renaming the columns names\n", "new_name_column[6] = 'nbh'\n", "\n", "# Defining variables names.\n", "df_vit.columns = new_name_column" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Before any merge, I will convert the `avg_inc_mon` to `float64`. You can see `avg_inc_mon` is originally imported as `str/obj`." ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 80 entries, 0 to 79\n", "Data columns (total 8 columns):\n", "id_ra 80 non-null int64\n", "reg_adm 80 non-null object\n", "nbh 80 non-null object\n", "pop_2000 80 non-null int64\n", "pop_2010 80 non-null int64\n", "male 80 non-null int64\n", "female 80 non-null int64\n", "avg_inc_mon 80 non-null object\n", "dtypes: int64(5), object(3)\n", "memory usage: 5.1+ KB\n" ] } ], "source": [ "vit_aux.info()" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [], "source": [ "# Converting the number Brazillian formatting to USA - Changing , to .\n", "vit_aux['avg_inc_mon'] = lower_ahu(vit_aux['avg_inc_mon'])\n", "\n", "# Converting str/obj to float\n", "vit_aux['avg_inc_mon'] = vit_aux['avg_inc_mon'].astype(float)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Everything is set-up and ready to the merge.\n", "\n", "_Obs.: I have read in pandas website how to merge, [this][merge9] is the thread I have read._\n", "\n", "[merge9]: https://pandas.pydata.org/pandas-docs/stable/merging.html#database-style-dataframe-joining-merging" ] }, { "cell_type": "code", "execution_count": 50, "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", "
patientidappointmentidgenderscheduleddayappointmentdayagenbhscholarshiphipertensiondiabetes...handcapsms_receivedno_showid_rareg_admpop_2000pop_2010malefemaleavg_inc_mon
0298724998242965642903F2016-04-29 18:38:082016-04-2962jardim_da_penhaFalseTrueFalse...00No9jardim_da_penha246233057113702168692510.89
15589977766944385642503M2016-04-29 16:08:272016-04-2956jardim_da_penhaFalseFalseFalse...00No9jardim_da_penha246233057113702168692510.89
242629622999515642549F2016-04-29 16:19:042016-04-2962mata_da_praiaFalseFalseFalse...00No9jardim_da_penha931710594500555894119.31
38679512131745642828F2016-04-29 17:29:312016-04-298pontal_de_camburiFalseFalseFalse...00No9jardim_da_penha9928894524371498.52
488411864481835642494F2016-04-29 16:07:232016-04-2956jardim_da_penhaFalseTrueTrue...00No9jardim_da_penha246233057113702168692510.89
\n", "

5 rows × 21 columns

\n", "
" ], "text/plain": [ " patientid appointmentid gender scheduledday appointmentday \\\n", "0 29872499824296 5642903 F 2016-04-29 18:38:08 2016-04-29 \n", "1 558997776694438 5642503 M 2016-04-29 16:08:27 2016-04-29 \n", "2 4262962299951 5642549 F 2016-04-29 16:19:04 2016-04-29 \n", "3 867951213174 5642828 F 2016-04-29 17:29:31 2016-04-29 \n", "4 8841186448183 5642494 F 2016-04-29 16:07:23 2016-04-29 \n", "\n", " age nbh scholarship hipertension diabetes ... \\\n", "0 62 jardim_da_penha False True False ... \n", "1 56 jardim_da_penha False False False ... \n", "2 62 mata_da_praia False False False ... \n", "3 8 pontal_de_camburi False False False ... \n", "4 56 jardim_da_penha False True True ... \n", "\n", " handcap sms_received no_show id_ra reg_adm pop_2000 pop_2010 \\\n", "0 0 0 No 9 jardim_da_penha 24623 30571 \n", "1 0 0 No 9 jardim_da_penha 24623 30571 \n", "2 0 0 No 9 jardim_da_penha 9317 10594 \n", "3 0 0 No 9 jardim_da_penha 992 889 \n", "4 0 0 No 9 jardim_da_penha 24623 30571 \n", "\n", " male female avg_inc_mon \n", "0 13702 16869 2510.89 \n", "1 13702 16869 2510.89 \n", "2 5005 5589 4119.31 \n", "3 452 437 1498.52 \n", "4 13702 16869 2510.89 \n", "\n", "[5 rows x 21 columns]" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Merging the two datasets.\n", "df_vit = pd.merge(df_vit, vit_aux, how='left', on=['nbh', 'nbh'])\n", "\n", "# Print the first 5 rows\n", "df_vit.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, the `df_vit` has few more variables, such as:\n", "\n", "* Region Administration Name;\n", "* Population in 2000 and 2010 this Regional Administration;\n", "* Number of male residents;\n", "* Number of female residents, and;\n", "* Monthly Average Income in BRL.\n", "\n", "Let's see the `.describe()` and `.info()` to ensure if there are any problems during the merging process." ] }, { "cell_type": "code", "execution_count": 51, "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", "
patientidappointmentidagehandcapsms_receivedid_rapop_2000pop_2010malefemaleavg_inc_mon
count1.105240e+051.105240e+05110524.000000110524.000000110524.000000110524.000000110524.000000110524.000000110524.000000110524.000000110524.000000
mean1.474960e+145.675306e+0637.0889040.0222490.3210344.6000876682.4622348183.3126653825.9688574357.3438081063.303482
std2.560959e+147.129503e+0423.1101110.1615450.4668762.3099886619.25133010209.9172574705.4746795506.939496793.033265
min3.921700e+045.030230e+060.0000000.0000000.0000001.0000000.0000000.0000000.0000000.0000000.000000
25%4.172693e+125.640287e+0618.0000000.0000000.0000003.0000002486.0000002565.0000001198.0000001327.000000558.110000
50%3.173184e+135.680574e+0637.0000000.0000000.0000004.0000004087.0000004402.0000002102.0000002290.000000741.850000
75%9.439068e+135.725523e+0655.0000000.0000001.0000007.0000007585.0000007913.0000003771.0000004142.0000001300.280000
max9.999816e+145.790484e+06115.0000004.0000001.0000009.00000024623.00000039157.00000018230.00000020927.00000010843.740000
\n", "
" ], "text/plain": [ " patientid appointmentid age handcap \\\n", "count 1.105240e+05 1.105240e+05 110524.000000 110524.000000 \n", "mean 1.474960e+14 5.675306e+06 37.088904 0.022249 \n", "std 2.560959e+14 7.129503e+04 23.110111 0.161545 \n", "min 3.921700e+04 5.030230e+06 0.000000 0.000000 \n", "25% 4.172693e+12 5.640287e+06 18.000000 0.000000 \n", "50% 3.173184e+13 5.680574e+06 37.000000 0.000000 \n", "75% 9.439068e+13 5.725523e+06 55.000000 0.000000 \n", "max 9.999816e+14 5.790484e+06 115.000000 4.000000 \n", "\n", " sms_received id_ra pop_2000 pop_2010 \\\n", "count 110524.000000 110524.000000 110524.000000 110524.000000 \n", "mean 0.321034 4.600087 6682.462234 8183.312665 \n", "std 0.466876 2.309988 6619.251330 10209.917257 \n", "min 0.000000 1.000000 0.000000 0.000000 \n", "25% 0.000000 3.000000 2486.000000 2565.000000 \n", "50% 0.000000 4.000000 4087.000000 4402.000000 \n", "75% 1.000000 7.000000 7585.000000 7913.000000 \n", "max 1.000000 9.000000 24623.000000 39157.000000 \n", "\n", " male female avg_inc_mon \n", "count 110524.000000 110524.000000 110524.000000 \n", "mean 3825.968857 4357.343808 1063.303482 \n", "std 4705.474679 5506.939496 793.033265 \n", "min 0.000000 0.000000 0.000000 \n", "25% 1198.000000 1327.000000 558.110000 \n", "50% 2102.000000 2290.000000 741.850000 \n", "75% 3771.000000 4142.000000 1300.280000 \n", "max 18230.000000 20927.000000 10843.740000 " ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_vit.describe()" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Int64Index: 110524 entries, 0 to 110523\n", "Data columns (total 21 columns):\n", "patientid 110524 non-null int64\n", "appointmentid 110524 non-null int64\n", "gender 110524 non-null category\n", "scheduledday 110524 non-null datetime64[ns]\n", "appointmentday 110524 non-null datetime64[ns]\n", "age 110524 non-null int64\n", "nbh 110524 non-null object\n", "scholarship 110524 non-null bool\n", "hipertension 110524 non-null bool\n", "diabetes 110524 non-null bool\n", "alcoholism 110524 non-null bool\n", "handcap 110524 non-null int64\n", "sms_received 110524 non-null int64\n", "no_show 110524 non-null category\n", "id_ra 110524 non-null int64\n", "reg_adm 110524 non-null object\n", "pop_2000 110524 non-null int64\n", "pop_2010 110524 non-null int64\n", "male 110524 non-null int64\n", "female 110524 non-null int64\n", "avg_inc_mon 110524 non-null float64\n", "dtypes: bool(4), category(2), datetime64[ns](2), float64(1), int64(10), object(2)\n", "memory usage: 14.1+ MB\n" ] } ], "source": [ "df_vit.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Everything looks pretty good but before any question, I would like to point out some consideration:\n", "\n", "* The Monthly Average Income is an information based on the residents of the neighbourhood, and I assume all patient will choose the closest UBS from its residents to go, and;\n", "* Male and Female have the same Monthly Average Income.\n", "\n", "So let's start some interesting analysis, with these new features." ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Monthly Average Income Histogram \n", "df_vit['avg_inc_mon'].hist(bins = 11, figsize = [12,4]);\n", "plt.xlim(0,5000)\n", "\n", "plt.title('Graphic 3 - Histogram of Monthly Average Income') # Add title\n", "plt.xlabel('Number of Patients') # X axis Label\n", "plt.ylabel('Frequency'); # Y axis Label" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Concretely, the majority of the public attended by the public health systems in Vitória has average income bearing 1000 BRL/month.\n", "\n", "However, in some cases one `patientid` has multiple entries, it means this patient went several times to the hospital, and so I must remove these duplicated `patientid` to a further analysis, for instance, to calculate the `.mean()` and `.count()`.\n", "\n", "Let's remove the duplicated `patientid` from the `data_vit`. " ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(62296, 21)" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Creating a vector to sinalize if there is a duplicated patientid\n", "dupe = df_vit['patientid'].duplicated()\n", "\n", "# Converting to Not -> True to False.\n", "dupe = list(map( lambda x : not(x) , dupe ) )\n", "\n", "# Selecting the unique patients, no duplicated.\n", "df_clean = df_vit[dupe]\n", "\n", "# Dimensions of the cleaned data set.\n", "df_clean.shape # The number of rows from shape is the same from len(df_vit['patientid'].unique())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I want to calculated the average age and the average income from all differents patients." ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "36.7 years\n", "1068.71 BRL\n" ] } ], "source": [ "# Average Age Calculation\n", "print(\"{} years\".format(round(df_clean['age'].mean(),2)))\n", "print(\"{} BRL\".format(round(df_clean['avg_inc_mon'].mean(),2)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I will encapsulate a function to deal with removing duplicated `patientid`." ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [], "source": [ "# Defining a function to eliminate the duplicates patientid.\n", "def no_dupe_pat(data_dupe):\n", " \"\"\"\n", " -----------------------------------------------------------------------------------------------------\n", " |DESCRIPTION: |\n", " | |\n", " | This function removes all duplicated rows of a given patientid. |\n", " | |\n", " -----------------------------------------------------------------------------------------------------\n", " |INPUT: |\n", " | |\n", " | VARIABLE TYPE DESCRIPTION |\n", " | |\n", " | data_dupe data frame Any data frame with at least the patientid column. |\n", " | |\n", " | |\n", " -----------------------------------------------------------------------------------------------------\n", " |OUTPUT: |\n", " | |\n", " | VARIABLE TYPE DESCRIPTION |\n", " | |\n", " | data_dupe data frame A data frame with no duplicated patientid. |\n", " | |\n", " -----------------------------------------------------------------------------------------------------\n", " \"\"\"\n", " # Creating a vector to sinalize if there is a duplicated patientid\n", " dupe_less = data_dupe['patientid'].duplicated()\n", "\n", " # Converting to Not -> True to False.\n", " dupe_less = list(map( lambda x : not(x) , dupe_less ) )\n", "\n", " # Selecting the unique patients, no duplicated and return.\n", " return data_dupe[dupe_less]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With this function, I can calculate more accurate values of the average mean, average income, etc.\n", "\n", "I will come back to the first question I have made to go deeper and to answer some new questions. I will reproduce the Graphic 2 as a starter." ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Defining the size of the Plot.\n", "plt.figure(figsize= [12,4])\n", "\n", "# red dashes, blue squares and green triangles\n", "plt.plot(threshold, no_show_2_88, 'r--',threshold,show_up_2_88, 'bs')\n", "\n", "plt.xlabel('Number of appointments by Patient ID') # X label\n", "plt.ylabel('No-show [%]') # Y label\n", "plt.title('Graphic 2 - No-show rate by Patient ID') # Graphic Title\n", "plt.text(25, 5.5, r'Knee') # Text \n", "plt.grid(True) # Grid\n", "plt.legend(('Group1', 'Group2')) # Legend\n", "\n", "plt.show() # Plot the graphic" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I am going to split the dataset approximately in the knee (I guess 25 is a good approximation) value of the graphic. " ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [], "source": [ "# Calculating the percentage of no-show and data frames.\n", "no_show_more_25,no_show_less_25,df_more_25,df_less_25 = attendance(df_vit, 25, complete= True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "After munging the data, I come up with a question.\n", "\n", "### Question 2\n", "\n", ">**Are patients with many appointments in average older than those with few appointments?**" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Average Age for Patients with more or equal to 25 appointments: 46.99 years\n", "Average Age for Patients with less than 25 appointments: 36.96 years\n" ] } ], "source": [ "# Create a list of the average age of each data frame. \n", "avg_age_25 = [round(df_more_25['age'].mean(),2), round(df_less_25['age'].mean(),2)]\n", "\n", "# Print\n", "print(\"Average Age for Patients with more or equal to 25 appointments: {} years\".format(avg_age_25[0]))\n", "print(\"Average Age for Patients with less than 25 appointments: {} years\".format(avg_age_25[1]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Well, let's take a look in the distribution.\n", "\n", "Before it, I will explain my function `no_dupe_pat()`, this function aims to remove any duplicated rows given a `patientid`, it means: If a `patientid` has 88 appointments, 87 will be excluded." ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Remove duplicates entries in patientid and plot the histogram of ages - Only patients with more or equal 25 apppointments.\n", "no_dupe_pat(df_more_25).age.hist(figsize =[12,4]);\n", "\n", "plt.title('Graphic 4 - Histogram of Age for Patients with more than or equal to 25 appointments') # Add title\n", "plt.xlabel('Age [years]') # X axis Label\n", "plt.ylabel('Frequency'); # Y axis Label" ] }, { "cell_type": "code", "execution_count": 61, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Remove duplicates entries in patientid and plot the histogram of ages - Only patients with less than 25 apppointments.\n", "df_less_25.age.hist(figsize =[12,4]);\n", "\n", "plt.title('Graphic 5 - Histogram of Age for Patients with less than 25 appointments') # Add title\n", "plt.xlabel('Age [years]') # X axis Label\n", "plt.ylabel('Frequency'); # Y axis Label" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Based on these two histograms:\n", "\n", "* There are few patients with more than or equal to 25 appointments (only 28 patients to be extactly);\n", " * The majority os these patients has more than 40 years;\n", "* The group with less than 25 appointments has some similarities from 0 to 60 years, roughly, with the same frequency. After 60 years the frequency goes down steadily.\n", "\n", "Only one point does not explain much of this question, so let's varies the number of appointments to plot a graph." ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "image/png": "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IlLUuefCffdBy5ZRR5K4HXcMidDPP0cdiUiJRowYQa9evejTpw8A+++/P23btgVgypQpDB8+nPr165ORkcE+++zDtGnTyj3n8OHDNz9PnTo1dcGXQC3RIiIi8erVg9NPjzqKisvv1vHNN6FVW6SoslqOmzUru7x9+3Jbnovq3r07zz///Ob3DzzwAEuXLiUrKwuA5s2bby5z9xLP0aBBA/Ly8ja/Lzq3c/xUddU9nZ9aokVERPLddBM8+GDUUSQnP4kuMmhLJCpDhgxh7dq1jB49evO21atXl7jvwIEDGT9+PJs2bWLJkiW8++679O3bly5duvDll1+ybt06Vq5cyaRJkwodN378+M3P/fv3T93NlEAt0SIiIhBmz7jxRjjllKgjSc6224buHE2bRh2JCBBahl988UUuueQSRo0aRYcOHWjevDm33XYba9asKbTvEUccwdSpU+nVqxdmxqhRo+jUqRMAxxxzDD179qRbt27snj8QN2bdunX069ePvLw8nnnmGQCmTZvGEUccwfLly5k4cSLXXXcdX3zxRZXfn5JoERERd7jkkvCT9q23Rh1NcurVUwItNc6WW27JuPxpGos49dRTN782M26//XZuv/32YvuNGjWKUaNGlXiOESNGcN111xXa1qdPn2LT6KVCSrtzmNlcM/vMzGaYWU5sW1sze8vMvok9b5HKGERERMr16qvw+utw/fWFp62rbR5/PMwsIiIpVx19oge7+27unhV7fwUwyd27AZNi70VERKKxcWNohd5pJ7jggqijqZzPP4fHHgvT9InUcXPnzqV9+/aRXT+K7hyHA4Nir8cC2cDlEcQhIiICDRrAww+HFQYbNow6msrp1g3WrAnT3HXuHHU0InWalTalSJWc3Ox7YDngwMPu/oiZrXD3NnH7LHf3Yl06zOxs4GyAjIyM3qX1p0lEbm4uLVq0SPp4SV+qO5Is1Z1aIC+PttOm8Uu/flFHUkyy9afN9OnsdumlzLjzTlYUGYAl6SG+7rRu3ZodylpxM819++23rFy5stC2wYMHT4/rPVGmVLdED3D3n82sI/CWmX2V6IHu/gjwCEBWVpYPKmmVnQRlZ2dTmeMlfanuSLJUd2q4hQvh5JPDCn/vvQe//33UERWSdP3Zbju49FJ2a9685NXppM6LrzuzZs2iZW1aMKiaNWnSpNhsHxWR0j7R7v5z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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Initializing variable\n", "list_avg_age = []\n", "\n", "# Loop to calculate the average age varying the number of appointment cummulate by patientid\n", "for index in range(2,88):\n", " no_show_more, no_show_less, df_more, df_less = attendance(df_vit, index, complete= True) \n", " list_avg_age.append([round(df_more['age'].mean(),2), round(df_less['age'].mean(),2)]) # Calculate the .mean()\n", "\n", "# Unpacking the list_avg_age variable.\n", "avg_age_more, avg_age_less = zip(*list_avg_age)\n", "\n", "# Generator of x axis.\n", "threshold = np.arange(2,88)\n", "\n", "# Defining the size of the Plot.\n", "plt.figure(figsize= [12,4])\n", "\n", "# red dashes, blue squares.\n", "plt.plot(threshold, avg_age_more, 'r--',threshold,avg_age_less, 'bs')\n", "\n", "plt.xlabel('Number of appointments by Patient ID') # X label\n", "plt.ylabel('Average Age [years]') # Y label\n", "plt.title('Graphic 6 - Average Age by Patient ID') # Graphic Title\n", "plt.grid(True) # Grid\n", "plt.legend(('Group1', 'Group2')) # Legend\n", "\n", "plt.show() # Plot the graphic" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Based on the graphic, there is a positive relationship between the number of appointments by the patient and the average, however, this could be a trap, because the sample (the number of observation in the data frame with more than \"x\" appointments) became too small when I raises the Number of appointments by a patientid, Table 2 shows how the number of observations drop in the data frame so-called `df_more`.\n", "\n", "
Table 2 - Number of Patients for each Number of Cumulate Appointments.
\n", "\n", "|k|Observations of df_more|Observations of df_less|\n", "|:-:|:-:|:-:|\n", "|2|24,379|37,917\n", "|3|10,484|51,812\n", "|4|4,984|57,312\n", "|5|2,617|59,679\n", "|10|333|61,963\n", "|25|28|62,268\n", "|50|13|62,283\n", "|88|1|62,295|\n", "\n", "### Answer Question 2\n", "\n", ">Seems the average age increases with the increase of the appointments, and it's also true to say the show-up rate increases with the increase in the number of appointment.\n", "\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Question 3\n", "\n", ">**Are patients with disabilities tend to have better rates of show-up? Is the number of disabilities raises the show-up rates?**\n", "\n", "Let's start analysing the number of patients with disabilities." ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 108283\n", "1 2042\n", "2 183\n", "3 13\n", "4 3\n", "Name: handcap, dtype: int64" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Number of appointments of Disabled Patient.\n", "df_vit.handcap.value_counts()" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The total of appointments with patients with disabilities: 2241\n" ] } ], "source": [ "# Calculation of total appointments with Disabled Patient.\n", "tot_dis = sum(df_vit.handcap.value_counts()) - df_vit.handcap.value_counts()[0]\n", "\n", "print(\"The total of appointments with patients with disabilities: {}\".format(tot_dis))" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The total of patients with disabilities: 1133\n" ] } ], "source": [ "# Calculation of total Disabled Patient.\n", "tot_pat_dis = sum(df_clean.handcap.value_counts()) - df_clean.handcap.value_counts()[0]\n", "\n", "print(\"The total of patients with disabilities: {}\".format(tot_pat_dis))" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "image/png": "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vrVxypQppXfccUd3gIULF3Y44IADho4cOXL45MmTB3/wwQclALNnz95r4MCBI4cMGTLihBNO2A/gmWee6TB+/Phhw4cPHzF+/Phhr732Wtua5X700UclU6ZMGex53qhLL710n5rfd+jQYXztDPPmzet8xBFHDFq5cmWbv/zlLz1vueWWXsOGDRvx+OOPd+rTp8/oRCJhADZs2BBK/bm1aGQqIiINGj9+/NYVK1a0SyQS5qKLLuoXi8Xe7d27d9WcOXO6XXbZZX0eeOCB+B/+8Ie9P/jgg2Xt27e3n332WRHA2LFjt7/00ksrSkpKePjhhztffvnlfZ944on3AF5//fWOy5Yte7NTp07J8ePHjzjppJNKa0afuzN06NCK008/fX2nTp2qa0bOBx98cNnf//73LqeddtqmuXPndj/++OM3tm3btlW3TatMRUSkQTVzX7/++utt33nnnfZHHnnkEIBkMknPnj0rAYYOHbrtlFNOGfCVr3xl08yZMzcBbNiwoWj69OkD4vF4O2OMrays3DFinDx58ua99967GiAcDm+cP39+p4bKtC7nnXfe+l/96ld7n3baaZv++te/9pgzZ048/VvcNFrNKyIiDVq6dGmH4cOHb7fWmkGDBm1bsWLFWytWrHjr7bfffuu55557B+CZZ55558ILL1y/ZMmSjmPHjh1RWVnJFVdc0Wfq1Kll77zzzpv/+te/3q2oqNjRO8Z8cU1s7Z8b69hjj93y4Ycfto3FYp2qq6vNAQccsD2d29ocKlMREanXXXfd1XXhwoVdzj777A1jxozZvmHDhuL//Oc/HQESiYR55ZVX2lVXV/Pee++1OfHEE8tuuummD8vKyopKS0uLNm/eXNS3b98KgFtvvbVH6nIXLVq0x7p164rKy8vNv//9765Tp04tb0yezp07V5eVlRWl/m7GjBmfn3XWWft985vf/CxTt7spVKYiIgXkxBNPHDB58uRhq1ataturV68x119/fY+6Llezg0///v1H3XPPPXs+8cQTK3v37l3Vrl07e//9978XiUT6Dh06dMTIkSNHLFiwoFNVVZX5xje+MWDIkCEjRo0aNeL8889f16NHj+orrrhi7axZs/ruv//+w6qrq7/wNyZOnFg+ffr0AaNGjRp54oknbmzsKt5p06ZtisViXWt2QAI455xzPt+8eXPxOeecsyHtO6kZTM16cBERaVmvvfZafOzYsU5GTvnuzjvv7PbII490ffjhh1c1dxmvvfZaj7Fjx3rNua52QBIRkZx2xhln7PvMM890mTdv3juuMqhMRUQkp/35z39eA6xxmUHbTEVERNKkMhUREUmTylRERCRNKlMREZE0qUxFRArEu+++W3LQQQcN2W+//UYOGjRo5DXXXLNXXZfLtSnYrrvuup433njjnpnM11Tam1dExJVZXTI6BRuzSuudgq2kpITf/va3H06ePHnrxo0bQ+PHjx9x/PHHb54wYcIuh9/LpSnYLr/88vUtnakhGpmKiBSI/v37V06ePHkrQLdu3ZIDBw7ctnr16jYNXS/bp2D7wQ9+0PvKK6/sBfDmm2+2nTJlyuCRI0cOnzBhwtBXX321HcDcuXO7DR48eOTQoUNHTJw4cWh69+SuNDIVESlAK1eubPPWW291aOzxcLN5CrYnn3xyj5rzzz333P633XbbB6NHj048/fTTHS+44IJ+ixcvfjsaje7z5JNPvj1gwIDKmmyZpDIVESkwpaWloa9+9asDo9Homu7duycbc51snoIt9Xa9+uqrnU499dSBNb+rqKgw4B8HeObMmd60adM2zpw5c2Nz/8buqExFRApIIpEw4XB44KmnnrrhjDPO2NTY6y1durTDhAkTttZMwbZ06dJdtms+88wz7zz22GOdH3744a7XXXdd73feeeeNminYnnrqqfdWrlzZ5sgjj9yxijVTU7DVqK6upnPnzlUrVqx4q/Z599577+qnn36646OPPtpl3LhxI5cuXfpmTZFngraZiogUiGQyyYwZM/oPGTJk+6xZs9Y19nq5MAUbQPfu3ZN9+/atmDt3brea2/vCCy+0B39b6pFHHrnlhhtu+Lhbt25V77//foPbiptCZSoiUiCeeuqpTg8//PCeixYt6jxs2LARw4YNG/G3v/2tS12XzbUp2Grcd99979955509hg4dOmLw4MEj//GPf3QF+P73v993yJAhIwYPHjxy0qRJZZMmTdrWzLuxTpqCTUSklWgKtuyWzhRsGpmKiIikSWUqIiKSJpWpiIhImlSmIiIiaVKZioiIpEllKiIikiaVqYhIgdi6dasZPXr08KFDh44YNGjQyO9///u967rctGnTvD59+oweOnToCM/zRp1yyineqlWrSjKZJfXg9Kni8XjJl7/85f1g58HtAe65554uP/7xj/cGuPvuu7umTgl3ySWX9H744Yc7ZzJfU+lwgiIijoz+8+iMTsG27Ixl9U7B1q5dO7to0aKVXbp0SSYSCXPAAQcM/e9//1t61FFHbal92dmzZ3941llnbUwmk1xzzTV7HXHEEUNXrFjxZrt27Vr04ASe51U+/vjj79f+/cyZM0uBUoCHH364a1VVVWnN1HE33HDDxy2ZqTE0MhURKRChUIguXbokwT8AfFVVlWnoeLihUIirrrrq0x49elQ++OCDXQD++c9/7jFu3LhhI0aMGH7cccftV1paGgL4zne+06dmCrbzzjuvL8C9997bZcyYMcOGDx8+4pBDDhmyZs2aHYO4119/vcOkSZOG9O/ff9Rvf/vbHvDFCcFT1Uwm/tRTT3X8z3/+0/WnP/1p32HDho148803206bNs278847u0HTpofLJI1MRUQKSFVVFaNGjRqxevXqtmecccanRx555C6j0rqMGTNm6/Lly9t98sknxddee+0+zz777Nt77LFH8ic/+cne11xzTa8f/vCHn/773//u9v77778RCoWomebsmGOOKZ8xY8aKUCjE7373ux5XX3313nPmzPkQYPny5e2XLFmyvKysrGj8+PEjpk2bVtpQjmOOOWbL0UcfvemEE04oPeuss74w+0tTp4fLJJWpSCvwIrEQ0BnoUMep/W5+n3pee6AKKAPKg1NZQ1/j0fD2VrmBkjOKi4tZsWLFW5999llROBwe+PLLL7c74IADGnye1Bx6dv78+R3fe++9dgceeOAwgMrKSjNhwoTy7t27V7dt2zY5Y8aM/uFwuHT69OmlAKtWrWpz8skn912/fn1JRUVFaN99903ULPO4447b1KlTJ9upU6eqgw8+ePPChQs7Hnjggc2egq2p08NlkspUJAO8SMwA+wADAC84pX7fD8joDhyNzFXFzoL9BPgAiAdfa07xeDRc1trZxK0ePXpUT548uexf//pXl8aU6bJlyzocffTRa621TJ48efO//vWvVbUvs3Tp0uWPPvroHvfff3+3m2++ea/Fixe//d3vfrffxRdfvHbmzJml8+bN63z11Vfv2Okp01OwNXV6uJKSzP1LqkxFGsmLxHqxsyBrl2Y/oK2jaPUpBroGp32BA+u6kBeJbQDeBVamnN4G3olHwxmdXUPc+fjjj4vbtGlje/ToUV1eXm7m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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Subsetting to plot a graphic.\n", "dis_gp = df_vit.handcap.value_counts();\n", "\n", "# Creating the Pie Chart.\n", "dis_gp[1:].plot(kind='pie',figsize = (8,8), title = 'Graphic 7 - Pie chart of Disabled Patient Appointments');\n", "plt.xlabel('Number of Desabilities by Patient ID'); # X label\n", "plt.ylabel(''); # Y label\n", "plt.legend(('1 Desability', '2 Desabilities','3 Desabilities','4 Desabilities')); # Legend" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As you can see, almost 91% of the patient with disabilities has at least one disability, 8.1% has two disabilities, 0.6% has three disabilities, and 0.01% has four disabilities.\n", "\n", "Now, I will calculate the no-show rate." ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 Disability: 17.92% no-show\n", "2 Disabilities: 20.22% no-show\n", "3 Disabilities: 23.08% no-show\n", "4 Disabilities: 33.33% no-show\n" ] } ], "source": [ "# variable initialization\n", "no_show_dis_all = []\n", "no_show_dis_all_p = []\n", "\n", "# Loop to calculte the number of no-show and show-up.\n", "for index in range(1,5):\n", " no_show_dis_all.append(list(df_vit[df_vit.handcap == index].no_show.value_counts()))\n", "\n", "# Unpacking the no_show_dis_all\n", "no_show_dis,show_up_dis = zip(*no_show_dis_all)\n", "\n", "# Loop to calculate the percentage.\n", "for index in range(0,4):\n", " no_show_dis_all_p.append(round(100 * show_up_dis[index]/(no_show_dis[index] + show_up_dis[index]),2))\n", "\n", "# Print the percentage\n", "print(\"1 Disability: {}% no-show\\n2 Disabilities: {}% no-show\\n3 Disabilities: {}% no-show\\n4 Disabilities: {}% no-show\".format(*no_show_dis_all_p))" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Rate of No-show for any level of handcap: 18.16%\n" ] } ], "source": [ "# No-show and show-up of any patient with more than or equal to 1 disability.\n", "dis_more_one = df_vit[df_vit.handcap >= 1].no_show.value_counts()\n", "\n", "# Percentage\n", "dis_more_one_p = 100 * dis_more_one[1]/(dis_more_one[0]+dis_more_one[1])\n", "\n", "# No-show to the all sample of patients with more than or equal to 1 disability.\n", "print(\"Rate of No-show for any level of handcap: {}%\".format(round(dis_more_one_p,2)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Analysing each group of disability separated (1, 2, 3, and 4) the no-show increase if the number of disability increases. Keep in mind, for patients with 4 disabilities there are 3 patients, with 3 disabilities there are 6, with 2 disabilities there are 9, and with 1 disability there are 1,025 patients.\n", "\n", "### Answer Question 3\n", "\n", ">Using all sample of disabilities the no-show rate (18.16%) is slightly lower than the role dataset (20%), so in average a patient with a disability could have a better rate of show-up.\n", "\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Conclusions \n", "\n", "Throughout of this document, I have pose three questions. I will repeat the same text from the Synopsis:\n", "\n", "**1. Are patients with many appointments are more likely to show-up then the patients with less than two appointments?**\n", ">Seems to be true, but I lack information to affirm it, what I could say is when I analyse patient with a higher number of appointments, they tend to have a better rate of show-up.\n", "\n", "**2. Are patients with many appointments in average older than those with few appointments?**\n", ">I also identify a positive correlation, when I analyse patients with higher number of appointments they tend to have an age average higher than the population.\n", "\n", "**3. Are patients with disabilities tend to have better rates of show-up? Is the number of disabilities raises the show-up rates?**\n", ">Due to the small number of patients with disabilities, it is difficult to answer this question, but I have found a better rate of show-up in the group of patients with disabilities, however, patients with many disabilities tend to have worse show-up rates.\n", "\n", "\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Appendix A \n", "\n", "This appendix aims to go in depth to find new data available on internet. Mostly of this information is public and disclosure in the Vitória Council Website.\n", "\n", "### Regional Administration Dataset \n", "\n", "The city of Vitória is divided into 9 (nine) Regional Administration, according with the Vitória City Council [Website](http://www.vitoria.es.gov.br/prefeitura/gerencias-regionais-veja-os-enderecos), do not expected to read any information in english, so the most important thing to gather in this page are the address of each suburbs administration building and the oficial name of suburbs administration.\n", "\n", "
\n", "\n", "
Table A1 - Regional Administration Names and Address.
\n", "\n", "|Regional Administation|Address|General Information|\n", "|:-------------------------:|:--------------------:|:--------------------:|\n", "|Central 1 - Centro |Praça Américo Poli Monjardim, Forte São João|[See more][1]|\n", "|Central 2 - Santo Antônio |Avenida Santo Antônio, 1400, Santo Antônio|[See more][2]|\n", "|Central 3 - Jucutuquara |Rua Santa Rita de Cássia, S/N, De Lourdes|[See more][3]|\n", "|Central 4 - Maruípe |Rua Marechal Floriano, 709, Maruípe|[See more][4]|\n", "|Central 5 - Praia do Canto |Avenida Rio Branco, 80, Santa Lúcia|[See more][5]|\n", "|Central 6 - Goiabeiras |Rua Desembargador Cassiano Castelo, 65, Goiabeiras|[See more][6]|\n", "|Central 7 - São Pedro |Avenida Beira Mar, 360, São Pedro|[See more][7]|\n", "|Central 8 - Jardim Camburi |Avenida Santos Evangelista, 15, Jardim Camburi|[See more][8]|\n", "|Central 9 - Jardim da Penha|Praça Philogomiro Lannes, S/N, Jardim da Penha|[See more][9]|\n", "\n", "[1]: http://legado.vitoria.es.gov.br/regionais/dados_regiao/regiao_1/regiao1.asp\n", "\n", "[2]: http://legado.vitoria.es.gov.br/regionais/dados_regiao/regiao_2/regiao2.asp\n", "\n", "[3]: http://legado.vitoria.es.gov.br/regionais/dados_regiao/regiao_3/regiao3.asp\n", "\n", "[4]: http://legado.vitoria.es.gov.br/regionais/dados_regiao/regiao_4/regiao4.asp\n", "\n", "[5]: http://legado.vitoria.es.gov.br/regionais/dados_regiao/regiao_5/regiao5.asp\n", "\n", "[6]: http://legado.vitoria.es.gov.br/regionais/dados_regiao/regiao_6/regiao6.asp\n", "\n", "[7]: http://legado.vitoria.es.gov.br/regionais/dados_regiao/regiao_7/regiao7.asp\n", "\n", "[8]: http://legado.vitoria.es.gov.br/regionais/dados_regiao/regiao_8/regiao8.asp\n", "\n", "[9]: http://legado.vitoria.es.gov.br/regionais/dados_regiao/regiao_9/regiao9.asp\n", "\n", "Going depth to find more information in the Vitória Council Website, I have found a map of each Regional administration (Table A1 Column General Information), with general information, such as:\n", "\n", "* Number of Neighboor;\n", "* Area (m²);\n", "* Population (in 2010);\n", "* Demographic density (inhabitants/km²);\n", "* Numbers of home (in 2010);\n", "* Average Income (in 2010);\n", "* Economic Activities (in 2012).\n", "\n", "I have recorded these information into one dataset (I do not know how to \"webscrap\" these infos, and probabily this is going to take too much time of my stydies to learn how to do it. I am new in Python). This dataset, co called `vitoria_reg_adm.csv` is available in my Github Repository. The Table A2 shows the description variables. \n", "\n", "
Table A2 - Data type of the vit_reg_adm.csv file.
\n", "\n", "|Variable|Type||\n", "|:-:|:-:|:-:|\n", "|id_ra|int|ID of the Regional Administration (Following the
sequence stablished in Table A1\n", "|reg_adm|str|Regional Administration Name\n", "|nbh_qty|int|Quantity of Neighborhood in each Regional Administration\n", "|area_m2|float|Regional Administration Area in m²\n", "|pop_2010|int|Population in 2010\n", "|den_km2|int|Demographic Density in km²\n", "|home_2010|int|number of homes\n", "|avg_inc_2010|float|Monthly Average Income (in BRL)\n", "|eco_act_2012|int|Commercial Stores Quantity\n", "\n", "Keep in mind, in Brazil the \".\" is the thousands separator, whereas \",\" is the decimals separator." ] }, { "cell_type": "code", "execution_count": 69, "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", "
id_rareg_admnbh_qtyarea_m2pop_2010den_km2home_2010avg_inc_2010eco_act_2012
01Centro82072047196111314069521425,8227796
12Santo Antônio12442549435261217910796649,844738
23Jucutuquara144793706341416418105801217,6918621
34Maruípe12568421654402712217009806,7210903
45Praia do Canto95334352342369570121333844,9748150
\n", "
" ], "text/plain": [ " id_ra reg_adm nbh_qty area_m2 pop_2010 den_km2 home_2010 \\\n", "0 1 Centro 8 2072047 19611 13140 6952 \n", "1 2 Santo Antônio 12 4425494 35261 2179 10796 \n", "2 3 Jucutuquara 14 4793706 34141 6418 10580 \n", "3 4 Maruípe 12 5684216 54402 7122 17009 \n", "4 5 Praia do Canto 9 5334352 34236 9570 12133 \n", "\n", " avg_inc_2010 eco_act_2012 \n", "0 1425,82 27796 \n", "1 649,84 4738 \n", "2 1217,69 18621 \n", "3 806,72 10903 \n", "4 3844,97 48150 " ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Loading the Vitoria Regional Administration data.\n", "vit_reg_adm = pd.read_csv('02-Datasets/vit_reg_adm.csv', sep=\";\");\n", "\n", "# Print\n", "vit_reg_adm.head()" ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(9, 9)" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Number of Neighborhood and Variables\n", "vit_reg_adm.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Neighborhood Dataset \n", "\n", "Vitória City has 80 (eighty) neighborhoods, as you can check in the [Vitória Council Website][1], in this link you can access all neighborhood boundaries, even more in each of this `pdf`'s you can see the roads and streets and a short resume of each neighborhood. Figure A1, shows an example of information in each `pdf`.\n", "\n", "\n", "
Figura A1 - Vila Rubim Boundaries and Some Descriptive Analysis on bottom left.
\n", "\n", "Based on the Table A1 Column General Informations links, and list of all [neighborhoods][1], I will create an auxiliary dataset to record additional data, so-called `vit_aux.csv`.\n", "\n", "In this auxililary dataset I have followed the neighborhood classification of Vitória Council Website (See Table A1, each rows has own on URL, in it you can see the picture of each Regional Administration), in some cases I have found neighborhood in differents Regional Administration. The Table A3 shows the Description Types of each variable/features.\n", "\n", "
Table A3 - Description types of vit_aux.csv.
\n", "\n", "|Variable|Type|Description|\n", "|:-:|:-:|:-:|\n", "|id_ra|int|ID of the Regional Administration (Following the
sequence stablished in Table A1)\n", "|reg_adm|str|Regional Administration Name||\n", "|nbh|str|Neighborhood Name\n", "|pop_2000|int|Population in Census 2000\n", "|pop_2010|int|Population in Census 2010\n", "|male|int|Quantity of male in given neighborhood\n", "|female|int|Quantity of female in given neighborhood\n", "|avg_inc_mon|float|Average Income per month (in BRL)\n", "\n", "Keep in mind, in Brazil the \".\" is the thousands separator, whereas \",\" is the decimals separator.\n", "\n", "In this [link][2] you can see with details a big map of Vitória and its Regional Administration Areas.\n", "\n", "\n", "[1]: http://legado.vitoria.es.gov.br/regionais/geral/bairros.asp\n", "[2]: http://legado.vitoria.es.gov.br/regionais/bairros/Mapa_bairros/LIMITE_BAIRROS.pdf" ] }, { "cell_type": "code", "execution_count": 71, "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", "
id_rareg_admnbhpop_2000pop_2010malefemaleavg_inc_mon
01CentroCentro92409838441654221791,15
11CentroDo Moscoso854795369426647,05
21CentroFonte Grande14591231592639706,03
31CentroIlha do Príncipe2810261311941419623,21
41CentroParque Moscoso170817737919821754,79
\n", "
" ], "text/plain": [ " id_ra reg_adm nbh pop_2000 pop_2010 male female \\\n", "0 1 Centro Centro 9240 9838 4416 5422 \n", "1 1 Centro Do Moscoso 854 795 369 426 \n", "2 1 Centro Fonte Grande 1459 1231 592 639 \n", "3 1 Centro Ilha do Príncipe 2810 2613 1194 1419 \n", "4 1 Centro Parque Moscoso 1708 1773 791 982 \n", "\n", " avg_inc_mon \n", "0 1791,15 \n", "1 647,05 \n", "2 706,03 \n", "3 623,21 \n", "4 1754,79 " ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Loading the Vitoria Auxiliary data.\n", "vit_aux = pd.read_csv('02-Datasets/vit_aux.csv', sep=\";\");\n", "\n", "# Print\n", "vit_aux.head()" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(80, 8)" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Number of Neighborhood and Variables\n", "vit_aux.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Age Dataset \n", "\n", "I have found a table in the Vitória Council Website [(click here to visit the original)][a] with 20 categories (cut by 5 year each one) and by gender. \n", "
\n", "\n", "
Table A4 - First rows of the vit_age.csv
\n", "\n", "|age|male|female|\n", "|:-:|:-:|:-:|\n", "|0 to 04 years|9932|9666\n", "|05 to 09 years|10165|9727\n", "|10 to 14 years|11944|11686\n", "|15 to 19 years|12450|12932\n", "|20 to 24 years|15297|15970\n", "|25 to 29 years|15511|16621\n", "\n", "This dataset is important to understand the population distribution by age, and how it affects the appointment.\n", "\n", "[a]: http://legado.vitoria.es.gov.br/regionais/dados_socioeconomicos/populacao/2000_2010/tab2.asp" ] }, { "cell_type": "code", "execution_count": 73, "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", "
agemalefemale
00 to 04 years99329666
105 to 09 years101659727
210 to 14 years1194411686
315 to 19 years1245012932
420 to 24 years1529715970
\n", "
" ], "text/plain": [ " age male female\n", "0 0 to 04 years 9932 9666\n", "1 05 to 09 years 10165 9727\n", "2 10 to 14 years 11944 11686\n", "3 15 to 19 years 12450 12932\n", "4 20 to 24 years 15297 15970" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Loading the Vitoria Age data.\n", "vit_age = pd.read_csv('02-Datasets/vit_age.csv', sep=\";\");\n", "\n", "# Print\n", "vit_age.head()" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "y = np.arange(len(vit_age['male']))\n", "x = vit_age['male']\n", "objects = vit_age['age']\n", "\n", "plt.barh(y, x, align='center', alpha=0.5)\n", "plt.yticks(y , objects)\n", "plt.xlabel('Inhabitants')\n", "plt.title('Male Distribution by 5 year')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Vitória UBS Dataset \n", "\n", "Vitória City has 38 UBS.\n", "\n", "
Table A5 - Number of USB in each Health Territory Area.
\n", "\n", "|Health Territory Area|Number of Neighborhood Covered|UBS Family|US PACS|Reference Center|Specialized Center|Polyclinic|Total|\n", "|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|\n", "|Centro |11|3|2|2|1|0|8|\n", "|Forte São João|20|2|2|4|0|0|8|\n", "|Santo Antônio |9 |3|0|0|0|0|3|\n", "|Penha |14|1|4|0|0|0|5|\n", "|Maruípe |18|6|0|0|0|0|6|\n", "|São Pedro |10|4|0|2|1|1|8|\n", "\n", "I have not created any external document for this information.\n" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "## References \n", "\n", "Throughout the report I have inserted many links to different sources, for this reason, this chapter does not have too many links. I do not think it is necessary to insert the same link here. So, in this chapter, I only put the most important URL to this research.\n", "\n", "* [Kaggle;](https://www.kaggle.com/joniarroba/noshowappointments)\n", "* [IBGE;](https://sidra.ibge.gov.br/home/pmc/brasil)\n", "* [Vitória Council Website.](http://legado.vitoria.es.gov.br/regionais/home.asp)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.1" } }, "nbformat": 4, "nbformat_minor": 2 }