前提・実現したいこと
データフレームの各列毎に、四分位範囲の観点からデータ抽出の下限値および上限値を算出し、その範囲を満たすデータを抽出したい。
例えば下記のirisのデータを用いて、
python
1from sklearn.datasets import load_iris 2import pandas as pd 3 4iris = load_iris() 5 6df = pd.DataFrame(iris.data, columns=iris.feature_names) 7df.describe().round(1) 8 9# データの抽出条件を求める(describe()で得られる25%タイル値と75%タイル値を利用する) 10# 抽出条件は、下限値=第1四分位値 - 1.5 x 四分位範囲、上限値=第3四分位値 + 1.5 x 四分位範囲 11cols = df.columns 12iris_25 = [] 13iris_75 = [] 14for col in cols: 15 iris_25.append(df[col].describe()[4]) # 第1四分位値 16 iris_75.append(df[col].describe()[6]) # 第3四分位値 17 18# 四分位範囲を求め、リストに格納 19iris_IQR_list = [] 20for i in range(4): 21 iris_IQR_list.append(iris_75[i] - iris_25[i]) 22 23# 下限値、上限値の算出 24iris_lower_Q = [] 25iris_higher_Q = [] 26for i in range(4): 27 iris_lower_Q.append(iris_25[i] - 1.5*iris_IQR_list[i]) 28 iris_higher_Q.append(iris_75[i] + 1.5*iris_IQR_list[i]) 29 30# 上記で算出した下限値、上限値の間に入る値を元のデータフレームから抽出する 31for i, col in zip(range(4), cols): 32 (iris_lower_Q[i] < df[col]) & (df[col] < iris_higher_Q[i])
最終行のコードから、条件を満たすbool型が得られたのですが、これをどうやって元のデータフレームに適用すればいいのか(どうやったら抽出できるのか)分かりません。
どうぞよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/28 15:59