数据可视化,如何利用plot画box箱线图?箱线图基础绘制
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
书接前文,本文依旧对kaggle
竞赛的泰塔尼克号数据进行分析。本文的“数据可视化”将基于部分字段的数据,画箱线图(box
)。以展示箱线图的画图python
代码为主要目的。
苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码经验文章。本文测试环境:win10
,python@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()
如果想要改变箱体的颜色的话,修改一下color
参数即可。
df["Age"].plot(kind="box", color="red")
所有字段箱线图
简单修改之后,就可以在同一张图上面显示所有字段对应的箱线图。代码如下:
import matplotlib.pyplot as plt
df.plot(kind="box")
plt.show()
对比画图结果,可以注意到:虽然代码里面没有特别指明显示的的字段。但是,最终结果的箱线图里面,却并不是显示的所有字段。因为只有数字类型的数据,才能画出箱线图来。可以对比一下.describe()
的数据结果。
df.describe()
数据筛选
针对本文的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表示第几个。
另外一种写法
另外一种写法,就和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()
相关文章
- https://newsn.net/say/plot-box.html
- https://newsn.net/say/python-isnull.html
- https://newsn.net/say/plot-subplot.html
结语
柱状图,参数kind="bar"
。箱线图,kind="box"
。箱线图反应的是:数据的分步情况。集中的点形成箱体,远离中心的点形成离群点。
由于篇幅限制,在后续的文章里面,在对这个箱线图做出解释。更多文章可以参考:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。