數據分析到底該怎麼學?

互聯網發展至今,已離不開數據,使得很多公司格外青睞具備數據分析能力的人。迎着這一浪潮,很多人都躍躍欲試,想要掌握數據分析的技能,讓自己在職場上更有主動權。

但萬事開頭難,擺在很多人面前的困擾是,我到底該怎麼學數據分析?

  • 我需要掌握Excel嗎?
  • 數據分析對統計學和數學要求高嗎?
  • 沒有編程能力還能學數據分析嗎?
  • Python語言和R語言我該選擇哪一個?

相信這是不少人的疑惑,之所以會出現這些問題,是因爲很多人混淆了數據分析的概念。

廣義上的數據分析包括了統計學、增長黑客、相關性分析等,更偏向產品運營,而我們這裏所說的數據分析,則是隸屬於編程世界裏的數據分析,是算法和技術的天下。

作爲一個程序員,相信你更需要的是後者。學習數據分析,你最需要掌握的就是Python語言、數據預處理以及算法知識。

Python語言貫穿於數據分析的整個過程,只有掌握Python,你才能熟練地通過它做數據預處理,以及使用各種算法包。

掌握Python之後,你纔會使用Python的各種機器學習庫、第三方工具等,有了它們,數據預處理纔會事半功倍。

算法是數據分析的精髓,只有掌握算法,你才能處理各種數據。

那麼具體到這三點,該怎麼學數據分析呢?

入門:掌握Python

如果你剛接觸數據分析,面對紛繁複雜的算法和工具不知所措,那麼,首先你最需要掌握的就是Python語言。聽起來是不是很不可思議?事實上,Python是數據分析領域中當之無愧的王者語言,它封裝了很多算法工具包,使用起來非常方便。

在專欄裏,我用一篇文章快速幫你理解Python語言的基礎語法,比如輸入輸出、循環語句、數據類型等。

除了Python語言之外,你還需要了解NumPy和Pandas這兩個第三方庫。NumPy提供的數據結構是Python數據分析的基礎,它可以讓Python的科學計算更加高效。Pandas則是一個含有更高級數據結構和分析能力的工具包,它的核心數據結構是Series和DataFrame。基於這兩種結構,我們可以很方便地處理數據。

新手:使用Python工具包進行數據預處理

當你入門Python後,接下來就算正式進入數據預處理階段。“數據分析”涵蓋兩部分:數據是基礎,分析是過程,所以數據的前期準備工作也很重要。

這些工作主要包括:

  • 數據採集
  • 數據清洗
  • 數據集成
  • 數據變換
  • 數據可視化

不要小看這些工作,看似和“分析”不掛鉤,其實,這些工作相當於分析前的“備菜過程”,沒有“備菜”,何談“掌勺”?

第一步,採集數據。

你可以用Python自動採集數據,也可以使用第三方平臺,比如用八爪魚來採集數據。我用兩篇文章分別講了這兩種方法,其中都講到了XPath這個路徑語言,它可以通過元素和屬性快速幫我們定位位置。

具體的實操方法,可以看下面兩篇文章:

很多時候,我們採集到的數據是雜亂的,可能會遇到各種問題,比如有缺失值、數據單位不統一、有重複值等。這個時候你可以採用“完全合一”的原則清洗數據。

當然,大家最感興趣的可能還是數據可視化。運用各種酷炫的圖片將數據的規律直觀地呈現在衆人面前,想想是一件特別有成就感的事情,比如天貓雙十一的數據大屏等。我們可以用各種工具、編程語言做數據可視化,比如DataV、Tableau、Python或者R語言。

在專欄中,我主要是用Python的Matplotlib工具來做數據可視化。Matplotlib是Python的可視化基礎庫,非常適合入門學習。下面的這幾張圖就是用Matplotlib繪製出來的。

可視化的具體操作方法:

進階:掌握算法,學會實戰

當你掌握了數據分析中基礎的操作後,接下來就該正式處理數據了。爲了進行數據挖掘任務,數據科學家們提出了各種算法,我在專欄中主要講解了數據挖掘十大經典算法,根據用途,把它們分爲四大類:

  • 分類算法:C4.5、樸素貝葉斯、SVM、KNN、Adaboost和CART
  • 聚類算法:K-Means、EM
  • 關聯分析:Apriori
  • 連接分析:PageRank

你看到這些算法可能會發愁,看不懂怎麼辦呢?這個你完全不用擔心,我在專欄裏用了大篇幅內容來講解這十大經典算法,每一個算法都有很多的案例去輔助你理解,還提供了一些數據庫讓你去實操,即學即用。

而實際上,你不需要了解這些算法具體的推導過程,只需要瞭解它們的原理即可。比如在數據挖掘算法中,大名鼎鼎的樸素貝葉斯算法和貝葉斯原理之間是什麼關係?通過下面這張圖,你可以直觀地找到這個問題的答案。

更多詳細補充:

爲什麼我會說不需要了解算法具體的推導過程呢?因爲在實際工作中,有很多工具已經幫我們封裝好這些算法了,比如sklearn,你在使用的時候,只要寫一行代碼,就可以直接引用,只需要調整參數就可以。

當然,雖說sklearn封裝了數據挖掘所用到的絕大多數算法,但也有一些算法並不能覆蓋到,比如圖論和網絡建模。那麼,這個時候我們該怎麼辦呢?

你可以使用NetworkX,一個用Python語言開發的工具,它內置了常用的圖論與網絡分析算法,可以方便我們進行網絡數據分析。比如我們可以直接調用裏面的PageRank算法,而不用在意具體的計算細節。在專欄中,我用NetworkX這一工具分析了希拉里郵件往來人員的關係和彼此之間的權重,幫我們非常直觀地呈現出了以下結論圖。

當你掌握了多種算法之後,實際工作中還會遇到這類問題:如何選擇各種分類器,到底選擇哪個分類算法,是SVM,決策樹,還是KNN?如何優化分類器的參數,以便得到更好的分類準確率?

這兩個問題,是數據挖掘核心的問題。當然對於一個新的項目,我們還有其他的問題需要了解,比如掌握數據探索和數據可視化的方式,還需要對數據的完整性和質量做評估。這些內容我在之前的課程中都有講到過。

這裏給到大家一個建議:使用GridSearchCV工具對模型參數進行調優。GridSearchCV是 Python 的參數自動搜索模塊,我們只要告訴它參數的範圍,它就可以把所有情況都跑一遍,提供最優解。

我在專欄裏用“信用卡違約率分析”的案例詳細講解了GridSearchCV的使用:

總之,你想要深入數據分析,算法與工具是你必須要攻克的兩座大山。當然,我也希望你能認識到,工具只是幫我們實現目的,我們不可以被工具所奴役。數據分析與挖掘最重要的還是思考能力,收集什麼數據,用什麼工具分析,分析出什麼樣的結果,用什麼方式呈現出來,都需要大家的思考與觀察。這也是我在專欄裏十分強調的點。

畢竟工具是別人的,但思維和實戰經驗,纔是你自己的。

內容選自極客時間數據分析實戰45講專欄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章