hi,我小花花又来了

箱线图,一种被广泛应用在数据可视化上的图表,它可以用来反映一组或多组连续型定量数据分布的中心位置和散布范围,因形状如箱子而得名。它最大的优点是可以不受异常值的影响,能够准确稳定地描绘出数据的离散分布情况,此外,它的颜值也显得十分高大上~

那么,作为一名python爱好者,肯定不会错过这波技能,那本周就给大家分享下如何使用python制作箱线图。

PART1 原理简要

在进行讲Python前,我需要说明下箱线图官方的原理:箱线图是利用数据中的五个统计量:最小值、第一四分位数、中位数、第三四分位数与最大值来描述数据的一种方法,它也可以粗略地看出数据是否具有有对称性,分布的分散程度等信息,特别可以用于对几个样本的比较。 ——MBAlib 箱线图

好吧,看着好像很难懂的样子,但其实简单的讲,就是给一组数据排序,然后按照统计学的四分位法划分层级(比如说中位数就是其中一个分层线),然后统计每个层级的样本总量,从而看出来这个数据的分布状态;四分位法:

(1)确定四分位数的位置。Qi所在位置=i(n+1)/4,其中i=1,2,3。n表示序列中包含的项数。

(2)根据位置,计算相应的四分位数。

官方的箱线图是长这样子的

根据上图,举个栗子,就像在学校操场开大会前,只有一列100个座位,需要把班上的100个同学按照矮到高排到里面:

然后这一列座位的最前头或最后头是老师的座位,离大家比较远(),这是异常值;

然后座位号是1的,是下边缘(即去除异常值外的最小值);

然后座位是25号的(即排名在25%位置),是下四分位数;

然后座位是50号的(即排名在50%位置),是中位数;

然后座位是75号的(即排名在75%位置),是上四分位数;

然后座位是100号的,是上边缘(即去除异常值外的最大值);

按这个栗子划分出的箱线图就会特别方方正正,每个层级的距离很均匀,因为分布特别对称

图的线与线的距离就代表了数据分布的形态,有兴趣的可以在各类官方网站好好学习研究下~

一不小心说多了,现在正式开始实战部分

part2 绘制前提

1、python须安装完毕(这个应该不用赘述,我用的是python3版本,若接下来介绍的代码有与2版本冲突,望自己解决)

2、须在python安装bokeh(可视化展示)包、pandas(读取处理数据)包

part3 绘制步骤

#调取各类依赖包

import pandas as pd

from bokeh.plotting import figure, show, output_file

#建立测试数据

d1 = {'样本': [29427,29529,30282,32511,34017,34890,40332,32859,25167,27063,28572,34416,34053,42510,30846,26352,29604,30645,36759,31422,36612,30957,27414,27888,31704,44682,34791,33006,27096,37656] }

d2 = {'样本': [29427,29529,30282,32511,34017,34890,40332,32859,25167,27063,28572,34416,34053,42510,30846,26352,29604,30645,36759,31422,36612,30957,27414,27888,31704,44682,34791,33006,27096,37656] }

df1 = pd.DataFrame(data=d1)

df1['维度']='维度一'

df2 = pd.DataFrame(data=d2)

df2['维度']='维度二'

df=pd.concat([df1,df2])

#数据格式化

cats=list(df[u'维度'].drop_duplicates().sort_values())

catss=list(map(lambda x:str(x),cats))

#数据四分位获取

groups = df.groupby(u'维度')

q1 = groups.quantile(q=0.25)

q2 = groups.quantile(q=0.5)

q3 = groups.quantile(q=0.75)

iqr = q3 - q1

upper = q3 + 1.5*iqr

lower = q1 - 1.5*iqr

#数据可视化

TOOLS = "pan,wheel_zoom,box_zoom,reset,save"

p = figure(tools=TOOLS,plot_width=1200,

title="样本分布图", x_range=catss)

qmin = groups.quantile(q=0.00)

qmax = groups.quantile(q=1.00)

upper[u'样本'] = [min([x,y]) for (x,y) in zip(list(qmax.loc[:,u'样本']),upper[u'样本'])]

lower[u'样本'] = [max([x,y]) for (x,y) in zip(list(qmin.loc[:,u'样本']),lower[u'样本'])]

# 线绘制

p.segment(catss, upper[u'样本'], catss, q3[u'样本'], line_color="black")

p.segment(catss, lower[u'样本'], catss, q1[u'样本'], line_color="black")

# 方块绘制

p.vbar(catss, 0.7, q2[u'样本'], q3[u'样本'], fill_color="#E08E79", line_color="black")

p.vbar(catss, 0.7, q1[u'样本'], q2[u'样本'], fill_color="#3B8686", line_color="black")

#其他bokeh组件设置

p.xgrid.grid_line_color = None

p.ygrid.grid_line_color = "white"

p.grid.grid_line_width = 2

p.xaxis.major_label_text_font_size="12pt"

output_file("boxplot.html", title="boxplot.py example")

show(p)

绘制出来的图是这样子哒就对了

part4 总结

不会总结,溜了溜了。

本文纯手打,感觉写文章很心累,不接受任何转载,不接受任何批评,只接受赞扬。

我是那朵小花,一个最会写代码的运营人员,诚邀对本文内容感兴趣的伙伴们一起交流,以下是私人微信:

用python画小花_如何用python制作箱线图相关推荐

  1. 用python画耳朵_如何用python画一只兔子

    python的用处真的是太广泛了,今天在网上学习查找资料时,看到有网友用python来画画.用python画出一只兔子,为大家分享一下:如何用python画一只兔子? 画了一只大耳朵小兔子,灵感来源是 ...

  2. 用python画小兔子_如何用Python画一只兔子——turtle库circle()画圆函数的详细用法介绍...

    周末学习了一下turtle库的基本函数,试着画了一只大耳朵小兔子,灵感来源是jellycat邦尼兔.turtle库中circle()函数用来画弧,但和通常先确定原点,再根据半径.夹角画弧的方法有所不同 ...

  3. 用python画耳朵_如何用python画猪头

    用python画猪头的方法:首先设置画布和画笔,代码为[a.screensize(400,300)a.setup(width=400,height=300)]:然后画脸型,代码为[.goto(-100 ...

  4. 如何用python画玫瑰花_如何用python画玫瑰花

    源码如下:import turtle # 设置初始位置 turtle.penup() turtle.left(90) turtle.fd(200) turtle.pendown() turtle.ri ...

  5. 用python画地球_如何用PYTHON程序模拟一个太阳系?

    描述一个星系和描述一所学校有的思维方式是一样的,其实和python关系不大.都可用面向对象思维来抽象.描述某个物体通常都要先思考几个问题:该物体是什么? 该物体有什么特征? 该物体有什么能力? 该物体 ...

  6. python画地球仪_如何用 Python 制作地球仪?

    Python 功能真的很强,强大到让人吃惊,它能做的事囊括爬虫.数据分析.数据可视化.游戏等等各方面,这些功能在实际的使用中应用广泛,开发程序讲究页面的美观与炫酷效果, 今天的文章将给各位读者朋友们带 ...

  7. 怎么用python画房子_如何用Python画一颗小树?

    1.代码的结构: 本代码有两个子函数组成,有main函数和画树函数组成. 2.编写画树函数: 画树函数,就是用来画出我们的树的一种子函数,代码如下:def tree(plist,l,a,f): if ...

  8. 如何用python画人像_如何用Python画曼德勃罗集

    先上图好看的曼德勃罗集 错了错了是这个特别好看的曼德勃罗集 当然你需要下载Python(https://www.python.org) 和Visual Studio 2019(https://visu ...

  9. python画螺旋_如何用python turtle画斐波那契螺旋曲线?

    展开全部 我把矩形和圆弧都用不同颜色填充了,你62616964757a686964616fe58685e5aeb931333431353237按照自己的需求修改一下吧,你的题目说的不清楚.# Pyth ...

最新文章

  1. 《微机原理及接口技术》第03章在线测试
  2. 软工学习笔记——代码规范
  3. flowable BPMN的组件汉化
  4. c语言定义92bit位变量,Keil C51对C语言的关键词扩展之四: bit
  5. Android第二个小练习:拨号提醒
  6. 【转】CentOS系统操作下安装相关各种软件
  7. 【数据预测】基于matlab人工蜂群算法优化BP神经网络数据预测 (含优化前对比)【含Matlab源码 078期】
  8. linux黑域补丁,努比亚Z17mini+Z17+Z17S Nubia6.0典藏版 独家黑域 ROOT XP 特别推荐
  9. PSpice应用B-2
  10. [Leetcode] 448. Find All Numbers Disappeared in an Array 解题报告
  11. 实战 Mantle 解析界面app 科技频道
  12. C语言交换a,b值的几种写法
  13. CSS基础(P45-P65)
  14. 十分钟搞定时间复杂度(算法的时间复杂度)
  15. 微信小程序开发之——map组件
  16. 基于Arduino的多功能智能交通信号灯的设计与实现 ---------对盲人语音播报,红灯结束时铃声提醒,信号灯倒计时和闯红灯语音劝阻
  17. XR872 移植 u-boot-v2021.07
  18. busybox文件系统与简单驱动学习(4)-RT3070无线网卡STA模式配置
  19. arduino学习:本人编写的单个传感器控制电机运转的代码
  20. java 克隆有什么用_java中的克隆技术具体有什么应用?

热门文章

  1. 2022级sdut知到/智慧树---c语言第三章测试题解
  2. 时间选择器控件默认时间自定义
  3. 英语口语279之每日十句口语
  4. MySQL Connectors组件8.0.12及之前版本的Connector/J子组件存在安全漏洞及其相关性分析
  5. 微信小程序支付流程=>实现按年支付和按月支付
  6. 算法书籍推荐及网络资源
  7. 【POJ 1061】青蛙的约会
  8. 在mac系统中win10虚拟机parallel desktop中安装visual studio 2015的文件和方法
  9. 伤感日志:寂静的夜,寂寞的心
  10. 微信硬件蓝牙教程全集