统计之均值中位数众数全距四分位数以及箱线图展示

均值:即平均数,数列中各数总和除以个数。可用numpy.mean函数计算

中位数: 数字从小到大排列的数列中位于中间位置的那个数,如果数列个数为奇数位则中位数位于(n+1)/2, 如果为偶数位则为n/2与n/2+1的两个数的平均值,可以用numpy.median函数计算

众数:数列中出现频率最多的数, 可以用scipy的stats.mode函数计算

全距:数列中最大值与最小值的差

四分位数:将从小到大排列的数列平均分为4段,最小的四分位数称为下四分位数,最大的成为上四分位数,中间的称为中位数

可以用箱线图展示以上数据(仍以维他命价格为例,数据下载地址)

图形如下
统计之均值中位数众数全距四分位数以及箱线图展示_第1张图片

左侧为价格的散点图
右侧为箱线图,其中

  1. min为价格的最小值
  2. max为价格的最大值
  3. q1是第一四分位数(下四分位数)即位于25%位值的数
  4. median为中位数
  5. q3为第三四分位数(上四分位数)也即位于第75%的数,说明50%的价格集中在¥38.9与¥120.45之间
  6. upper fence为上限=Q3+1.5IQR,四分位距IQR=Q3-Q1,也就是Q3向上延伸1.5倍IQR的数据点,超出范围则为最大值
  7. 下限=Q1-1.5IQR,Q1向下延伸1.5倍IQR距的数据点,超出范围则为最小价格值

代码如下:

    tbdata = pd.read_csv("tb_vitamin_20200925.csv")
    p_median = np.median(tbdata["price"])   # 中位数
    p_mean = np.mean(tbdata["price"])       # 均值
    p = stats.mode(tbdata["price"])
    p_argmax = p[0][0]                      # 众数, p[1][0]返回众数出现的频率
    
    fig = go.Figure()
    fig.add_trace(go.Box(y=tbdata["price"],
                         boxpoints="all",   # 显示所有数据点
                         jitter=0.3,        # 散点的分散程度
                         pointpos=-1.8,     # 散点与box的位置【-2,2】
                         name="箱线图"))
    fig.show()

你可能感兴趣的:(Python,EDA,数据分析,python)