IQR(四分位範囲)の概念を使って、外れ値を除去したいのですが、その除去を特定の期間ごと[ex)60分ごと]に実行したいです。
【前提】
データフレーム:IndexがTimestamp('2017-07-01 00:00:00'から'2018-02-28 23:59:00')で、Columnが237個のデータフレーム。
【やりたいことのイメージ】
Python
1#関数の定義 2def drop_outlier(df): 3 for i, col in df.iteritems(): 4 # IQR 5 q1 = col.describe()['25%'] 6 q3 = col.describe()['75%'] 7 iqr = q3 - q1 8 9 # Lower 1.5*IQR whisker & Upper 1.5*IQR whisker 10 outlier_min = q1 - (iqr) * 1.5 11 outlier_max = q3 + (iqr) * 1.5 12 13 # Fill the oulier with NaN 14 col[col < outlier_min] = None 15 col[col > outlier_max] = None
Python
1# 7月の外れ値処理 2drop_outlier(df['2017-07-01 00:00:00':'2017-07-31 12:59:00']) 3# 8月の外れ値処理 4drop_outlier(df['2017-08-01 00:00:00':'2017-08-30 12:59:00']) 5. 6. 7. 8# 2月の外れ値処理 9drop_outlier(df['2017-02-01 00:00:00':'2017-02-28 12:59:00'])
このように、一つ一つ処理することは可能ですが、全然スマートじゃないし、応用可能範囲も狭いと思いました。
より抽象的で、スマートなやり方をご教授願いたいです。
どうぞよろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。