Python pandasライブラリの活用:データのソートについて

スポンサーリンク

バイオインフォマティクスでは、大量のデータを整理し、解析することが重要です。Pythonの pandas ライブラリを使うと、遺伝子発現データ、変異データ、臨床データなどを簡単に扱えます。その中でも、「データの並べ替え」 は基本的な操作の一つで、解析結果を見やすく整理するのに役立ちます。

この記事では、pandasの データのソート(並べ替え) の基本的名操作について、バイオインフォマティクスの実例を交えながら解説します。


1. pandasにおけるデータの並べ替えとは?

pandasでは、sort_values()sort_index() の2つのメソッドを使ってデータを並べ替えることができます。

  • sort_values() :特定の列の値を基準に並べ替える
  • sort_index() :行のインデックス(行ラベル)を基準に並べ替える

どちらの方法も、デフォルトでは 昇順(小さい順) に並べ替えますが、降順(大きい順) にすることもできます。


2. sort_values() を使った並べ替え

sort_values() を使うと、特定の列を基準に並べ替えることができます。

2.1 基本的な並べ替え

例えば、遺伝子発現データを並べ替えてみましょう。

import pandas as pd

# データの作成
df = pd.DataFrame({
    "Gene": ["BRCA1", "TP53", "EGFR", "MYC"],
    "Expression": [2.5, 8.1, 5.3, 6.2]
})

# 発現量で並べ替え(昇順)
df_sorted = df.sort_values("Expression")
print(df_sorted)

出力

    Gene  Expression
0  BRCA1        2.5
2   EGFR        5.3
3    MYC        6.2
1   TP53        8.1

デフォルトでは、Expression の値が小さい順(昇順)に並べ替えられます。


2.2 降順で並べ替える

発現量が多い順に並べ替えたい場合は、ascending=False を指定します。

df_sorted_desc = df.sort_values("Expression", ascending=False)
print(df_sorted_desc)

出力

    Gene  Expression
1   TP53        8.1
3    MYC        6.2
2   EGFR        5.3
0  BRCA1        2.5

発現量の大きい順(降順)になりました。


2.3 複数の列で並べ替える

例えば、以下のような変異データがあるとします。

df = pd.DataFrame({
    "Gene": ["BRCA1", "TP53", "EGFR", "MYC", "TP53"],
    "Mutation": ["A", "B", "A", "C", "A"],
    "Frequency": [10, 15, 8, 20, 12]
})

このデータを 遺伝子名(Gene)ごとに、変異頻度(Frequency)の降順で並べ替える 場合は、次のようにします。

df_sorted = df.sort_values(["Gene", "Frequency"], ascending=[True, False])
print(df_sorted)

出力

    Gene Mutation  Frequency
0  BRCA1        A        10
2   EGFR        A         8
3    MYC        C        20
1   TP53        B        15
4   TP53        A        12
  • Gene をアルファベット順に並べ替え
  • Frequency を降順で並べ替え(同じGene内で高頻度の変異が上にくる)

このように、複数の列を組み合わせることで、より詳細なデータの整理が可能です。


3. sort_index() を使った並べ替え

sort_index() を使うと、行のインデックス(index)を基準に並べ替える ことができます。

3.1 インデックスを設定して並べ替え

df.set_index("Gene", inplace=True)
df_sorted_index = df.sort_index()
print(df_sorted_index)

出力

        Mutation  Frequency
Gene                      
BRCA1        A        10
EGFR         A         8
MYC          C        20
TP53         B        15
TP53         A        12

インデックス(Gene)をアルファベット順に並べ替えました。

3.2 降順で並べ替える

df_sorted_index_desc = df.sort_index(ascending=False)
print(df_sorted_index_desc)

出力

        Mutation  Frequency
Gene                      
TP53         B        15
TP53         A        12
MYC          C        20
EGFR         A         8
BRCA1        A        10

インデックスを降順に並べ替えました。


4. バイオインフォマティクスでの応用

pandasの並べ替えは、バイオインフォマティクスのデータ解析において次のように活用できます。

4.1 遺伝子発現データの上位・下位遺伝子を抽出

発現量の高い遺伝子トップ3を取得する:

top_genes = df.sort_values("Expression", ascending=False).head(3)
print(top_genes)

発現量の低い遺伝子トップ3を取得する:

low_genes = df.sort_values("Expression", ascending=True).head(3)
print(low_genes)

4.2 変異データの頻度ランキング

変異の頻度が高いものから順にリストアップする:

df_sorted = df.sort_values("Frequency", ascending=False)
print(df_sorted)

4.3 インデックスを使ってデータを管理

遺伝子IDをインデックスに設定し、整理する:

df.set_index("Gene", inplace=True)
df_sorted = df.sort_index()
print(df_sorted)

これにより、特定の遺伝子のデータを簡単に取得できます。

print(df.loc["TP53"])

5. まとめ

pandasの並べ替え機能を活用すると、バイオデータの整理・解析がスムーズになります!!

  • sort_values() を使って、特定の列を基準に並べ替える
  • ascending=False を指定すると降順で並べ替えられる
  • 複数の列を組み合わせた並べ替え も可能
  • sort_index() を使うと、インデックスで並べ替えられる
  • 遺伝子発現データや変異データの整理・ランキングに活用できる

pandasの並べ替えを上手に使って、データ解析を効率化しましょう〜!

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