DPC疾患の月別推移を可視化する(修正版)
前回はタイトル通り、DPC疾患の月別推移を可視化する関数を書きました。
あれは実行するとデータを作り、同時にグラフを描画するというひどい代物で、流石に反省しましたのでクラスに書き換えてみました。
何気にこのブログでクラスを書くのは初めてですね。
今までいかにサボっていたかよく分かります・・・
class diff_dpc: '''前月との疾患別比較を出す。funcはmean,sum,count辺りがいいが、 groupbyで使えるなら何でもよい kaはオプションだが、あった方がグラフが見やすい''' def __init__(self,df,ka=None,func='sum'): self.df = df self.ka = ka self.func = func if self.ka: self.df = self.df[self.df['診療科区分'] == self.ka] else: pass self.df['MDC6'] = [x[0:6] for x in self.df['分類番号']] self.result = self.df.groupby(['month','MDC6']).agg(self.func) self.result.reset_index(inplace=True) def plot(self): ax = sns.barplot(x='MDC6',y='dpc総点数',hue='month',data=self.result) for item in ax.get_xticklabels(): item.set_rotation(90) plt.show() def getdata(self): return self.result
使い方は
test = diff_dpc(df,ka=110,func='count')
のようにしてやります。すると二つのメソッドを持ったオブジェクトが出来ますので、
test.plot()
でグラフを描画、'test.getdata()'でデータの取り出しが出来ます。
(別にインスタンス変数を指定しても同じ事なので、'test.result'としても問題ありません)