バイオインフォマティクスでは、大量のデータを扱う機会が多く、効率的にデータを処理するためのツールが必要不可欠です。その中でも、Pythonのpandasライブラリは、データの読み込み、整理、解析において非常に強力な機能を提供します。
本記事では、pandasの概要と基本的な使い方 に加え、バイオインフォマティクスの実践的な応用として、遺伝子発現データの読み込みや前処理の手法 について詳しく解説します。
1. pandasとは?
1.1 pandasの概要
pandasは、Pythonでデータ解析を行うためのライブラリであり、以下のような特徴を持っています。
- 表形式(データフレーム)のデータを扱える
- 高速なデータ処理が可能
- データのフィルタリングや統計解析が容易
- CSV、Excel、SQLなど多くのデータ形式を読み書きできる
特にバイオインフォマティクスでは、次のようなデータを扱うのに適しています。
- 遺伝子発現データ(RNA-Seq、Microarray)
- 変異データ(VCFファイル)
- メタデータ(サンプル情報、患者データ)
- タンパク質相互作用データ(PPIネットワーク)
1.2 pandasの基本データ構造
pandasには主に2つのデータ構造が存在します。
① Series(1次元データ)
1列だけのデータを扱う構造です。
import pandas as pd
data = pd.Series([2.5, 8.1, 5.3], index=["BRCA1", "TP53", "EGFR"])
print(data)
出力
BRCA1 2.5
TP53 8.1
EGFR 5.3
dtype: float64
これは、遺伝子名をインデックスにした発現データの例です。
② DataFrame(2次元データ)
表形式のデータを扱うための構造で、行と列を持ちます。
df = pd.DataFrame({
"Gene": ["BRCA1", "TP53", "EGFR"],
"Sample1": [2.5, 8.1, 5.3],
"Sample2": [3.2, 7.9, 6.1]
})
print(df)
出力
Gene Sample1 Sample2
0 BRCA1 2.5 3.2
1 TP53 8.1 7.9
2 EGFR 5.3 6.1
このように、DataFrameは遺伝子発現データやメタデータを扱うのに適しています。
2. データの読み込み
バイオインフォマティクスでは、多くのデータを外部ファイル(CSV、Excel、TSV、JSON、SQLなど)から読み込むことが一般的です。ここでは、基本的なデータの読み込み方法と応用例を紹介します。
2.1 CSVファイルの読み込み
最もよく使われる形式の一つがCSV(カンマ区切り) です。
基本的なCSVの読み込み
df = pd.read_csv("gene_expression.csv")
print(df.head()) # 最初の5行を表示
pd.read_csv()
を使うことで、簡単にCSVファイルを読み込むことができます。
区切り文字が異なる場合(TSVファイル)
タブ区切り(TSV)の場合は、sep="\t"
を指定します。
df = pd.read_csv("gene_expression.tsv", sep="\t")
特定の列をインデックスにする
遺伝子名をインデックスにする場合、index_col
を指定します。
df = pd.read_csv("gene_expression.csv", index_col="Gene")
print(df.head())
データに欠損値(NaN)が含まれる場合
欠損値(NaN)を処理するには、以下のように dropna()
や fillna()
を活用します。
df.dropna(inplace=True) # 欠損値を削除
df.fillna(0, inplace=True) # 欠損値を0で埋める
2.2 Excelファイルの読み込み
Excelファイル(.xlsx)も直接読み込むことが可能です。
df = pd.read_excel("gene_data.xlsx", sheet_name="Sheet1")
シート名を指定することで、複数シートのデータも扱えます。
2.3 JSONファイルの読み込み
データベースやWeb APIから取得したデータがJSON形式である場合も多いです。
df = pd.read_json("gene_data.json")
2.4 SQLデータベースからの読み込み
バイオインフォマティクスでは、大規模なデータをSQLデータベースで管理することもあります。pandasはSQLデータベースと連携可能です。
import sqlite3
conn = sqlite3.connect("bioinfo.db")
df = pd.read_sql_query("SELECT * FROM gene_expression", conn)
この方法を使うことで、大量のデータを効率的に扱うことができます。
3. データの簡単な前処理
データを読み込んだ後、解析を行う前にクリーニングや整形が必要になります。
3.1 列の名前を変更
df.rename(columns={"Sample1": "Control", "Sample2": "Treatment"}, inplace=True)
3.2 特定の遺伝子だけを抽出
filtered_df = df[df["Gene"].isin(["BRCA1", "TP53"])]
print(filtered_df)
3.3 発現値が一定以上の遺伝子を抽出
high_expression = df[df["Sample1"] > 5.0]
print(high_expression)
3.4 データの統計情報を取得
print(df.describe()) # 平均値、標準偏差などを表示
4. まとめ
pandasを使うことで、バイオインフォマティクスのデータを効率的に読み込み、前処理を行う ことができます!!
今回学んだポイント
✅ pandasは表形式のデータを扱うのに適している
✅ CSV、TSV、Excel、JSON、SQLなど、さまざまなデータ形式を読み込める
✅ index_col
を指定すると、遺伝子名やサンプルIDをキーにできる
✅ データのフィルタリングや統計情報の取得も簡単
この知識を活かして、バイオインフォマティクスのデータ解析をさらにスムーズに進めましょう〜!