目前手上有兩本書,一本《利用Python進行數據分析》,一本《Python數據科學》。app
對於學習什麼東西,都有它的「道」和「術」。「道」即原理,「術」即技巧。dom
經過這幾天翻閱這兩本書,發現前者更像一本工具書。ide
它並不會真正的教你如何去分析數據,適合查閱。工具
然後者呢,更注重數據分析的原理,教咱們如何去剖析數據,獲得咱們想要的結果。學習
因此接下來會之後者做爲學習的方向,不能僅僅停留在描述性數據分析上(數據可視化)。spa
更應該多花時間在預測性數據分析上(創建數據模型預測)。blog
另外上期的送書活動已結束,兩位小夥伴也聯繫我了。排序
沒有中獎的小夥伴也不要傷心,後面小F會給你們爭取更多的福利,因此關注就是了。圖片
/ 01 / 前言ip
說實話,《Python數據科學》這本書是真的不錯。
它不只提供了大量的專業術語的解釋,還有各式各樣通俗易懂的案例。
很是適合新手學習,後期必定也給你們爭取爭取一下送書的福利!
因此在每篇的前言,我會摘要一些《Python數據科學》的相關內容。
一方面,加深本身對相關知識的印象。
另外一方面,也分享給你們,補充一下專業知識。
分析過程當中儘可能不用書中的數據和案例,用我本身公衆號文章的數據和案例。
這樣顯得更接地氣一點,學的也更深入。
變量分爲「名義變量」「等級變量」「連續性變量」。
「名義變量」爲無序分類變量。
好比豆瓣電影TOP250數據裏的「國家」「電影名稱」。
「等級變量」爲有序分類變量。
好比數據分析崗數據裏的「學歷」「工做經驗」。
「連續型變量」爲連續型變量在規定範圍區間內能夠被任意取值。
好比豆瓣電影TOP250數據裏的「年份」「評分」「評分人數」。
/ 02 / 相關分析
在上面,咱們簡述了變量的類型,也舉了相關例子。
接下來咱們針對兩連續變量關係檢驗,進行相關分析。
使用豆瓣TOP250裏的數據,研究排名與評價分數之間的關係。
讀取數據並清洗。
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
# 讀取文件
df = pd.read_csv('douban.csv', header=0, names=["quote", "score", "info", "title", "people"])
(dom1, dom2, dom3, dom4) = ([], [], [], [])
# 清洗數據,獲取電影年份及國家,增長年份列及國家列
for i in df['info']:
country = i.split('/')[1].split(' ')[0].strip()
if country in ['中國大陸', '臺灣', '香港']:
dom1.append(1)
else:
dom1.append(0)
dom2.append(int(i.split('/')[0].replace('(中國大陸)', '').strip()))
df['country'] = dom1
df['year'] = dom2
# 清洗數據,創建評價人數列
for i in df['people']:
dom3.append(int(i.replace('人評價', '')))
df['people_num'] = dom3
# 生成電影排名列表
dom4 = [x for x in range(1, 251)]
df['rank'] = dom4
print(df)
在那一期的排名評分人數三維度圖裏,咱們知道排名越靠前,評價人數越多,評分越高。
這只是咱們直觀上的推測,並非用數據確確實實展現的。
相關分析就能夠用數據來證實咱們本次猜想的正確性。
首先咱們經過散點圖來看排名與評價分數之間的關係,看是否有所相關。
# scatter爲散點圖
df.plot(x='rank', y='score', kind='scatter')
plt.show()
這裏因爲排名排序問題顯現出線形負相關,不過這並不影響分析。
你就默認正相關就好,即排名越靠前,分數越高。
經過散點圖咱們發現數據有線性相關關係。
那麼就能使用皮爾遜(Pearson)相關係數對兩變量的相關關係進行分析。
# corr()方法:計算兩兩相關的列,不包括NA/Null值 persion:標準相關係數
print(df[['rank', 'score']].corr(method='pearson'))
輸出兩變量相關係數,絕對值約爲0.70,查表可知相關程度爲高度。
那麼結論就顯而易見,排名與評價分數之間的關係爲線性正相關!!!
相關分析除了經過相關係數分析,還能夠經過散點矩陣圖。
對多個變量之間的相關關係進行分析,去探索變量間的關係。
# seaborn迴歸/散點圖
sns.pairplot(df[['score', 'people_num', 'year', 'country', 'rank']])
plt.show()
生成以下散點圖,能夠發現rank與score及people_num相關性較大(右上角兩個圖)。
接下來建立分組變量,指定國家爲分組變量,來看中國和外國的豆瓣電影TOP250數據狀況。
# 生成帶輔助線的散點圖矩陣,hue:分類
sns.pairplot(df[['score', 'people_num', 'year', 'country', 'rank']], hue='country', kind='reg', diag_kind='kde', size=1.5)
plt.show()
在這裏能觀察數據的擬合線及上下浮動範圍,更加直觀的瞭解變量間的狀況。
不過國家分類卻是沒什麼發現,可能與數據樣本過少有關。
/ 03 / 總結
本次只是一個簡單的相關分析案例,裏面涉及太多的數學知識我就不贅述了。
看了這本書我才知道,我要學的東西真的多...
不過能結合以前的相關案例去分析,我以爲就很不錯了。
可以學以至用,有本身的想法。
文末點個贊,比心!!!
··· END ···