バイオインフォマティクスにおいて、データ解析は不可欠な作業です。Pythonのpandasライブラリは、データの整形、解析、可視化などにおいて強力なツールとして広く利用されています。特に、Series(シリーズ)はpandasのデータ構造の基本であり、一変数のデータを扱う際に非常に便利です。
本記事では、シリーズの基本操作から応用までを詳しく解説します。
1. pandasのシリーズ(Series)とは?
pandasのSeriesは、1次元のデータ構造であり、インデックス付きの配列のようなものです。NumPyの配列(numpy.array
)に似ていますが、インデックスを自由に設定できる点が特徴です。
import pandas as pd
# シンプルなシリーズの作成
data = [1.5, 2.3, 3.8, 4.1, 5.6]
series = pd.Series(data)
print(series)
出力:
0 1.5
1 2.3
2 3.8
3 4.1
4 5.6
dtype: float64
このように、デフォルトでは0から始まる整数インデックスが自動で付与されます。
カスタムインデックスの指定
index_labels = ['A', 'B', 'C', 'D', 'E']
series_custom = pd.Series(data, index=index_labels)
print(series_custom)
出力:
A 1.5
B 2.3
C 3.8
D 4.1
E 5.6
dtype: float64
このように、インデックスを自由に設定できます。バイオインフォマティクスでは、遺伝子名やサンプル名をインデックスとして利用することが多いです。
2. Seriesの基本操作
シリーズは数値データだけでなく、文字列データやブール値など、さまざまなデータ型を扱えます。ここでは、Seriesの基本的な操作について説明します。
2.1 要素の参照
- インデックスで参照
print(series_custom['C']) # 3.8
- 数値インデックスで参照
print(series_custom.iloc[2]) # 3.8
- スライス
print(series_custom['B':'D'])
出力:
B 2.3
C 3.8
D 4.1
dtype: float64
2.2 Seriesの演算
SeriesはNumPy配列と同様にベクトル演算が可能です。
print(series_custom + 2) # 全ての要素に2を加算
print(series_custom * 2) # 値を2倍にする
print(series_custom / 2) # 値を半分にする
3. Seriesの応用
バイオインフォマティクスでは、大量のデータを扱うため、効率的なデータ操作が求められます。ここでは、実際のデータ解析で役立つ応用テクニックを紹介します。
3.1 条件を満たすデータの抽出
例えば、遺伝子発現データで、発現値が3.0以上のものだけを抽出したい場合:
high_expression = series_custom[series_custom >= 3.0]
print(high_expression)
出力:
C 3.8
D 4.1
E 5.6
dtype: float64
3.2 欠損値の処理
生物学データには**欠損値(NaN: Not a Number)**が含まれることが多いため、それを適切に処理する必要があります。
data_with_nan = [1.5, 2.3, None, 4.1, 5.6]
series_nan = pd.Series(data_with_nan, index=index_labels)
print(series_nan.isnull()) # True: 欠損値
print(series_nan.fillna(0)) # 欠損値を0で埋める
3.3 Seriesの統計情報
- 最大・最小値
print(series_custom.max()) # 5.6
print(series_custom.min()) # 1.5
- 平均値・標準偏差
print(series_custom.mean()) # 平均
print(series_custom.std()) # 標準偏差
- 要約統計量
print(series_custom.describe())
出力:
count 5.000000
mean 3.460000
std 1.657986
min 1.500000
25% 2.300000
50% 3.800000
75% 4.100000
max 5.600000
dtype: float64
これにより、データの全体像を把握できます。
4. バイオインフォマティクスでのSeries活用例
4.1 遺伝子発現データの処理
遺伝子発現データをSeriesで管理すると、特定の遺伝子群を抽出したり、発現レベルを解析したりするのが簡単になります。
gene_expression = pd.Series({
'BRCA1': 5.2,
'TP53': 8.4,
'MYC': 7.1,
'EGFR': 3.2,
'BRAF': 6.0
})
# 高発現の遺伝子を抽出
high_exp_genes = gene_expression[gene_expression > 6.0]
print(high_exp_genes)
出力:
TP53 8.4
MYC 7.1
BRAF 6.0
dtype: float64
4.2 SNP(単一塩基多型)データの処理
ゲノム解析では、SNPデータの処理にもSeriesが役立ちます。
snp_data = pd.Series({
'rs12345': 'A/T',
'rs67890': 'G/G',
'rs13579': 'T/T',
'rs24680': 'C/A'
})
# 特定のSNPを参照
print(snp_data['rs13579']) # 'T/T'
まとめ
本記事では、pandasのSeries(シリーズ)の基本から応用までを解説しました。バイオインフォマティクスでは、遺伝子発現データやSNPデータの処理にpandasのSeriesを活用することで、データ解析を効率的に行うことができます!!
主なポイント:
- Seriesは1次元のデータ構造で、インデックスを自由に設定可能
- 基本操作(要素の参照、スライス、演算、欠損値処理)を習得
- 統計情報の取得や条件抽出を活用
- 遺伝子発現データやSNPデータの解析に応用
次回は、DataFrameについて解説する予定です〜!