バイオインフォマティクスでは、大規模なデータセットを効率的に処理するために Pythonのpandasライブラリ を活用することが重要です。遺伝子発現データ、変異データ、タンパク質の相互作用データなどを扱う際に、データの「参照(アクセス)」方法を理解することが不可欠です。
本記事では、pandasのデータ参照方法について、基本的な操作を解説します。具体的なコード例を交えながら、バイオデータ解析にすぐに活用できる知識を提供します。
1. pandasのデータ構造と基本的な参照方法
pandasでは、主に Series(1次元)とDataFrame(2次元) のデータ構造を使用します。
1.1 Seriesの参照
Series
は、リストのような構造を持ち、行に対するインデックスを持っています。
import pandas as pd
genes = pd.Series([2.5, 8.1, 5.3], index=["BRCA1", "TP53", "EGFR"])
print(genes)
出力
BRCA1 2.5
TP53 8.1
EGFR 5.3
dtype: float64
基本的な参照方法
print(genes["BRCA1"]) # インデックスを指定
print(genes[0]) # 番号(0-based index)を指定
出力
2.5
2.5
インデックス名と数値インデックスのどちらでもデータを参照できます。
1.2 DataFrameの参照
DataFrame
は、表形式のデータを扱うための構造で、行と列のインデックスを持ちます。
df = pd.DataFrame({
"Gene": ["BRCA1", "TP53", "EGFR"],
"Expression": [2.5, 8.1, 5.3]
}, index=["Sample1", "Sample2", "Sample3"])
print(df)
出力
Gene Expression
Sample1 BRCA1 2.5
Sample2 TP53 8.1
Sample3 EGFR 5.3
基本的な参照方法
print(df["Gene"]) # 列を指定
print(df.loc["Sample1"]) # 行を指定
出力
Sample1 BRCA1
Sample2 TP53
Sample3 EGFR
Name: Gene, dtype: object
Gene BRCA1
Expression 2.5
Name: Sample1, dtype: object
df["Gene"]
→ 列を指定して取得df.loc["Sample1"]
→ 行をインデックス名で取得
2. データの参照方法(基本)
pandasでは、主に以下の方法でデータを参照できます。
2.1 .loc[](ラベルベースの参照)
loc[]
を使用すると、インデックスや列名を指定してデータを取得 できます。
print(df.loc["Sample1"]) # Sample1のデータを取得
print(df.loc["Sample1", "Expression"]) # Sample1のExpression値を取得
出力
Gene BRCA1
Expression 2.5
Name: Sample1, dtype: object
2.5
また、複数の行や列を取得することもできます。
print(df.loc[["Sample1", "Sample3"]]) # 複数の行を取得
print(df.loc[:, ["Gene"]]) # 特定の列だけを取得
出力
Gene Expression
Sample1 BRCA1 2.5
Sample3 EGFR 5.3
Gene
Sample1 BRCA1
Sample2 TP53
Sample3 EGFR
2.2 .iloc[](位置ベースの参照)
iloc[]
は、行番号や列番号を指定してデータを取得 する方法です。
print(df.iloc[0]) # 0番目の行を取得
print(df.iloc[0, 1]) # 0番目の行の1番目の列を取得
出力
Gene BRCA1
Expression 2.5
Name: Sample1, dtype: object
2.5
複数の行や列を取得することも可能です。
print(df.iloc[[0, 2]]) # 0番目と2番目の行を取得
print(df.iloc[:, [1]]) # 1番目の列を取得
3. データの参照方法(応用)
3.1 条件を指定してデータを取得
バイオインフォマティクスでは、「特定の条件を満たすデータだけを抽出する」ことが重要です。
high_expression = df[df["Expression"] > 5.0]
print(high_expression)
出力
Gene Expression
Sample2 TP53 8.1
Sample3 EGFR 5.3
このように、遺伝子の発現量が5.0以上のサンプルのみ抽出できます。
3.2 特定の遺伝子のデータを取得
Gene
列をindexにすると、特定の遺伝子を簡単に検索できます。
df.set_index("Gene", inplace=True)
print(df.loc["TP53"])
出力
Expression 8.1
Name: TP53, dtype: float64
3.3 部分一致でデータを取得
正規表現を使って、特定の遺伝子名を含むデータを取得することも可能です。
filtered_df = df[df.index.str.contains("TP")]
print(filtered_df)
出力
Expression
Gene
TP53 8.1
4. まとめ
バイオインフォマティクスのデータ解析では、効率的なデータ参照が不可欠 です。pandasの基本的なデータ参照方法を理解し、適切に活用することで、遺伝子発現データやゲノムデータをスムーズに処理できます!!
基本
df.loc[]
→ インデックス名や列名でデータを取得df.iloc[]
→ 行番号や列番号でデータを取得
応用
- 条件を指定してデータをフィルタリング
- 特定の遺伝子やサンプルのデータを取得
- 正規表現で部分一致検索
今後、さらに高度なデータ解析を行うためにも、pandasのデータ参照方法をマスターしておきましょう〜!