Pandas

Pandas はファイルからデータを読み込んで、データの特徴などを簡単に調べる際に利用する Python モジュールである。

ファイルの読み込み

Pandas モジュールの read_csv メソッドを利用してデータを読み込む。データは以下のようなタブ区切りのテキスト genes.txt を想定する。

cat genes.txt
name    a   c   g   t
gene_1	11.11	12.34	4.44    23.55
gene_2	22.22	23.45	5.55    10.23
gene_3	33.33	34.56	6.66    14.11

Python でファイルを読み込む。header オプションを省略した場合は、ファイルの 1 行目がヘッダー行として処理される(header = 0 と同じ)。また、ヘッダー行がない場合は header = -1 と指定する。

import pandas as pd

data = pd.read_csv("./genes.txt", sep = "\t")
data
##      name      a      c     g      t
## 0  gene_1  11.11  12.34  4.44  23.55
## 1  gene_2  22.22  23.45  5.55  10.23
## 2  gene_3  33.33  34.56  6.66  14.11

data = pd.read_csv("./genes.txt", sep = "\t", header = 0)
data
##      name      a      c     g      t
## 0  gene_1  11.11  12.34  4.44  23.55
## 1  gene_2  22.22  23.45  5.55  10.23
## 2  gene_3  33.33  34.56  6.66  14.11

data = pd.read_csv("./genes.txt", sep = "\t", header = -1)
data
##         0      1      2     3      4
## 0    name      a      c     g      t
## 1  gene_1  11.11  12.34  4.44  23.55
## 2  gene_2  22.22  23.45  5.55  10.23
## 3  gene_3  33.33  34.56  6.66  14.11

行または列の抽出

Pandas を利用して読み込んだデータに対して行または列を抽出する方法。

import pandas as pd
data = pd.read_csv("./genes.txt", sep = "\t", header = 0)
data
##      name      a      c     g      t
## 0  gene_1  11.11  12.34  4.44  23.55
## 1  gene_2  22.22  23.45  5.55  10.23
## 2  gene_3  33.33  34.56  6.66  14.11

列の抽出は列名あるいは列の番号を指定して行う。

data["name"]
## 0    gene_1
## 1    gene_2
## 2    gene_3
## Name: name, dtype: object

data.name
## 0    gene_1
## 1    gene_2
## 2    gene_3
## Name: name, dtype: object

data[['name', 'c', 'g']]
##      name      c     g
## 0  gene_1  12.34  4.44
## 1  gene_2  23.45  5.55
## 2  gene_3  34.56  6.66

data[[0, 1, 3]]
##      name      a     g
## 0  gene_1  11.11  4.44
## 1  gene_2  22.22  5.55
## 2  gene_3  33.33  6.66

行の抽出は True または False からなるベクトルを与えて抽出する。

data[data.a > data.t]
##      name      a      c     g      t
## 1  gene_2  22.22  23.45  5.55  10.23
## 2  gene_3  33.33  34.56  6.66  14.11

row_keep = [True, False, True]
data[row_keep]
##      name      a      c     g      t
## 0  gene_1  11.11  12.34  4.44  23.55
## 2  gene_3  33.33  34.56  6.66  14.11

NumPy

NumPy 行列への変換。

import numpy as np
npmat = np.matrix(data)

npmat[:, 1:5].mean(0)
## matrix([[22.22, 23.45, 5.55, 15.963333333333333]], dtype=object)

npmat[:, 1:5].sum(0)
## matrix([[66.66, 70.35, 16.65, 47.89]], dtype=object)