本記事では表題のことを成す雛形コードを載せました。
例題データには、機械学習でお馴染みのボストンデータセットを用いました。入手方法はネット情報から得られます。
▼元データのグラフ化
import pandas as pd
import matplotlib.pyplot as plt
import japanize_matplotlib
plt.rcParams["font.size"] = 16
df = pd.read_csv('boston_dataset.csv')
df
x_name = 'RM'
y_name = 'PRICE'
plt.scatter(df[x_name], df[y_name])
plt.ylim(0, 55)
plt.xlabel(x_name)
plt.ylabel(y_name)
plt.title('元データ')
plt.grid()
plt.show()
上記より、横軸にRM、縦軸にPRICEをとると下図のようになります。

▼列名「PRICE」に対して、40より大きい値を削除したい場合
df2 = df.query('PRICE <= 40')
df2
plt.scatter(df2['RM'], df2['PRICE'])
plt.ylim(0, 55)
plt.xlabel(x_name)
plt.ylabel(y_name)
plt.title('PRICE値が40以上を削除(40以下を残す)')
plt.grid()
plt.show()
結果は下記のようになります。

▼上位と下位それぞれ5%を外れ値として、除去したい場合
thr1 = df[y_name].quantile(0.95)
thr2 = df[y_name].quantile(0.05)
print(thr1, thr2)
df3 = df.query('@thr2 < PRICE <= @thr1')
print(df3)
plt.scatter(df3['RM'], df3['PRICE'])
plt.ylim(0, 55)
plt.xlabel(x_name)
plt.ylabel(y_name)
plt.title('PRICE値が95%以上と5%以下を削除(5~95%を残す)')
plt.grid()
plt.show()
結果は下記です。

以上
<広告>
リンク
リンク