Advertisement

使用Python绘制QQ图并分析数据

阅读量:

使用Python绘制QQ图并分析数据

本文将深入分析如何借助Python中的pandasmatplotlib工具包来生成QQ图,并详细探讨数据文件中所包含的信息。作为一种常见的统计图形,在检验数据是否符合特定理论分布(如正态分布)方面具有重要应用。

在这里插入图片描述
数据:

链接:https://pan.baidu.com/s/1ug1bRyoIcMwJg9Bx_1DU3A?pwd=1234
提取码:1234

代码示例

以下是一个完整的代码示例,展示了如何读取数据文件并绘制QQ图:

复制代码
    import pandas as pd
    import pylab as plt
    from scipy.stats import norm, probplot
    
    # 读取数据文件
    df = pd.read_csv('data9_5.txt', header=None)
    
    # 提取甲班成绩
    d = df.values[0]
    
    # 计算均值和标准差
    mu = d.mean()
    s = d.std()
    sd = sorted(d)
    n = len(d)
    
    # 计算分位数
    x = (plt.arange(n) + 1 / 2) / n
    yi = norm.ppf(x, mu, s)
    
    # 设置字体和大小
    plt.rc('font', size=16)
    plt.rc('font', family='SimHei')
    plt.rc('axes', unicode_minus=False)
    
    # 绘制QQ图
    plt.subplot(121)
    plt.plot(yi, sd, 'o', label='QQ图')
    plt.plot(sd, sd, label='参照直线')
    plt.legend()
    
    # 使用probplot绘制QQ图
    plt.subplot(122)
    probplot(d, plot=plt)
    
    # 显示图像
    plt.show()
    
    
    python
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-18/MPhGeLx2lwzCFidrsW04n73DVAf9.png)
代码解释

导入库

复制代码
    import pandas as pd

    import pylab as plt
    from scipy.stats import norm, probplot
    
    
    python

我们引入了该库作为数据处理的工具,并调用该模块中的正态分布函数和概率分布检验函数进行统计分析。此外,在绘图方面我们采用了pylab作为一个绘图工具来辅助展示数据特征

读取数据文件

复制代码
    df = pd.read_csv('data9_5.txt', header=None)

    
    
    python

我们调用pandas库中的read_csv函数导入数据文件data9_5.txt,并将其加载到数据框df中。由于缺失列名信息,在初始化操作时已设置header参数为None

提取甲班成绩

复制代码
    d = df.values[0]

    
    
    python

我们提取数据框的第一行(即甲班)的成绩数据。

计算均值和标准差

复制代码
    mu = d.mean()

    s = d.std()
    sd = sorted(d)
    n = len(d)
    
    
    python

我们求取了数据集的均值μ与标准差σ,并对这些统计量在排序过程中使用参数σ来处理;随后我们得到了数据集大小n作为后续计算的基础。

计算分位数

复制代码
    x = (plt.arange(n) + 1 / 2) / n

    yi = norm.ppf(x, mu, s)
    
    
    python

我们计算数据的分位数x,并使用norm.ppf函数计算理论分布的分位数yi

设置字体和大小

复制代码
    plt.rc('font', size=16)

    plt.rc('font', family='SimHei')
    plt.rc('axes', unicode_minus=False)
    
    
    python

我们调用rc函数来配置字体类型为'SimHei'(即黑体字),并将字体大小指定为16号字。这一步骤旨在确保图表中所有的中文标签都能正确显示出来。

绘制QQ图

复制代码
    plt.subplot(121)

    plt.plot(yi, sd, 'o', label='QQ图')
    plt.plot(sd, sd, label='参照直线')
    plt.legend()
    
    
    python

在第一个子图中, 我们绘制了QQ图, 采用圆点标记实际数据的分位数位置, 并在图表上用一条直线来表示理论分布对应的分位数位置.

使用probplot绘制QQ图

复制代码
    plt.subplot(122)

    probplot(d, plot=plt)
    
    
    python

位于第二个子图中,我们调用probplot函数生成QQ图以考察数据是否符合正态分布。

显示图像

复制代码
    plt.show()

    
    
    python

最后,我们使用show函数显示绘制的QQ图。

QQ图的意义

分位数比较图(Quantile-Quantile Plot)用于比较样本数据的分位数与假设分布的分位数。若观察到的数据点大致沿着基准线排列,则可推断样本数据遵循该理论分布。例如,在本研究中,我们考察了甲班学生的考试成绩是否符合正态分布假设。

总结

在本文博客中详细介绍了如何利用Python进行数据分析以及生成QQ图的过程。本研究中采用的方法包括运用pandas库进行数据分析,并借助matplotlib和scipy.stats库完成可视化工作。通过这些图表我们可以深入分析数据的实际分布特征以及与理论预期的一致性程度。

这篇博客或许能为你提供一些帮助!如果有任何疑问或意见,请随时在评论区提出。感谢收看!

全部评论 (0)

还没有任何评论哟~