バイオインフォマティクスでは、膨大なデータを扱うことが一般的です。遺伝子発現データ、DNAシーケンス、タンパク質のインタラクションデータなど、多様な情報を処理する必要があります。そのため、データ解析を効率的に行うためには、Pythonの pandas ライブラリが非常に有用です。
pandasの基本的なデータ構造には Series(シリーズ) と DataFrame(データフレーム) があります。この記事では、「シリーズとは何か?」をテーマに、バイオインフォマティクスのデータ処理での活用方法も交えながら詳しく解説します。
1. pandasのシリーズ(Series)とは?
pandasの Series(シリーズ) とは、一言でいうと「ラベル付きの一列のデータ」です。リストやNumPyの配列に似ていますが、インデックス(ラベル)を持つ点 が特徴です。
Seriesの基本構造
Seriesは pandas.Series()
を使って作成できます。次のような形でデータを格納します:
インデックス(ラベル) → 値
PythonでSeriesを作成する基本的なコードを見てみましょう。
import pandas as pd
# シンプルなSeriesの作成
data = pd.Series([10, 20, 30, 40])
print(data)
出力:
0 10
1 20
2 30
3 40
dtype: int64
この例では、pandasが自動で インデックス(0, 1, 2, 3) を割り当てています。
2. Seriesのインデックスとは?
pandasのシリーズの特徴の一つは、各要素に対して インデックス(index) を持つことです。デフォルトでは0から始まる連番が振られますが、自分でインデックスを指定することも可能です。
カスタムインデックスを持つSeries
import pandas as pd
# インデックスを指定してSeriesを作成
data = pd.Series([100, 200, 300], index=["A", "B", "C"])
print(data)
出力:
A 100
B 200
C 300
dtype: int64
このように、インデックスを「A, B, C」と指定することで、データをより直感的に管理できます。
インデックスを使ったデータの取得
インデックスを指定すると、辞書のようにデータを取得できます。
print(data["B"]) # 出力: 200
3. Seriesとバイオインフォマティクス
バイオインフォマティクスのデータは、しばしば サンプルIDや遺伝子名をインデックス として扱うことが多いです。例えば、遺伝子の発現量データをSeriesに格納すると、次のようになります。
import pandas as pd
# 遺伝子発現データ
gene_expression = pd.Series(
[5.2, 7.8, 3.6, 9.1],
index=["GeneA", "GeneB", "GeneC", "GeneD"]
)
print(gene_expression)
出力:
GeneA 5.2
GeneB 7.8
GeneC 3.6
GeneD 9.1
dtype: float64
このデータ構造を使えば、遺伝子の発現レベルを簡単に検索できます。
print(gene_expression["GeneB"]) # 出力: 7.8
また、特定の遺伝子の発現量をフィルタリングすることも可能です。
# 発現量が6以上の遺伝子のみを取得
high_expression = gene_expression[gene_expression > 6]
print(high_expression)
出力:
GeneB 7.8
GeneD 9.1
dtype: float64
4. Seriesの演算と統計処理
基本的な演算
SeriesはNumPyと連携しており、数値データの演算が簡単にできます。
print(gene_expression * 2) # 各値を2倍
出力:
GeneA 10.4
GeneB 15.6
GeneC 7.2
GeneD 18.2
dtype: float64
統計情報の取得
バイオデータを分析する際、統計情報の計算は不可欠です。Seriesには、次のような便利な統計メソッドがあります。
print("平均値:", gene_expression.mean()) # 平均
print("中央値:", gene_expression.median()) # 中央値
print("最大値:", gene_expression.max()) # 最大値
print("最小値:", gene_expression.min()) # 最小値
出力:
平均値: 6.425
中央値: 6.5
最大値: 9.1
最小値: 3.6
5. Seriesの応用:遺伝子変異データの処理
バイオインフォマティクスでは、遺伝子変異(SNPやINDEL)のデータを処理することが多いです。例えば、各サンプルにおける変異の数をSeriesで管理できます。
# サンプルごとのSNP変異数
snp_counts = pd.Series(
[120, 85, 190, 60],
index=["Sample1", "Sample2", "Sample3", "Sample4"]
)
print(snp_counts)
特定の閾値以上の変異があるサンプルを抽出できます。
print(snp_counts[snp_counts > 100]) # SNP数が100以上のサンプル
出力:
Sample1 120
Sample3 190
dtype: int64
このように、Seriesを活用することで、大量のデータを簡単に処理・解析できます。
まとめ
pandasの Series(シリーズ) は、バイオインフォマティクスのデータ処理において非常に役立ちます。特に、遺伝子発現データや変異データの解析 で大いに活用できます!!
Seriesのポイント
- ラベル付きの一列のデータ で、辞書のように扱える
- カスタムインデックスを設定可能(遺伝子名やサンプルIDなど)
- 数値演算や統計処理が簡単
- データのフィルタリングが直感的
pandasを活用したバイオデータの処理になれていきましょう〜!