箱型圖(Box Plot),又稱盒狀圖,是用於顯示資料分佈情況的一種統計圖表。它能夠展示資料的中位數、四分位數、極端值和異常值(outliers),幫助我們直觀地了解資料的集中趨勢和變異情況。今天,我們將介紹箱型圖的應用情境,並使用 Matplotlib 和 Seaborn 進行實作。
大家一樣用昨天的檔案,先前面的程式內容全部都執行過一遍
箱型圖適合用來展示以下情境的資料:
首先,我們使用 Matplotlib 繪製一個基本的箱型圖,來顯示花萼長度的分佈情況。
# 繪製花萼長度的箱型圖
plt.boxplot(iris_df['sepal length (cm)'])
plt.title('Box Plot of Sepal Length')
plt.ylabel('Sepal Length (cm)')
plt.show()
這段程式碼會繪製一個基本的箱型圖,展示花萼長度的分佈情況。圖中的框表示資料的四分位範圍(IQR),水平線表示中位數,上下須線表示資料的範圍,圈點則表示異常值。
接下來,我們使用 Seaborn 繪製一個分組箱型圖,顯示不同花卉種類的花瓣長度分佈情況。
# 繪製分組箱型圖
sns.boxplot(x='target', y='petal length (cm)', data=iris_df)
plt.title('Box Plot of Petal Length Distribution by Flower Species')
plt.xlabel('Flower Species')
plt.ylabel('Petal Length (cm)')
plt.show()
這段程式碼使用 boxplot()
函數根據 target_0
分組,展示不同花卉種類的花瓣長度分佈情況。可以看到每個種類的中位數、四分位範圍和異常值。
我們可以通過添加圖表元素(如顏色、標籤等)來改進箱型圖的可視化效果,使其更容易理解和分析。
# 繪製調整顏色的箱型圖
sns.boxplot(x='target', y='sepal width (cm)', data=iris_df, palette='Set3')
plt.title('Box Plot of Sepal Width Distribution by Flower Species (with Color Adjustments)')
plt.xlabel('Flower Species')
plt.ylabel('Sepal Width (cm)')
plt.show()
這段程式碼使用 palette
參數設定了箱型圖的顏色樣式,讓圖表看起來更加美觀。
我們可以將數據點分佈疊加在箱型圖上,來更好地了解每個數據點的位置和分佈情況。
# 繪製疊加數據點的箱型圖
sns.boxplot(x='target', y='sepal length (cm)', data=iris_df, palette='Set2')
sns.stripplot(x='target', y='sepal length (cm)', data=iris_df, color='black', alpha=0.5)
plt.title('Box Plot of Sepal Length Distribution by Flower Species (with Data Points)')
plt.xlabel('Flower Species')
plt.ylabel('Sepal Length (cm)')
plt.show()
這段程式碼使用 stripplot()
函數在箱型圖上疊加了數據點,讓我們更直觀地看到每個數據點的分佈情況。
有時我們希望在一個圖表中展示多個變數的分佈情況,可以使用多變數箱型圖來比較不同變數之間的差異。
# 繪製多變數箱型圖
data_to_plot = [iris_df['sepal length (cm)'], iris_df['sepal width (cm)'], iris_df['petal length (cm)'], iris_df['petal width (cm)']]
plt.boxplot(data_to_plot, labels=['Sepal Length', 'Sepal Width', 'Petal Length', 'Petal Width'])
plt.title('Box Plot of Sepal and Petal Variables')
plt.ylabel('Length (cm)')
plt.show()
這段程式碼將花萼長度、花萼寬度、花瓣長度和花瓣寬度的資料繪製在同一個箱型圖中,以方便我們進行多變數的比較。
當類別名稱較長或變數較多時,我們可以使用水平箱型圖來改進可讀性。
# 繪製水平箱型圖
sns.boxplot(x='sepal length (cm)', y='target', data=iris_df, orient='h')
plt.title('Horizontal Box Plot of Sepal Length Distribution by Flower Species')
plt.xlabel('Sepal Length (cm)')
plt.ylabel('Flower Species')
plt.show()
這段程式碼使用 orient='h'
將箱型圖水平顯示,更適合類別名稱較長的情境。
今天我們學習了如何使用 Matplotlib 和 Seaborn 繪製箱型圖,包括:
箱型圖能夠幫助我們直觀地了解資料的分佈情況和檢測異常值,在資料分析中應用廣泛。接下來,我們將學習如何使用熱圖來展示資料的相關性和矩陣資料。