美文网首页
119、均值、中位数、众数的认识及直方图的描绘

119、均值、中位数、众数的认识及直方图的描绘

作者: 陈容喜 | 来源:发表于2018-01-03 00:14 被阅读0次

这两天学习一点统计学的知识。
均值:均值就是将所有数字加起来,然后除以数字个数。
均值作用:给出典型值(不存在异常值时用)
均值危害:存在当常值时会将数据向左或向右偏斜,它会给出一个不存在于数据集中区的数值。
异常值:与其他数据格格不入的极高或极低的数值。

中位数:永远处于数据中间的值,存在异常值时可用中位数表示典型值。 1.png 实例:下面是一个游泳班的成员年龄: 2.png

参加这个班的有9个孩子及其父母,分别求出年龄的均值和中位数,还要画出直方图。
我试着用代码实现:

先导入相关模块,使用sorted()函数进行临时排序: 3.png 使用Series()给数据添加标签: 4.png 使用value_counts()统计各个年龄出现的频率(频数),按照降序排列: 5.png 使用mean()计算年龄是均值: 6.png 定义一个get_median()函数用于计算年龄的中位数: 7.png

其中size存储着所有年龄的个数,size % 2 表示求余数,如果余数等于0,则所有年龄的个数为偶数,中位数就是中间两个数的和除以2;如果余数不等于0,则所有年龄的个数为奇数,中位数就是处于中间的数值。

接下来使用matplotlib描绘直方图: 8.png 显示的结果如下: 9直方图.png

其中 rects =plt.bar(left = (1,2,3,4,5,6),height = (3,4,2,2,4,3),width = 0.8,align="center",yerr=0.000001)
这句代码是最重要的,其中left表示直方图的开始的位置(也就是最左边的地方),height是指直方图的高度,当直方图太粗时,可以通过width来定义直方图的宽度,注意多个直方图要用元组,yerr这个参数是防止直方图触顶。
从上面的结果我们还发现了一个问题,就是这个班级的年龄均值和中位数都是17,而这个班里根本没有17岁的人,所以在这里均值和中位数都不能代表这个游泳班的年龄情况,所以这时候要引入众数。

众数:就是一堆数据中出现最频繁的数值,众数可以不止一个,甚至是一组数值。 10.png

众数的好处:当众数的数目较少时,或者,当数据为类别数据而不是数值型数据时.均值和中位数都不能用于类别数据。
众数的劣势:当众数很多时并不能表示典型值。

最近看了罗胖的跨年演讲,想想这已经是第三个年头,最大的触动是有关人生算法:成就=核心算法X大量重复动作,从一开始决定学Python不就是为了找到属于自己的人生算法,可回顾这半年以来,并没有完成自己的计划,连每天敲一段代码这样简单的重复动作,还是没能坚持下来。木心先生说“岁月不饶人,我也未曾饶过岁月”,岁月确实没饶过我,可我却饶了岁月好几回。
2018继续加油吧,即使没有如期完成计划,好歹我们已在路上!

源码:


# coding: utf-8

# In[1]:


import numpy as np
from pandas import Series,DataFrame
import pandas as pd
import matplotlib.pyplot as plt
data = [1,33,1,32,2,31,2,3,33,2,31,32,2,32,32,1,33,3]
d = sorted(data)  # 对数据进行临时排序(从小到大)
print(d)


# In[2]:


# 给数据添加标签
frame = Series(d)
print(frame)       


# In[3]:


# 统计各个年龄出现的频率(频数),按照降序排列
value_counts =frame.value_counts()
print(value_counts)


# In[4]:


# 统计年龄的均值
mean = frame.mean()
print(mean)


# In[5]:


# 统计年龄的中位数
def get_median(data):   # 定义一个用于计算中位数的函数
    data = sorted(data) 
    size = len(data)    # 统计数据有多少个
    n = size/2
    if size % 2 == 0:   # 通过求余数判断数据总数是否为偶数
        median = (data[n] + data[n-1]) / 2.0
    else:
        median = data[n]
    print(median)
    
get_median(data)


# In[6]:


# 画直方图
fig1 = plt.figure(6)       # 设置直方图中有6组数据
rects =plt.bar(left = (1,2,3,4,5,6),height = (3,4,2,2,4,3),width = 0.8,align="center",yerr=0.000001)

# 增加直方图脚注
plt.xticks((1,2,3,4,5,6),('1','2','3','31','32','33'))

# 修改直方图上显示具体的数字
def autolabel(rects):
    for rect in rects:
        height = rect.get_height()
        plt.text(rect.get_x()+rect.get_width()/2,1.01*height,'%s' % int(height))
autolabel(rects)

plt.title('Swimming class frequency histogram') # 修改标题
plt.xlabel('age')                               # 修改x轴标签
plt.ylabel('Frequency')                         # 修改y轴标签
plt.show()

相关文章

  • 119、均值、中位数、众数的认识及直方图的描绘

    这两天学习一点统计学的知识。均值:均值就是将所有数字加起来,然后除以数字个数。均值作用:给出典型值(不存在异常值时...

  • 统计学

    平均数:包含均值、中位数、众数

  • 大数据中的统计学基础——Day1

    本章内容 统计学分类 均值、中位数、众数 方差、标准差 直方图 箱线图 茎叶图 线图 柱形图 饼图 一、统计学的分...

  • mysql中位数、众数计算

    平均数、中位数、众数常用来描述数据的集中程度,在mysql中,均值的计算较为简单,但中位数和众数尚不支持可以直接计...

  • 数据挖掘课后习题 第2章

    2.2 (a)均值:29.96 中位数:25(b)众数:25,35 数据的形态:因为有两个...

  • 统计:均值,中位数,众数

    一、异常值是指什么?请列举 1种识别连续型变量异常值的方法? 异常值(Outlier) 是指样本中的个别值,其数值...

  • 1、均值 ,中位数,众数

    均值 均值是将数据综合除以这组数据的个数 中位数 中位数是将数据按照从小到大升序进行排列后取最中间的数值。数据的数...

  • Statistics

    平均数 均值Mean、中位数Median、众数Mode 异常值Outlier普遍定义 Outlier < Q1 -...

  • 深入浅出统计学-2 集中趋势的量度

    2 集中趋势的量度 均值是平均数的一种,中位数、众数也是平均数。 均值(=μ): 计算方法:μ=(∑x)/n x为...

  • 描述统计学相关概念笔记整理

    数据描述的数值方法: 集中趋势· 均值· 中位数· 众数 离散程度· 极差· 方差 分布的形状· 偏度· 峰度 集...

网友评论

      本文标题:119、均值、中位数、众数的认识及直方图的描绘

      本文链接:https://www.haomeiwen.com/subject/pyecnxtx.html