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"]]
以下が、出力した結果になります。