バイオインフォマティクスのデータ解析において、Pythonの pandas ライブラリは必須のツールです。遺伝子発現データ、配列データ、メタデータなど、大量のデータを扱う場面で強力な機能を提供してくれます。その中でも 「index(インデックス)」 は、データの整理や検索、効率的な処理を行う上で欠かせない概念です。
本記事では、pandasのindexとは何か?どのように活用できるのか? を、バイオインフォマティクスの実例を交えながら解説していきます。
1. pandasのindexとは?
pandasのindex
は、データの行に対するラベル です。Excelの行番号に似ていますが、より自由度が高く、カスタマイズ可能な点が特徴です。
pandasのデータ構造には Series(1次元)と DataFrame(2次元)がありますが、どちらにもindex
が存在します。
1.1 Seriesのindex
import pandas as pd
data = pd.Series([10, 20, 30], index=["A", "B", "C"])
print(data)
出力
A 10
B 20
C 30
dtype: int64
この例では、デフォルトの数値インデックス(0, 1, 2)ではなく、A
, B
, C
をカスタムインデックスとして設定しています。
1.2 DataFrameのindex
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
このように、各サンプル(Sample1, Sample2, Sample3)をindexとして設定できます。遺伝子発現データを扱う際には、サンプルIDや遺伝子名をindexにすることで、データの検索や操作がしやすくなります。
2. indexの設定と操作
pandasのindex
は、以下のように操作できます。
2.1 indexの設定
データフレームの作成時に、特定の列をindexにすることも可能です。
df = pd.DataFrame({
"Sample": ["S1", "S2", "S3"],
"Gene": ["BRCA1", "TP53", "EGFR"],
"Expression": [2.5, 8.1, 5.3]
})
df.set_index("Sample", inplace=True)
print(df)
出力
Gene Expression
Sample
S1 BRCA1 2.5
S2 TP53 8.1
S3 EGFR 5.3
set_index("Sample")
によって、Sample
列がindexになり、より意味のあるデータ構造になりました。
2.2 indexをリセットする
indexを通常の列に戻すには、reset_index()
を使います。
df.reset_index(inplace=True)
print(df)
出力
Sample Gene Expression
0 S1 BRCA1 2.5
1 S2 TP53 8.1
2 S3 EGFR 5.3
このように、indexを解除し、通常の列として扱うことができます。
2.3 indexを使ったデータの選択
indexを指定してデータを取得することもできます。
print(df.loc["S2"])
出力
Gene TP53
Expression 8.1
Name: S2, dtype: object
このように、df.loc["S2"]
で Sample
が “S2” の行を取得できます。
3. indexのユニーク性と重複
通常、indexはユニークであることが望ましいですが、重複したindex を持つことも可能です。
df = pd.DataFrame({
"Gene": ["BRCA1", "TP53", "EGFR", "TP53"],
"Expression": [2.5, 8.1, 5.3, 7.9]
}, index=["Sample1", "Sample2", "Sample3", "Sample2"])
print(df)
出力
Gene Expression
Sample1 BRCA1 2.5
Sample2 TP53 8.1
Sample3 EGFR 5.3
Sample2 TP53 7.9
このように、Sample2
が重複しています。これにより、df.loc["Sample2"]
は複数の行を返します。
4. indexの活用例(バイオインフォマティクス)
バイオインフォマティクスでは、pandasのindexを活用して遺伝子発現データや変異データを効率的に扱えます。
4.1 遺伝子発現データのフィルタリング
例えば、「特定の遺伝子の発現値が一定以上のサンプルを抽出する」場合:
df = pd.DataFrame({
"Gene": ["BRCA1", "TP53", "EGFR", "MYC"],
"Sample1": [2.5, 8.1, 5.3, 6.2],
"Sample2": [1.2, 7.9, 4.8, 5.6],
"Sample3": [3.1, 8.5, 6.1, 7.0]
})
df.set_index("Gene", inplace=True)
filtered_df = df[df["Sample1"] > 3.0]
print(filtered_df)
出力
Sample1 Sample2 Sample3
Gene
TP53 8.1 7.9 8.5
EGFR 5.3 4.8 6.1
MYC 6.2 5.6 7.0
このように、indexを遺伝子名にすることで、df.loc["BRCA1"]
のように特定の遺伝子を簡単に取り出したり、条件を指定してデータを抽出できます。
5. まとめ
pandasのindex
は、バイオインフォマティクスにおいてデータの整理や解析をスムーズにする重要な機能です。
index
はデータの「行ラベル」であり、検索や操作を効率化する。set_index()
で特定の列をindexに設定できる。loc[]
を使ってindexをキーにデータを取得できる。- バイオインフォマティクスでは、遺伝子名やサンプルIDをindexに設定することで、効率的なデータ処理が可能になる。
pandasのindexを適切に活用することで、大規模なデータ解析をより直感的かつ高速に行えるようになります!!
ぜひ、実際のデータで試してみてくださいね〜!