外れ値のないシーボーン箱ひげ図

Salman Mehmood 2023年6月21日
外れ値のないシーボーン箱ひげ図

この記事の目的は、箱ひげ図と外れ値とは何か、変更された箱ひげ図を作成する方法、および 5つの数字の要約を利用して Seaborn で外れ値を削除する方法を示すことです。

Seaborn で外れ値のない箱ひげ図を作成する

箱ひげ図は、記述統計平均、中央四分位 1、四分位 2、四分位 3、および最小値と最大値を視覚化するための統計プロットです。 外れ値は、残りのデータのグループ外の数値です。

必要なパッケージをプログラムにインポートしましょう。

import seaborn as sb
import matplotlib.pyplot as plot
import numpy as np
import pandas as pd

次に、Seaborn ライブラリに既にプリロードされている tips データセットに取り組みます。

TIPS = sb.load_dataset("tips")
TIPS.head()

データセットを見てみましょう。 このデータセットは、いくつかの列を持つレストランに関するものです。

ヒント データ セット

boxplot() メソッドを使用して箱ひげ図をプロットし、データセットから列を渡す必要があります。

import seaborn as sb
import matplotlib.pyplot as plot
import numpy as np
import pandas as pd

TIPS = sb.load_dataset("tips")

sb.boxplot(TIPS["total_bill"])
plot.show()

出力:

合計金額

これで、点線の点が残りのすべての点から離れていることがわかります。これは異常な状況のようなものです。 この列の統計を計算して外れ値をチェックする別の方法があります。

TIPS["total_bill"].describe()

describe() 関数 は自動的に統計を計算し、第 3 四分位数が 24 であることを確認できます。最大値と第 3 四分位数には大きな違いがあることがわかります。

記述関数を使用

この状況に対処する方法を見てみましょう。 外れ値を取り除くには 2つの解決策があります。 最初の解決策は、この異常値をデータ セットから直接削除することです。2つ目は、これらの異常値を適切な値に置き換えることです。

最初の解決策を見てみましょう。 このソリューションでは、1 番目と 3 番目の四分位数の条件を設定する必要があります。

TIPS = TIPS[(TIPS.total_bill <= 24) & (TIPS.total_bill >= 13)]

完全なソース コードはここにあります。外れ値はありません。

import seaborn as sb
import matplotlib.pyplot as plot
import numpy as np
import pandas as pd

TIPS = sb.load_dataset("tips")
TIPS = TIPS[(TIPS.total_bill <= 24) & (TIPS.total_bill >= 13)]

sb.boxplot(TIPS["total_bill"])
plot.show()

条件演算子によってこの外れ値を削除したため、外れ値がないことがわかります。

異常値なし

最初の解決策は毎回機能するとは限りません。 外れ値を直接削除するとデータセットから重要な情報が失われるため、この外れ値を適切な値に変換できます。

したがって、この外れ値を適切な値に変換する必要があり、第 3 四分位数の範囲が 24 を超える場合は、第 3 四分位数を 24 に置き換えます。

TIPS["new_total_bill"] = np.where(TIPS["total_bill"] >= 24, 24, TIPS["total_bill"])

完全なソース コード:

import seaborn as sb
import matplotlib.pyplot as plot
import numpy as np
import pandas as pd

TIPS = sb.load_dataset("tips")

TIPS["new_total_bill"] = np.where(TIPS["total_bill"] >= 24, 24, TIPS["total_bill"])
sb.boxplot(TIPS["new_total_bill"])
plot.show()

出力:

新総請求書

著者: Salman Mehmood
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn