より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

都道府県別の術前・術後の平均在院日数をPythonで分析してみる

今回は在院日数についての分析を行いたいと思います。

というのも、下記の記事を読んだためです。

hospia.jp

平均在院日数が、患者の回復速度を表し、短いほど病院が優れているという指標という考え方です。

データを集める

e-Statsでは、術前と術後に分けて、公開されています。

2014年なので少し古いです。

患者調査 平成26年患者調査 下巻(都道府県・二次医療圏) 22 術前の平均在院日数(施設所在地),都道府県 × 病院-一般診療所・手術名別 年次 | ファイルから探す | 統計データを探す | 政府統計の総合窓口

患者調査 平成26年患者調査 下巻(都道府県・二次医療圏) 23 術後の平均在院日数(施設所在地),都道府県 × 病院-一般診療所・手術名別 年次 | ファイルから探す | 統計データを探す | 政府統計の総合窓口

とりあえず、術前と術後は判別できるように新しいカラムとして期間として設けて分析できるように前処理します。

f:id:rimever:20181129222100p:plain

分析

せっかく術前と術後に分かれているので積み上げグラフを出してみます。

temp = data.query("分類 == '総数'")
labels = data.columns[2:]
before_ope = temp.iloc[0,2:]
after_ope = temp.iloc[1,2:]

from pylab import rcParams
rcParams['figure.dpi'] = 150

total = [num1 + num2 for num1,num2 in zip(before_ope,after_ope)]

fig,ax = plt.subplots()
plt.xticks(rotation=90)
plt.title('総数')
ax.bar(labels,total,label='after_ope')
ax.bar(labels,before_ope,label='before_ope')
ax.legend()

本を読んでやっているのですが、仕組みとしては

  1. A+Bの棒グラフをBのグラフとして描画
  2. その上にAだけの棒グラフをAのグラフとして描画して被せる
  3. Aだけの棒グラフが被らないところがBのグラフとして見える

ちょっとインチキっぽいですが。

f:id:rimever:20181129224023p:plain

うーん。出してはみたものの、よくわかんないですね。

やはり、都道府県別にソートしてみたいところ。

それには都道府県別に列ではなく行としたいので、転置を用います。

temp = data.query("分類 == '総数'").T
temp['合計'] = temp['術前'] + temp['術後']
temp = temp[2:].sort_values(by='合計')
temp

f:id:rimever:20181129230726p:plain

術前+術後の合計では、東京、愛知、神奈川、埼玉、そして沖縄の順に短いことがわかりました。

ちなみに、術前では、広島、佐賀、群馬、熊本、新潟です。

術後では、神奈川、愛知、東京、埼玉、沖縄と合計と同じような結果となります。

f:id:rimever:20181129232034p:plain

術前と術後を散布図にしてはみたものの、相関はそこまではなさそう。

回帰分析したくなる状況ではありません。

都道府県別のカラーマップ 

以前、都道府県別の病院数についての分析を行いましたが、japanmapは素晴らしいのですが、サイズの小ささが気になっていました。

下記の記事を参考に対応します。

python - figure of imshow() is too small - Stack Overflow

下記ぐらいが、個人的には良いかと

plt.subplots(figsize=(10, 10))
plt.imshow(picture(color_map), interpolation='nearest', aspect='auto')

f:id:rimever:20181129232943p:plain 短い(緑)-平均(黄色)-長い(赤)

在院期間が長い都道府県が、やや目立つ感じです。

症例の種別ごとの分析は、まだ次の機会に。