白血病罹患率地図

全国がん罹患モニタリング集計にある全国がん罹患モニタリング集計 2015年罹患数・率報告(平成31年3月)(PDF:31,131KB) から各都道府県の白血病についてのデータを抜き出してCSVにしたもの mcij2015leu.csv を作成した(方法は後述)。この年齢調整罹患率(日本人口)を使って日本地図を描く。

import pandas as pd
import japanmap as jp
import matplotlib.pyplot as plt

leu = pd.read_csv("https://okumuralab.org/~okumura/python/data/mcij2015leu.csv")
x = leu['年齢調整罹患率日計']
x = (x - min(x)) / (max(x) - min(x))
cmap = plt.get_cmap('coolwarm')
cols = ['#%02X%02X%02X' % (cmap(x[i], bytes=True)[:3]) for i in range(47)]
s = jp.pref_map(range(1,48), cols=cols, tostr=True)
s = s.replace('<path ', '<path stroke="black" stroke-width="0.001" ')
with open("190804e.svg", "w") as f:
    f.write(s)
白血病罹患地図

赤ほど多い地域である。沖縄県が多く,福島県が少ない。


従来は都道府県ごとのデータの精度が異なるため安易な地域間比較は慎むべきとされたが,このデータについては「第3次対がん総合戦略10カ年の間に都道府県がん登録の罹患データの精度は著しく向上し、依然存在する地域間の精度格差と、人口規模の差に注意をすれば、MCIJ2015の罹患データは、県間の比較が十分可能であると考えている」(p.285)とのことである。ただ,香川県については「(参考値)」と付記されていることに注意。


白血病罹患率はHTLV-1感染率と相関することが考えられる。内丸 薫「HTLV-1 関連疾患の疫学」(PDF)参照。


[参考]上記CSVの作り方:

まずPDFをテキストに変換する:

pdftotext -raw mcij2015_report.pdf

できたテキストファイルからデータを取り出す次のようなスクリプトを作る。fileinput と正規表現ライブラリ re を使う:

#! /usr/bin/env python3

import re
import fileinput

i = 1
state = 0
for line in fileinput.input():
    if state == 0:
        if len(line) < 15:
            m = re.search(r"^(\d\d) ", line)
            if m and m.group(1) == "{:02d}".format(i):
                print(line.rstrip(), end=" ")
                state = 1
                continue
    if state == 1:
        m = re.search(r"^白血病 (.*)$", line)
        if m:
            print(m.group(1))
            state = 0
            i += 1

このファイル名を leu.py とすれば,./leu.py mcij2015_report.txt と打ち込めばデータ部分が抜き出せる。この , を消してスペースを , で置換し,ヘッダを付ければ完成である。