Python pandasライブラリ:スライスを使ったデータ参照について

スポンサーリンク

バイオインフォマティクスにおいて、遺伝子発現データやDNA配列データを効率的に処理するためには、Pythonの pandas ライブラリが非常に有用です。特に データの参照とスライス(切り出し) は、大量のバイオデータを適切に処理するために欠かせない技術です。

本記事では、pandasの基本的なデータ参照の方法から、スライスの応用テクニック までを、バイオデータ解析の実例を交えながら詳しく解説します。


1. pandasのデータ構造:SeriesとDataFrame

pandasには、データを扱うための2つの主要なデータ構造があります。

  • Series(1次元データ):リストのようなデータ構造(インデックス付きの配列)
  • DataFrame(2次元データ):表形式のデータ(エクセルのような構造)

例えば、次のようなデータを考えます。

import pandas as pd

# 遺伝子発現データの作成
data = {
    "Gene": ["BRCA1", "TP53", "EGFR", "MYC", "KRAS"],
    "Sample1": [2.5, 8.1, 5.3, 6.2, 4.4],
    "Sample2": [1.2, 7.9, 4.8, 5.6, 3.9],
    "Sample3": [3.1, 8.5, 6.1, 7.0, 5.0]
}

df = pd.DataFrame(data)
print(df)

出力

    Gene  Sample1  Sample2  Sample3
0  BRCA1      2.5      1.2      3.1
1   TP53      8.1      7.9      8.5
2   EGFR      5.3      4.8      6.1
3    MYC      6.2      5.6      7.0
4   KRAS      4.4      3.9      5.0

このDataFrameを使って、データ参照やスライスを行っていきます。


2. データの基本的な参照方法

pandasでは、データを取得するための方法として、ラベル指定位置指定 の2種類があります。

2.1 列の参照

特定の列を取得するには、以下のようにします。

print(df["Gene"])  # Gene列を取得

出力

0    BRCA1
1     TP53
2     EGFR
3      MYC
4     KRAS
Name: Gene, dtype: object

複数の列を取得する場合は、リストを使います。

print(df[["Gene", "Sample1"]])

出力

    Gene  Sample1
0  BRCA1      2.5
1   TP53      8.1
2   EGFR      5.3
3    MYC      6.2
4   KRAS      4.4

2.2 行の参照

pandasでは、行を参照する方法として、loc[](ラベル指定)とiloc[](位置指定)があります。

loc[]:ラベルを指定する方法

例えば、インデックスを遺伝子名に変更してから、特定の遺伝子のデータを取得できます。

df.set_index("Gene", inplace=True)  # Gene列をインデックスに設定
print(df.loc["TP53"])

出力

Sample1    8.1
Sample2    7.9
Sample3    8.5
Name: TP53, dtype: float64

iloc[]:位置を指定する方法

例えば、2行目のデータを取得するには、以下のようにします。

print(df.iloc[2])

出力

Sample1    5.3
Sample2    4.8
Sample3    6.1
Name: EGFR, dtype: float64

3. スライス(切り出し)の基本

pandasでは、loc[]iloc[] を使って、データの特定の部分を取得することができます。

3.1 行のスライス

例えば、最初の3行を取得する場合:

print(df.iloc[:3])  # 0行目から2行目まで

出力

       Sample1  Sample2  Sample3
Gene                              
BRCA1      2.5      1.2      3.1
TP53       8.1      7.9      8.5
EGFR       5.3      4.8      6.1

特定の範囲の遺伝子だけ取得する場合(例:TP53からMYC):

print(df.loc["TP53":"MYC"])

出力

       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

loc[] を使う場合、範囲の 終点を含む のが特徴です。


3.2 列のスライス

例えば、Sample1 から Sample2 までのデータを取得するには:

print(df.loc[:, "Sample1":"Sample2"])

出力

       Sample1  Sample2
Gene                   
BRCA1      2.5      1.2
TP53       8.1      7.9
EGFR       5.3      4.8
MYC        6.2      5.6
KRAS       4.4      3.9

4. スライスの応用(フィルタリング)

バイオデータの解析では、特定の条件に合うデータだけを取得したい場合があります。

4.1 遺伝子発現が5以上のデータを取得

filtered_df = df[df["Sample1"] > 5]
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

4.2 複数条件のフィルタリング

例えば、Sample1 の値が5以上で、かつ Sample3 の値が6以上のデータを取得:

filtered_df = df[(df["Sample1"] > 5) & (df["Sample3"] > 6)]
print(filtered_df)

5. まとめ

  • データの参照 には loc[](ラベル指定)と iloc[](位置指定)がある。
  • スライス で行や列の特定範囲を取得できる。
  • フィルタリング によって、条件に合うデータを抽出できる。

pandasのデータ参照やスライスを活用することで、遺伝子データの解析を効率化できます!!ぜひ実際のデータで試してみてくださいね〜!

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