数据描述性统计整理

数据的描述性统计

以下均以数据集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)

顺序数据

  • 四分位差
  • 异众比率

相对离散程度:

  • 离散系数

分布形状:

  • 偏态系数
  • 峰态系数
原文地址:https://www.cnblogs.com/S031602219/p/11220654.html