使用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圖。這些圖表可以幫助我們更好地理解數據的分布情況及其與理論分布的吻合程度。
希望這篇博客對你有所幫助!如果你有任何問題或建議,歡迎在評論區留言。謝謝閱讀!