从‘小费’到‘泰坦尼克’用Seaborn的boxplot快速探索3个经典数据集的秘密与异常推开数据分析的大门最令人着迷的莫过于那些隐藏在数字背后的故事。想象一下你是一位数据侦探手握三个充满谜团的经典数据集记录着餐厅消费细节的小费数据、揭示鸢尾花分类奥秘的花卉数据以及承载着泰坦尼克号乘客命运的生存数据。而今天我们将使用Seaborn库中的箱线图boxplot这把放大镜逐一解开这些数据集中的异常与秘密。1. 箱线图数据侦探的必备工具箱线图Boxplot诞生于1977年由统计学家约翰·图基发明。它通过五个关键数字——最小值、第一四分位数Q1、中位数、第三四分位数Q3和最大值为我们勾勒出数据的分布轮廓。中间的箱子涵盖了50%的数据而须线则延伸至正常数据的边界。任何落在1.5倍四分位距IQRQ3-Q1之外的点都会被标记为异常值。在Python中Seaborn库让箱线图的绘制变得异常简单。只需几行代码我们就能将枯燥的数字转化为直观的视觉呈现。下面是一个基础示例import seaborn as sns import matplotlib.pyplot as plt # 加载示例数据集 tips sns.load_dataset(tips) # 绘制基础箱线图 sns.boxplot(xtotal_bill, datatips) plt.show()表箱线图关键元素解析元素名称统计意义数据解读箱体下限Q1(第25百分位数)25%的数据小于此值箱体中线中位数(第50百分位数)数据分布的中间值箱体上限Q3(第75百分位数)75%的数据小于此值下须线Q1-1.5IQR正常数据的最小边界上须线Q31.5IQR正常数据的最大边界离群点超出1.5IQR范围需要特别关注的异常值2. 小费数据集揭秘餐厅消费的隐藏模式让我们首先走进餐厅的后厨分析小费数据集。这个数据集记录了某餐厅244位顾客的消费信息包括总账单金额、小费数额、顾客性别、是否吸烟、用餐日期和时间等。2.1 周末的小费异常一个有趣的问题是周末的小费是否比工作日更慷慨我们可以用箱线图来验证这个假设# 按星期几分组绘制小费比例箱线图 plt.figure(figsize(10,6)) sns.boxplot(xday, ytip_percentage, datatips.assign(tip_percentagetips[tip]/tips[total_bill]*100)) plt.title(不同日期小费比例分布) plt.ylabel(小费比例(%)) plt.show()周四中位数约15%分布集中周五中位数略高出现几个高异常值周六分布范围最广高异常值最多周日中位数最高达到17%注意计算小费比例能消除账单金额的影响更公平地比较慷慨程度2.2 吸烟顾客的消费习惯另一个有趣的维度是分析吸烟顾客与非吸烟顾客的消费差异# 吸烟与非吸烟顾客的账单金额比较 plt.figure(figsize(8,6)) sns.boxplot(xsmoker, ytotal_bill, datatips) plt.title(吸烟与非吸烟顾客的消费金额对比) plt.show()非吸烟顾客中位数约16美元分布相对集中吸烟顾客中位数略高(18美元)且存在多个高额异常账单最高异常值非吸烟组约50美元吸烟组接近60美元3. 鸢尾花数据集寻找植物界的异类转向自然界鸢尾花数据集记录了三种鸢尾花Setosa、Versicolor和Virginica的花萼和花瓣测量数据。这个数据集常被用于分类算法测试但今天我们关注其中的异常个体。3.1 花瓣长度的物种差异比较三种鸢尾花的花瓣长度分布iris sns.load_dataset(iris) plt.figure(figsize(10,6)) sns.boxplot(xspecies, ypetal_length, datairis) plt.title(不同种类鸢尾花的花瓣长度分布) plt.show()表三种鸢尾花花瓣长度统计(mm)种类最小值Q1中位数Q3最大值异常值Setosa1014151619无Versicolor30424548511个低异常Virginica45555863692个高异常3.2 综合特征的异常检测结合花瓣长度和宽度我们可以更全面地识别异常个体# 创建综合特征花瓣面积(近似) iris[petal_area] iris[petal_length] * iris[petal_width] plt.figure(figsize(10,6)) sns.boxplot(xspecies, ypetal_area, datairis) plt.title(不同种类鸢尾花的花瓣面积分布) plt.show()Versicolor组出现一个明显偏小的异常个体Virginica组有两个花瓣面积特别大的样本Setosa组所有数据点都在正常范围内4. 泰坦尼克号生存背后的数据真相泰坦尼克号数据集记录了891名乘客的信息和生存状态。让我们用箱线图揭开一些鲜为人知的生存模式。4.1 舱位与年龄的生存关联分析不同舱位乘客的年龄分布与生存率titanic sns.load_dataset(titanic) plt.figure(figsize(12,6)) sns.boxplot(xpclass, yage, huesurvived, datatitanic) plt.title(不同舱位乘客的年龄分布(按生存状态)) plt.show()头等舱幸存者年龄中位数高于遇难者二等舱年龄分布相似但幸存者中有更多儿童三等舱遇难者中有更多年轻成人4.2 票价支付的异常模式票价往往反映了舱位等级但箱线图揭示了一些有趣异常plt.figure(figsize(10,6)) sns.boxplot(xpclass, yfare, datatitanic) plt.ylim(0, 300) # 排除极端值以便观察 plt.title(不同舱位的票价分布) plt.show()头等舱中位数约60英镑但存在多个超高票价(200英镑)二等舱分布相对集中中位数约15英镑三等舱大部分票价低于20英镑但有少数异常高值提示这些高价三等舱票可能是团体票或特殊舱位值得进一步调查5. 高级技巧多维度异常检测5.1 分组箱线图揭示隐藏模式结合多个变量进行分析例如同时观察小费数据集的日期和用餐时间plt.figure(figsize(12,6)) sns.boxplot(xday, ytotal_bill, huetime, datatips) plt.title(不同日期和用餐时间的消费金额分布) plt.show()周六晚餐的消费金额明显高于午餐周四的午餐和晚餐消费差异最小周日只有晚餐数据中位数高于周六晚餐5.2 小提琴图增强分布感知箱线图有时会掩盖数据的实际分布形状这时可以结合小提琴图plt.figure(figsize(10,6)) sns.violinplot(xspecies, ypetal_length, datairis, innerbox) plt.title(鸢尾花花瓣长度分布(小提琴图箱线图)) plt.show()这种组合既能展示数据的概率密度又保留了箱线图的统计指标特别适合展示双峰分布等复杂模式。6. 异常值处理实战策略发现异常值后我们需要决定如何处理它们。以下是几种常见策略调查核实检查数据收集过程确认是否为记录错误保留分析如果是真实但有意义的异常保留并单独分析数据转换应用对数变换等减少异常值影响边界处理将超出合理范围的值替换为边界值例如对小费数据集中的超高账单我们可以选择对数变换import numpy as np tips[log_total_bill] np.log(tips[total_bill]) plt.figure(figsize(10,5)) sns.boxplot(xday, ylog_total_bill, datatips) plt.title(对数变换后的消费金额分布) plt.show()这种变换后各日期组的分布更加对称异常值的影响减小更适合进行统计分析。
从‘小费’到‘泰坦尼克’:用Seaborn的boxplot快速探索3个经典数据集的秘密与异常
发布时间:2026/5/27 3:18:43
从‘小费’到‘泰坦尼克’用Seaborn的boxplot快速探索3个经典数据集的秘密与异常推开数据分析的大门最令人着迷的莫过于那些隐藏在数字背后的故事。想象一下你是一位数据侦探手握三个充满谜团的经典数据集记录着餐厅消费细节的小费数据、揭示鸢尾花分类奥秘的花卉数据以及承载着泰坦尼克号乘客命运的生存数据。而今天我们将使用Seaborn库中的箱线图boxplot这把放大镜逐一解开这些数据集中的异常与秘密。1. 箱线图数据侦探的必备工具箱线图Boxplot诞生于1977年由统计学家约翰·图基发明。它通过五个关键数字——最小值、第一四分位数Q1、中位数、第三四分位数Q3和最大值为我们勾勒出数据的分布轮廓。中间的箱子涵盖了50%的数据而须线则延伸至正常数据的边界。任何落在1.5倍四分位距IQRQ3-Q1之外的点都会被标记为异常值。在Python中Seaborn库让箱线图的绘制变得异常简单。只需几行代码我们就能将枯燥的数字转化为直观的视觉呈现。下面是一个基础示例import seaborn as sns import matplotlib.pyplot as plt # 加载示例数据集 tips sns.load_dataset(tips) # 绘制基础箱线图 sns.boxplot(xtotal_bill, datatips) plt.show()表箱线图关键元素解析元素名称统计意义数据解读箱体下限Q1(第25百分位数)25%的数据小于此值箱体中线中位数(第50百分位数)数据分布的中间值箱体上限Q3(第75百分位数)75%的数据小于此值下须线Q1-1.5IQR正常数据的最小边界上须线Q31.5IQR正常数据的最大边界离群点超出1.5IQR范围需要特别关注的异常值2. 小费数据集揭秘餐厅消费的隐藏模式让我们首先走进餐厅的后厨分析小费数据集。这个数据集记录了某餐厅244位顾客的消费信息包括总账单金额、小费数额、顾客性别、是否吸烟、用餐日期和时间等。2.1 周末的小费异常一个有趣的问题是周末的小费是否比工作日更慷慨我们可以用箱线图来验证这个假设# 按星期几分组绘制小费比例箱线图 plt.figure(figsize(10,6)) sns.boxplot(xday, ytip_percentage, datatips.assign(tip_percentagetips[tip]/tips[total_bill]*100)) plt.title(不同日期小费比例分布) plt.ylabel(小费比例(%)) plt.show()周四中位数约15%分布集中周五中位数略高出现几个高异常值周六分布范围最广高异常值最多周日中位数最高达到17%注意计算小费比例能消除账单金额的影响更公平地比较慷慨程度2.2 吸烟顾客的消费习惯另一个有趣的维度是分析吸烟顾客与非吸烟顾客的消费差异# 吸烟与非吸烟顾客的账单金额比较 plt.figure(figsize(8,6)) sns.boxplot(xsmoker, ytotal_bill, datatips) plt.title(吸烟与非吸烟顾客的消费金额对比) plt.show()非吸烟顾客中位数约16美元分布相对集中吸烟顾客中位数略高(18美元)且存在多个高额异常账单最高异常值非吸烟组约50美元吸烟组接近60美元3. 鸢尾花数据集寻找植物界的异类转向自然界鸢尾花数据集记录了三种鸢尾花Setosa、Versicolor和Virginica的花萼和花瓣测量数据。这个数据集常被用于分类算法测试但今天我们关注其中的异常个体。3.1 花瓣长度的物种差异比较三种鸢尾花的花瓣长度分布iris sns.load_dataset(iris) plt.figure(figsize(10,6)) sns.boxplot(xspecies, ypetal_length, datairis) plt.title(不同种类鸢尾花的花瓣长度分布) plt.show()表三种鸢尾花花瓣长度统计(mm)种类最小值Q1中位数Q3最大值异常值Setosa1014151619无Versicolor30424548511个低异常Virginica45555863692个高异常3.2 综合特征的异常检测结合花瓣长度和宽度我们可以更全面地识别异常个体# 创建综合特征花瓣面积(近似) iris[petal_area] iris[petal_length] * iris[petal_width] plt.figure(figsize(10,6)) sns.boxplot(xspecies, ypetal_area, datairis) plt.title(不同种类鸢尾花的花瓣面积分布) plt.show()Versicolor组出现一个明显偏小的异常个体Virginica组有两个花瓣面积特别大的样本Setosa组所有数据点都在正常范围内4. 泰坦尼克号生存背后的数据真相泰坦尼克号数据集记录了891名乘客的信息和生存状态。让我们用箱线图揭开一些鲜为人知的生存模式。4.1 舱位与年龄的生存关联分析不同舱位乘客的年龄分布与生存率titanic sns.load_dataset(titanic) plt.figure(figsize(12,6)) sns.boxplot(xpclass, yage, huesurvived, datatitanic) plt.title(不同舱位乘客的年龄分布(按生存状态)) plt.show()头等舱幸存者年龄中位数高于遇难者二等舱年龄分布相似但幸存者中有更多儿童三等舱遇难者中有更多年轻成人4.2 票价支付的异常模式票价往往反映了舱位等级但箱线图揭示了一些有趣异常plt.figure(figsize(10,6)) sns.boxplot(xpclass, yfare, datatitanic) plt.ylim(0, 300) # 排除极端值以便观察 plt.title(不同舱位的票价分布) plt.show()头等舱中位数约60英镑但存在多个超高票价(200英镑)二等舱分布相对集中中位数约15英镑三等舱大部分票价低于20英镑但有少数异常高值提示这些高价三等舱票可能是团体票或特殊舱位值得进一步调查5. 高级技巧多维度异常检测5.1 分组箱线图揭示隐藏模式结合多个变量进行分析例如同时观察小费数据集的日期和用餐时间plt.figure(figsize(12,6)) sns.boxplot(xday, ytotal_bill, huetime, datatips) plt.title(不同日期和用餐时间的消费金额分布) plt.show()周六晚餐的消费金额明显高于午餐周四的午餐和晚餐消费差异最小周日只有晚餐数据中位数高于周六晚餐5.2 小提琴图增强分布感知箱线图有时会掩盖数据的实际分布形状这时可以结合小提琴图plt.figure(figsize(10,6)) sns.violinplot(xspecies, ypetal_length, datairis, innerbox) plt.title(鸢尾花花瓣长度分布(小提琴图箱线图)) plt.show()这种组合既能展示数据的概率密度又保留了箱线图的统计指标特别适合展示双峰分布等复杂模式。6. 异常值处理实战策略发现异常值后我们需要决定如何处理它们。以下是几种常见策略调查核实检查数据收集过程确认是否为记录错误保留分析如果是真实但有意义的异常保留并单独分析数据转换应用对数变换等减少异常值影响边界处理将超出合理范围的值替换为边界值例如对小费数据集中的超高账单我们可以选择对数变换import numpy as np tips[log_total_bill] np.log(tips[total_bill]) plt.figure(figsize(10,5)) sns.boxplot(xday, ylog_total_bill, datatips) plt.title(对数变换后的消费金额分布) plt.show()这种变换后各日期组的分布更加对称异常值的影响减小更适合进行统计分析。