【Python】统计函数库scipy.stats(常用于总结统计工作)实例举例

本文详细介绍使用Python进行数据分析的方法,包括生成随机数、正态检验、卡方检验、独立样本t检验、F检验等统计测试,以及相关分析、回归分析、PCA降维等高级数据分析技巧。文章还提供了丰富的代码示例,帮助读者理解和应用这些方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python3数据分析与挖掘建模实战学习目录

代码实例下载

Scipy教程 - 统计函数库scipy.stats

scipy.stats 举例

官方文档举例

ss.norm.rvs() 生成服从指定分布的随机数

norm.rvs通过loc和scale参数可以指定随机变量的偏移和缩放参数,这里对应的是正态分布的期望和标准差。size得到随机数数组的形状参数。(也可以使用np.random.normal(loc=0.0, scale=1.0, size=None))

相关链接

print("ss.norm.rvs(size=10):\n",ss.norm.rvs(size=10))

在这里插入图片描述

normaltest() 正太检验

print("ss.normaltest(ss.norm.rvs(size=10)):\n",ss.normaltest(ss.norm.rvs(size=10)))#正态检验

在这里插入图片描述

chi2_contingency()卡方检验

print("chi2_contingency:\n",ss.chi2_contingency([[15, 95], [85, 5]], False))#卡方四格表

在这里插入图片描述

ttest_ind() 独立分布检验

print("ttest_ind:\n",ss.ttest_ind(ss.norm.rvs(size=10), ss.norm.rvs(size=20)))#t独立分布检验

在这里插入图片描述

f_oneway() F分布检验

print("f_oneway():\n",ss.f_oneway([49, 50, 39,40,43], [28, 32, 30,26,34], [38,40,45,42,48]))#F分布检验

在这里插入图片描述

qqplot() QQ图

    from statsmodels.graphics.api import qqplot
    from matplotlib import pyplot as plt
    qqplot(ss.norm.rvs(size=100))#QQ图
    plt.show()

在这里插入图片描述

corr(pd.Series( )) , corr( ) 相关分析

    s = pd.Series([0.1, 0.2, 1.1, 2.4, 1.3, 0.3, 0.5])
    df = pd.DataFrame([[0.1, 0.2, 1.1, 2.4, 1.3, 0.3, 0.5], [0.5, 0.4, 1.2, 2.5, 1.1, 0.7, 0.1]])
    #相关分析
    print("corr(pd.Series( )):\n",s.corr(pd.Series([0.5, 0.4, 1.2, 2.5, 1.1, 0.7, 0.1])))
    print("corr( ):\n",df.corr())

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

回归分析

    import numpy as np
    #回归分析
    x = np.arange(10).astype(np.float).reshape((10, 1))
    y = x * 3 + 4 + np.random.random((10, 1))
    print("x:\n",x)
    print("y:\n",y)

在这里插入图片描述
在这里插入图片描述

    from sklearn.linear_model import LinearRegression
    linear_reg = LinearRegression()
    print("linear_reg:\n",linear_reg)

在这里插入图片描述

    reg = linear_reg.fit(x, y)
    print("reg:\n",reg)

在这里插入图片描述

    y_pred = reg.predict(x)
    print("y_pred :\n",y_pred )

在这里插入图片描述

    print("reg.coef_:\n",reg.coef_)

在这里插入图片描述

print("reg.intercept_:\n",reg.intercept_)

在这里插入图片描述

print("y.reshape(1, 10):\n",y.reshape(1, 10))

在这里插入图片描述

print("y_pred.reshape(1, 10):\n",y_pred.reshape(1, 10))

在这里插入图片描述

    plt.figure()
    plt.plot(x.reshape(1, 10)[0], y.reshape(1, 10)[0], "r*")
    plt.plot(x.reshape(1, 10)[0], y_pred.reshape(1, 10)[0])
    plt.show()

在这里插入图片描述

PCA降维

    #PCA降维
    df = pd.DataFrame(np.array([np.array([2.5, 0.5, 2.2, 1.9, 3.1, 2.3, 2, 1, 1.5, 1.1]),
                                np.array([2.4, 0.7, 2.9, 2.2, 3, 2.7, 1.6, 1.1, 1.6, 0.9])]).T)
    print("df:\n", df)
    print("df.shape:\n", df.shape)

在这里插入图片描述在这里插入图片描述

    from sklearn.decomposition import PCA
    lower_dim = PCA(n_components=1)
    lower_dim.fit(df.values)
    print("lower_dim:\n",lower_dim)
    print("lower_dim.explained_variance_ratio_:\n",lower_dim.explained_variance_ratio_)
    print("lower_dim.explained_variance_:\n",lower_dim.explained_variance_)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

完整代码

import pandas as pd
import numpy as np

def main():
    import scipy.stats as ss
    print("ss.norm.rvs(size=10):\n",ss.norm.rvs(size=10))
    print("ss.normaltest(ss.norm.rvs(size=10)):\n",ss.normaltest(ss.norm.rvs(size=10)))#正态检验
    print(ss.chi2_contingency([[15, 95], [85, 5]], False))#卡方四格表
    print(ss.ttest_ind(ss.norm.rvs(size=10), ss.norm.rvs(size=20)))#t独立分布检验
    print(ss.f_oneway([49, 50, 39,40,43], [28, 32, 30,26,34], [38,40,45,42,48]))#F分布检验
    from statsmodels.graphics.api import qqplot
    from matplotlib import pyplot as plt
    qqplot(ss.norm.rvs(size=100))#QQ图
    plt.show()

    s = pd.Series([0.1, 0.2, 1.1, 2.4, 1.3, 0.3, 0.5])
    df = pd.DataFrame([[0.1, 0.2, 1.1, 2.4, 1.3, 0.3, 0.5], [0.5, 0.4, 1.2, 2.5, 1.1, 0.7, 0.1]])
    #相关分析
    print(s.corr(pd.Series([0.5, 0.4, 1.2, 2.5, 1.1, 0.7, 0.1])))
    print(df.corr())

    import numpy as np
    #回归分析
    x = np.arange(10).astype(np.float).reshape((10, 1))
    y = x * 3 + 4 + np.random.random((10, 1))
    print(x)
    print(y)
    from sklearn.linear_model import LinearRegression
    linear_reg = LinearRegression()
    reg = linear_reg.fit(x, y)
    y_pred = reg.predict(x)
    print(reg.coef_)
    print(reg.intercept_)
    print(y.reshape(1, 10))
    print(y_pred.reshape(1, 10))
    plt.figure()
    plt.plot(x.reshape(1, 10)[0], y.reshape(1, 10)[0], "r*")
    plt.plot(x.reshape(1, 10)[0], y_pred.reshape(1, 10)[0])
    plt.show()

    #PCA降维
    df = pd.DataFrame(np.array([np.array([2.5, 0.5, 2.2, 1.9, 3.1, 2.3, 2, 1, 1.5, 1.1]),
                                np.array([2.4, 0.7, 2.9, 2.2, 3, 2.7, 1.6, 1.1, 1.6, 0.9])]).T)
    from sklearn.decomposition import PCA
    lower_dim = PCA(n_components=1)
    lower_dim.fit(df.values)
    print("PCA")
    print(lower_dim.explained_variance_ratio_)
    print(lower_dim.explained_variance_)

from scipy import linalg
#一般线性PCA函数
def pca(data_mat, topNfeat=1000000):
    mean_vals = np.mean(data_mat, axis=0)
    mid_mat = data_mat - mean_vals
    cov_mat = np.cov(mid_mat, rowvar=False)
    eig_vals, eig_vects = linalg.eig(np.mat(cov_mat))
    eig_val_index = np.argsort(eig_vals)
    eig_val_index = eig_val_index[:-(topNfeat + 1):-1]
    eig_vects = eig_vects[:, eig_val_index]
    low_dim_mat = np.dot(mid_mat, eig_vects)
    # ret_mat = np.dot(low_dim_mat,eig_vects.T)
    return low_dim_mat, eig_vals


if __name__=="__main__":
    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Performer_Cherry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值