Python數據分析入門(十九):數據可視化之繪制散點圖


散點圖

散點圖也叫 X-Y 圖,它將所有的數據以點的形式展現在直角坐標系上,以顯示變量之間的相互影響程度,點的位置由變量的數值決定。

通過觀察散點圖上數據點的分布情況,我們可以推斷出變量間的相關性。如果變量之間不存在相互關系,那么在散點圖上就會表現為隨機分布的離散的點,如果存在某種相關性,那么大部分的數據點就會相對密集並以某種趨勢呈現。數據的相關關系主要分為:正相關(兩個變量值同時增長)、負相關(一個變量值增加另一個變量值下降)、不相關、線性相關、指數相關等,表現在散點圖上的大致分布如下圖所示。那些離點集群較遠的點我們稱為離群點或者異常點。

 

 

示例圖如下:

 

繪制散點圖:

散點圖的繪制,使用的是plt.scatter方法,這個方法有以下參數:

  1. x,y:分別是x軸和y軸的數據集。兩者的數據長度必須一致。
  2. s:點的尺寸。如果是一個具體的數字,那么散點圖的所有點都是一樣大小,如果是一個序列,那么這個序列的長度應該和x軸數據量一致,序列中的每個元素代表每個點的尺寸。
  3. c:點的顏色。可以為具體的顏色,也可以為一個序列或者是一個cmap對象。
  4. marker:標記點,默認是圓點,也可以換成其他的。
  5. 其他參數:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.scatter.html#matplotlib.pyplot.scatter

比如有一組運動員身高和體重以及年齡的數據,那么可以通過以下代碼來繪制散點圖:

male_athletes = athletes[athletes['Sex'] == 'M']
female_athletes = athletes[athletes['Sex'] == 'F']
male_mean_height = male_athletes['Height'].mean()
female_mean_height = female_athletes['Height'].mean()
male_mean_weight = male_athletes['Weight'].mean()
female_mean_weight = female_athletes['Weight'].mean()

plt.figure(figsize=(10,5))
plt.scatter(male_athletes['Height'],male_athletes['Weight'],s=male_athletes['Age'],marker='^',color='g',label='男性',alpha=0.5)
plt.scatter(female_athletes['Height'],female_athletes['Weight'],color='r',alpha=0.5,s=female_athletes['Age'],label='女性')
plt.axvline(male_mean_height,color="g",linewidth=1)
plt.axhline(male_mean_weight,color="g",linewidth=1)
plt.axvline(female_mean_height,color="r",linewidth=1)
plt.axhline(female_mean_weight,color="r",linewidth=1)
plt.xticks(np.arange(140,220,5))
plt.yticks(np.arange(30,150,10))
plt.legend(prop=font)
plt.xlabel("身高(cm)",fontproperties=font)
plt.ylabel("體重(kg)",fontproperties=font)
plt.title("運動員身高和體重散點圖",fontproperties=font)
plt.grid()
plt.show()

 

效果圖如下:

 

繪制回歸曲線:

有一組數據后,我們可以對這組數據進行回歸分析,回歸分析可以幫助我們了解這組數據的大體走向。回歸分析按照涉及的變量的多少,分為一元回歸和多元回歸分析;按照自變量的多少,可分為簡單回歸分析和多重回歸分析;按照自變量和因變量之間的關系類型,可分為線性回歸分析和非線性回歸分析。如果在回歸分析中,只包括一個自變量和一個因變量,且二者的關系可用一條直線近似表示,這種回歸分析稱為一元線性回歸分析。如果回歸分析中包括兩個或兩個以上的自變量,且自變量之間存在線性相關,則稱為多重線性回歸分析。

 

 

通過以上運動員散點圖的分析,我們總體上可以看出來是滿足線性回歸的,因此可以在圖上繪制一個線性回歸的線條。想要繪制線性回歸的線條,需要先按照之前的數據計算出線性方程,假如x是自變量,y是因變量,那么線性回歸的方程可以用以下幾個來表示:

y = 截距+斜率*x+誤差

 

只要把這個方程計算出來了,那么后續我們就可以根據x的值,大概的估計出y的取值范圍,也就是預測。如果我們針對以上運動員的身高和體重的關系,只要有身高,那么就可以大概的估計出體重的值。回歸方程的繪制我們需要借助scikit-learn庫,這個庫是專門做機器學習用的,我們需要使用里面的線性回歸類sklearn.liear_regression.LinearRegression。

示例代碼如下:

from sklearn.linear_model import LinearRegression
male_athletes = athletes[athletes['Sex'] == 'M'].dropna()
female_athletes = athletes[athletes['Sex'] == 'F'].dropna()
xtrain = male_athletes['Height']
ytrain = male_athletes['Weight']
# 生成線性回歸對象
model = LinearRegression()
# 喂訓練數據進去,但是需要把因變量轉換成1列多行的數據
model.fit(xtrain[:,np.newaxis],ytrain)
# 打印斜率
print(model.coef_)
# 打印截距
print(model.intercept_)
line_xticks = xtrain
# 根據回歸方程計算出的y軸坐標
line_yticks = model.predict(xtrain[:,np.newaxis])

 

效果圖如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM