33.数据分布情况分析

为什么要分析数据分布?

理解数据的分布特征,是所有数据分析工作的第一步

分布特征帮助我们回答三个核心问题:

  • 集中趋势:数据聚集在哪里?(均值、中位数)
  • 离散程度:数据分散到什么程度?(方差、标准差)
  • 形状特征:数据是对称的还是偏斜的?(偏度、峰度)

描述性统计:数据的”全貌速写”

描述性统计能快速呈现数据集的基本面貌,包括样本量、均值、标准差、最小值、四分位数和最大值。

下面我们生成 10000 个随机整数,并计算其描述性统计量。

⭐ 平台任务:描述性统计与偏度峰度计算

Listing 1
# ⚠️ 平台原始代码 - 请原样输入至教学平台(注释除外),平台才会判定答案正确
import numpy as np  # 导入NumPy数值计算库
import pandas as pd  # 导入Pandas数据分析库
from scipy.stats import skew, kurtosis  # 导入SciPy科学计算库

# 生成1000个10到20之间的随机整数
np.random.seed(0)
data = np.random.randint(10,20,10000)  # 生成随机数

# 描述性统计
data_describe = pd.DataFrame(data).describe()
print("数据集的描述性统计信息:\n", data_describe)  # 输出数据集的描述性统计信息:\n

# 计算偏度和峰度
data_skew = skew(data)
data_kurtosis = kurtosis(data)  # 计算数据的峰度(衡量分布尖锐程度)
print("数据集的偏度为:", data_skew)  # 输出数据集的偏度为
print("数据集的峰度为:", data_kurtosis)  # 输出数据集的峰度为
数据集的描述性统计信息:
                   0
count  10000.000000
mean      14.539700
std        2.885525
min       10.000000
25%       12.000000
50%       15.000000
75%       17.000000
max       19.000000
数据集的偏度为: -0.009557712187666845
数据集的峰度为: -1.2371375367090531

什么是偏度(Skewness)?

偏度衡量数据分布的对称性,公式为:

\[ \text{Skew} = E\left[\left(\frac{X-\mu}{\sigma}\right)^3\right] \]

  • Skew = 0:分布对称(如正态分布)
  • Skew > 0:右偏(正偏),右侧有长尾
  • Skew < 0:左偏(负偏),左侧有长尾

偏度的直观理解

偏度直观对比 展示左偏、对称和右偏三种分布形态 左偏 (Skew < 0) 长尾在左侧 对称 (Skew = 0) 正态分布 右偏 (Skew > 0) 长尾在右侧

什么是峰度(Kurtosis)?

峰度衡量数据分布的尖锐程度,公式为:

\[ \text{Kurt} = E\left[\left(\frac{X-\mu}{\sigma}\right)^4\right] - 3 \]

  • Kurt = 0:正态峰度(以正态分布为基准)
  • Kurt > 0:尖峰分布,数据更集中于均值附近
  • Kurt < 0:平峰分布,数据分布更均匀

计算偏度和峰度并解读

Listing 2
# ==================== 计算偏度 ====================
# 偏度衡量分布的不对称性,正值表示右偏,负值表示左偏
data_skew = skew(data)  # 计算数据的偏度系数

# ==================== 计算峰度 ====================
# fisher=False表示使用Pearson峰度(正态分布峰度为3)
# fisher=True表示使用Fisher峰度(正态分布峰度为0)
data_kurtosis = kurtosis(data, fisher=False)  # 计算Pearson峰度

# ==================== 输出偏度和峰度 ====================
print(f'偏度: {data_skew:.4f}')  # 打印偏度值,保留4位小数
print(f'峰度: {data_kurtosis:.4f}')  # 打印峰度值

# ==================== 偏度解读 ====================
print('\n偏度解读:')
if abs(data_skew) < 0.5:  # 偏度绝对值小于0.5
    print('  偏度接近0,分布较为对称')  # 近似对称分布
elif data_skew > 0:  # 偏度大于0
    print('  正偏,右侧长尾')  # 右侧有极端值拉动均值
else:  # 偏度小于0
    print('  负偏,左侧长尾')  # 左侧有极端值拉动均值

# ==================== 峰度解读 ====================
print('\n峰度解读:')
if abs(data_kurtosis - 3) < 0.5:  # Pearson峰度接近3
    print('  峰度接近3,接近正态分布')  # 正态峰度
elif data_kurtosis > 3:  # Pearson峰度大于3
    print('  尖峰,数据更集中')  # 中心集中,尾部较薄
else:  # Pearson峰度小于3
    print('  平峰,数据更分散')  # 中心平坦,尾部较厚
偏度: -0.0096
峰度: 1.7629

偏度解读:
  偏度接近0,分布较为对称

峰度解读:
  平峰,数据更分散

可视化分析:直方图与箱线图

直方图展示频率分布,箱线图展示五数概括(最小值、Q1、中位数、Q3、最大值)。

两者结合使用能全面展现数据的分布形态和异常值。

绘制直方图与箱线图

# ==================== 导入绘图库 ====================
import matplotlib.pyplot as plt  # 基础绘图库
import seaborn as sns  # 统计绘图库

# ==================== 创建画布 ====================
fig, axes = plt.subplots(1, 2, figsize=(14, 6))  # 1行2列的子图

# ==================== 绘制直方图 ====================
axes[0].hist(data, bins=20, color='steelblue', alpha=0.7, edgecolor='black')
axes[0].set_title('直方图', fontsize=14)
axes[0].set_xlabel('值', fontsize=12)
axes[0].set_ylabel('频数', fontsize=12)
axes[0].grid(axis='y', alpha=0.3)

# ==================== 绘制箱线图 ====================
axes[1].boxplot(data, vert=True)
axes[1].set_title('箱线图', fontsize=14)
axes[1].set_ylabel('值', fontsize=12)
axes[1].grid(axis='y', alpha=0.3)

plt.tight_layout()
plt.show()
Figure 1: 直方图与箱线图

箱线图解读要点

箱线图结构解析 标注箱线图各部分含义:最小值、Q1、中位数、Q3、最大值、异常值 最大值(1.5×IQR内) Q3(第75百分位数) 中位数 Q2(第50百分位数) Q1(第25百分位数) 最小值(1.5×IQR内) ● 异常值(超出1.5×IQR) IQR

Q-Q 图:检验数据是否服从正态分布

Q-Q 图(Quantile-Quantile Plot)将数据的分位数与理论正态分布的分位数对比:

  • 数据点落在参考线上 → 符合正态分布
  • 数据点偏离参考线 → 不符合正态分布

绘制 Q-Q 图

from scipy import stats  # 导入统计模块

plt.figure(figsize=(8, 6))
stats.probplot(data, dist='norm', plot=plt)
plt.title('Q-Q图(正态分布检验)', fontsize=14)
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()
Figure 2: Q-Q图(正态分布检验)

金融应用:分布分析的实际意义

在金融领域,分布分析是风险管理的基础:

  • 正态性检验:股票收益率是否服从正态分布?
  • 尾部风险:极端亏损发生的概率有多大?
  • VaR 计算:基于收益率分布估计在一定置信水平下的最大潜在损失

本章小结

概念 含义 关键判断
偏度 分布的对称性 =0 对称;>0 右偏;<0 左偏
峰度 分布的尖锐程度 =0 正态;>0 尖峰;<0 平峰
直方图 频率分布形状 直观展示分布形态
箱线图 五数概括+异常值 识别中位数与离群点
Q-Q 图 正态性检验 点在线上即正态