python数据分析系列一——描述性统计

这是python数据分析系列文章,从统计学基础知识到机器学习,将跟随居士的学习教程持续更新。这一篇主要描述数据集中趋势,离散程度以及分布形态等知识点,下一篇将讲述概率分布。

1.数据集中趋势
1)中位数
按照升序排列数据:
n为奇数时,(n+1)/2位置的数值为中位数
n为偶数时,(n+1)/2位置左右的数据求平均即为中位数
即在这组数据中,有一半的数据比它大,有一半的数据比它小。
2)众数
是一组数据中出现次数最多的数值叫众数,众数可以不存在或多于一个。
3)平均数
算术平均数,又称均值,是统计学中最基本、最常用的一种平均指标,分为简单算术平均数、加权算术平均数。它主要适用于数值型数据。

算数平均数

加权平均数

几何平均是对各变量值的连乘积开项数次方根,主要用于金融场景。

几何平均数

4)分位数
分位数是将总体的全部数据按大小顺序排列后,处于各等分位置的变量值,其中中位数和四分位数较为常用。
第一四分位数 (Q1),又称“较小四分位数”,等于该样本中所有数值由小到大排列后第25%的数字。
第二四分位数 (Q2),又称中位数,等于该样本中所有数值由小到大排列后第50%的数字。
第三四分位数 (Q3),又称“较大四分位数”,等于该样本中所有数值由小到大排列后第75%的数字。
第三四分位数与第一四分位数的差距又称四分位距。
来看看python实现:

nums = [1,2,3,5]
import numpy as np
#中位数
print(np.median(nums)) #返回2.5
#平均数
print(np.mean(nums)) #返回2.75
#分位数(numpy用percentile,padans用quantile)
a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
#Q1
q1=np.percentile(a,25) 
#Q2
q2=np.percentile(a,50)
#Q3
q3=np.percentile(a,75)

分位数返回结果.png

2.数据离散程度
1)极差
即一组数值型数据中最大值和最小值之差,max(x)-min(x),反映了数值样本的数据范围
2)方差和标准差
方差用于衡量数据的分散程度,常见的有总体方差和样本方差,计算方法类似。标准差为方差的平方根。
3) 平均差
是数据组中各数据值与其算术平均数离差绝对值的算术平均数。

计算公式.png

4)分位差
其数值越小表明数据越集中,数值越大表明数据越离散。常用的四分位差为:四分位差=(第三个四分位数-第一个四分位数)/2

5)异众比率
异众比率越大,说明非众数组的频数占总频数的比重越大,众数的代表性就越差;异众比率越小,说明非众数组的频数占总频数的比重越小,众数的代表性越好。

6)离散系数
离散系数又称变异系数,CV(Coefficient of Variance)表示。CV(Coefficient of Variance):标准差与均值的比值。离散系数越小,数据的离散程度就越小。
看看python实现:

a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
#求方差
print(np.var(a))
#求标准差
print(np.std(a))
#求平均差
print(np.sum(abs(a-np.mean(a)))/len(a))
![image](https://upload-images.jianshu.io/upload_images/16902082-91c76404bd89a97a.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
#离散系数
print(np.std(a)/np.mean(a))
#返回结果
print(np.var(a),np.std(a),np.sum(abs(a-np.mean(a)))/len(a),np.std(a)/np.mean(a))
8.25 2.8722813232690143 2.5 0.5222329678670935

3.数据分布的形状
1)偏态系数
偏态系数以平均值与中位数之差对标准差之比率来衡量偏斜的程度,用SK表示偏斜系数:偏态系数小于0,因为平均数在众数之左,是一种左偏的分布,又称为负偏。偏态系数大于0,因为均值在众数之右,是一种右偏的分布,又称为正偏。

image

2)峰态系数
峰度(系数)是一个用于衡量离群数据离群度的指标。峰度(系数)越大,说明该数据系列中的极端值越多。

import numpy as np
from scipy import stats

x = np.random.randn(200)
skew = stats.skew(x)
kurtosis = stats.kurtosis(x)

你可能感兴趣的:(python数据分析系列一——描述性统计)