统计分析(Statistical)包括描述性统计(Descriptive Statistics) 和 推断统计(Inferential Statistics) 两大部分。面对收集来的数据,我们首先要对数据进行整理(Organization),如排序,统计频数,绘制频数分布表;也可以通过计算一些指标对数据进行总结(Summarization),这些指标包括平均数,中位数等;对已知数据进行整理,归类、简化或绘制图标等呈现数据特征,是描述性分析的主要内容。
可将数据分为两类:定性数据(Qualitative Data) 和 定量数据(Quantitative Data)。
了解频数(Frequency) , 频率(Relative Frequency) 及频数分布表概念即可。
直方图是频数分布表的图形表达式,绘图方式详情点击链接
Python–Matplotlib库与数据可视化②–常见图形的绘制(柱状图,直方图,饼图,箱线图)
获取一组数据,如万科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()
平均数是常用的度量数据中心位置的指标,常用的平均数有两种计算方式,分别是算术平均法和几何平均法。
# 求2020年收盘价算术平均数
df.close['2020'].mean()
# 求几何平均数
from scipy.stats.mstats import gmean
gmean(df.close['2020'])
算术平均数的应用范围非常广,几乎是所有定量的数据都可以计算其算术平均,而几何平均数经常用在收益率数据分析中。
中位数也是度量数据中心位置的指标之一。相比于平均数,中位数不易受到极端值的影响,因此当数据集中有多个极端值的时候,中位数会是一个更好的度量中心位置的方法。
# 求2020年收盘价中位数
df.close['2020'].median()
众数是一组数据中出现次数最多的数值,也是比较常见的度量数据中心位置的指标。同中位数一样,众数不易受极端值影响。
# 求2020年收盘价众数
df.close['2020'].mode()
报错啦哈哈哈,股价数据一般互不相同,很难有众数。但是懂函数用法就行,咱也只是举个例子。不纠结这个,继续走起~
第α百分位数即为使得至少(100-α)%的观测值大于等于该数,至少α%的观测值小于该数的一个数值。
第25百分位数,第50百分位数(即中位数),第75百分位数分别也被叫做第一四分位数(下四分位数),第二四分位数与第三四分位数(上四分位数)。
在实践中,可以使用百分位数来对业绩进行排序,比如投资经理的业绩经常以与同类型投资经理的业绩相比所处的百分位数的形式来呈现。另外分析师也会根据某一分位数来定义一个以该分位数命名的组类。例如,在比较某股票的收益率的表现的时候,可以将收益率低于第10百分位数的股票作为收益率最低的股票。
#用quantile()函数求上下四分位数
[df.close['2020'].quantile(i) for i in [0.25, 0.75]]
数据位置仅仅是一个点,若要全面地反映数据分布的特征,我们还需要其他指标。数据的离散度的变异性,主要衡量样本数据对于中心位置的偏离程度。把数据的位置通离散度结合起来,就能够很好地刻画数据分布的特征,常用的离散度指标如下:
# 求极差
df.close['2020'].max() - df.close['2020'].min()
因为所有数据与均值的产值之和为0,所以一组数据的整体离散程度无法用其来衡量。再者我们关心的是偏离的大小,不是偏离的方向,因此平均绝对偏差能够较好地反映一组数据的离散程度
#求平均绝对偏差
df.close['2020'].mad()
除了对数据与均值的差取绝对值外,我们还可以对其进行平方运算。方差是根据数据与均值偏差平方和算出的用于衡量数据离散度的指标,计算公式如下:
σ 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=n−11i=1∑n(xi−x)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} σ=n−11i=1∑n(xi−x)2
这两个指标是我们在实务中最常用的衡量数据离散度的指标:
# 求方差
df.close['2020'].var()
# 标准差
df.close['2020'].std()