見出し画像

30日Python #9 表を、まるごと読み込む(pandas)

「読むデータ」は、臨床医・医学研究者のための、Pythonと機械学習の連載。プログラミングの技術を身につけることから始め、自分のデータを「読み解く」力を鍛える。今回の#9では、医療データの表を扱う道具「pandas」に出会う。基礎編で集めた道具が、ここから「本物のデータ」に向き合いはじめる。所要時間は5分。読むのに3分、手を動かすのに2分。


Excelの表を、コードの中へ

前回、辞書を束ねれば表になると話した。年齢・性別・検査値を項目名つきで記録し、何人分も並べる。

この手順は、私たちが日頃Excelで見ている表そのものだ。

だが、辞書のリストを手で書き続けるのは現実的ではない。何千人分ものデータは、たいていExcelのファイルや、もう少し汎用的なファイル形式であるCSVとして存在している。それを、コードの中に丸ごと読み込んで扱いたい。

そのための道具が、pandas(パンダス)だ。Pythonでデータを扱うとき、ほぼ必ず使われる定番の道具で、表形式のデータを驚くほど簡単に操れる。

今日はまず、実際にExcelの表を読み込む前の段階として、より簡単な表を読み込み、目で眺めるところまで進める。


要点

  • pandasは、表形式データを扱う道具。import pandas as pd の一行で呼び出して使う。

  • 読み込んだ表は「データフレーム」と呼ばれる。行が患者、列が項目に対応する。前回の「辞書を束ねた表」そのものだ。

  • .head() で先頭数行を、.shape で行数・列数を確認できる。まず全体を眺めるのが、データを読む第一歩。


1. pandasを、呼び出す

新しいセルで、まずこの一行を実行する。

import pandas as pd

これは「pandasという道具を読み込み、これからは pd という短い名前で呼ぶ」という意味だ。

関数(第7回)が誰かの用意した処理だったように、pandasも誰かが作った道具一式で、import で呼び出して使う。as pd は、毎回 pandas と打つ代わりの略称で、世界共通の慣習になっている。

つまりpandasを使うにあたって、import pandas as pd はひとつながりの魔法の決まり文句だ。

2. 表を、作って読み込む

本来はファイルから読み込むことが多いが、今日はまず、前回の「辞書を束ねた表」をそのままpandasに渡してみよう。

data = {
    "age": [65, 70, 58, 80],
    "sex": ["F", "M", "F", "M"],
    "k": [4.2, 5.8, 3.9, 4.5],
}
df = pd.DataFrame(data)
df

実行すると、行と列のそろった、きれいな表がこう表示される。

age sex    k
0   65   F  4.2
1   70   M  5.8
2   58   F  3.9
3   80   M  4.5

pd.DataFrame( ) が、項目名と値の集まりを「データフレーム」(pandasの表)に変えてくれた。左端の0,1,2,3は行番号(第4回と同様に0始まり)で、各行が一人の患者にあたる。いちばん上の age sex k が列の見出し、つまり前回覚えた辞書のキーがそのまま列名になっている。

この df(データフレームの慣用的な名前)が、これから何度も登場する主役だ。

3. 解析前にまず、全体を眺める

Pythonで解析をするためにデータを入手したら、いきなり解析から始めるのではなく、まずデータの概要を眺めるのが賢明だ。

これは臨床でカルテをまず通読するのと同じ、最初の作法だ。必ず解析する前にデータを外観するクセをつけること、これは非常に重要である。

データフレームの先頭数行を見るには .head() を用いる。

df.head()

実行すると、こう表示される。

age sex    k
0   65   F  4.2
1   70   M  5.8
2   58   F  3.9
3   80   M  4.5

今回は4行しかないので全ての行が表示されているが、.head() は何千行のデータであっても先頭5行だけを返す。だから、ファイルを開いた直後でも画面が埋め尽くされることなく、「どんな列があり、どんな値が入っているか」をひと目で確かめられる。

表の大きさは .shape で分かる。

df.shape

を実行すると、こう表示される。

(4, 3)

「4行・3列」、つまり患者4人、項目3つ、とわかる。

ファイルを読み込んだ直後、「何人分のデータで、項目はいくつあるか」を真っ先に確認する。そその癖が、後の大きな失敗を未然に防いでくれる。


今日の実習(2分)

新しいセルで、以下を上から順にやってみよう。

  1. 本文の data(列で持つ辞書)から df = pd.DataFrame(data) を作り、df を実行して表が表示されることを確かめる。

  2. df.shape を実行し、(4, 3)、患者4人で、項目3つであることを確かめる。

  3. data に検査項目を一つ増やす。"bp": [120, 145, 138, 162] を加えてから df = pd.DataFrame(data) を作り直す。df.shape が (4, 4) に変わることを確かめる。列が一つ増えると、右側の数字が増える。

参考.

data = {
    "age": [65, 70, 58, 80],
    "sex": ["F", "M", "F", "M"],
    "k": [4.2, 5.8, 3.9, 4.5],
    "bp": [120, 145, 138, 162],
}

列を足すたびに .shape の二つ目の数字が動く。表の形が数字で見える、この感覚を、実際に指でも掴んでおこう。


今日のまとめ

pandasは、表形式データを扱う定番の道具である。

読み込んだ表(データフレーム)は、行が患者・列が項目で、前回の「辞書を束ねた表」と同じ構造をしている。データを受け取ったら、まず .head() と .shape で全体を眺める。それが、データを読む最初の一歩になる。


次回、第10回「ファイルから、データを開く」

手元のCSVファイルを実際に読み込む。あなた自身のデータを、コードの中へ招き入れる回だ。

いいなと思ったら応援しよう!