参考链接: Python中的统计函数 1(中位数和平均值的度量)
数据的描述性统计与python实现
使用pandas导入数据
导入需要的包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
from scipy.stats import mode
import seaborn as sns
import os
更改工作目录及读取数据
os.chdir(r'C:UsersMr.Mnotebook')
snd = pd.read_excel("作业数据.xls")
数据可视化,数据为259人的身高数据
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
snd.height.value_counts().sort_index().plot(kind = 'bar')
数据的集中趋势
众数:出现频率最多的取值 中位数:按大小排序后中间那个取值(50%分位数) 平均数:所有数值加总后除以数量 分位数:分位数就是先把一列数按从小到大排序,如果一共有n个数,那么四分之一分位数就是第n* 0.25个数,四分之三分位数就是第n* 0.75个数,以此类推,p分位数就是第n * p个数.如果n * p不是整数则往最接近的较大的整数上归。
print('平均值:',snd.height.mean())
print('中位数:',snd.height.median())
print('众数:',mode(snd.height))#也就是中分位数
print('上四分位数',snd.height.quantile([0.25]))
print('下四分位数',snd.height.quantile([0.75]))
print('最大值:',snd.height.max())
print('最小值:',snd.height.min())
平均值: 171.19379844961242
中位数: 171.0
众数: ModeResult(mode=array([170], dtype=int64), count=array([30]))
上四分位数 0.25 166.0
Name: height, dtype: float64
下四分位数 0.75 176.0
Name: height, dtype: float64
最大值: 188
最小值: 150
盒须图:
sns.boxplot( y = 'height', data = snd)
算数平均数:即均值 加权平均数:加权平均值即将各数值乘以相应的权数,然后加总求和得到总体值,再除以总的单位数。加权平均值的大小不仅取决于总体中各单位的数值(变量值)的大小,而且取决于各数值出现的次数(频数),由于各数值出现的次数对其在平均数中的影响起着权衡轻重的作用,因此叫做权数 几何平均数:几何平均数是对各变量值的连乘积开项数次方根
数据的离中趋势
方差:样本方差的定义 标准差:样本方差的算术平方根,定义: 极差:最大值-最小值 平均差:各个变量值同平均数的离差绝对值的算术平均数。 四分位差:上四分位数(Q3,即位于75%)与下四分位数(Q1,即位于25%)的差。 异众比率:异众比率指的是总体中非众数次数与总体全部次数之比。换句话说,异众比率指非众数组的频数占总频数的比例。
print('方差:',snd.height.var())
print('标准差:',snd.height.std())
print('极差:',snd.height.max()-snd.height.min())
print('四分位差:',int(snd.height.quantile([0.75])) - int(snd.height.quantile([0.25])))
print("异众比率:",(1-mode(snd.height)[1][0]/len(snd.height)))
方差: 47.07513648840227
标准差: 6.861132303665501
极差: 38
四分位差: 10
异众系数: 0.8837209302325582
相对离散程度
离散系数:(coefficient of variation),是概率分布离散程度的一个归一化量度,其定义为标准差与平均值之比: 离散系数是衡量资料中各观测值离散程度的一个统计量。当进行两个或多个资料离散程度的比较时,如果度量单位与平均数相同,可以直接利用标准差来比较。如果单位和(或)平均数不同时,比较其离散程度就不能采用标准差,而需采用离散系数来比较
print('离散系数:',np.std(snd.height)/np.mean(snd.height))
离散系数: 0.04000041291305872
分布的形状
偏态系数:用来度量分布是否对称。以平均值与中位数之差对标准差之比率来衡量偏斜的程度: 用SK表示偏斜系数:正态分布左右是对称的,偏度系数为0,偏态系数小于0,因为平均数在众数之左,是一种左偏的分布,又称为负偏。偏态系数大于0,因为均值在众数之右,是一种右偏的分布,又称为正偏
峰态系数:用来度量数据在中心聚集程度,四阶中心矩与σ4的比值作为衡量峰度的指标: 在正态分布情况下,峰度系数值是3,>3的峰度系数说明观察量更集中,有比正态分布更短的尾部;<3的峰度系数说明观测量不那么集中,有比正态分布更长的尾部,类似于矩形的均匀分布,峰度系数的标准误用来判断分布的正态性。峰度系数与其标准误的比值用来检验正态性。如果该比值绝对值大于2,将拒绝正态性。
print('偏度:',snd.height.skew())
print('峰度:',snd.height.kurt())
偏度: -0.2619058504933375
峰度: -0.26616749245337346
可知该班级的身高分布为左偏,峰度不太集中。