【matplotlib 实战】--箱型图
箱型图(Box Plot),也称为盒须图或盒式图,1977年由美国著名统计学家约翰·图基(John Tukey)发明。
是一种用作显示一组数据分布情况的统计图,因型状如箱子而得名。
它能显示出一组数据的最大值、最小值、中位数及上下四分位数。
箱子的顶端和底端,分别代表上下四分位数。
箱子中间的是中位数线,它将箱子一分为二。从箱子延伸出去的线条展现出了上下四分位数以外的数据,由于这两根延伸出去的线像是胡须,因此箱形图也被称为盒须图。
箱形图最大的优势是,它以一种简单的方式,概括出一个或多个数值变量的分布,同时又不会占据太多空间。
1. 主要元素
它主要由以下五个元素组成:
- 最大值:表示数据的最大值,排除了异常值后的上限。
- 上四分位线:数据的上四分位数,将数据分为四等份,处于上边缘和中位数之间的数据。也称为第三四分位数。
- 中位数:数据的中位数,将数据分为两等份,处于上四分位数和下四分位数之间的数据。也称为第二四分位数。
- 下四分位线:数据的下四分位数,将数据分为四等份,处于中位数和下边缘之间的数据。也称为第一四分位数。
- 最小值:表示数据的最小值,排除了异常值后的下限。

2. 适用的场景
箱型图适用于以下分析场景:
- 数据分布比较:比较不同组数据的分布情况。通过将多个箱型图放在一起,可以直观地比较它们的中位数、四分位数和离群值等信息,从而了解它们之间的差异。
- 离群值检测:检测数据中的离群值。离群值是与其他数据点相比明显偏离的数据点,它们可能是数据收集或记录过程中的异常或错误。箱型图中的离群点可以帮助识别这些异常值。
- 数据中心趋势和离散程度:通过中位数和四分位距(上四分位数与下四分位数之差)展示了数据的中心趋势和离散程度。中位数提供了数据的中心位置,四分位距提供了数据的离散程度。
- 数据分布形状:提供关于数据分布形状的一些信息。例如,如果箱型图的上下边缘和中位数都接近,箱型图可能显示出对称的分布。如果箱型图的上边缘比下边缘长,中位数偏向下边缘,可能显示出右偏分布。
3. 不适用的场景
箱型图不适用于以下分析场景:
- 数据样本过小:当数据样本过小时,箱型图可能无法提供足够的信息来准确描述数据的分布情况。
- 数据分布复杂:当数据分布非常复杂或包含多个峰值时,箱型图可能无法完全捕捉到数据的特征。
- 数据缺失:如果数据中存在大量缺失值,箱型图可能无法提供准确的分布信息。
4. 分析实战
本次通过箱型图分析我国三大产业对GDP的贡献情况。
4.1. 数据来源
数据来自国家统计局公开的历年数据,整理好的文件从下面的地址下载:
https://databook.top/nation/A02
使用的是其中的 A0201.csv 文件(国内生产总值)
fp = "d:/share/data/A0201.csv"
df = pd.read_csv(fp)
df

4.2. 数据清理
过滤出三大产业在2013年~2022年的增加值数据。
data = df[df["zb"].isin(["A020103",
"A020104",
"A020105"])].copy()
data = data[data["sj"] > 2012]
data
其中,A020103,A020104,A020105 分别是三大产业的指标编号。
4.3. 分析结果可视化
通过箱型图展示三大产业的增加值情况:
fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 1, 1])
graph = ax.boxplot(
[
data[data["zb"] == "A020103"].loc[:, "value"],
data[data["zb"] == "A020104"].loc[:, "value"],
data[data["zb"] == "A020105"].loc[:, "value"],
],
vert=True,
patch_artist=True,
labels=["第一产业", "第二产业", "第三产业"]
)
ax.set_title("2013~2022 三大产业对GDP增加值(亿元)")
colors = ['pink', 'lightblue', 'lightgreen']
for patch, color in zip(graph['boxes'], colors):
patch.set_facecolor(color)
plt.show()

从图中可以看出,近10年来,第一产业的增加值明显低于其他两个产业。
第二第三产业的上下限的值相差比较大,说明增长或者下降比较明显(看了数据,是增长明显)。
第一产业的中位数(红色的横线)偏下半部分,说明多数的年份增加值比较低;
第二产业的中位数(红色的横线)偏上半部分,说明多数的年份增加值比较高。
【matplotlib 实战】--箱型图的更多相关文章
- 06. Matplotlib 2 |折线图| 柱状图| 堆叠图| 面积图| 填图| 饼图| 直方图| 散点图| 极坐标| 图箱型图
1.基本图表绘制 plt.plot() 图表类别:线形图.柱状图.密度图,以横纵坐标两个维度为主同时可延展出多种其他图表样式 plt.plot(kind='line', ax=None, figsiz ...
- 使用matplotlib 制图(柱状图、箱型图)
柱状图: import pandas as pd import matplotlib.pyplot as plt data = pd.read_csv('D:\\myfiles\\study\\pyt ...
- matplotlib柱状图、面积图、直方图、散点图、极坐标图、箱型图
一.柱状图 1.通过obj.plot() 柱状图用bar表示,可通过obj.plot(kind='bar')或者obj.plot.bar()生成:在柱状图中添加参数stacked=True,会形成堆叠 ...
- Python图表数据可视化Seaborn:2. 分类数据可视化-分类散点图|分布图(箱型图|小提琴图|LV图表)|统计图(柱状图|折线图)
1. 分类数据可视化 - 分类散点图 stripplot( ) / swarmplot( ) sns.stripplot(x="day",y="total_bill&qu ...
- python箱型图
#-*- coding: utf-8 -*- import pandas as pd catering_sale = '../data/catering_sale.xls' #餐饮数据 data = ...
- 人工智能_机器学习——pandas - 箱型图
箱型图对数据的展示也是非常清晰的,这是箱型图的一些代码 #导报 机器学习三剑客 import numpy as np import pandas as pd from matplotlib impor ...
- 使用seaborn制图(箱型图)
import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns # 设置风格, ...
- Python_箱型图绘制与特征值获取
它主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比较 如何利用Python绘制箱型图 需要的import的包 import matplotlib.pyplot as plt from m ...
- seaborn学习笔记(四):箱型图、小提琴图
html { font-family: sans-serif; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100% } body { ...
- R语言-箱型图&热力图
1.箱型图 boxplot()函数 > metals<-read.csv("metals.csv",header=TRUE) #读取文件和列名 > boxplot ...
随机推荐
- Vue详解----一篇带你从头领悟到尾,享受飞升的感觉
脚手架文件结构 """ ├── node_modules ├── public │ ├── favicon.ico: 页签图标 │ └── index.html: 主页面 ...
- redis 使用 nologin 用户启动
添加不可登录的redis用户 sudo useradd -M -s /sbin/nologin redis 为redis新建目录,并设置属性 mkdir -p /data/redis &&am ...
- UE构建基础和实践:五、CI/CD平台自动化打包
序言 使用CI/CD平台构建(这里使用蓝盾平台)主要是通过平台脚本运行上一章的py脚本并传递参数(即把py中的参数开放给配置平台脚本配置). Build.py 重构 我们需要在py脚本里面解析和设置参 ...
- EF 管理数据库架构
本章会主要了解EF提供的独立迁移项目,用独立迁移项目自动创建dgml设计关系图和sql脚本. 迁移项目通常也叫(CodeFirst代码优先),在EF中迁移项目是在,在代码中设计数据库,每次对数据库的设 ...
- Angular:修改启动端口号
目标 修改预先设定的4200端口号,改为4100 解决方案 在启动命令中添加 --port 4100.参数 --open,会在启动时自动打开浏览器. ng serve --open --port 41 ...
- DirtyCow 脏牛提权漏洞(CVE-2016-5195)
描述: 该漏洞是 Linux 内核经典漏洞,内核内存子系统在处理写时拷贝(Copy-on-Write)时存在条件竞争漏洞, 导致可以破坏私有只读内存映射.黑客可以在获取低权限的的本地用户后,利用此漏洞 ...
- ATtiny88初体验(三):串口
ATtiny88初体验(三):串口 ATtiny88单片机不包含串口模块,因此只能使用软件方式模拟串口时序. 串口通信时序通常由起始位.数据位.校验位和停止位四个部分组成,常见的配置为1位起始位.8位 ...
- mall:redis项目源码解析
目录 一.mall开源项目 1.1 来源 1.2 项目转移 1.3 项目克隆 二.Redis 非关系型数据库 2.1 Redis简介 2.2 分布式后端项目的使用流程 2.3 分布式后端项目的使用场景 ...
- Lazada商品详情(代码封装)以及应用
编辑切换为居中 Lazada平台的分析可以从以下几个方面入手: 1. 市场分析:对Lazada平台市场进行分析,及时了解市场趋势和变化,调整企业的经营策略.可以监测Lazada平台上商品的销售量. ...
- 如何正确实现一个自定义 Exception
最近在公司的项目中,编写了几个自定义的 Exception 类.提交 PR 的时候,sonarqube 提示这几个自定义异常不符合 ISerializable patten. 花了点时间稍微研究了一下 ...