LoginSignup
8
18

More than 5 years have passed since last update.

Pandas で四分位数を基準に外れ値を NaN で埋める

Posted at

Pandas は便利ですよね。Pandas の DataFrame から四分位範囲の 1.5 倍を超えるデータを外れ値として削除したいと思います。ある列の値を基準に、その行まるごと削除するのではなく、列ごとに外れ値を検出し、それらを NaN で埋めてみます。

参考: 相関分析の時に四分位範囲(IQR)で外れ値を見つける(Python) - 俺、サービス売って家買うんだ

drop_outlier.py
def drop_outlier(df):
  for i, col in df.iteritems():
    #四分位数
    q1 = col.describe()['25%']
    q3 = col.describe()['75%']
    iqr = q3 - q1 #四分位範囲

    #外れ値の基準点
    outlier_min = q1 - (iqr) * 1.5
    outlier_max = q3 + (iqr) * 1.5

    #範囲から外れている値を除く
    col[col < outlier_min] = None
    col[col > outlier_max] = None

データを scikit-learn などの機械学習の関数に入れる場合は fillna などで削除したデータを埋めましょう。このやり方だと外れ値のデータが別の値に置き換わってしまうので、その点は考慮した上で使いましょう :joy:

df.fillna(method='bfill')

楽しい Pandas ライフを。

8
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
18