こんにちは、バイオインフォマティクス実践ラボ管理者のnomura-yです。
データ解析において、表形式のデータを扱うことは非常に頻繁にあります。表形式のバイオデータ(例えば発現マトリクスのTSVなど)をExcelで開こうとすると、ファイルサイズが大きいことが原因で、なかなか開けない、検索が遅い、と解析どころではなくなってしまいます。このような表形式データをPythonで効率的に、そして強力に操作するための必須ライブラリが「Pandas」です。Pandas(だけでなく他のLinuxコマンドもそうですが)を使うことで、Viewerがない分重いデータも検索や加工がしやすくなります。
今回は、Pandasの基本から、データフレームの読み込み、表示、要約統計量の取得、そして実践的なデータフィルタリングまでを網羅的に解説します。データ解析の幅を大きく広げる内容ですので、ぜひ習得してください。
【BI入門①】R入門:環境構築と基本操作
【BI入門②】R実践:データの可視化と関数活用
【BI入門③】Rによる生物データハンドリング
【BI入門④】Python入門:Windows上でのPython・Jupyter実行環境構築
【BI入門⑤】PythonとPandas:表形式データの強力な操作術 ←本記事
動作確認環境
Linux Ubuntu 24.04 LTS
Python 3.12
Pandasによるデータ操作
1. データの準備:NCBI GEO (Gene Expression Omnibus)から入手したRNA-seqデータの.txt形式のファイルを使います。ここでは、「第3回:Rによる生物データハンドリング」で使用したファイルを流用し、Jupyter Notebbookのソースにドラックアンドドロップで配置します。
2. データの読み込み:Jupyter Notebbookを開き、import pandas as pdでPandasをインポートします。先ほど準備したRPKMデータ(タブ区切りテキストファイル)をpd.read_table()関数で読み込みます。インデックスカラムやヘッダー情報を指定して正確に読み込ませます。
import pandas as pd count_file = "GSE99704_RPKM_and_read_counts.txt" df = pd.read_table(count_file, index_col=0, header=0)
3. データフレームの表示:df.head()コマンドで、データフレームの最初の5行を表示し、内容を確認します。各サンプルが列として並び、各遺伝子がインデックスとして表示されます。

4. 要約統計量:df.describe()関数を使うと、データフレームの各列(サンプル)の要約統計量(平均値、標準偏差、最小値、最大値、四分位数など)を一度に表示できます。

5. その他:サンプル間の発現量の変化(Fold Change)を計算したり、RPKM値が1を超える遺伝子のみを抽出する、などが可能です。詳しくは下記のバイオインフォマティクス実践ラボ動画をご参照ください。
まとめ
この回までで、Windows上でのLinux環境構築からPython、Jupyterの基本的な操作、そしてBioPythonやPandasを使ったデータハンドリングの初歩までをご紹介しました。PythonとRは目的によって使い分けが重要であり、データ解析の目的や複雑さによって適切なツールを選ぶことが推奨されます。
次回予告
これまでの連載で、RやPythonといったプログラミング言語の基礎とデータハンドリングのスキルを培ってきました。いよいよ次回、第6回からはRNA-seq解析を取り上げたいと思います。 RNA-seq解析の基礎として、RNA-seq解析の有効なケースと流れ、各ステップで使用される主要なソフトウェアを紹介します。
