Pythonのpandas:ラベル付きの一列のデータ「シリーズ(Series)」の使い方

スポンサーリンク

バイオインフォマティクスでは、膨大なデータを扱うことが一般的です。遺伝子発現データ、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のポイント

  1. ラベル付きの一列のデータ で、辞書のように扱える
  2. カスタムインデックスを設定可能(遺伝子名やサンプルIDなど)
  3. 数値演算や統計処理が簡単
  4. データのフィルタリングが直感的

pandasを活用したバイオデータの処理になれていきましょう〜!

タイトルとURLをコピーしました