Seaborn 箱線圖
可以使用 Python 中的 seaborn 模組建立不同的統計圖表。我們可以使用 seaborn.boxplot()
函式建立一個箱線圖。
分析師和統計學家經常使用箱線圖來表示不同級別或類別的資料。箱線圖可以傳達許多統計值。下圖說明了這一點。
boxplot()
函式可以有效地繪製資料集的分類值,也可以處理單個列表或陣列向量。它與小提琴圖非常相似。
在下面的例子中,我們繪製了一個單一分佈的箱線圖,以瞭解最終的數字。
import random
import numpy as np
import seaborn as sns
n = random.sample(range(0, 50), 30)
arr = np.array(n)
sns.boxplot(n)
我們還可以在箱線圖上繪製散點圖。它將讓你更好地瞭解繪製的分佈和最終數字。
我們將使用 seaborn.stripplot()
函式來繪製散點圖。例如,
import random
import numpy as np
import seaborn as sns
n = random.sample(range(0, 50), 30)
arr = np.array(n)
sns.boxplot(n)
sns.stripplot(n, color="red")
箱線圖可以有效地用於繪製分類變數並使它們的比較變得簡單。在以下程式碼中,我們將繪製多個類別的箱線圖。
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame(
{
"Quantity": [5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8],
"Price": [9, 10, 15, 16, 13, 14, 15, 18, 11, 12, 14, 15, 16, 17, 18, 19],
"Day": [1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2],
"Product": [
"A",
"A",
"A",
"A",
"B",
"B",
"B",
"B",
"A",
"A",
"A",
"A",
"B",
"B",
"B",
"B",
],
}
)
sns.boxplot(data=df, y="Price", x="Quantity")
注意在上面的資料集中,我們可以輕鬆地比較不同數量的價格。我們還可以新增 hue
引數並將其值設定為 Product
變數。這樣,我們將能夠為不同的產品繪製不同的框。
我們可以使用 matplotlib.pyplot.ylim()
和 matplotlib.pyplot.xlim()
來設定圖的 x 和 y 軸的限制。
我們可以使用更多引數來調整最終圖。linewidth
引數可用於增加箱線圖邊界的厚度。我們可以使用 palette
引數為不同類別自定義顏色。可以使用 orient
引數更改方向。還有更多這樣的引數可以使用。
請參考下面的程式碼以瞭解其中一些引數的應用。
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame(
{
"Quantity": [5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8],
"Price": [9, 10, 15, 16, 13, 14, 15, 18, 11, 12, 14, 15, 16, 17, 18, 19],
"Day": [1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2],
"Product": [
"A",
"A",
"A",
"A",
"B",
"B",
"B",
"B",
"A",
"A",
"A",
"A",
"B",
"B",
"B",
"B",
],
}
)
sns.boxplot(
data=df, y="Price", x="Quantity", hue="Product", linewidth=2.5, palette="Set2"
)
我們還可以使用 catplot()
函式來建立箱線圖。catplot()
函式非常適合繪製分類值。要使用此函式建立箱線圖,我們需要將 catplot()
函式中的 kind
引數的值指定為 box
。
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn