描述性统计学基本指标的python实现

目录

  • 1. 统计分析
  • 2. 数据类型
  • 3.图表
    • 3.1 频数分布表
    • 3.2 直方图
    • 3.3 数据的位置
      • 3.3.1 样本平均数(Sample Mean)
      • 3.3.2 中位数(Median)
      • 3.3.3 众数(Mode)
      • 3.3.4 百分位数(Percentile)
  • 4. 数据的离散度
    • 4.1极差(Range)
    • 4.2平均绝对偏差(Mean Absolute Deviation)
    • 4.3方差(Variance)和标准差(Standard Deviation)

1. 统计分析

统计分析(Statistical)包括描述性统计(Descriptive Statistics)推断统计(Inferential Statistics) 两大部分。面对收集来的数据,我们首先要对数据进行整理(Organization),如排序,统计频数,绘制频数分布表;也可以通过计算一些指标对数据进行总结(Summarization),这些指标包括平均数,中位数等;对已知数据进行整理,归类、简化或绘制图标等呈现数据特征,是描述性分析的主要内容。

2. 数据类型

可将数据分为两类:定性数据(Qualitative Data) 和 定量数据(Quantitative Data)。

  • 定性数据是对事物性质进行描述的数据,通常只具有有限个取值往往用于描述类别。如股票所属行业即为定性数据。
  • 定量数据是呈现事物数量特征的数据,是由不同数字组成的,数字的取值是可以比较大小的,比如各只股票的收益数据即是定量数据。我们可以比较哪一只股票的收益率高,也可以比较一只股票何时收益较高。

3.图表

3.1 频数分布表

了解频数(Frequency) , 频率(Relative Frequency)频数分布表概念即可。

3.2 直方图

直方图是频数分布表的图形表达式,绘图方式详情点击链接
Python–Matplotlib库与数据可视化②–常见图形的绘制(柱状图,直方图,饼图,箱线图)

3.3 数据的位置

获取一组数据,如万科A(000002.SZ)

# 导入相关模块
import numpy as np
import tushare as ts
import pandas as pd
token = 'Your token'   # 输入你的接口密匙,获取方式及相关权限见Tushare官网。
pro = ts.pro_api(token)
df = pro.daily(ts_code='000002.SZ')  # daily为tushare的股票日线数据接口。
df['trade_date'] = pd.to_datetime(df['trade_date'])  
df.set_index(['trade_date'], inplace=True)  # 将日期列作为行索引
df = df.sort_index() 

3.3.1 样本平均数(Sample Mean)

平均数是常用的度量数据中心位置的指标,常用的平均数有两种计算方式,分别是算术平均法和几何平均法。

  • 算术平均数(Arithmetic Mean):
    x ‾ = x 1 + x 2 + ⋯ + x n n \displaystyle \overline{x}=\frac{x_1+x_2+\cdots +x_n}{n} x=nx1+x2++xn
  • 几何平均数(Geometric mean):
    x ‾ = [ ∏ j = 1 k ( s j ) ] 1 k \displaystyle \overline{x}=\left[\prod_{j=1}^k (s_j)\right]^{\frac{1}{k}} x=[j=1k(sj)]k1
# 求2020年收盘价算术平均数
df.close['2020'].mean()

在这里插入图片描述

# 求几何平均数
from scipy.stats.mstats import gmean
gmean(df.close['2020'])

在这里插入图片描述

算术平均数的应用范围非常广,几乎是所有定量的数据都可以计算其算术平均,而几何平均数经常用在收益率数据分析中。


3.3.2 中位数(Median)

中位数也是度量数据中心位置的指标之一。相比于平均数,中位数不易受到极端值的影响,因此当数据集中有多个极端值的时候,中位数会是一个更好的度量中心位置的方法。

# 求2020年收盘价中位数
df.close['2020'].median()

在这里插入图片描述


3.3.3 众数(Mode)

众数是一组数据中出现次数最多的数值,也是比较常见的度量数据中心位置的指标。同中位数一样,众数不易受极端值影响。

# 求2020年收盘价众数
df.close['2020'].mode()

描述性统计学基本指标的python实现_第1张图片

报错啦哈哈哈,股价数据一般互不相同,很难有众数。但是懂函数用法就行,咱也只是举个例子。不纠结这个,继续走起~


3.3.4 百分位数(Percentile)

第α百分位数即为使得至少(100-α)%的观测值大于等于该数,至少α%的观测值小于该数的一个数值。
第25百分位数,第50百分位数(即中位数),第75百分位数分别也被叫做第一四分位数(下四分位数),第二四分位数与第三四分位数(上四分位数)。
在实践中,可以使用百分位数来对业绩进行排序,比如投资经理的业绩经常以与同类型投资经理的业绩相比所处的百分位数的形式来呈现。另外分析师也会根据某一分位数来定义一个以该分位数命名的组类。例如,在比较某股票的收益率的表现的时候,可以将收益率低于第10百分位数的股票作为收益率最低的股票。

#用quantile()函数求上下四分位数
[df.close['2020'].quantile(i) for i in [0.25, 0.75]]

在这里插入图片描述

4. 数据的离散度

数据位置仅仅是一个点,若要全面地反映数据分布的特征,我们还需要其他指标。数据的离散度的变异性,主要衡量样本数据对于中心位置的偏离程度。把数据的位置通离散度结合起来,就能够很好地刻画数据分布的特征,常用的离散度指标如下:


4.1极差(Range)

  • 极 差 = 最 大 值 − 最 小 值 \displaystyle 极差 = 最大值 - 最小值 =
    极差计算简单,能够快速反映数据范围,但是极差提供的信息量相对比比较少,难以充分反映分布的情况。
# 求极差
df.close['2020'].max() - df.close['2020'].min()

在这里插入图片描述


4.2平均绝对偏差(Mean Absolute Deviation)

因为所有数据与均值的产值之和为0,所以一组数据的整体离散程度无法用其来衡量。再者我们关心的是偏离的大小,不是偏离的方向,因此平均绝对偏差能够较好地反映一组数据的离散程度

  • 平均绝对偏差计算公式:
    M A D = 1 n ∑ i = 1 n ∣ x i − x ‾ ∣ \displaystyle MAD=\frac{1}{n}\sum_{i=1}^n\left|x_i-\overline{x}\right| MAD=n1i=1nxix
#求平均绝对偏差
df.close['2020'].mad()

在这里插入图片描述

4.3方差(Variance)和标准差(Standard Deviation)

除了对数据与均值的差取绝对值外,我们还可以对其进行平方运算。方差是根据数据与均值偏差平方和算出的用于衡量数据离散度的指标,计算公式如下:
σ 2 = 1 n − 1 ∑ i = 1 n ( x i − x ‾ ) 2 \displaystyle \sigma^2=\frac{1}{n-1}\sum_{i=1}^n(x_i-\overline{x})^2 σ2=n11i=1n(xix)2
标准差是方差的平方根:
σ = 1 n − 1 ∑ i = 1 n ( x i − x ‾ ) 2 \displaystyle \sigma=\sqrt{\frac{1}{n-1}\sum_{i=1}^n(x_i-\overline{x})^2} σ=n11i=1n(xix)2
这两个指标是我们在实务中最常用的衡量数据离散度的指标:

# 求方差
df.close['2020'].var()

在这里插入图片描述

# 标准差
df.close['2020'].std()

在这里插入图片描述

你可能感兴趣的:(统计学,python,数据分析,统计学)