pythonってすごいね

RNAseqを用いた遺伝子発現量解析、機械学習を用いた回帰、分類などの解析を中心に記事を書いていきたいです!

データフレームの条件分岐 (pandas)

pandasでは、if文のように、カラムの値に応じて任意の領域を選択、取り出す事ができます。


import pandas as pd #使うパッケージをimportする
from sklearn.datasets import load_iris
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names) #データフレームの作成
print(df)

単一の条件式

基本形は、df[df["カラムの名前"]=="条件"] です。

==には、>= 、<=、 !=に変えることができます。

”条件”には、文字列、数値を入れる事ができます。

table=table[table["sepal length (cm)"]==5] #sepal length (cm) が5のみ残す
print(df)

この他にも、以下のような条件式をしようすることもできます。

table=table[table["sepal length (cm)"]!=5] #sepal length (cm) が5以外のカラムを残す

table=table[table["sepal length (cm)"]>=5] #sepal length (cm) が5以上のカラムのみを残す

複数の条件式 (”かつ”、”または”)

条件Aかつ条件Bのデータフレームを選択する場合、

df[(df["カラム名"]==条件A)&(df["カラム名"]==条件B)]

書き方の手順

条件式を書く
[1] df["カラム名"]==条件A  df["カラム名"]==条件B

カッコで囲む
[2] (df["カラム名"]==条件A)&(df["カラム名"]==条件B)

df[]の中に条件式を入れる
[3] df[(df["カラム名"]==条件A)&(df["カラム名"]==条件B)]

df=df[(df["sepal length (cm)"]==5)&(df["petal length (cm)"]==1.4)] #sepal length (cm)が 5でかつ、petal length (cm)が1.4のみ残す
print(df)

条件A”または”条件Bのデータフレームを選択する場合、
&の代わりに”|”を使用する

df[(df["カラム名"]==条件A)|(df["カラム名"]==条件B)]

df=df[(df["sepal length (cm)"]==5)|(df["petal length (cm)"]==1.4)] #sepal length (cm)が 5または、petal length (cm)が1.4を残す
print(df)

条件式は少し複雑ですが、覚えておくととても便利なので、ぜひ使えるようにしましょう!