Python统计分析首选numpy与scipy组合:numpy高效计算均值、标准差、分位数、相关系数;scipy.stats提供t检验、卡方检验、Shapiro-Wilk正态性检验等成熟统计方法。

Python中做统计分析,scipy和numpy是最常用、最可靠的组合。numpy负责高效数值计算与数据组织,scipy则提供成熟的统计模型、检验方法和分布工具。掌握它们的典型用法,能快速完成从数据清洗到假设检验、参数估计的全流程分析。
用numpy快速计算基础统计量
面对一维数组或二维表格数据,无需循环,直接调用numpy内置方法即可获得均值、标准差、分位数等关键指标:
- np.mean(a)、np.std(a, ddof=1)(样本标准差,ddof=1启用贝塞尔校正)
- np.quantile(a, [0.25, 0.5, 0.75])一次性获取四分位数
- np.corrcoef(x, y)[0, 1]计算两变量皮尔逊相关系数(返回的是相关矩阵,取[0,1]位置)
用scipy.stats做常见统计检验
实际分析中常需判断差异是否显著。scipy.stats模块封装了大量检验函数,接口统一、结果清晰:
- 独立样本t检验:scipy.stats.ttest_ind(group_a, group_b),自动处理方差齐性(默认不假设方差相等)
- 配对样本t检验:scipy.stats.ttest_rel(before, after)
- 卡方检验(频数表):scipy.stats.chi2_contingency(observed_table),返回卡方值、p值、自由度和期望频数
- Shapiro-Wilk正态性检验:scipy.stats.shapiro(data),适合小样本(n
用scipy.stats生成/拟合概率分布
模拟数据或检验分布假设时,scipy.stats的rv_continuous类非常实用:
本书以培养高级网站建设与管理人才为目标,内容循序渐进,由浅入深,通过大量的实例系统全面地介绍了Linux+PHP+MySQL环境下的网络后台开发技术。本书详尽分析了近30个典型案例。包括计数器、网站流量统计、留言板、论坛系统、聊天室、投票与调查、用户管理、新闻发布系统、广告轮播、购物系统等等,力求让读者通过对案例的学习,轻松掌握PHP和MySQL的编程精要,迅速掌握网络后台开发技巧。 本书适
立即学习“Python免费学习笔记(深入)”;
- 生成服从某分布的随机数:scipy.stats.norm.rvs(loc=170, scale=10, size=1000)(模拟1000个身高数据)
- 计算PDF/CDF值:scipy.stats.norm.pdf(180, loc=170, scale=10)得密度值;scipy.stats.norm.cdf(180, loc=170, scale=10)得累积概率
- 拟合分布参数:scipy.stats.norm.fit(data)返回最优的loc(均值)和scale(标准差)估计
结合使用:一个完整的单样本检验流程
例如检验某批零件直径是否符合标称均值25.4mm:
- 先用np.mean和np.std查看样本中心与离散趋势
- 用scipy.stats.shapiro检查是否近似正态(决定能否用t检验)
- 执行单样本t检验:scipy.stats.ttest_1samp(measurements, popmean=25.4)
- 根据返回的p值(如p=0.032)在α=0.05水平下拒绝原假设,说明均值显著偏离25.4
不复杂但容易忽略:所有scipy.stats检验函数都默认双侧检验,若需单侧,可手动处理t值或z值的CDF;另外注意输入数据应为1D array,DataFrame列需先用.values或.to_numpy()转换。









