统计学09:箱线图1

统计学•目录 统计学•类别 math


箱线图1

从下到上五条线分别表示最小值、下四分位数、中位数、上四分位数和最大值.

你可以通过它很快的发现数据批中的异常值,判断数据批的偏态和尾重,比较几批数据的形状.

顾客到餐厅的距离数据

通过这些数据绘制一张图,用来反映顾客的分布和距离的中位数.

14, 6, 3, 2, 4, 15, 11, 8, 1, 7, 2, 1, 3, 4, 10, 22, 20


显然这个跟时间无关或者并没有想要某写变量之间的关系,那么线图是不合适的.
条形图是用来将事物归类的,看每一类数据的情况,也不是我们想要.
而饼图是看个部分的占比.
茎叶图可以帮助了解分布情况,但是无法很好的处理中位数距离和散布情况(我说过上节中配的图并不是正经的茎叶图,显然画它有些麻烦,数据下的那个表格形状才是真正的茎叶图,绘制起来并不复杂).茎叶图可以发现中位数的大概位置在哪里,并不能直接看出来.

关注中位数和散布情况时,我们可以选择盒须图(箱线图,箱体图).

图片

绘制箱线图的过程

按照四分位划分,它可以显示出数据中位数在哪

step1.将数据进行排序

1, 1, 2, 2, 3, 3, 4, 4, 6, 7, 8, 10, 11, 14, 15, 20, 22
median: 6

中位数找到之后,数据被它分为两部分,再在这两部分中分别找到它们对应的中位数
这样就被三个数分为四个区间(从左至右,成为第a个n分区级)

step2.寻找四分位数

(2+3)/2=2.5   madian:6   (11+14)/2=12.5

这里计算采用去掉median的方法划分,你也可以把它分别包括在两个区域计算下一次的中位数

利用pyhton绘制箱线图

先看一下参数 matplotlib官网介绍

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)

为了让你觉得代码不那么繁琐,这里是一个简单的实现

import numpy as np 
import matplotlib.pyplot as plt 
import pandas as pd

data = np.array([14, 6, 3, 2, 4, 15, 11, 8, 1, 7, 2, 1, 3, 4, 10, 22, 20])
df = pd.DataFrame({'distance':data})
df.boxplot(
    patch_artist=True,
    showmeans=True,
)

plt.show()

如果你并不满足上面代码的丰富,可以在下面的代码中发现一点新的东西

import numpy as np 
import matplotlib.pyplot as plt 
from mpl_toolkits.axisartist.axislines import SubplotZero
import pandas as pd

data = np.array([14, 6, 3, 2, 4, 15, 11, 8, 1, 7, 2, 1, 3, 4, 10, 22, 20])
df = pd.DataFrame({'distance':data})
yticks = np.arange(0, 23, 2)

# 设置支持中文
plt.rcParams['font.sans-serif']=['Microsoft YaHei']
plt.rcParams['axes.unicode_minus']=False

fig = plt.figure(figsize=(7, 5), dpi=120, facecolor='#FF9966', edgecolor='c') 
ax1 = SubplotZero(fig, 1, 1, 1, axisbg='#FF9966')
fig.add_subplot(ax1)
# ax1.grid(True, color='k', linestyle='-.')
ax1.axis['right', 'top'].set_visible(False)
ax1.set_yticks(yticks)
ax1.set_ylim(-1, 24) 

df.boxplot(patch_artist=True, showmeans=True)

plt.show()

这里并不重点说明程序的内容,应该更多的认识图表,利用统计学知识了解你的数据,程序的学习将会放在目录Machine Learning,你会发现那里并不会仅仅放一些算法的内容,也有基础的工具(python)使用.


博主个人能力有限,错误在所难免.
如发现错误请不要吝啬,发邮件给博主更正内容,在此提前鸣谢.
Email: JentChang@163.com (来信请注明文章标题,如果附带链接就更方便了)
你也可以在下方的留言板留下你宝贵的意见.


上一篇
统计学10:箱线图2 统计学10:箱线图2
统计学•目录 统计学•类别 math 箱线图2须须是显示所有数据的散布情况,左侧断线为最小值,右侧为最大值,我们可以很快的得出极差 中位数中间的线是中位数,在上节你会发现里面还有一个方点,那是平均数所在位置盒图告诉我们一半的数据量小于中
2018-12-25
下一篇
统计学08:茎叶图 统计学08:茎叶图
统计学•目录 统计学•类别 math 茎叶图将数的大小基本不变或变化不大的位作为一个主干(茎),将变化大的位的数作为分枝(叶),列在主干的后面,这样就可以清楚地看到每个主干后面的几个数,每个数具体是多少。 它可以直观的表现出数据的分布
2018-12-25
目录