【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 ... 
随机推荐
- 通过Maxwell同步mariadb数据至kafka
			实验环境 本地虚拟机 maraidb 10.8.8 kafka 2.12-3.3.1 maxwell由容器部署 1 mariadb 1.1 配置log_bin 配置文件中加入如下内容 server-i ... 
- 长连接:chatgpt流式响应背后的逻辑
			一.前言: 提起长连接,我们并不陌生,最常见的长连接非websocket莫属了.即使没有在项目中实际用过,至少也应该有所接触.长连接指在一次网络通信中,客户端与服务器之间建立一条持久的连接,可以在多次 ... 
- pandas取出包含某个值的所有行
			pandas取出包含某个值的所有行df = df[df["from_account"].str.contains("fcwhx")] pandas取出不包含某个 ... 
- MQ消息队列篇:三大MQ产品的必备面试种子题
			MQ有什么用? MQ(消息队列)是一种FIFO(先进先出)的数据结构,主要用于实现异步通信.削峰平谷和解耦等功能.它通过将生产者生成的消息发送到队列中,然后由消费者进行消费.这样,生产者和消费者之间就 ... 
- 从module_init看内核模块
			开篇 module_init是linux内核提供的一个宏, 可以用来在编写内核模块时注册一个初始化函数, 当模块被加载的时候, 内核负责执行这个初始化函数. 在编写设备驱动程序时, 使用这个宏看起来理 ... 
- [pandas]从多个文件中构建dataframe
			按列从多个文件中构建 假设有两个csv文件,列不相同,需要整合为一个dataframe,使用glob模块: from glob import glob import pandas as pd # gl ... 
- Combobox后台绑定
			本文主要介绍WPF中Combobox的后台绑定,我在这里主要讲解数据驱动 1.对于前台绑定,我们首先写出想要绑定的对象 新建一个Models文件夹,将Student类写入 public class S ... 
- ATtiny88初体验(二):呼吸灯
			ATtiny88初体验(二):呼吸灯 前面的"点灯"实验实现了间隔点亮/熄灭LED,但是间隔时间和亮度都没法控制,为了解决这个问题,可以使用ATtiny88的定时器模块. ATti ... 
- [ABC140E] Second Sum
			2023-02-13 题目 题目传送门 翻译 翻译 难度&重要性(1~10):4 题目来源 AtCoder 题目算法 双向链表 解题思路 \(1.\) 当我们用从小到大的顺序来求解时,把原来求 ... 
- 轻松玩转70亿参数大模型!借助Walrus在AWS上部署Llama2
			Llama 2 是 Meta 的下一代开源大语言模型.它是一系列经过预训练和微调的模型,参数范围从 70 亿到 700 亿个.Meta Llama 2 可免费用于研究和商业用途并且提供了一系列具有不同 ... 
