牛客题解 | 描述性统计计算器
题目
描述性统计是一种描述数据集特征的方法,通过若干类数据统计值来进行统计。本题具体使用的统计值如下
- 平均值(mean)
\[\mu = \frac{1}{n}\sum_{i=1}^{n} x_i
\]
-
中位数(median)
将数据从小到大排序后:
-
众数(mode)
出现次数最多的数值:
\[mode = \arg\max_x f(x)
\]
其中 \(f(x)\) 为 \(x\) 出现的频率
- 方差(variance)
\[\sigma^2 = \frac{1}{n-1}\sum_{i=1}^{n} (x_i - \mu)^2
\]
- 标准差(standard_deviation)
\[\sigma = \sqrt{\frac{1}{n-1}\sum_{i=1}^{n} (x_i - \mu)^2}
\]
- 25th百分位数(25th_percentile)
\[Q_1 = P_{25}
\]
25%百分位数是数据从小到大排序后,第25%个数据,剩下的百分位数同理。
- 50th百分位数(50th_percentile)
\[Q_2 = P_{50} = median
\]
- 75th百分位数(75th_percentile)
\[Q_3 = P_{75}
\]
- 四分位距(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

浙公网安备 33010602011771号