使用Python绘制QQ图并分析数据
在这篇博客中,我们将探讨如何使用Python中的pandas
库和matplotlib
库来绘制QQ图(Quantile-Quantile Plot),并分析数据文件中的内容。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()
代码解释
-
导入库:
import pandas as pd import pylab as plt from scipy.stats import norm, probplot
我们导入了
pandas
库来处理数据,pylab
作为绘图工具,以及scipy.stats
中的norm
和probplot
函数来进行统计分析。 -
读取数据文件:
df = pd.read_csv('data9_5.txt', header=None)
我们使用
pandas
的read_csv
函数读取数据文件data9_5.txt
,并将其存储在数据框df
中。由于文件没有列标题,我们使用header=None
参数。 -
提取甲班成绩:
d = df.values[0]
我们提取数据框的第一行(即甲班)的成绩数据。
-
计算均值和标准差:
mu = d.mean() s = d.std() sd = sorted(d) n = len(d)
我们计算数据的均值
mu
和标准差s
,并对数据进行排序sd
,获取数据的长度n
。 -
计算分位数:
x = (plt.arange(n) + 1 / 2) / n yi = norm.ppf(x, mu, s)
我们计算数据的分位数
x
,并使用norm.ppf
函数计算理论分布的分位数yi
。 -
设置字体和大小:
plt.rc('font', size=16) plt.rc('font', family='SimHei') plt.rc('axes', unicode_minus=False)
我们使用
rc
函数设置字体为SimHei
(黑体),并将字体大小设置为16,以确保图表中的中文标签能够正确显示。 -
绘制QQ图:
plt.subplot(121) plt.plot(yi, sd, 'o', label='QQ图') plt.plot(sd, sd, label='参照直线') plt.legend()
在第一个子图中,我们绘制了QQ图,使用圆点表示实际数据的分位数,并使用参照直线表示理论分布的分位数。
-
使用probplot绘制QQ图:
plt.subplot(122) probplot(d, plot=plt)
在第二个子图中,我们使用
probplot
函数绘制QQ图,进一步验证数据是否服从正态分布。 -
显示图像:
plt.show()
最后,我们使用
show
函数显示绘制的QQ图。
QQ图的意义
QQ图(Quantile-Quantile Plot)用于比较数据的分位数与理论分布的分位数。如果数据点接近参照直线,则说明数据服从该理论分布。在本例中,我们检查了甲班成绩是否服从正态分布。
总结
通过这篇博客,我们学习了如何使用Python读取数据文件并绘制QQ图。我们使用了pandas
库来处理数据,并使用matplotlib
库和scipy.stats
库绘制了QQ图。这些图表可以帮助我们更好地理解数据的分布情况及其与理论分布的吻合程度。
希望这篇博客对你有所帮助!如果你有任何问题或建议,欢迎在评论区留言。谢谢阅读!