牛客题解 | 描述性统计计算器

题目

题目链接

描述性统计是一种描述数据集特征的方法,通过若干类数据统计值来进行统计。本题具体使用的统计值如下

  1. 平均值(mean)

\[\mu = \frac{1}{n}\sum_{i=1}^{n} x_i \]

  1. 中位数(median)
    将数据从小到大排序后:
    alt

  2. 众数(mode)
    出现次数最多的数值:

\[mode = \arg\max_x f(x) \]

其中 \(f(x)\)\(x\) 出现的频率

  1. 方差(variance)

\[\sigma^2 = \frac{1}{n-1}\sum_{i=1}^{n} (x_i - \mu)^2 \]

  1. 标准差(standard_deviation)

\[\sigma = \sqrt{\frac{1}{n-1}\sum_{i=1}^{n} (x_i - \mu)^2} \]

  1. 25th百分位数(25th_percentile)

\[Q_1 = P_{25} \]

25%百分位数是数据从小到大排序后,第25%个数据,剩下的百分位数同理。

  1. 50th百分位数(50th_percentile)

\[Q_2 = P_{50} = median \]

  1. 75th百分位数(75th_percentile)

\[Q_3 = P_{75} \]

  1. 四分位距(interquartile_range)

\[IQR = Q_3 - Q_1 \]

四分位距是数据集中位于25%到75%之间的数据范围。

标准代码如下

def descriptive_statistics(data):
    data = np.array(data)
    mean = np.mean(data)
    median = np.median(data)
    unique, counts = np.unique(data, return_counts=True)
    mode = unique[np.argmax(counts)] if len(data) > 0 else None
    variance = np.var(data)
    std_dev = np.sqrt(variance)
    percentiles = np.percentile(data, [25, 50, 75])
    iqr = percentiles[2] - percentiles[0]
    stats_dict = {
        "mean": mean,
        "median": median,
        "mode": mode,
        "variance": np.round(variance,4),
        "standard_deviation": np.round(std_dev,4),
        "25th_percentile": percentiles[0],
        "50th_percentile": percentiles[1],
        "75th_percentile": percentiles[2],
        "interquartile_range": iqr
    }
    return stats_dict

在scipy库和pandas库中也有对应的描述性统计计算方法。

posted @ 2025-03-12 16:51  wangxiaoxiao  阅读(15)  评论(0)    收藏  举报