我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

书接前文,本文依旧对kaggle竞赛的泰塔尼克号数据进行分析。本文的“数据可视化”将基于部分字段的数据,画箱线图(box)。以展示箱线图的画图python代码为主要目的。

苏南大叔:数据可视化,如何利用plot画box箱线图?箱线图基础绘制 - python-plot-box
数据可视化,如何利用plot画box箱线图?箱线图基础绘制(图7-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码经验文章。本文测试环境:win10python@3.12.3。本文中,泰坦尼克数据集使用的是kaggle竞赛的版本。

加载龙套数据

龙套数据选择的是kaggle竞赛的泰坦尼克数据集,对这个数据集的观测,可以参考文章:

加载数据:

import pandas as pd
train_df = pd.read_csv("kaggle\\train.csv")
test_df = pd.read_csv("kaggle\\test.csv")
df = pd.concat([train_df, test_df])

最简单的箱线图

最简单的箱线图代码,对Age字段画箱线图。

import matplotlib.pyplot as plt
df["Age"].plot(kind="box")
plt.show()

苏南大叔:数据可视化,如何利用plot画box箱线图?箱线图基础绘制 - plot-box-code
数据可视化,如何利用plot画box箱线图?箱线图基础绘制(图7-2)

如果想要改变箱体的颜色的话,修改一下color参数即可。

df["Age"].plot(kind="box", color="red")

苏南大叔:数据可视化,如何利用plot画box箱线图?箱线图基础绘制 - plot-box-color-red
数据可视化,如何利用plot画box箱线图?箱线图基础绘制(图7-3)

所有字段箱线图

简单修改之后,就可以在同一张图上面显示所有字段对应的箱线图。代码如下:

import matplotlib.pyplot as plt
df.plot(kind="box")
plt.show()

苏南大叔:数据可视化,如何利用plot画box箱线图?箱线图基础绘制 - df-fields-plot-box
数据可视化,如何利用plot画box箱线图?箱线图基础绘制(图7-4)

对比画图结果,可以注意到:虽然代码里面没有特别指明显示的的字段。但是,最终结果的箱线图里面,却并不是显示的所有字段。因为只有数字类型的数据,才能画出箱线图来。可以对比一下.describe()的数据结果。

df.describe()

苏南大叔:数据可视化,如何利用plot画box箱线图?箱线图基础绘制 - describe结果对比box画图结果
数据可视化,如何利用plot画box箱线图?箱线图基础绘制(图7-5)

数据筛选

针对本文的kaggle版本的泰塔尼克数据集来说,

  • PassengerId是个没有必要画出来的字段,因为它是线性累加的数据。
  • Survived字段,不是0,就是1,要不就是待预测的空值。所以,也没有必要画出来。

所以,代码可以改为:

df2 = df.copy()
del df2["PassengerId"]
del df2["Survived"]
df2.plot(kind="box")

不过由于异常点的存在,画图效果依旧不咋地。所以,是不是考虑就一个字段一个字段的画箱线图呢?

多个子图

多个子图的组合效果,比上面画一起的效果,明显要好很多。毕竟每个箱线图的纵坐标是不一样的含义。所以,还是分开画比较合适。

df2 = df.copy()
del df2["PassengerId"]
del df2["Survived"]

import matplotlib.pyplot as plt
import math
plt.figure(figsize=(10, 5))
column_names = df2.describe().columns.tolist()
# print(column_names)
len = len(column_names)
half = math.ceil(len / 2)
for i, v in enumerate(column_names):
    plt.subplot(2, half, i + 1)
    df2[v].plot(kind="box")
plt.tight_layout()
plt.show()

这里的关键代码,可能是:plt.subplot(x,y,i),x表示行数,y表示列数,i表示第几个。

苏南大叔:数据可视化,如何利用plot画box箱线图?箱线图基础绘制 - subplot-box
数据可视化,如何利用plot画box箱线图?箱线图基础绘制(图7-6)

另外一种写法

另外一种写法,就和dataframe无关了,只和一组或几组数有关系。也算简单直观。

import matplotlib.pyplot as plt

a = [1, 15, 18, 20, 22, 30, 50]
plt.boxplot(a)
plt.show()

b = [1, 15, 18, 20, 22, 30, 40]
plt.boxplot((a, b))
plt.show()

苏南大叔:数据可视化,如何利用plot画box箱线图?箱线图基础绘制 - plt-boxplot
数据可视化,如何利用plot画box箱线图?箱线图基础绘制(图7-7)

相关文章

结语

柱状图,参数kind="bar"。箱线图,kind="box"。箱线图反应的是:数据的分步情况。集中的点形成箱体,远离中心的点形成离群点。

由于篇幅限制,在后续的文章里面,在对这个箱线图做出解释。更多文章可以参考:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python