pandasで特定の条件を使ってデータを抽出する方法を解説します。
データの抽出
データセット
import pandas as pd
from sklearn.datasets import load_iris
iris_data = load_iris()
df = pd.DataFrame(
data = iris_data.data,
columns = iris_data.feature_names,
)
df["label"] = iris_data.target
df
load_irisのデータセットを使います。
locでデータを取り出す
df.loc[df.label == 0]
locで条件を指定することでデータを取り出せます。上記はlabel = 0のデータが対象です。
df.loc[(df.label == 0) & (df["sepal length (cm)"] > 5.0)]
こんな感じで複数条件にすることも可能です。””で囲うか、.でつなげるかは自由です。
df.loc[(df.label == 0), "sepal length (cm)"]
カンマで区切ってから列名を入れると、条件に合致する行における指定したデータを取り出せます。
ilocでデータを取り出す
df.iloc[0]
ilocは行番号を使って取り出します。上記は0行目を取り出します。
df.iloc[0, 0]
iloc[行, 列]として指定できます。上記は0行目の0列目です。
df.iloc[[1, 5, 10], 0]
こんな感じで、リストにして複数の番号を渡すことも可能です。
df.iloc[:, 0]
# df.iloc[0, :]
行または列番号に:を入れると、すべてが対象になります。上記1行目は、全行の1列目データです。
コメントアウトしている2行目は、0行目の全列のデータですね。
まとめ
locとilocでデータを取り出す方法を解説しました。
locは条件を指定して取り出す方法で、ilocは番号を指定して取り出す方法です。
コメント