python描述性统计工作日上班时代码_数据的描述性统计以及用Python代码实现

一、数据的描述性统计

对数据的描述性统计主要是指对结构化数据的描述分析,可从三个维度进行分析:数据的集中趋势、数据的离散程度和数据的分布形态。

描述数据集中趋势的指标有:众数、中位数、平均数(包含算数平均数、加权平均数、集合平均数)和分位数。

描述数据的离散程度的指标有:方差、标准差、极差和平均差(数值型数据);四分位差(顺序数据);异众比率(分类数据);离散系数 (相对离散程度)

描述数据分布形态的指标:偏态系数和峰态系数。

1.数据的集中趋势描述指标

算术平均数

简单算数平均数:即所有数值相加除以数值个数,

加权算数平均数:当每个数值的重要程度不同时,为了测算平均水平就要给不同数值赋予不同的权重。所有数据的权重都为1的加权算数平均数就是简单算术平均数。

公式:

算术平均数的优点:受样本数据波动的影响较小,具有一定的稳定性;缺点是易受极大值或极小值的影响。

用python3实现的代码:

对于Numpy包里的多维数组ndarray,利用data.mean()或者np.mean(data)

#创建一个服从正态分布的多维数组

import numpy as np

data=np.random.randn(5,4)

#求平均值

data.mean()

np.mean(data)

#求加权算数平均数

import numpy as np

a=[6,7,8]

np.average(a,weights=[1,2,3])

对于常用的Pandas包,常用的数据结构是Series(一组数据+索引)和DdtaFrame(表格型数据结构,行索引+列索引)

求均值可以用mean()或者describe()

import pandas as pd

import numpy as np

df=np.DataFrame(np.random.randn(4,3),index=['a','b','c','d'],columns=['one','two','three'])

df.describe()

df.mean()

df.mean(axis=0)#跨行即每列的平均值, 与df.mean()结果一致

df.mean(axis=1)#跨列即每行的平均值

几何平均数

当数据之间的关系是乘除关系时,用几何平均数来表示数据集合的集中趋势。

公式:

众数

即数据集合中出现次数最多的数值(众数可以是0/1或多个)

用python3求众数:利用scipy下的stats模块

from scipy import stats

a=[0,1,1,2,2,2,3,4,5,6]

stata.mode(a)[0][0]

中位数

将集合中所有的数值按照从低到高进行排序,处于最中间的一个数就是中位数,若中间有两个数则中位数为这两个数的算术平均值。

中位数跟算术平均数相比较的话,中位数不受极端值的影响。

python3中可用describe()来查看第二四分位数即中位数。

分位数

四分位数,即把所有数值按由小到大排序分成四等份,处于三个分割点位置的得分就是四分位数。

也可以利用describe()来查看三个四分位数。

2.数据的离散程度描述指标

用离散程度指标来衡量数据集合的波动情况

数值型数据:方差、标准差、极差、平均差

极差

数据集合中最大值与最小值的差,亦成为全距。极差易受极值的影响,对离散程度的描述不精确。

平均偏差

描述了所有数值与平均值的平均偏差距离

公式:

方差和标准差

一般情况下会用样本方差来估计总体方差

总体方差为:

样本方差为:

标准差就是方差的正值平方根;方差/标准差越大,数据的离中趋势越大。

离散系数(变异系数)

离散系数是一种相对离散程度的衡量,当两个数据集合的算数平均值不同,但方差和标准差相等时,可以用离散系数来衡量数据集合的离散程度。

样本的离散系数:

顺序数据:四分位差

第三四分位数与第一四分位数的差值,第二四分位数就是中位数,(要对数据按照从低到高进行排序,排在四分之一位置的数值就是第一四分位数,排在四分之二位置即第二四分位数,排在四分之三位置就是第三四分位数),这个差值区间包含了整个数据集合50%的数据。

分类数据:异众比率

指的是总体中非众数次数与总体全部次数之比,也即非众数组的频数占总频数的比例。主要用于测度分类数据的离散程度。

3.数据分布形态

偏态系数

偏态系数用来判断数据集合的分布形态是否对称,当偏态系数等于0时,对称分布;偏态系数小于0时,左偏分布,长尾拖在左边;偏态系数大于0时,右偏分布,长尾拖在右边。

峰态系数

用来描述单峰分布曲线的峰度高低和陡峭程度的指标,峰态系数和单峰分布形态之间的关系为:

当峰态系数等于3时,代表分布曲线是偏平程度适中的常峰态(正态分布的峰形就是常峰态);

当峰态系数小于3时,分布曲线是低峰态;

当峰态系数大于3时,分布曲线是尖峰态。

二、用Python实现

python代码:

import numpy as np

from scipy import stats

import pandas as pd

df=pd.DataFrame(np.random.randn(5,6),index=[1,2,3,4,5],columns=["a","b","c","d","e","f"])

print("最大值:",np.max(df))

print("最小值:",np.min(df))

#集中趋势相关指标

print("平均值:",np.mean(df))

print("中位数:",np.median(df))

print("众数:",stats.mode(df))

print("第一四分位数:",np.percentile(df,25))

print("第二四分位数:",np.percentile(df,50))

print("第三四分位数:",np.percentile(df,75))

#离散趋势相关指标

print("极差:",np.max(df)-np.min(df))

print("四分位差:",np.percentile(df,75)-np.percentile(df,25))

print("标准差:",np.std(df))

print("方差:",np.var(df))

print("离散系数:",np.std(df)/np.mean(df))

#偏度系数和峰度系数

print("偏度:",stats.skew(df))

print("峰度:",stats.kurtosis(df))

输出结果:

最大值: a 1.008610

b 1.403977

c 1.522318

d 1.166711

e 1.457904

f 0.759712

dtype: float64

最小值: a -1.913085

b -0.670699

c -0.654299

d -0.422364

e -0.603877

f -1.253978

dtype: float64

平均值: a -0.581842

b 0.453606

c 0.336790

d 0.277502

e 0.406543

f -0.004802

dtype: float64

中位数: 0.28145864621006794

众数: ModeResult(mode=array([[-1.91308493, -0.67069949, -0.65429917, -0.42236372, -0.60387668,

-1.25397788]]), count=array([[1, 1, 1, 1, 1, 1]]))

第一四分位数: -0.544228564511219

第二四分位数: 0.28145864621006794

第三四分位数: 0.6735451709693376

极差: a 2.921695

b 2.074677

c 2.176617

d 1.589075

e 2.061781

f 2.013690

dtype: float64

四分位差: 1.2177737354805567

标准差: a 0.935274

b 0.674448

c 0.704124

d 0.566993

e 0.683516

f 0.785069

dtype: float64

方差: a 0.874738

b 0.454880

c 0.495790

d 0.321481

e 0.467194

f 0.616333

dtype: float64

离散系数: a -1.607436

b 1.486858

c 2.090692

d 2.043199

e 1.681287

f -163.483815

dtype: float64

偏度: [ 0.40350174 -0.36215989 0.38550357 0.38138045 0.05402061 -0.51669572]

峰度: [-0.5057994 -0.66284249 -0.60277754 -1.23851834 -0.9033273 -1.33226797]

```

你可能感兴趣的:(python描述性统计工作日上班时代码_数据的描述性统计以及用Python代码实现)