盘点8个数据分析相关的Python库(实例+代码)
導讀:Python中常會用到一些專門的庫,如NumPy、SciPy、Pandas和Matplotlib。數據處理常用到NumPy、SciPy和Pandas,數據分析常用到Pandas和Scikit-Learn,數據可視化常用到Matplotlib,而對大規模數據進行分布式挖掘時則可以使用Pyspark來調用Spark集群的資源。
從一定程度上來說,學習Python數據分析主要就是學習使用這些分析庫。
作者:劉鵬 高中強 王一凡?等
來源:大數據DT(ID:hzdashuju)
01 NumPy
關于NumPy,本節主要介紹ndarray多維數組對象和數組屬性。
1. ndarray 多維數組對象
NumPy庫中的ndarray是一個多維數組對象,由兩部分組成:實際的數據值和描述這些值的元數據。大部分的數組操作僅僅涉及修改元數據的部分,并不改變底層的實際數據。
數組中的所有元素類型必須是一致的,所以如果知道其中一個元素的類型,就很容易確定該數組需要的存儲空間。可以用array()函數創建數組,并通過dtype獲取其數據類型。
import?numpy?as?npa?=?np.array(6)a.dtype output:?dtype('int64')上例中,數組a的數據類型為int64,如果使用的是32位Python,則得到的數據類型可能是int32。
2. 數組屬性
NumPy數組有一個重要的屬性——維度(dimension),它的維度被稱作秩(rank)。以二維數組為例,一個二維數組相當于兩個一維數組。只看最外面一層,它相當于一個一維數組,該一維數組中的每個元素也是一維數組。那么,這個一維數組即二維數組的軸。
了解了以上概念,接著來看NumPy數組中比較重要的ndarray對象的屬性:
ndarray.ndim:秩,即軸的數量或維度的數量
ndarray.shape:數組的維度,如果存的是矩陣,如n×m矩陣則輸出為n行m列
ndarray.size:數組元素的總個數,相當于.shape中n×m的值
ndarray.dtype:ndarray對象的元素類型
ndarray.itemsize:ndarray對象中每個元素的大小,以字節為單位
ndarray.flags:ndarray對象的內存信息
ndarray.real:ndarray元素的實部
ndarray.imag:ndarray元素的虛部
ndarray.data:包含實際數組元素的緩沖區,由于一般通過數組的索引獲取元素,所以通常不需要使用這個屬性
02 Matplotlib
Matplotlib是Python數據分析中常用的一個繪圖庫,常用來繪制各種數據的可視化效果圖。其中,matplotlib.pyplot包含了簡單的繪圖功能。
1. 實戰:繪制多項式函數
為了說明繪圖的原理,下面來繪制多項式函數的圖像。使用NumPy的多項式函數poly1d()來創建多項式。
#?引入所需要的庫 import?numpy?as?np import?matplotlib.pyplot?as?plt #?使用?polyld()?函數創建多項式?func=1x3+2x2+3x+4 func?=?np.poly1d(np.array([1,2,3,4]).astype(f?loat)) #?使用?NumPy?的?linspace()?函數在?-10?和?10?之間產生?30?個均勻分布的值,作為函數?x?軸的取值 x?=?np.linspace(-10,?10?,?30) #?將?x?的值代入?func()?函數,計算得到?y?值 y=func(x) #?調用?pyplot?的?plot?函數?(),繪制函數圖像 plt.plot(x,?y) #?使用?xlable()?函數添加?x?軸標簽 plt.xlabel('x') #?使用?ylabel()?函數添加?y?軸標簽 plt.ylabel('y(x)') #?調用?show()?函數顯示函數圖像 plt.show()多項式函數的繪制結果如圖2-13所示。
▲圖2-13 多項式函數繪制
2. 實戰:繪制正弦和余弦值
為了明顯看到兩個效果圖的區別,可以將兩個效果圖放到一張圖中顯示。Matplotlib中的subplot()函數允許在一張圖中顯示多張子圖。subplot()常用的3個整型參數分別為子圖的行數、子圖的列數以及子圖的索引。
下面的實例將繪制正弦和余弦兩個函數的圖像。
#?導入相關包 import?numpy?as?np import?matplotlib.pyplot?as?plt from?matplotlib.pyplot?import?f?igure f?igure(num=None,?f?igsize=(12,?8),?dpi=80,?facecolor='w',?edgecolor='k') #?計算正弦和余弦曲線上點的?x?和?y?坐標 x?=?np.arange(0,?3?*?np.pi,?0.1) y_sin?=?np.sin(x) y_cos?=?np.cos(x) #?subplot的3個參數,2、1、1?,表示繪制2行1列圖像中的第一個子圖 plt.subplot(2,?1,?1)#?繪制第一個子圖 #?繪制第一個圖像 plt.plot(x,?y_sin)? plt.title('Sin') plt.subplot(2,?1,?2)#?繪制2行1?列圖像中的第二個子圖 plt.plot(x,?y_cos)? plt.title('Cos') plt.show()#?顯示圖像正弦和余弦函數的繪制結果如圖2-14所示。
▲圖2-14 正弦和余弦函數繪制
03 PySpark
在大數據應用場景中,當我們面對海量的數據和復雜模型巨大的計算需求時,單機的環境已經難以承載,需要用到分布式計算環境來完成機器學習任務。
Apache Spark是一個快速而強大的框架,可以對彈性數據集執行大規模分布式處理。通過圖2-15所示的Apache Spark架構圖可以非常清晰地看到它的組成。
▲圖2-15 Apache Spark架構圖
Spark支持豐富的數據源,可以契合絕大部分大數據應用場景,同時,通過Spark核心對計算資源統一調度,由于計算的數據都在內存中存儲,使得計算效率大大提高。Spark原生支持的語言是Scala,但為了豐富應用場景和滿足各研發人員的語言偏好,Spark同時支持Java、Python與R。
PySpark是Spark社區發布的在Spark框架中支持Python的工具包,它的計算速度和能力與Scala相似。通過PySpark調用Spark的API,配合MLlib與ML庫,可以輕松進行分布式數據挖掘。
MLlib庫是Spark傳統的機器學習庫,目前支持4種常見的機器學習問題:分類、回歸、聚類和協同過濾。MLlib的所有算法皆基于Spark特有的RDD(Resilient Distributed Dataset,彈性分布式數據集)數據結構進行運算。由于RDD并不能很好地滿足更為復雜的建模需求,ML庫應運而生。
ML庫相較MLlib庫更新,它全面采用基于數據幀(Data Frame)的API進行操作,能夠提供更為全面的機器學習算法,且支持靜態類型分析,可以在編程過程中及時發現錯誤,而不需要等代碼運行。
Python中除了包含上面介紹的庫,還有其他一些常用庫。下面分別進行介紹。
04 SciPy
SciPy是一個開源算法庫和數學工具包,它基于NumPy構建,并擴展了NumPy的功能。SciPy包含線性代數、積分、插值、特殊函數、快速傅里葉變換等常用函數,功能與軟件MATLAB、Scilab和GNU Octave類似。Scipy常常結合Numpy使用,可以說Python的大多數機器學習庫都依賴于這兩個模塊。
05 Pandas
Pandas提供了強大的數據讀寫功能、高級的數據結構和各種分析工具。該庫的一大特點是能用一兩個命令完成復雜的數據操作。
Pandas中最基礎的數據結構是Series,用于表示一行數據,可以理解為一維的數組。另一個關鍵的數據結構為DataFrame,用于表示二維數組,作用和R語言里的data.frame很像。
Pandas內置了很多函數,用于分組、過濾和組合數據,這些函數的執行速度都很快。Pandas對于時間序列數據有一套獨特的分析機制,可對時間數據做靈活的分析與管理。
06 Scikit-Learn
Scikit-Learn是一個基于NumPy、SciPy、Matplotlib的開源機器學習工具包,功能強大,使用簡單,是Kaggle選手經常使用的學習庫。它主要涵蓋分類、回歸和聚類算法,例如SVM、邏輯回歸、樸素貝葉斯、隨機森林、K均值以及數據降維處理算法等,官方文檔齊全,更新及時。
Scikit-Learn基于Numpy和SciPy等Python數值計算庫,提供了高效的算法實現,并針對所有算法提供了一致的接口調用規則,包括KNN、K均值、PCA等,接口易用。
07 TensorFlow
TensorFlow是谷歌開源的數值計算框架,也是目前最為流行的神經網絡分析系統。它采用數據流圖的方式,可靈活搭建多種機器學習和深度學習模型。
08 Keras
Keras是一個用于處理神經網絡的高級庫,可以運行在TensorFlow和Theano上,現在發布的新版本可以使用CNTK或MxNet作為后端。Keras簡化了很多特定任務,并大大減少了樣板代碼數,目前主要用于深度學習領域。
關于作者:劉鵬,教授,清華大學博士,云計算、大數據和人工智能領域的知名專家,南京云創大數據科技股份有限公司總裁、中國大數據應用聯盟人工智能專家委員會主任。中國電子學會云計算專家委員會云存儲組組長、工業和信息化部云計算研究中心專家。
高中強,人工智能與大數據領域技術專家,有非常深厚的積累,擅長機器學習和自然語言處理,尤其是深度學習,熟悉Tensorflow、PyTorch等深度學習開發框架。曾獲“2019年全國大學生數學建模優秀命題人獎”。參與鐘南山院士指導新型冠狀病毒人工智能預測系統研發項目,與鐘南山院士團隊共同發表學術論文。
本文摘編自《Python金融數據挖掘與分析實戰》,經出版方授權發布。(ISBN:9787111696506)
《Python金融數據挖掘與分析實戰》
點擊上圖了解及購買
轉載請聯系微信:DoctorData
推薦語:云創大數據(上市公司)總裁撰寫,零基礎學會金融數據挖掘,配有案例、視頻、代碼、數據、習題及答案。
劃重點👇
干貨直達👇
終于有人把ROS機器人操作系統講明白了
6個實例,8段代碼,詳解Python中的for循環
這10本硬核技術書,帶你讀懂5G、物聯網和邊緣計算,玩轉元宇宙
手把手教你獲取、編譯和調試Flink的源代碼
更多精彩👇
在公眾號對話框輸入以下關鍵詞
查看更多優質內容!
讀書?|?書單?|?干貨?|?講明白?|?神操作?|?手把手
大數據?|?云計算?|?數據庫?|?Python?|?爬蟲?|?可視化
AI?|?人工智能?|?機器學習?|?深度學習?|?NLP
5G?|?中臺?|?用戶畫像?|?數學?|?算法?|?數字孿生
據統計,99%的大咖都關注了這個公眾號
👇
總結
以上是生活随笔為你收集整理的盘点8个数据分析相关的Python库(实例+代码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是引力波?它是怎么被发现的?
- 下一篇: 眼花缭乱的数据库,怎样选择?给你这个书单