Chapter 18

Pandasでデータ処理

poclabweb
poclabweb
2022.11.03に更新

7. データの処理

ここでは、map, applyについて学びます。似た関数にapplymapもあります。

df.map()
df.apply()
df.applymap()

自作した関数を入れて1つの関数を適応させて新しい列を作成。

数字が300以上のときに1という数字を返し、それ以外では0を返す関数を作成します。

def over_300(num):
    if int(num) >=300:
        return 1
    else:
        return 0

この関数を分子量に適応させて、新しい列名であるmolecular_weight_over300に入れます。

df["molecular_weight_over300"] = df["molecular_weight"].map(over_300)
df

一番右側に新しい列であるmolecular_weight_over300が表示されるのが確認できます。

複数の列の情報を入れて新しい指標を作成

複数の列に、反映させる関数を書いてみる。この例では、["compound_class"] == "Flavonoids"であり、["molecular_weight"] が 500以上のときに1を返す関数を作成しました。それ以外のものは0を返します。

def Flavonoids_over_500(row):
    if row["compound_class"] == "Flavonoids" and row["molecular_weight"] >= 500 :
        return 1
    else:
        return 0

これをapplyで適用してみます。わかりやすいように"compound_class", "molecular_weight", "Flavonoids_over_500"だけを表示させます。

df["Flavonoids_over_500"] = df.apply(Flavonoids_over_500, axis=1)
df[["compound_class", "molecular_weight", "Flavonoids_over_500"]]

以下が、出力した結果になります。