1. 程式人生 > 實用技巧 >Python資料分析常用模組介紹

Python資料分析常用模組介紹

前言

python是一門優秀的程式語言,而是python成為資料分析軟體的是因為python強大的擴充套件模組。也就是這些python的擴充套件包讓python可以做資料分析,主要包括numpy,scipy,pandas,matplotlib,scikit-learn等等諸多強大的模組,在結合上ipython互動工具 ,以及python強大的爬蟲資料獲取能力,字串處理能力,讓python成為完整的資料分析工具。


numpy

官網:https://www.scipy.org/

NumPy(Numerical Python的簡稱)是高效能科學計算和資料分析的基礎包。NumPy最重要的一個特點就是其N維陣列物件(即ndarray),該物件是一個快速而靈活的大資料集容器。可以利用這種陣列對整塊資料執行一些數學運算,比python自帶的陣列以及元組效率更高,其語法跟變數元素之間的運算一樣,無需進行迴圈操作。

在使用python進行資料分析的過程中,我們大部分時候是不會直接使用numpy包,而是其他包要用到numpy。可以說numpy是整個python資料分析工作的基石。

舉個簡單的案例,我們要計算100000個隨機數的值,如果傳統程式設計需要寫迴圈,用了2.2s,而使用numpy資料結構,則可以進行向量化操作,無需迴圈,只需要28.2ms節約大量時間。

In[1]:importnumpy
In[2]:my_arr=np.arange(1000000)
In[3]:my_list=list(range(1000000))
In[4]:%timefor_inrange(10):my_arr2=my_arr*2
Walltime:28.2ms
In[5]:%timefor_inrange(10):my_list2=[x*2forxinmy_list]
Walltime:2.2s

pandas

官網:https://pandas.pydata.org/

Python Data Analysis Library,可根據需要幫助組織各種引數的資料。pandas基於numpy底層資料結構。讓python成為類似Excel,R等統計學軟體,主要就是pandas的功勞。pandas在python中實現了各種資料的計算 ,分組計算,新增刪除,排序,篩選,抽樣等都能工作。使Pandas成為資料科學家中最受歡迎的庫。

pandas主要包含兩種資料結構:Series與DataFrame。Series是一種類似於以為陣列的物件,它由一組資料以及與之相關的資料標籤組成,僅有一組資料即可產生最簡單的Series。Series類似於R中的向量,屬於以為資料。Series可以構成二維的DataFrame。行為記錄值,列為觀測值。如果熟悉R中的資料框DataFrame,在使用pandas則會輕鬆上手,因為作者自己說pandas的DataFrame就是模仿R的資料框。

scipy

官網:https://www.scipy.org/

scipy是一個用於數學、科學、工程領域的常用軟體包,可以處理插值、積分、優化、影象處理、常微分方程數值解的求解、訊號處理等問題。它用於有效計算Numpy矩陣,使Numpy和Scipy協同工作,高效解決問題。
Scipy是由針對特定任務的子模組組成:

matplotlib

官網:https://matplotlib.org/

matplotlib是python中優秀的資料視覺化的包,根據命名就可以看到,它其實是一個matlib的plot庫,也就是利用python將matlib的繪圖功能實現了一遍。如果你熟悉matlib繪圖,那麼將直接上手。matplotlib是Python程式語言及其數值數學擴充套件包 NumPy的視覺化操作介面。它為利用通用的圖形使用者介面工具包,如Tkinter, wxPython, Qt或GTK+嚮應用程式嵌入式繪圖提供了應用程式介面(API)。

plotnine

官網:https://plotnine.readthedocs.io/en/stable/

如果你不熟悉matlib,而是從R轉到python,可能不太喜歡matplotlib的繪圖模式和風格,覺得不如R繪圖方便。而且R還有ggplot2包。那麼plotnine則是將ggplot2移植到python上,在python上完全重現ggplot2的功能。如果你熟悉ggplot2的語法,直接上手。不過,我倒是覺得這個工作意義不大,這屬於重新發明輪子,後面如果ggplot2在更新了,二者之間還是會有一些差別,使用者會有些困擾。當然,這樣的問題仁者見仁,愚者見愚。聊勝於無,如果想在 python環境中完成全部工作,有了這個包還是非常不錯的。

scikit-learn

官網:https://scikit-learn.org/stable/

有很多人不是天天喜歡三句話不離大資料,機器學習,人工智慧嗎。那麼scikit-learn則是完成python大資料機器學習的包。scikit-Learn是python資料分析中非常重要的一個模組,它是一個基於NumPy和SciPy構建的開源機器學習工具包。 它具有常用的ML演算法,可用於預處理,分類,迴歸以及聚類。演算法包括[支援向量機]( support vector machines,ridge迴歸, 網格搜尋演算法(Grid Search algorithm) ,k均值聚類等等。另外還有樣本資料集。API易學易用。 在幾乎所有平臺上的良好效能,它在學術和商業用途中都很受歡迎。

原圖連結:

https://scikit-learn.org/stable/tutorial/machine_learning_map/

其他:

除了以上包之外,python還有很多很多其他有關資料分析的包,不勝列舉,比如圖片識別的opencv,google機器學習開源庫tensorflow,PyTorch等等,一個嶄新的世界等待你去發現。但是前提是前面基礎這些包熟悉了,以及有最核心的計算機以及統計學基礎,否則就是無水之源,無木之本,你所謂的人工智慧,只能是人工智障。