<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          盤點8個數(shù)據(jù)分析相關(guān)的Python庫(實例+代碼)

          共 9256字,需瀏覽 19分鐘

           ·

          2022-01-19 12:13

          導(dǎo)讀:Python中常會用到一些專門的庫,如NumPy、SciPy、Pandas和Matplotlib。數(shù)據(jù)處理常用到NumPy、SciPy和Pandas,數(shù)據(jù)分析常用到Pandas和Scikit-Learn,數(shù)據(jù)可視化常用到Matplotlib,而對大規(guī)模數(shù)據(jù)進行分布式挖掘時則可以使用Pyspark來調(diào)用Spark集群的資源。


          從一定程度上來說,學(xué)習(xí)Python數(shù)據(jù)分析主要就是學(xué)習(xí)使用這些分析庫。

          作者:劉鵬 高中強 王一凡 等
          來源:大數(shù)據(jù)DT(ID:hzdashuju)


          01 NumPy

          關(guān)于NumPy,本節(jié)主要介紹ndarray多維數(shù)組對象和數(shù)組屬性。

          1. ndarray 多維數(shù)組對象

          NumPy庫中的ndarray是一個多維數(shù)組對象,由兩部分組成:實際的數(shù)據(jù)值和描述這些值的元數(shù)據(jù)。大部分的數(shù)組操作僅僅涉及修改元數(shù)據(jù)的部分,并不改變底層的實際數(shù)據(jù)。

          數(shù)組中的所有元素類型必須是一致的,所以如果知道其中一個元素的類型,就很容易確定該數(shù)組需要的存儲空間??梢杂胊rray()函數(shù)創(chuàng)建數(shù)組,并通過dtype獲取其數(shù)據(jù)類型。

          import numpy as np
              a = np.array(6)
              a.dtype
          output: dtype('int64')

          上例中,數(shù)組a的數(shù)據(jù)類型為int64,如果使用的是32位Python,則得到的數(shù)據(jù)類型可能是int32。

          2. 數(shù)組屬性

          NumPy數(shù)組有一個重要的屬性——維度(dimension),它的維度被稱作(rank)。以二維數(shù)組為例,一個二維數(shù)組相當(dāng)于兩個一維數(shù)組。只看最外面一層,它相當(dāng)于一個一維數(shù)組,該一維數(shù)組中的每個元素也是一維數(shù)組。那么,這個一維數(shù)組即二維數(shù)組的軸。

          了解了以上概念,接著來看NumPy數(shù)組中比較重要的ndarray對象的屬性:

          • ndarray.ndim秩,即軸的數(shù)量或維度的數(shù)量
          • ndarray.shape數(shù)組的維度,如果存的是矩陣,如n×m矩陣則輸出為n行m列
          • ndarray.size數(shù)組元素的總個數(shù),相當(dāng)于.shape中n×m的值
          • ndarray.dtypendarray對象的元素類型
          • ndarray.itemsizendarray對象中每個元素的大小,以字節(jié)為單位
          • ndarray.flags:ndarray對象的內(nèi)存信息
          • ndarray.realndarray元素的實部
          • ndarray.imagndarray元素的虛部
          • ndarray.data包含實際數(shù)組元素的緩沖區(qū),由于一般通過數(shù)組的索引獲取元素,所以通常不需要使用這個屬性


          02 Matplotlib

          Matplotlib是Python數(shù)據(jù)分析中常用的一個繪圖庫,常用來繪制各種數(shù)據(jù)的可視化效果圖。其中,matplotlib.pyplot包含了簡單的繪圖功能。

          1. 實戰(zhàn):繪制多項式函數(shù)

          為了說明繪圖的原理,下面來繪制多項式函數(shù)的圖像。使用NumPy的多項式函數(shù)poly1d()來創(chuàng)建多項式。

          # 引入所需要的庫
          import numpy as np
          import matplotlib.pyplot as plt
          # 使用 polyld() 函數(shù)創(chuàng)建多項式 func=1x3+2x2+3x+4
          func = np.poly1d(np.array([1,2,3,4]).astype(f?loat))
          # 使用 NumPy 的 linspace() 函數(shù)在 -10 和 10 之間產(chǎn)生 30 個均勻分布的值,作為函數(shù) x 軸的取值
          x = np.linspace(-1010 , 30)
          # 將 x 的值代入 func() 函數(shù),計算得到 y 值
          y=func(x)
          # 調(diào)用 pyplot 的 plot 函數(shù) (),繪制函數(shù)圖像
          plt.plot(x, y)
          # 使用 xlable() 函數(shù)添加 x 軸標簽
          plt.xlabel('x')
          # 使用 ylabel() 函數(shù)添加 y 軸標簽
          plt.ylabel('y(x)')
          # 調(diào)用 show() 函數(shù)顯示函數(shù)圖像
          plt.show()

          多項式函數(shù)的繪制結(jié)果如圖2-13所示。

          ▲圖2-13 多項式函數(shù)繪制

          2. 實戰(zhàn):繪制正弦和余弦值

          為了明顯看到兩個效果圖的區(qū)別,可以將兩個效果圖放到一張圖中顯示。Matplotlib中的subplot()函數(shù)允許在一張圖中顯示多張子圖。subplot()常用的3個整型參數(shù)分別為子圖的行數(shù)、子圖的列數(shù)以及子圖的索引。

          下面的實例將繪制正弦和余弦兩個函數(shù)的圖像。

          # 導(dǎo)入相關(guān)包
          import numpy as np
          import matplotlib.pyplot as plt
          from matplotlib.pyplot import f?igure
          f?igure(num=None, f?igsize=(128), dpi=80, facecolor='w', edgecolor='k')
          # 計算正弦和余弦曲線上點的 x 和 y 坐標
          x = np.arange(03 * np.pi, 0.1)
          y_sin = np.sin(x)
          y_cos = np.cos(x)
          # subplot的3個參數(shù),2、1、1 ,表示繪制2行1列圖像中的第一個子圖
          plt.subplot(211)# 繪制第一個子圖
          # 繪制第一個圖像
          plt.plot(x, y_sin) 
          plt.title('Sin')
          plt.subplot(212)# 繪制2行1 列圖像中的第二個子圖
          plt.plot(x, y_cos) 
          plt.title('Cos')
          plt.show()# 顯示圖像

          正弦和余弦函數(shù)的繪制結(jié)果如圖2-14所示。

          ▲圖2-14 正弦和余弦函數(shù)繪制


          03 PySpark

          在大數(shù)據(jù)應(yīng)用場景中,當(dāng)我們面對海量的數(shù)據(jù)和復(fù)雜模型巨大的計算需求時,單機的環(huán)境已經(jīng)難以承載,需要用到分布式計算環(huán)境來完成機器學(xué)習(xí)任務(wù)。

          Apache Spark是一個快速而強大的框架,可以對彈性數(shù)據(jù)集執(zhí)行大規(guī)模分布式處理。通過圖2-15所示的Apache Spark架構(gòu)圖可以非常清晰地看到它的組成。

          ▲圖2-15 Apache Spark架構(gòu)圖

          Spark支持豐富的數(shù)據(jù)源,可以契合絕大部分大數(shù)據(jù)應(yīng)用場景,同時,通過Spark核心對計算資源統(tǒng)一調(diào)度,由于計算的數(shù)據(jù)都在內(nèi)存中存儲,使得計算效率大大提高。Spark原生支持的語言是Scala,但為了豐富應(yīng)用場景和滿足各研發(fā)人員的語言偏好,Spark同時支持Java、Python與R。

          PySpark是Spark社區(qū)發(fā)布的在Spark框架中支持Python的工具包,它的計算速度和能力與Scala相似。通過PySpark調(diào)用Spark的API,配合MLlib與ML庫,可以輕松進行分布式數(shù)據(jù)挖掘。

          MLlib庫是Spark傳統(tǒng)的機器學(xué)習(xí)庫,目前支持4種常見的機器學(xué)習(xí)問題:分類、回歸、聚類和協(xié)同過濾。MLlib的所有算法皆基于Spark特有的RDD(Resilient Distributed Dataset,彈性分布式數(shù)據(jù)集)數(shù)據(jù)結(jié)構(gòu)進行運算。由于RDD并不能很好地滿足更為復(fù)雜的建模需求,ML庫應(yīng)運而生。

          ML庫相較MLlib庫更新,它全面采用基于數(shù)據(jù)幀(Data Frame)的API進行操作,能夠提供更為全面的機器學(xué)習(xí)算法,且支持靜態(tài)類型分析,可以在編程過程中及時發(fā)現(xiàn)錯誤,而不需要等代碼運行。


          Python中除了包含上面介紹的庫,還有其他一些常用庫。下面分別進行介紹。


          04 SciPy

          SciPy是一個開源算法庫和數(shù)學(xué)工具包,它基于NumPy構(gòu)建,并擴展了NumPy的功能。SciPy包含線性代數(shù)、積分、插值、特殊函數(shù)、快速傅里葉變換等常用函數(shù),功能與軟件MATLAB、Scilab和GNU Octave類似。Scipy常常結(jié)合Numpy使用,可以說Python的大多數(shù)機器學(xué)習(xí)庫都依賴于這兩個模塊。


          05 Pandas

          Pandas提供了強大的數(shù)據(jù)讀寫功能、高級的數(shù)據(jù)結(jié)構(gòu)和各種分析工具。該庫的一大特點是能用一兩個命令完成復(fù)雜的數(shù)據(jù)操作。

          Pandas中最基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)是Series,用于表示一行數(shù)據(jù),可以理解為一維的數(shù)組。另一個關(guān)鍵的數(shù)據(jù)結(jié)構(gòu)為DataFrame,用于表示二維數(shù)組,作用和R語言里的data.frame很像。

          Pandas內(nèi)置了很多函數(shù),用于分組、過濾和組合數(shù)據(jù),這些函數(shù)的執(zhí)行速度都很快。Pandas對于時間序列數(shù)據(jù)有一套獨特的分析機制,可對時間數(shù)據(jù)做靈活的分析與管理。


          06 Scikit-Learn

          Scikit-Learn是一個基于NumPy、SciPy、Matplotlib的開源機器學(xué)習(xí)工具包,功能強大,使用簡單,是Kaggle選手經(jīng)常使用的學(xué)習(xí)庫。它主要涵蓋分類、回歸和聚類算法,例如SVM、邏輯回歸、樸素貝葉斯、隨機森林、K均值以及數(shù)據(jù)降維處理算法等,官方文檔齊全,更新及時。

          Scikit-Learn基于Numpy和SciPy等Python數(shù)值計算庫,提供了高效的算法實現(xiàn),并針對所有算法提供了一致的接口調(diào)用規(guī)則,包括KNN、K均值、PCA等,接口易用。


          07 TensorFlow

          TensorFlow是谷歌開源的數(shù)值計算框架,也是目前最為流行的神經(jīng)網(wǎng)絡(luò)分析系統(tǒng)。它采用數(shù)據(jù)流圖的方式,可靈活搭建多種機器學(xué)習(xí)和深度學(xué)習(xí)模型。


          08 Keras

          Keras是一個用于處理神經(jīng)網(wǎng)絡(luò)的高級庫,可以運行在TensorFlow和Theano上,現(xiàn)在發(fā)布的新版本可以使用CNTK或MxNet作為后端。Keras簡化了很多特定任務(wù),并大大減少了樣板代碼數(shù),目前主要用于深度學(xué)習(xí)領(lǐng)域。

          關(guān)于作者:劉鵬,教授,清華大學(xué)博士,云計算、大數(shù)據(jù)和人工智能領(lǐng)域的知名專家,南京云創(chuàng)大數(shù)據(jù)科技股份有限公司總裁、中國大數(shù)據(jù)應(yīng)用聯(lián)盟人工智能專家委員會主任。中國電子學(xué)會云計算專家委員會云存儲組組長、工業(yè)和信息化部云計算研究中心專家。
          高中強,人工智能與大數(shù)據(jù)領(lǐng)域技術(shù)專家,有非常深厚的積累,擅長機器學(xué)習(xí)和自然語言處理,尤其是深度學(xué)習(xí),熟悉Tensorflow、PyTorch等深度學(xué)習(xí)開發(fā)框架。曾獲“2019年全國大學(xué)生數(shù)學(xué)建模優(yōu)秀命題人獎”。參與鐘南山院士指導(dǎo)新型冠狀病毒人工智能預(yù)測系統(tǒng)研發(fā)項目,與鐘南山院士團隊共同發(fā)表學(xué)術(shù)論文。

          本文摘編自Python金融數(shù)據(jù)挖掘與分析實戰(zhàn)》,經(jīng)出版方授權(quán)發(fā)布。(ISBN:9787111696506)

          Python金融數(shù)據(jù)挖掘與分析實戰(zhàn)
          點擊上圖了解及購買
          轉(zhuǎn)載請聯(lián)系微信:DoctorData

          推薦語:云創(chuàng)大數(shù)據(jù)(上市公司)總裁撰寫,零基礎(chǔ)學(xué)會金融數(shù)據(jù)挖掘,配有案例、視頻、代碼、數(shù)據(jù)、習(xí)題及答案。



          劃重點??



          干貨直達??



          更多精彩??

          在公眾號對話框輸入以下關(guān)鍵詞
          查看更多優(yōu)質(zhì)內(nèi)容!

          讀書 | 書單 | 干貨 | 講明白 | 神操作 | 手把手
          大數(shù)據(jù) | 云計算 | 數(shù)據(jù)庫 | Python | 爬蟲 | 可視化
          AI | 人工智能 | 機器學(xué)習(xí) | 深度學(xué)習(xí) | NLP
          5G | 中臺 | 用戶畫像 數(shù)學(xué) | 算法 數(shù)字孿生

          據(jù)統(tǒng)計,99%的大咖都關(guān)注了這個公眾號
          ??
          瀏覽 21
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91久久久精品视频 | 国产二级片 | 九九综合在线资源伦理 | 亚洲不卡黄色网址 | 豆花视频在线欧美亚洲自拍 |