Python常用數(shù)據(jù)分析模塊原理解析
前言
python是一門優(yōu)秀的編程語言,而是python成為數(shù)據(jù)分析軟件的是因?yàn)閜ython強(qiáng)大的擴(kuò)展模塊。也就是這些python的擴(kuò)展包讓python可以做數(shù)據(jù)分析,主要包括numpy,scipy,pandas,matplotlib,scikit-learn等等諸多強(qiáng)大的模塊,在結(jié)合上ipython交互工具 ,以及python強(qiáng)大的爬蟲數(shù)據(jù)獲取能力,字符串處理能力,讓python成為完整的數(shù)據(jù)分析工具。

numpy
官網(wǎng):https://www.scipy.org/
NumPy(Numerical Python的簡(jiǎn)稱)是高性能科學(xué)計(jì)算和數(shù)據(jù)分析的基礎(chǔ)包。NumPy最重要的一個(gè)特點(diǎn)就是其N維數(shù)組對(duì)象(即ndarray),該對(duì)象是一個(gè)快速而靈活的大數(shù)據(jù)集容器。可以利用這種數(shù)組對(duì)整塊數(shù)據(jù)執(zhí)行一些數(shù)學(xué)運(yùn)算,比python自帶的數(shù)組以及元組效率更高,其語法跟變量元素之間的運(yùn)算一樣,無需進(jìn)行循環(huán)操作。
在使用python進(jìn)行數(shù)據(jù)分析的過程中,我們大部分時(shí)候是不會(huì)直接使用numpy包,而是其他包要用到numpy。可以說numpy是整個(gè)python數(shù)據(jù)分析工作的基石。
舉個(gè)簡(jiǎn)單的案例,我們要計(jì)算100000個(gè)隨機(jī)數(shù)的值,如果傳統(tǒng)編程需要寫循環(huán),用了2.2s,而使用numpy數(shù)據(jù)結(jié)構(gòu),則可以進(jìn)行向量化操作,無需循環(huán),只需要28.2ms節(jié)約大量時(shí)間。
In [1]: import numpyIn [2]: my_arr = np.arange(1000000)In [3]: my_list = list(range(1000000))In [4]: %time for _ in range(10): my_arr2 = my_arr * 2Wall time: 28.2 msIn [5]: %time for _ in range(10): my_list2 = [x * 2 for x in my_list]Wall time: 2.2 s
pandas
官網(wǎng):https://pandas.pydata.org/
Python Data Analysis Library,可根據(jù)需要幫助組織各種參數(shù)的數(shù)據(jù)。pandas基于numpy底層數(shù)據(jù)結(jié)構(gòu)。讓python成為類似Excel,R等統(tǒng)計(jì)學(xué)軟件,主要就是pandas的功勞。pandas在python中實(shí)現(xiàn)了各種數(shù)據(jù)的計(jì)算 ,分組計(jì)算,添加刪除,排序,篩選,抽樣等都能工作。使Pandas成為數(shù)據(jù)科學(xué)家中最受歡迎的庫(kù)。
pandas主要包含兩種數(shù)據(jù)結(jié)構(gòu):Series與DataFrame。Series是一種類似于以為數(shù)組的對(duì)象,它由一組數(shù)據(jù)以及與之相關(guān)的數(shù)據(jù)標(biāo)簽組成,僅有一組數(shù)據(jù)即可產(chǎn)生最簡(jiǎn)單的Series。Series類似于R中的向量,屬于以為數(shù)據(jù)。Series可以構(gòu)成二維的DataFrame。行為記錄值,列為觀測(cè)值。如果熟悉R中的數(shù)據(jù)框DataFrame,在使用pandas則會(huì)輕松上手,因?yàn)樽髡咦约赫fpandas的DataFrame就是模仿R的數(shù)據(jù)框。
scipy
官網(wǎng):https://www.scipy.org/
scipy是一個(gè)用于數(shù)學(xué)、科學(xué)、工程領(lǐng)域的常用軟件包,可以處理插值、積分、優(yōu)化、圖像處理、常微分方程數(shù)值解的求解、信號(hào)處理等問題。它用于有效計(jì)算Numpy矩陣,使Numpy和Scipy協(xié)同工作,高效解決問題。Scipy是由針對(duì)特定任務(wù)的子模塊組成:

matplotlib
官網(wǎng):https://matplotlib.org/
matplotlib是python中優(yōu)秀的數(shù)據(jù)可視化的包,根據(jù)命名就可以看到,它其實(shí)是一個(gè)matlib的plot庫(kù),也就是利用python將matlib的繪圖功能實(shí)現(xiàn)了一遍。如果你熟悉matlib繪圖,那么將直接上手。matplotlib是Python編程語言及其數(shù)值數(shù)學(xué)擴(kuò)展包 NumPy的可視化操作界面。它為利用通用的圖形用戶界面工具包,如Tkinter, wxPython, Qt或GTK+向應(yīng)用程序嵌入式繪圖提供了應(yīng)用程序接口(API)。
plotnine
官網(wǎng):https://plotnine.readthedocs.io/en/stable/
如果你不熟悉matlib,而是從R轉(zhuǎn)到python,可能不太喜歡matplotlib的繪圖模式和風(fēng)格,覺得不如R繪圖方便。而且R還有g(shù)gplot2包。那么plotnine則是將ggplot2移植到python上,在python上完全重現(xiàn)ggplot2的功能。如果你熟悉ggplot2的語法,直接上手。不過,我倒是覺得這個(gè)工作意義不大,這屬于重新發(fā)明輪子,后面如果ggplot2在更新了,二者之間還是會(huì)有一些差別,用戶會(huì)有些困擾。當(dāng)然,這樣的問題仁者見仁,愚者見愚。聊勝于無,如果想在 python環(huán)境中完成全部工作,有了這個(gè)包還是非常不錯(cuò)的。

scikit-learn
官網(wǎng):https://scikit-learn.org/stable/
有很多人不是天天喜歡三句話不離大數(shù)據(jù),機(jī)器學(xué)習(xí),人工智能嗎。那么scikit-learn則是完成python大數(shù)據(jù)機(jī)器學(xué)習(xí)的包。scikit-Learn是python數(shù)據(jù)分析中非常重要的一個(gè)模塊,它是一個(gè)基于NumPy和SciPy構(gòu)建的開源機(jī)器學(xué)習(xí)工具包。 它具有常用的ML算法,可用于預(yù)處理,分類,回歸以及聚類。算法包括[支持向量機(jī)]( support vector machines,ridge回歸, 網(wǎng)格搜索算法(Grid Search algorithm) ,k均值聚類等等。另外還有樣本數(shù)據(jù)集。API易學(xué)易用。 在幾乎所有平臺(tái)上的良好性能,它在學(xué)術(shù)和商業(yè)用途中都很受歡迎。

其他:
除了以上包之外,python還有很多很多其他有關(guān)數(shù)據(jù)分析的包,不勝枚舉,比如圖片識(shí)別的opencv,google機(jī)器學(xué)習(xí)開源庫(kù)tensorflow,PyTorch等等,一個(gè)嶄新的世界等待你去發(fā)現(xiàn)。但是前提是前面基礎(chǔ)這些包熟悉了,以及有最核心的計(jì)算機(jī)以及統(tǒng)計(jì)學(xué)基礎(chǔ),否則就是無水之源,無木之本,你所謂的人工智能,只能是人工智障。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 使用Python webdriver圖書館搶座自動(dòng)預(yù)約的正確方法2. SpringBoot整合Redis的步驟3. ASP.NET MVC使用jQuery ui的progressbar實(shí)現(xiàn)進(jìn)度條4. Python3 json模塊之編碼解碼方法講解5. 在線php代碼縮進(jìn)、代碼美化工具:PHP Formatter6. android H5本地緩存加載優(yōu)化的實(shí)戰(zhàn)7. PHP如何開啟Opcache功能提升程序處理效率8. PHP程序員簡(jiǎn)單的開展服務(wù)治理架構(gòu)操作詳解(二)9. 詳解如何使用Net將HTML簡(jiǎn)歷導(dǎo)出為PDF格式10. 從Python的字符串中剝離所有非數(shù)字字符(“。”除外)

網(wǎng)公網(wǎng)安備