数据描述性统计整理
数据的描述性统计
以下均以数据集nums为处理对象,其中含有若干相同类型的数据
数据的集中趋势:
- 众数
特征:数据集合中出现次数最多(不唯一)
(备注:因为普通的scipy.stats.mode仅能返回最先出现的其中一个众数,所以以下我进行了扩充改写更符合众数的定义)
#!/usr/bin/python
# coding:utf-8
from scipy import stats
from collections import Counter
nums=[3,0,1,2,0,1,2,0,1,2]
datas=dict(Counter(nums)) # 获得按频率分配后的统计字典
keys=[] # 统计满足是众数的keys集合
sum=0 # 统计符合value与众数的value相同的个数
count = stats.mode(nums)[1]
for key,value in datas.items():
if value == count:
keys.append(key)
sum+=1
if sum==len(datas): # 若整个数据集各个元素出现的频率相同,则不存在众数;反之返回符合的众数集合(可能不止一个)
print "该数据集中无众数"
else:
print "该数据集的众数为:",keys
- 中位数
特征:数据集包含的数值个数,若为奇数,则为排在最中间的那个数;若为偶数,则为排在中间两数的算术平均值
import numpy as np
nums=[1,2,3,4,5,6]
print "中位数是",np.median(nums)
- 平均数
- 算数平均数
特征:数据集数值之和除以数值个数
import numpy as np
nums=[1,2,3,4,5.5]
print "算数平均值是",np.mean(nums)
- 加权平均数
特征:数据集中各数值与其各自权重乘积之和
import numpy as np
nums=[2,3,4]
weights=[1,2,3]
print "加权平均值为",np.average(nums,weights=weights)
- 几何平均数:
特征:用于各种定比数值间的平均值计算
from scipy import stats as sta
nums=[2,3,1]
print "几何平均值为",sta.gmean(nums)
- 分位数
特征:将一个随机变量的概率分布范围分为几个具有相同概率的连续区间。分割点的数量比划分出的区间少1。(举例四分位点)
import numpy as np
nums=[2,3,4,5,6,7,8,1]
print "四分位点为",np.percentile(nums,25),np.percentile(nums,50),np.percentile(nums,75)
数据的离中趋势:
数值型数据
- 方差
特征:数据集中各数值与均值之间差值平方的算数平均值
- 标准差
特征:方差的开二次方根
- 极差
特征:数据集内两最值之间的差值
- 平均差
特征:数据集中各数值与均值之间差值绝对值的算数平均值
import numpy as np
nums=[2,3,4,5,6,7,8,9]
print "极差为",np.ptp(nums)
print "方差为",np.var(nums)
print "标准差为",np.std(nums)
顺序数据
- 四分位差
- 异众比率
相对离散程度:
- 离散系数
分布形状:
- 偏态系数
- 峰态系数