箱型图(Box Plot),也称为盒须图或盒式图,1977年由美国著名统计学家约翰·图基(John Tukey)发明。
是一种用作显示一组数据分布情况的统计图,因型状如箱子而得名。

它能显示出一组数据的最大值、最小值、中位数及上下四分位数。
箱子的顶端和底端,分别代表上下四分位数。
箱子中间的是中位数线,它将箱子一分为二。从箱子延伸出去的线条展现出了上下四分位数以外的数据,由于这两根延伸出去的线像是胡须,因此箱形图也被称为盒须图。

箱形图最大的优势是,它以一种简单的方式,概括出一个或多个数值变量的分布,同时又不会占据太多空间。

1. 主要元素

它主要由以下五个元素组成:

  1. 最大值:表示数据的最大值,排除了异常值后的上限。
  2. 上四分位线:数据的上四分位数,将数据分为四等份,处于上边缘和中位数之间的数据。也称为第三四分位数。
  3. 中位数:数据的中位数,将数据分为两等份,处于上四分位数和下四分位数之间的数据。也称为第二四分位数。
  4. 下四分位线:数据的下四分位数,将数据分为四等份,处于中位数和下边缘之间的数据。也称为第一四分位数。
  5. 最小值:表示数据的最小值,排除了异常值后的下限。

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

其中,A020103A020104A020105 分别是三大产业的指标编号。

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 实战】--箱型图的更多相关文章

  1. 06. Matplotlib 2 |折线图| 柱状图| 堆叠图| 面积图| 填图| 饼图| 直方图| 散点图| 极坐标| 图箱型图

    1.基本图表绘制 plt.plot() 图表类别:线形图.柱状图.密度图,以横纵坐标两个维度为主同时可延展出多种其他图表样式 plt.plot(kind='line', ax=None, figsiz ...

  2. 使用matplotlib 制图(柱状图、箱型图)

    柱状图: import pandas as pd import matplotlib.pyplot as plt data = pd.read_csv('D:\\myfiles\\study\\pyt ...

  3. matplotlib柱状图、面积图、直方图、散点图、极坐标图、箱型图

    一.柱状图 1.通过obj.plot() 柱状图用bar表示,可通过obj.plot(kind='bar')或者obj.plot.bar()生成:在柱状图中添加参数stacked=True,会形成堆叠 ...

  4. Python图表数据可视化Seaborn:2. 分类数据可视化-分类散点图|分布图(箱型图|小提琴图|LV图表)|统计图(柱状图|折线图)

    1. 分类数据可视化 - 分类散点图 stripplot( ) / swarmplot( ) sns.stripplot(x="day",y="total_bill&qu ...

  5. python箱型图

    #-*- coding: utf-8 -*- import pandas as pd catering_sale = '../data/catering_sale.xls' #餐饮数据 data = ...

  6. 人工智能_机器学习——pandas - 箱型图

    箱型图对数据的展示也是非常清晰的,这是箱型图的一些代码 #导报 机器学习三剑客 import numpy as np import pandas as pd from matplotlib impor ...

  7. 使用seaborn制图(箱型图)

    import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns # 设置风格, ...

  8. Python_箱型图绘制与特征值获取

    它主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比较 如何利用Python绘制箱型图 需要的import的包 import matplotlib.pyplot as plt from m ...

  9. seaborn学习笔记(四):箱型图、小提琴图

    html { font-family: sans-serif; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100% } body { ...

  10. R语言-箱型图&热力图

    1.箱型图 boxplot()函数 > metals<-read.csv("metals.csv",header=TRUE) #读取文件和列名 > boxplot ...

随机推荐

  1. 通过Maxwell同步mariadb数据至kafka

    实验环境 本地虚拟机 maraidb 10.8.8 kafka 2.12-3.3.1 maxwell由容器部署 1 mariadb 1.1 配置log_bin 配置文件中加入如下内容 server-i ...

  2. 长连接:chatgpt流式响应背后的逻辑

    一.前言: 提起长连接,我们并不陌生,最常见的长连接非websocket莫属了.即使没有在项目中实际用过,至少也应该有所接触.长连接指在一次网络通信中,客户端与服务器之间建立一条持久的连接,可以在多次 ...

  3. pandas取出包含某个值的所有行

    pandas取出包含某个值的所有行df = df[df["from_account"].str.contains("fcwhx")] pandas取出不包含某个 ...

  4. MQ消息队列篇:三大MQ产品的必备面试种子题

    MQ有什么用? MQ(消息队列)是一种FIFO(先进先出)的数据结构,主要用于实现异步通信.削峰平谷和解耦等功能.它通过将生产者生成的消息发送到队列中,然后由消费者进行消费.这样,生产者和消费者之间就 ...

  5. 从module_init看内核模块

    开篇 module_init是linux内核提供的一个宏, 可以用来在编写内核模块时注册一个初始化函数, 当模块被加载的时候, 内核负责执行这个初始化函数. 在编写设备驱动程序时, 使用这个宏看起来理 ...

  6. [pandas]从多个文件中构建dataframe

    按列从多个文件中构建 假设有两个csv文件,列不相同,需要整合为一个dataframe,使用glob模块: from glob import glob import pandas as pd # gl ...

  7. Combobox后台绑定

    本文主要介绍WPF中Combobox的后台绑定,我在这里主要讲解数据驱动 1.对于前台绑定,我们首先写出想要绑定的对象 新建一个Models文件夹,将Student类写入 public class S ...

  8. ATtiny88初体验(二):呼吸灯

    ATtiny88初体验(二):呼吸灯 前面的"点灯"实验实现了间隔点亮/熄灭LED,但是间隔时间和亮度都没法控制,为了解决这个问题,可以使用ATtiny88的定时器模块. ATti ...

  9. [ABC140E] Second Sum

    2023-02-13 题目 题目传送门 翻译 翻译 难度&重要性(1~10):4 题目来源 AtCoder 题目算法 双向链表 解题思路 \(1.\) 当我们用从小到大的顺序来求解时,把原来求 ...

  10. 轻松玩转70亿参数大模型!借助Walrus在AWS上部署Llama2

    Llama 2 是 Meta 的下一代开源大语言模型.它是一系列经过预训练和微调的模型,参数范围从 70 亿到 700 亿个.Meta Llama 2 可免费用于研究和商业用途并且提供了一系列具有不同 ...