In [2]:
%matplotlib inline
import pandas as pd
import seaborn as sns
from collections import Counter
from pmareport import pmareport
import numpy as np
import matplotlib.pyplot as plt
import calendar
In [3]:
clinic = pmareport.Clinic()
df = clinic.df
In [4]:
df.head()
Out[4]:
In [5]:
# Interesting plot
df.AGE.hist(bins=70)
Out[5]:
In [35]:
# Nmber of appointments plot
df_month_doc = df.groupby(['month', 'PROVIDER_NAME'])
df_month_doc_cnt = df_month_doc.count()
for i in list(set(df[df.cond == 'tvp'].PROVIDER_NAME)):
#plt.clf()
data = df_month_doc_cnt.xs(i, level='PROVIDER_NAME')
plt.plot(data.index, data.PATIENT_ID, label=i, linewidth=3)
plt.xticks(xrange(0, 13), calendar.month_abbr, size=13)
plt.xlim(xmin=1)
plt.yticks(size=13)
plt.title('Number of appointments per month by doctor', size=16)
plt.legend(fontsize=13)
plt.savefig('appts_per_month_doc_tpd2.png', bbox='tight', dpi=300)
In [7]:
df[df.cond == 'tvp'].groupby(['PROVIDER_NAME', 'month']).count()
Out[7]:
In [8]:
def change(a, b):
return (b-a)/float(a)
In [9]:
change(54, 85), change(67, 93)
Out[9]:
In [10]:
set(df.PROVIDER_NAME)
Out[10]:
In [11]:
df.groupby(['PROVIDER_NAME', 'PATIENT_CONDITION']).count().PATIENT_ID
Out[11]:
In [15]:
# number of appointments by condition plot
df_month_cond = df.groupby(['month', 'PATIENT_CONDITION'])
df_month_cond_cnt = df_month_cond.count()
for i in set(df.PATIENT_CONDITION):
#plt.clf()
data = df_month_cond_cnt.xs(i, level='PATIENT_CONDITION')
plt.plot(xrange(1,13), data.PATIENT_ID, label=i)
plt.xticks(xrange(0, 13), calendar.month_abbr)
plt.xlim(xmin=1)
plt.title('Number of appointments per month by condition')
plt.legend()
plt.savefig('appts_per_month_cond2.png', bbox='tight', dpi=200)
In [ ]:
In [29]:
# Average delay per month by condition
df_month_cond_mean = df.groupby(['month', 'PATIENT_CONDITION']).mean()
for i in ['Uncommon Cold', 'TV Personality Disorder', 'Saturday Night Fever']:
#plt.clf()
data = df_month_cond_mean.xs(i, level='PATIENT_CONDITION')
plt.plot(data.index, data.delay, label=i, linewidth=3)
plt.xticks(xrange(0, 13), calendar.month_abbr, size=13)
plt.yticks(size=13)
plt.xlim(xmin=1)
plt.title('Average patient wait time per month by condition', fontsize=16)
plt.ylabel('min', fontsize=13)
plt.legend(loc=2, fontsize=13)
plt.savefig('delay_per_month_cond.png', bbox='tight', dpi=300)
In [ ]: