<aside> 💡

查看全集:Quantopian量化分析56讲

</aside>

本教程将介绍如何使用单一数值来概括数据集,核心目标是捕捉数据分布的关键信息。

pic.svg

准备工作

# 导入必要的库
import yfinance as yf
import scipy.stats as stats
import numpy as np

# 定义自定义众数计算函数
def mode(l):
    counts = {}
    for e in l:
        counts[e] = counts.get(e, 0) + 1

    maxcount = max(counts.values(), default=0)
    if maxcount < 1 and len(l) > 1:
        return 'No mode'

    modes = [k for k, v in counts.items() if v == maxcount]
    return modes if maxcount > 1 or len(l) == 1 else 'No mode'

算术平均数

最常用的集中趋势度量,计算公式为:

$$ \text{Mean} = \frac{1}{n}\sum_{i=1}^n x_i

$$

# 示例数据集
x1 = [1, 2, 2, 3, 4, 5, 5, 7]
x2 = x1 + [100]

print(f'x1的平均数: {np.mean(x1):.2f}')
print(f'x2的平均数: {np.mean(x2):.2f}')

中位数

将数据排序后位于中间位置的值,对异常值不敏感:

print(f'x1的中位数: {np.median(x1)}')
print(f'x2的中位数: {np.median(x2)}')

众数

出现频率最高的值,适用于类别数据:

print(f'x1的众数: {mode(x1)}')
print(f'x2的众数: {mode(x2)}')

几何平均数

适用于增长率计算,计算公式:

$$ \sqrt[n]{\prod_{i=1}^{n} x_i} $$

print(f'x1的几何平均数: {stats.gmean(x1):.2f}')
print(f'x2的几何平均数: {stats.gmean(x2):.2f}')

实际金融数据分析示例