当前位置:   article > 正文

【Python】使用pandas/matplotlib画箱图_用pandas字典做箱图

用pandas字典做箱图

目录

1、动机

2、简介

定义

图解

图解2

四分位数的计算

3、使用

官方使用以及参数解释

举例1

举例2

4、参考


1、动机

因为最近论文有信息量很大的结果需要展示,如果用常用的折线图或者柱状图很难集中且全面的展示实验结果,于是准备先简单了解下。

2、简介

定义

箱线图,又称箱形图(boxplot)或盒式图或盒须图,是一种用作显示一组数据分散情况资料的统计图。不同于一般的折线图、柱状图或饼图等传统图表,只是数据大小、占比、趋势等等的呈现,其包含一些统计学的均值、分位数、极值等等统计量,因此,该图信息量较大,不仅能够分析不同类别数据平均水平差异(需在箱线图中加入均值点),还能揭示数据间离散程度、异常值、分布差异等等

图解

箱形图有6个参数:
下边缘(Q1),表示最小值;
下四分位数(Q2),又称“第一四分位数”,等于该样本中所有数值由小到大排列后第25%的数字。长方形下边界
中位数(Q3),又称“第二四分位数”等于该样本中所有数值由小到大排列后第50%的数字,横线
上四分位数(Q4),又称“第三四分位数”等于该样本中所有数值由小到大排列后第75%的数字,长方形上边界
上边缘(Q5),表述最大值。
第三四分位数与第一四分位数的差距又称四分位间距。

异常值:即超出四分位数差3倍距离的异常值,用实心点表示;较为温和的异常值,即处于1.5倍-3倍四分位数差之间的异常值,空心白圆圈

图解2

五数概括法使用下面五个数来汇总数据:

(1)最小值(Q1-1.5IQR)

(2)第一四分位数(Q1)

(3)中位数(Q2)

(4)第三四分位数(Q3)

(5)最大值(Q3+1.5IQR)

四分位数的计算

具体参考

计算公式+规则(n表示数据总数)

 举例1(整除)说明,代入公式即可

 举例2(非整除,离哪个店近则哪个点占比75%)

3、使用

【箱形图的应用】
(1)可以作为一种检测异常值的方法;

(2)用于多组数据的图形汇总,便于对各组数据进行直观比较分析。

【箱形图的绘制方法】本文主要讲前两个方法
方法1:利用pandas包中的Series.plot()、DataFrame.plot()或DataFrame.boxplot()方法;

方法2:利用matplotlib包中axes对象的boxplot()方法;

方法3:利用seaborn包中的cataplot()或者boxplot(),其中seaborn.boxplot()是seaborn.cataplot()的参数kind='box'时的一种情况

官方手册

官方使用以及参数解释

plt.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None, meanline=None, showmeans=None, showcaps=None, showbox=None, showfliers=None, boxprops=None, labels=None, flierprops=None, medianprops=None, meanprops=None, capprops=None, whiskerprops=None)

  1. x:指定要绘制箱线图的数据
  2. notch:是否以凹口的形式展现箱线图,默认非凹口
  3. sym:指定异常点的形状,默认为+号显示
  4. vert:是否需要将箱线图垂直摆放,默认垂直摆放
  5. whis:指定上下须与上下四分位的距离,默认为1.5倍的四分位差
  6. positions:指定箱线图的位置,默认为[0,1,2…]
  7. widths:指定箱线图的宽度,默认为0.5
  8. patch_artist:bool类型参数,是否填充箱体的颜色;默认为False
  9. meanline:bool类型参数,是否用线的形式表示均值,默认为False
  10. showmeans:bool类型参数,是否显示均值,默认为False
  11. showcaps:bool类型参数,是否显示箱线图顶端和末端的两条线(即上下须),默认为True
  12. showbox:bool类型参数,是否显示箱线图的箱体,默认为True
  13. showfliers:是否显示异常值,默认为True
  14. boxprops:设置箱体的属性,如边框色,填充色等
  15. labels:为箱线图添加标签,类似于图例的作用
  16. filerprops:设置异常值的属性,如异常点的形状、大小、填充色等
  17. medianprops:设置中位数的属性,如线的类型、粗细等
  18. meanprops:设置均值的属性,如点的大小、颜色等
  19. capprops:设置箱线图顶端和末端线条的属性,如颜色、粗细等
  20. whiskerprops:设置须的属性,如颜色、粗细、线的类型等

举例1

  1. %matplotlib inline
  2. #首先导入基本的绘图包
  3. import matplotlib.pyplot as plt
  4. import numpy as np
  5. import pandas as pd
  6. #添加成绩表
  7. plt.style.use("ggplot")
  8. plt.rcParams['axes.unicode_minus'] = False
  9. plt.rcParams['font.sans-serif']=['SimHei']
  10. #新建一个空的DataFrame
  11. df=pd.DataFrame()
  12. #添加成绩单,最后显示成绩单表格
  13. df["英语"]=[76,90,97,71,70,93,86,83,78,85,81]
  14. df["经济数学"]=[65,95,51,74,78,63,91,82,75,71,55]
  15. df["西方经济学"]=[93,81,76,88,66,79,83,92,78,86,78]
  16. df["计算机应用基础"]=[85,78,81,95,70,67,82,72,80,81,77]
  17. #方法1 用matplotlib来画出箱型图
  18. plt.boxplot(x=df.values,labels=df.columns,whis=1.5)
  19. plt.show()
  20. #方法2,用pandas自带的画图工具更快
  21. df.boxplot()
  22. plt.show()

 

举例2

  1. %matplotlib inline
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. import pandas as pd
  5. np.random.seed(2) #设置随机种子
  6. df = pd.DataFrame(np.random.rand(5,4),
  7. columns=['A', 'B', 'C', 'D'])#先生成0-1之间的5*4维度数据,再装入4列DataFrame中
  8. df.boxplot()
  9. # plt.boxplot(df) #等同上面的方法
  10. plt.show()
  11. """
  12. sym异常值形状。默认是空心圆圈,'r*'是红色五角星
  13. vert展示形式。默认为true,即正常垂直摆放的形状,修改成false的话就是水平展示。
  14. patch_artist箱图填充颜色与否,默认为False。改成true默认填充水蓝色
  15. meanline:是否用虚线的形式表示均值.默认为False,默认虚线,为了和中位数线区分,所以是虚线的形式
  16. showmeans:是否用三角形图案显示均值,默认为False,形状也是为了和异常值区分
  17. whis:指定上下须与上下四分位的距离,默认为1.5倍的四分位差
  18. """
  19. df.boxplot(sym='r*',vert=False,patch_artist=True,meanline=False,showmeans=True)
  20. plt.show()
  21. """
  22. 美化9可用for循环来构造)
  23. 比如各条线的颜色,粗细程度等等。
  24. """
  25. f=df.boxplot(sym='r*',patch_artist=True,return_type='dict')
  26. """
  27. boxes, 是25分位值和75分位值构成的box
  28. whiskers, 是指从box 到error bar之间的竖线.
  29. caps, 是指 下边缘error bar 横线.
  30. medians, 是中位值的横线, 每个median是一个Line2D对象
  31. fliers, 是指error bar线之外的离散点.
  32. means, 是均值的横线
  33. """
  34. for box in f['boxes']:
  35. # 箱体边框颜色
  36. box.set( color='#7570b3', linewidth=2)
  37. # 箱体内部填充颜色
  38. box.set( facecolor = '#1b9e77' )
  39. for whisker in f['whiskers']:
  40. whisker.set(color='r', linewidth=2)
  41. for cap in f['caps']:
  42. cap.set(color='g', linewidth=3)
  43. for median in f['medians']:
  44. median.set(color='DarkBlue', linewidth=3)
  45. for flier in f['fliers']:
  46. flier.set(marker='o', color='y', alpha=0.5)
  47. plt.show()

 

从图形可以看出,A、B、C、D四组数A、D数据较集中(大部分在上下四分位箱体内),但都有异常值,C的离散程度最大(最大值与最小值之间距离),以均值为中心,B分布都有明显右偏(即较多的值分布在均值的右侧),A、C则有明显左偏。

 

 从分析的角度来说,上面boxplot最初始图形已经够用,但是在matplotlib库下boxplot函数中包含n多参数,涉及到对框的颜色及形状、线段线型、均值线、异常点的形状大小等等设置。

字典将箱形图的每个组成部分映射到matplotlib.lines.Line2D创建的实例列表。该词典具有以下键(假定垂直框图):

  • boxes:箱图的主体,显示四分位数和中位数的置信区间(如果启用)。
  • medians:每个框的中间的水平线。
  • whiskers:垂直线延伸到最极端的非异常数据点。
  • caps:晶须末端的水平线。
  • fliers:表示超出晶须(传单)的数据的点。
  • means:表示均值的点或线。

 

前边说过,很多参数使用很少,但对于图形来说,可能还能用到的就是美化,比如各条线的颜色,粗细程度等等。这里可用for循环来构造 

4、参考

统计学笔记----箱形图以及python实践

直接读取csv文件绘制【Python】Matplotlib画图(十一)——箱线图

Python-matplotlib统计图之箱线图漫谈

python 中箱线图绘制

Python数据可视化:箱线图

Box plot (箱线图) 解读以及Python实现

Python实现箱形图的绘制

Python实现箱形图的绘制

Matplotlib 蜡烛图教程 - 知乎

用 pandas + matplotlib 绘制精美的K线图 - 知乎

【python】绘制箱体图/蜡烛图/K线图_python plt 画蜡烛图-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/612047
推荐阅读
相关标签
  

闽ICP备14008679号