【雑談】DPCデータを扱う手法② 成功例編
前回に引き続き雑談です。 DPCデータを扱う上で、今のところ上手く行っているものを上げます。
PostgreSQL(現在も運用中)
まあ、基本と言えば基本です。DPCデータのように、データ量が膨大で、かつ蓄積される性質のものであれば、SQLサーバーが最初の選択肢になります。
ひとくちにSQLと言っても様々で、MicrosoftのSQL Server、Oracle、MySQL、SQLiteと色んな種類があります。
ネット上を調べると、MSのSQL ServerとAccessの組み合わせでDPCデータ分析をしているところもあるようですね。
自分がPostgreを選択したのは、オープンソースで自由に使えるからです。
ドキュメントも豊富ですし、他の言語と組み合わせて使うときにも苦労がありません。
Python + Pandas(現在も運用中)
この仕事を始めるまで知りませんでしたが、データ分析の世界ではPythonとRが主流になっています。
(Juliaはどうした!という方は、たぶんこのブログを読む必要がない筈です)
Pythonのライブラリ、Pandasは行列データ(Excelの表みたいな形のデータ)を極めて効率的に扱えます。
数GBの巨大なデータでも扱えますし、実行速度も高速です。
また、Pandasを使えば記法もシンプルになります。
例としてタブ区切りテキストファイルを読み込むコードです。
import pandas as pd data = pd.read_csv('DRGEF.TXT',delimiter='\t',encoding = 'shift_jisx0213')
import pandas as pd
となっている部分でPandasを読み込んでいます。
実質一行で読み込みは終わり、後は作業に取りかかるだけです。
PandasにはExcelでいうところの「空白セルの穴埋め」を高度に行うfillna
メソッドや、SQLでいう「テーブルの合成」を行うmerge
やconcat
、更に同じカテゴリーでのグループ集計を行うgroupby
メソッドといった便利な機能が山ほど実装されています。
(とりわけgroupby
メソッドは重要です。これを使えば、データ識別番号別、科別、医師別、病棟別と様々な切り口での集計が一行で出来ます)
Pandasライブラリの機能はあまりにも膨大で、私もまだ入り口に立ったくらいの感覚ですが、恐らくエクセルで行われているような統計業務、データ集計業務の殆どはPandasで自動化出来るでしょう。