都道府県別の病院数について自分なりに分析してみます。
前処理
下記の流れでデータを用意。
- e-statのサイトからダウンロード
- Googleスプレッドシートにアップロード
- スプレッドシート上で適当に編集、コメントアウト
- 再度スプレッドシートからダウンロード
- JupyterNotebookにアップロード
年々、病院は減っていますね。
PandasをMarkdownに変換
これまでJupyter Notebookのスクショを貼り付けることをしていました。
が、Markdownとして貼り付けた方がスマートだし、見栄えが良いからできないかなと思ったところ、下記サイトを見つけました。
DataFrame could have a to_markdown method. · Issue #11052 · pandas-dev/pandas · GitHub
temp = data.query("都道府県 == '全 国'") from tabulate import tabulate print(tabulate(temp, headers='keys', tablefmt='pipe'))
こんな感じで出ますので、出力された文字列を貼り付ければ。
都道府県 | 1996年 | 1999年 | 2002年 | 2005年 | 2008年 | 2011年 | 2014年 | 2015年 | 2016年 | 人口10万対 |
---|---|---|---|---|---|---|---|---|---|---|
全 国 | 9490 | 9286 | 9187 | 9026 | 8794 | 8605 | 8493 | 8480 | 8442 | 6.7 |
表になります。
人口に対して病院が少ない都道府県は?
人口10万に対する病院数のデータがあるので、これで少ない順に並び替えてみます。
一番少ないのは神奈川。人口の多い県が目立ちます。
滋賀県が入ってきています。
正直なところ、地方にお医者さんがいないという話は聞きますので、関東圏の病院が少ないというのは私としては意外でした。
都道府県 | 1996年 | 1999年 | 2002年 | 2005年 | 2008年 | 2011年 | 2014年 | 2015年 | 2016年 | 人口10万対 |
---|---|---|---|---|---|---|---|---|---|---|
神奈川 | 370 | 363 | 361 | 356 | 348 | 344 | 342 | 341 | 341 | 3.7 |
滋 賀 | 59 | 58 | 62 | 63 | 60 | 60 | 58 | 57 | 57 | 4 |
愛 知 | 394 | 374 | 365 | 350 | 334 | 327 | 321 | 322 | 323 | 4.3 |
千 葉 | 304 | 299 | 296 | 287 | 284 | 279 | 284 | 285 | 286 | 4.6 |
埼 玉 | 371 | 366 | 367 | 361 | 355 | 346 | 341 | 343 | 342 | 4.7 |
東 京 | 704 | 684 | 681 | 667 | 648 | 643 | 642 | 648 | 651 | 4.8 |
人口に対して病院が多い都道府県は?
高知県。全体的に九州が多い印象。
都道府県 | 1996年 | 1999年 | 2002年 | 2005年 | 2008年 | 2011年 | 2014年 | 2015年 | 2016年 | 人口10万対 |
---|---|---|---|---|---|---|---|---|---|---|
高 知 | 150 | 148 | 144 | 141 | 140 | 137 | 130 | 131 | 130 | 18 |
鹿児島 | 292 | 290 | 285 | 279 | 274 | 265 | 256 | 252 | 252 | 15.4 |
徳 島 | 132 | 134 | 130 | 123 | 119 | 114 | 113 | 113 | 112 | 14.9 |
大 分 | 164 | 161 | 164 | 165 | 165 | 160 | 158 | 157 | 157 | 13.5 |
佐 賀 | 120 | 118 | 114 | 111 | 110 | 110 | 108 | 108 | 107 | 12.9 |
宮 崎 | 166 | 161 | 152 | 149 | 145 | 142 | 140 | 140 | 140 | 12.8 |
熊 本 | 234 | 230 | 225 | 222 | 217 | 216 | 214 | 214 | 212 | 12 |
長 崎 | 180 | 177 | 173 | 168 | 165 | 160 | 156 | 154 | 151 | 11 |
病院の少ない都道府県
先ほど上がった、人口に対して病院の少ない滋賀もランクインしていますが、一番少ないのは鳥取県。
都道府県 | 1996年 | 1999年 | 2002年 | 2005年 | 2008年 | 2011年 | 2014年 | 2015年 | 2016年 | 人口10万対 |
---|---|---|---|---|---|---|---|---|---|---|
鳥 取 | 42 | 44 | 46 | 45 | 46 | 45 | 45 | 45 | 44 | 7.7 |
島 根 | 63 | 61 | 59 | 58 | 57 | 54 | 52 | 51 | 51 | 7.4 |
滋 賀 | 59 | 58 | 62 | 63 | 60 | 60 | 58 | 57 | 57 | 4 |
山 梨 | 61 | 59 | 62 | 61 | 60 | 60 | 60 | 60 | 60 | 7.2 |
山 形 | 69 | 69 | 69 | 70 | 70 | 68 | 68 | 68 | 68 | 6.1 |
病院の多い都道府県
東京・北海道・大阪・福岡と大きな都市を抱える都道府県がランクイン。
都道府県 | 1996年 | 1999年 | 2002年 | 2005年 | 2008年 | 2011年 | 2014年 | 2015年 | 2016年 | 人口10万対 |
---|---|---|---|---|---|---|---|---|---|---|
東 京 | 704 | 684 | 681 | 667 | 648 | 643 | 642 | 648 | 651 | 4.8 |
北海道 | 654 | 640 | 634 | 620 | 594 | 579 | 569 | 566 | 562 | 10.5 |
大 阪 | 591 | 575 | 566 | 552 | 541 | 534 | 530 | 531 | 523 | 5.9 |
福 岡 | 492 | 489 | 485 | 478 | 468 | 467 | 460 | 462 | 461 | 9 |
兵 庫 | 349 | 347 | 349 | 350 | 353 | 348 | 353 | 353 | 350 | 6.3 |
県別データの可視化
と、ここまでは、ただサイトのデータを並べ替えただけです。
Pythonならではのことにチャレンジしてみたいところ。
これはやりたいですね。
記事の通りにやっているだけなのですが、本当に日本地図が出てきました。
都道府県別に色を塗り分ける事も出来るので、ヒートマップで塗り分けてみようと思います。
ヒートマップとは?(英: Heat map)色の理由と見方を理解し、分析例を知る|【無料】ヒートマップ分析ツール (スマホ分析可)- MIERUCA(ミエルカ)
人口10万対
最大(緑)ー平均(黄色)ー最小(赤)となるようにします。
Pythonに慣れてスマートに書きたいのですが、こんな感じで。
%matplotlib inline import matplotlib.pyplot as plt from japanmap import * column_name = '人口10万対' color_map = {} temp = data.query("都道府県 != '全 国'") mean = np.mean(temp[column_name]) max_value = np.max(temp[column_name]) min_value = np.min(temp[column_name]) for index, row in temp.iterrows(): prefecture = str(index).replace(' ', '') value = row[column_name] if mean < value: red_value = int(255 - 255 * (value - mean) / (max_value - mean)) red = str(hex(red_value))[2:] if len(red) == 1: red = "0" + red color_map[prefecture] = "#" + red + "FF00" else: green_value = int(255 - 255 * (mean - value) / (mean - min_value)) green = str(hex(green_value))[2:] if len(green) == 1: green = "0" + green color_map[prefecture] = "#FF" + green + "00" plt.imshow(picture(color_map));
諸事情により時間がないので。汚いコードでごめんなさい。
やはり、西は人口に対して全体的に病院は充足感ありそう。
2016年の病院数
さっきと似たようなロジックで
都市部の病院数自体は多いようですね。