Python 外れ値を除去する

 本記事では、外れ値を削除する雛形コードを載せました。
判定には、四分位範囲の考え方を用いたコードです。その定義では、下側25%(中央値の下側の更に中央値)、上側75%(中央値の上側の更に中央値)点を取得して、その幅から計算して除去するラインを決めます。ただ、本プログラム上では個別に直入力して融通が利くようにしています。

f:id:HK29:20210619235519p:plain

■本プログラム

#!/usr/bin/env python
# coding: utf-8

# In[1]:


import pandas as pd

df = pd.read_csv('boston_dataset.csv')
df


# In[2]:


import matplotlib.pyplot as plt
plt.rcParams['font.size'] = 15 # グラフの基本フォントサイズの設定

plt.scatter(df['LSTAT'], df['PRICE'])
plt.xlabel('LSTAT')
plt.ylabel('PRICE')
plt.xlim(0, 40)
plt.ylim(0, 55)
plt.grid()


# In[3]:


def remove_outliers_func(df_in, column_name):
    q1 = df_in[column_name].quantile(0.25)
    q3 = df_in[column_name].quantile(0.75)
    iqr = q3 - q1 # 四分位範囲 Interquartile range(IQR)
    print('IQR -> ', iqr)
    low_line = q1 - 1.5 * iqr
    high_line = q3 + 1.5 * iqr
    df_out = df_in.loc[(df_in[column_name] > low_line) & 
                       (df_in[column_name] < high_line)]
    return df_out

DF = remove_outliers_func(df, 'PRICE')
DF


# In[4]:


import matplotlib.pyplot as plt
plt.rcParams['font.size'] = 15 # グラフの基本フォントサイズの設定

plt.scatter(DF['LSTAT'], DF['PRICE'])
plt.xlabel('LSTAT')
plt.ylabel('PRICE')
plt.xlim(0, 40)
plt.ylim(0, 55)
plt.grid()


# In[ ]:

以上

<広告>