今回の記事はいつもと違う感じで、前々から勉強中のPythonの記事です。
データ分析に使えるPythonですが、透析関係でなにかできないかということで考え付いたのがP Caの9分割図1)でした。
散布図に4本の直線を引くだけでExcelでも十分可能だと思いますが、これもPythonの勉強ということでググりながら自分で作ってみました。
全コード18行です。
実行環境
・Windows10
僕は前までAnacondaを使っていましたが、Googleアカウントさえあれば環境を構築せずにすぐに使えるGoogle Calaboratoryを使っています。
めっちゃ便利です。
OS関係なしに使えるのもいいですよね。
ライブラリのインポート
#データフレームを使うためのライブラリ | |
import pandas as pd | |
from pandas import DataFrame | |
#計算とグラフの描画 | |
import numpy as np | |
import matplotlib as mpl | |
import matplotlib.pyplot as plt | |
#Web上に画像を埋め込むおまじない | |
%matplotlib inline |
#で説明した通りです。
最後の行の「%matplotlib inline」はCalaboratoryなどのWeb上でPythonを動かすJupyter notebookを使う場合に必要です。
ここらへんのライブラリ系はデータ分析するときにほぼ必ずと言っていいほど使うのでエディタとかで保存しておくのがオススメです。
また、簡単にきれいに描画できるseabornというライブラリがありますが、線やグラフ範囲を細かく設定できる(ググって圧倒的に情報が多かった)matplotlibを使いました。
データの読み込み・表示
#ExcelファイルからDataFmameで読み込み | |
df = pd.read_excel('p_ca.xlsx') | |
#DataFrameを確認 | |
df | |
#データの個数を確認する | |
df.info() |
使うライブラリをインポートしたら早速データを読み込んで表示してみましょう。
「df」を実行するとデータが表示されます。
※今回は適当に10個ずつ用意しました。
info()を使うとデータの個数や列などを知ることができます。
これからPのデータが10個、Caのデータが10個データフレームに格納されてnon-nullと書いているので空欄がないということが分かります。
実際のデータ分析をするときはこのnull値(空欄)があったり、数が合わないということがあるので、データの個数・空欄の確認は必須です。
matplotlibでグラフを描画
#matplotlib pyplotでデータフレームで散布図を描画,マーカーをダイヤモンド | |
df.plot.scatter(x='P', y='Ca', marker='D') | |
#タイトル | |
plt.title('P&Ca 9 Division diagram') | |
#x軸・y軸の(最小値、最大値)を指定 | |
plt.xlim(0,10) | |
plt.ylim(6,13) | |
#y=8.4、10のx軸に平行な直線を引く、線の太さを0.5、色を黒 | |
plt.axhline(y=8.4, lw=0.5, color='black') | |
plt.axhline(y=10, lw=0.5, color='black') | |
#x=3.5、6のx軸に垂直な直線を引く、線の太さを0.5、色を黒 | |
plt.axvline(x=3.5, lw=0.5, color='black') | |
plt.axvline(x=6, lw=0.5, color='black') |
実際にコードを実行した結果はこちらです。
タイトルやマーカーの形、線の色や太さは任意に変えることができます。
今回は自作で適当に作った架空のデータですが、実際の患者さんのデータを使って可視化してみると、その施設のP Caの管理がしっかりできているか?が一目瞭然となるわけです。
また、P Ca管理は患者様を含め医療スタッフがしっかり連携して取り組まないと改善できないので、このように実際にデータを可視化して示すことで、患者様、他職種に働きかけれると考えています。
透析関係のスタッフの参考になれば幸いです。
今回は以上となります。
今後はPythonの勉強の備忘録としての記事もちょくちょく書いていこうと思います。
Reference
1)社団法人 日本透析医学会 慢性腎臓病に伴う骨・ミネラル代謝異常の診療ガイドライン. 透析会誌 45(4) :301〜356,2012
参考サイト
・【Python入門】すぐわかる!matplotlibライブラリの使い方
・pandasのplotメソッドでグラフを作成しデータを可視化
・Matplotlib - 散布図(Scatter plot)の徹底解説 (単一・複数系列/3D、CSVからの描画と装飾(タイトル、ラベル、目盛線、凡例、マーカーのサイズ/色/種類/透明度))