使用numpy快速实现统计分析的常用代码实现

NumPy 是 Python 编程语言中用于数值计算的核心库之一,在统计分析方面,它也提供了各种各样的函数来实现统计分析。

NumPy统计分析功能概览

  • 基本统计量:计算平均值、中位数、众数、标准差、方差等。 
  • 排序和搜索:排序数组、查找最大值、最小值、百分位数等。
  • 聚合操作:求和、乘积、累加等。 
  • 随机数生成:生成随机数,用于模拟和实验设计。 
  • 线性代数:矩阵运算、特征值分解等,间接支持统计建模

本文介绍一些numpy常用的一些统计分析案例的代码。

示例数据

import numpy as np

# 示例数据
np.random.seed(0)  # 设置随机种子以获得可重复的结果
data = np.random.normal(loc=0.0, scale=1.0, size=(100, 5))

1. 计算每一列的均值

mean_values = np.mean(data, axis=0)
print("Mean values:", mean_values)

2. 计算每一列的标准差

std_dev = np.std(data, axis=0)
print("Standard Deviations:", std_dev)

3. 找出每列的最大值和最小值

max_values = np.max(data, axis=0)
min_values = np.min(data, axis=0)
print("Max values:", max_values)
print("Min values:", min_values)

4. 计算每一列的中位数

median_values = np.median(data, axis=0)
print("Median values:", median_values)

5. 计算每一列的四分位数

percentiles = np.percentile(data, [25, 50, 75], axis=0)
print("Percentiles:", percentiles)

6. 计算每一列的方差

variance = np.var(data, axis=0)
print("Variances:", variance)

7. 计算每一列的偏度和峰度

from scipy.stats import skew, kurtosis
skewness = np.apply_along_axis(lambda x: skew(x), 0, data)
kurtosis = np.apply_along_axis(lambda x: kurtosis(x), 0, data)
print("Skewness:", skewness)
print("Kurtosis:", kurtosis)


skew和kurtosis 函数需要至少有三个非零值的数组才能计算,否则它们会抛出错误。这样 apply_along_axis函数 可以沿着第一个轴(即列)来计算。

8. 计算每一列的累积和

cumulative_sum = np.cumsum(data, axis=0)
print("Cumulative sum of last row:", cumulative_sum[-1])

9. 使用广播进行数据标准化

normalized_data = (data - np.mean(data, axis=0)) / np.std(data, axis=0)
print("Normalized data sample:", normalized_data[:3])

10. 计算每一列的累乘

cumulative_product = np.cumprod(data, axis=0)
print("Cumulative product of last row:", cumulative_product[-1])

11. 计算每一列的几何平均数

geometric_mean = np.exp(np.mean(np.log(np.abs(data)), axis=0))
print("Geometric means:", geometric_mean)

12. 计算每一列的调和平均数

harmonic_mean = np.mean(1 / data, axis=0)**-1
print("Harmonic means:", harmonic_mean)

13. 使用高级索引进行数据筛选

mask = data > 0
positive_data = data[mask]
print("Positive data count:", len(positive_data))

14. 计算每一列的中位绝对偏差

mad = np.median(np.abs(data - np.median(data, axis=0)), axis=0)
print("Median absolute deviations:", mad)

15. 计算每一列的四分位距

iqr = np.subtract(*np.percentile(data, [75, 25], axis=0))
print("Interquartile ranges:", iqr)

16. 离群值检测

q1 = np.percentile(data, 25, axis=0)
q3 = np.percentile(data, 75, axis=0)
iqr = q3 - q1
lower_bound = q1 - 1.5 * iqr
upper_bound = q3 + 1.5 * iqr
outliers = ((data < lower_bound) | (data > upper_bound)).any(axis=1)
print("Outliers count:", outliers.sum())

17. 计算每一列的协方差矩阵

cov_matrix = np.cov(data.T)
print("Covariance matrix:\n", cov_matrix)

18. 计算每一列的相关系数矩阵

corr_matrix = np.corrcoef(data.T)
print("Correlation matrix:\n", corr_matrix)


本文介绍了 NumPy 在执行数据统计分析时的多种高效方法。通过这些方法,大家可以快速掌握统计分析的技巧,并在实际应用中更加灵活地应对各种复杂问题。



请使用浏览器的分享功能分享到微信等