現在越來越多的工作都需要用到數據分析,比如說處理一個較大規模的excel數據、視覺化一批數據、視覺化一批報表。雖然office的excel軟件能處理一些簡單的數據,同時也能繪制一些簡單的圖表,但是excel處理數據的函數過於抽象復雜、而且繪制的圖示也比較簡單,不能對數據進行深入的分析。
那麽最好的數據分析模式是什麽呢?當然是簡單易上手的python,Python是一種解釋性手稿語言,他沒有c++、java那樣的復雜的語法也沒有那麽多條條框框的編程限制,對於新手而言這一點也非常的友好了。
現在知乎知學堂推出了一個基於Python的數據分析課程,我個人覺得裏面的內容是十分合適小白上手的,而且課程的目標也很明確:「自動化辦公」、「數據分析」、「數據視覺化」,推薦有需要的同學可以入手學習。反正也才一毛錢,直接沖,比淘寶上賣的盜版網課好多了!
深入一點講,python只是一個程式語言,如果要實作數據分析還需要幾個第三方庫,那什麽是第三方庫呢?第三方庫就是別人寫好的程式碼集合,你可以直接呼叫別人寫好的程式碼來簡化你的工作流程,透過「拿來主義」減輕你的工作負擔,這也是利用python進行數據分析優於c++和java的地方,python擁有大量的第三方庫使你只需要專註於你自己想要處理的工作,而不是像一個程式設計師一樣去思考如何實作一個數據結構、編寫一個演算法;也不是像一個數學家一樣要去思考實作一個數學模型,因為python的第三方庫已經幫你實作了數據結構、演算法、數學模型,你只需要去利用這些東西去完成你需要的工作。接下來,介紹一下利用Python進行數據分析最常用的幾個第三方庫。最常用的第三方庫有四個:「Matplotlib」、「pandas」、「numpy」、「scipy」。下面詳細介紹一下他們的功能和用途。
Matplotlib畫出來的圖片是不是比excel畫出來的簡易圖要高大上很多?如果這些圖片出現在你的匯報ppt裏是不是就把你的匯報提升了一個檔次?Matplotlib能畫出來的圖片遠遠不止上面幾種如果你現在就想試一試,可以參考Matplotlib的官方https:// matplotlib.org/stable/g allery/index.html
下面就是一個pandas進行數據清洗的例子:
假設我們需要處理下面的數據,把它們進行視覺化:
上面的數據中存在大量的缺失值(NA、NAN)和空值,那麽我們直接使用pandas就可以清洗掉這這些缺失值、空值。
import pandas as pd
df = pd.read_csv('property-data.csv')
print (df['NUM_BEDROOMS'])
print (df['NUM_BEDROOMS'].isnull())
透過上面的程式碼,清洗後的數據就是:
這樣簡簡單單的幾行程式碼就直接完成了數據清洗的任務,後面我們就可以用清洗後幹凈的數據進行數據分析。
上面的數據清洗相關知識內容在這個課程中也是有的:
Numpy最主要的功能是矩陣運算,在矩陣運算上的Numpy的運算速度和計算精度都足以媲美MATLAB,但是相比於MATLAB那復雜抽象的語言,Python簡單明了的編程方式會極大的提升你解決問題的速度,同時Numpy還有一個良好的社區環境,如果你的程式報錯了又沒有辦法自己解決,你就可以在百度上查詢你的bug,基本上都可以解決你遇到的問題,但是由於MATLAB是一個商業軟件,他的社區氛圍就要差的很多。下面就是numpy計算幾個常見矩陣運算的方法:
- 矩陣轉置 mat.T (mat為矩陣變量ndarray類別)
- 矩陣求逆 mat.T (mat為矩陣變量ndarray類別)
- 矩陣的特征值和特征向量 numpy.linalg.det(mat)\np.linalg.eig(mat)
- 矩陣的最大值和最小值以及均值 numpy.max(mat)\numpy.min(mat)
- 矩陣的排序 numpy.sort(mat)
SciPy結合上面提到的Numpy和Pandas就可以解決日常生活中遇到的絕大部份數據分析任務,你可以把SciPy理解成一個數學庫,這個數學庫中包含了絕大部份的數學模型,最佳化模型(最小平方法、梯度下降法),線性代數(高維度矩陣運算),以及其他學科的一些模型(電腦視覺中的影像處理、訊號學中的傅立葉變化、訊號處理等函數)。
看到這裏,你也明白利用SciPy、Numpy、Pandas、Matplotlib進行數據分析是十分容易上手的一件事情,但是容易歸容易,如果過沒有系統的跟隨老師去學習的話還是會走很多彎路的,正好最近知乎知學堂官方開設了一個【數據分析實戰訓練營】,這裏面就會詳細的介紹如何利用Python進行數據分析,本回答中的SciPy、Numpy、Pandas、Matplotlib教學也包含在這個課程當中,所以感興趣的夥伴們可以關註一下,課程連結如下: