最近在温故统计学方面的知识,纸上得来终觉浅,本人打算将《深入浅出统计学》上一些例子用python进行可视化。今天就先从箱线图这一例子开始吧。
这是从此书第三章:分散性与变异性的量度--强大的"距"说起。先介绍全距的概念,全距是由数据集中的最大值减去最小值,最大值为上界,最小值为下界。这是用于量度数据分散程度的一种方法。然而全距的最大问题是无法将异常值排除在外,导致数据的异常性。为了摆脱异常值,一种使用迷你距忽略异常值的方式被提出。构建迷你距的一个办法是:仅使用数据中心周边的数值。为此,首先按升序排列数据,然后将这些数据分为四个相等的数据块,每个数据块包含四分之一原有数据。
四分位距=上四分位数-下四分位数
下四分位数(Q1)的位置由三步求得:Ⅰ. 首先计算n➗4. Ⅱ. 如果结果为整数,则下四分位数位于"n➗4"这个位置和下一个位置的中间,取这两个位置上的数值的平均值,即得下四分位数。Ⅲ. 如果"n➗4"不是整数,则向上取整,所得结果即为下四分位数得位置。
上四分位数(Q3)的位置由三步求得:Ⅰ. 首先计算3n➗4. Ⅱ. 如果结果为整数,则下四分位数位于"3n➗4"这个位置和下一个位置的中间,取这两个位置上的数值的平均值,即得下四分位数。Ⅲ. 如果"3n➗4"不是整数,则向上取整,所得结果即为下四分位数得位置。
这些就是箱线图得基本概念。为了创建一幅箱线图,首先要按照标度画出一个"箱",箱得左右两边分别表示下四分位数和上四分位数;然后,在箱中画一条线,表示出中位数;通过这个箱我们能看出四分位距得宽度。随后,在箱的两边画出"线",显示出上限、下限。
四分位距IQR=Q3-Q1,上限=(Q3+1.5IQR,max)取最小,下限=(Q1-1.5IQR ,min)取最大。不在上下限之间的值将被当成异常值处理。
我们将以书中三位球员的得分用python实现
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
df1=[7,8,9,9,10,10,11,11,12,13]
df2=[1,9,9,10,10,10,10,11,11,13]
df3=[3,3,6,7,7,10,10,11,13,30]
data = {
'球员一':df1,
'球员二':df2,
'球员三':df3
}
df = pd.DataFrame(data)
df.plot.box(title="箱状图")
plt.grid(linestyle="--", alpha=0.3)
plt.show()
到此简单的箱状图就完成了。