總結數據科學家經常使用的Python庫

概述

  • 這篇文章中,咱們挑選了24個用於數據科學的Python庫。css

  • 這些庫有着不一樣的數據科學功能,例如數據收集,數據清理,數據探索,建模等,接下來咱們會分類介紹。html

  • 您以爲咱們還應該包含哪些Python庫?讓咱們知道!前端

介紹

我是Python語言的忠實粉絲,它是我在數據科學方面學到的第一門編程語言。Python有三個特色:python

  • 它的易用性和靈活性git

  • 全行業的接受度:它是業內最流行的數據科學語言github

  • 用於數據科學的龐大數量的Python庫web

事實上,有如此多的Python庫,要跟上它們的發展速度可能會變得很是困難。這就是爲何我決定消除這種痛苦,並編輯這24個Python庫。換句話說,在數據科學領域,你掌握這個24個python庫就夠了!算法

640?wx_fmt=png

那是對的 - 我根據各自在數據科學中的角色對這些庫進行了分類。因此我提到了用於數據清理,數據操做,可視化,構建模型甚至模型部署(以及其餘)的庫。這是一個很是全面的列表,可幫助您開始使用Python進行數據科學之旅。sql

用於不一樣數據科學任務的Python庫:

用於數據收集的Python庫:數據庫

  • Beautiful Soup

  • Scrapy

  • Selenium

用於數據清理和操做的Python庫:

  • Pandas

  • PyOD

  • NumPy

  • Spacy

用於數據可視化的Python庫:

  • Matplotlib

  • Seaborn

  • Bokeh

用於建模的Python庫:

  • Scikit-learn

  • TensorFlow

  • PyTorch

用於模型可解釋性的Python庫:

  • Lime

  • H2O

用於音頻處理的Python庫:

  • Librosa

  • Madmom

  • pyAudioAnalysis

用於圖像處理的Python庫:

  • OpenCV-Python

  • Scikit-image

  • Pillow

用於數據庫的Python庫:

  • Psycopg

  • SQLAlchemy

用於部署的Python庫:

  • Flask

用於數據收集的Python庫

您是否遇到過一種狀況,即您沒有足夠的數據來解決您想要解決的問題?這是數據科學中一個永恆的問題。這就是爲何學習如何提取和收集數據對數據科學家來講是一項很是關鍵的技能。它開闢了之前沒法實現的途徑。

因此這裏有三個有用的Python庫,用於提取和收集數據。

/* Beautiful Soup */收集數據的最佳方法之一是抓取網站(固然是道德和合法的!)。手動完成須要花費太多的手動工做和時間。美麗的湯是你的救星。

Beautiful Soup是一個HTML和XML解析器,它爲解析的頁面建立解析樹,用於從網頁中提取數據。從網頁中提取數據的過程稱爲網絡抓取。

使用如下代碼安裝BeautifulSoup:

 

pip install beautifulsoup4

這是一個實現Beautiful Soup的簡單代碼,用於從HTML中提取全部anchor標記:

 

  1.  
    #!/usr/bin/python3
  2.  
    # Anchor extraction from html document
  3.  
    from bs4 import BeautifulSoup
  4.  
    from urllib.request import urlopen
  5.  
     
  6.  
    with urlopen('LINK') as response:
  7.  
    soup = BeautifulSoup(response,  'html.parser')
  8.  
    for anchor in soup.find_all('a'):
  9.  
    print(anchor.get( 'href', '/'))

 

我建議經過如下文章來學習如何在Python中使用BeautifulSoup:

  • 使用BeautifulSoup在Python中進行Web Scraping的初學者指南

    (https://www.analyticsvidhya.com/blog/2015/10/beginner-guide-web-scraping-beautiful-soup-python/)

/* Scrapy */

這是安裝Scrapy的代碼:

 

pip install scrapy

640?wx_fmt=png它是大規模網絡抓取的框架。它爲您提供了有效提取網站數據,根據須要處理數據並將其存儲在首選結構和格式中所需的全部工具。

這是一個實現Scrapy的簡單代碼:

 

  1.  
    import scrapy
  2.  
     
  3.  
    class Spider(scrapy.Spider):
  4.  
    name =  'NAME'
  5.  
    start_urls = [ 'LINK']
  6.  
     
  7.  
    def parse(self, response):
  8.  
    for title in response.css('.post-header>h2'):
  9.  
    yield {'title': title.css('a ::text').get()}
  10.  
     
  11.  
    for next_page in response.css('a.next-posts-link'):
  12.  
    yield response.follow(next_page, self.parse)

 

這是學習Scrapy並在Python中實現它的完美教程:

  • 使用Scrapy在Python中進行Web Scraping(有多個示例)

    (https://www.analyticsvidhya.com/blog/2017/07/web-scraping-in-python-using-scrapy/)

/* Selenium */

640?wx_fmt=png

咱們能夠輕鬆地編寫Python腳本以使用Selenium自動化Web瀏覽器。它爲咱們有效地提取數據並以咱們喜歡的格式存儲數據,以供未來使用。

我最近寫了一篇關於使用Python和Selenium抓取YouTube視頻數據的文章:

  • 數據科學項目:使用Python和Selenium對YouTube數據進行刮擦以對視頻進行分類

    (https://www.analyticsvidhya.com/blog/2019/05/scraping-classifying-youtube-video-data-python-selenium/)

 

用於數據清理和操做的Python庫

好吧 - 因此你已經收集了你的數據並準備好潛入。如今是時候清理咱們可能面臨的任何混亂數據並學習如何操做它,以便咱們的數據能夠用於建模。

這裏有四個Python庫能夠幫助您實現這一目標。請記住,咱們將處理現實世界中的結構化(數字)和文本數據(非結構化) - 這個庫列表涵蓋了全部這些。

/* Pandas */在數據處理和分析方面,沒有什麼能比pandas更勝一籌。它是現階段最流行的Python庫。Pandas是用Python語言編寫的,特別適用於操做和分析任務。

Pandas須要預先安裝Python或Anaconda,這裏是須要的代碼:

 

pip install pandas

 

640?wx_fmt=png

Pandas提供的功能以下:

  • 數據集加入和合並

  • 數據結構列刪除和插入

  • 數據過濾

  • 重塑數據集

  • DataFrame對象操縱數據等等!

這是一篇文章和一個很棒的備忘單,讓你的pandas技能達到最佳狀態:

  • 12用於數據操做的Python中有用的熊貓技術

    (https://www.analyticsvidhya.com/blog/2016/01/12-pandas-techniques-python-data-manipulation/)

  • CheatSheet:使用Python中的Pandas進行數據探索

    (https://www.analyticsvidhya.com/blog/2015/07/11-steps-perform-data-analysis-pandas-python/)

/* PyOD */

別擔憂,PyOD庫能夠幫到您。

PyOD是一個全面且可擴展的Python工具包,用於檢測外圍對象。異常檢測基本上是識別與大多數數據顯着不一樣的稀有項目或觀察。

您可使用如下代碼下載pyOD:

 

pip install pyod

 

  • 使用PyOD庫在Python中學習異常檢測的一個很棒的教程

    (https://www.analyticsvidhya.com/blog/2019/02/outlier-detection-python-pyod/)

/* NumPy */

NumPy是一個開源庫,有多個貢獻者。它預先安裝了Anaconda和Python,這裏是安裝它的代碼:

 

pip install numpy

 

640?wx_fmt=png

 

  1.  
    # 建立數組
  2.  
    import numpy  as np
  3.  
    x = np. array([1, 2, 3])
  4.  
    print(x)
  5.  
    y = np.arange( 10)
  6.  
    print(y)
  7.  
     
  8.  
    # output - [1 2 3]
  9.  
    # [0 1 2 3 4 5 6 7 8 9]
  10.  
     
  11.  
    # 基本操做
  12.  
    a = np. array([1, 2, 3, 6])
  13.  
    b = np.linspace( 0, 2, 4)
  14.  
    c = a - b
  15.  
    print(c)
  16.  
    print(a**2)
  17.  
     
  18.  
    #output - [1. 1.33333333 1.66666667 4. ]
  19.  
    # [ 1 4 9 36]

還有更多!

/* SpaCy */到目前爲止,咱們已經討論瞭如何清理和操做數值數據。可是,若是你正在處理文本數據呢?

spaCy是一個超級有用且靈活的天然語言處理(NLP)庫和框架,用於清理文本文檔以進行模型建立。與用於相似任務的其餘庫相比,SpaCy更快。

在Linux中安裝Spacy的代碼:

 

  1.  
    pip install -U spacy
  2.  
    python -m spacy download en

要在其餘操做系統上安裝它,請參考此連接(https://spacy.io/usage/)。

640?wx_fmt=png

 

  • 天然語言處理變得輕鬆 - 使用SpaCy(在Python中)

用於數據可視化的Python庫

下一個是什麼?我在整個數據科學最喜歡的方面 - 數據可視化!數據可視化後,咱們的假設將獲得直觀的驗證!

這裏有三個用於數據可視化的很棒的Python庫。

/* Matplotlib */Matplotlib是Python中最流行的數據可視化庫。它容許咱們生成和構建各類圖表。它能夠與Seaborn一塊兒使用。

您能夠經過如下代碼安裝matplotlib:

 

pip install matplotlib

 

640?wx_fmt=png

如下是咱們可使用matplotlib構建的不一樣類型的圖表的幾個示例:

 

  1.  
    # 直方圖
  2.  
    %matplotlib inline
  3.  
    import matplotlib.pyplot as plt
  4.  
    from numpy.random import normal
  5.  
    x = normal(size= 100)
  6.  
    plt.hist(x, bins= 20)
  7.  
    plt.show()

640?wx_fmt=png

 

 

  1.  
    # 3D圖
  2.  
    from matplotlib import cm
  3.  
    from mpl_toolkits.mplot3d import Axes3D
  4.  
    import matplotlib.pyplot as plt
  5.  
    import numpy as np
  6.  
    fig = plt.figure()
  7.  
    ax = fig.gca(projection= '3d')
  8.  
    X = np.arange( -10, 10, 0.1)
  9.  
    Y = np.arange( -10, 10, 0.1)
  10.  
    X, Y = np.meshgrid(X, Y)
  11.  
    R = np.sqrt(X** 2 + Y**2)
  12.  
    Z = np.sin(R)
  13.  
    surf = ax.plot_surface(X, Y, Z, rstride= 1, cstride=1, cmap=cm.coolwarm)
  14.  
    plt.show()

640?wx_fmt=png

既然咱們已經介紹了Pandas,NumPy和如今的matplotlib,請查看下面的教程,將這三個Python庫網格化:

  • 使用NumPy,Matplotlib和Pandas在Python中進行數據探索的終極指南

/* Seaborn */Seaborn是另外一個基於matplotlib的繪圖庫。它是一個python庫,提供高級界面來繪製有吸引力的圖形。matplotlib能夠作什麼,Seaborn只是以更具視覺吸引力的方式作到這一點。

Seaborn的一些功能是:

  • 面向數據集的API,用於檢查多個變量之間的關係

  • 方便地查看複雜數據集的總體結構

  • 用於選擇顯示數據中圖案的調色板的工具

 

您只需使用一行代碼便可安裝Seaborn:

 

pip install seaborn

640?wx_fmt=png

讓咱們經過一些很酷的圖表來看看seaborn能作什麼:

 

  1.  
    import seaborn as sns
  2.  
    sns. set()
  3.  
    tips = sns.load_dataset( "tips")
  4.  
    sns.relplot(x= "total_bill", y="tip", col="time",
  5.  
    hue= "smoker", , size="size",
  6.  
    data=tips);

640?wx_fmt=png

這是另外一個例子:

 

  1.  
    import seaborn as sns
  2.  
    sns.catplot(x= "day", y="total_bill", hue="smoker",
  3.  
    kind= "violin", split=True, data=tips);

/* Bokeh */Bokeh是一個交互式可視化庫,面向現代Web瀏覽器進行演示。它爲大量數據集提供了多種圖形的優雅構造。

Bokeh可用於建立交互式圖表,儀表板和數據應用程序。安裝代碼:

 

pip install bokeh

640?wx_fmt=png

 

  • 使用Bokeh進行交互式數據可視化(在Python中)

 

用於建模的Python庫

咱們已經到達了本文最受期待的部分 - 構建模型!這就是咱們大多數人首先進入數據科學領域的緣由,不是嗎?

讓咱們經過這三個Python庫探索模型構建。

/* Scikit-learn */就像用於數據操做的Pandas和用於可視化的matplotlib同樣,scikit-learn是構建模型的Python庫領導者。沒有什麼比得上它了。

事實上,scikit-learn創建在NumPy,SciPy和matplotlib之上。它是開源的,每一個人均可以訪問,而且能夠在各類環境中重用。

640?wx_fmt=png

如下是安裝scikit-learn的代碼:

 

pip install scikit-learn

Scikit-learn支持在機器學習中執行的不一樣操做,如分類,迴歸,聚類,模型選擇等。

我還建議您瀏覽如下連接以瞭解有關scikit-learn的更多信息:

  • Scikit-Python in Python - 我去年學到的最重要的機器學習工具!

/* TensorFlow */TensorFlow由Google開發,是一個流行的深度學習庫,可幫助您構建和培訓不一樣的模型。它是一個開源的端到端平臺。TensorFlow提供簡單的模型構建,強大的機器學習生成,以及強大的實驗工具和庫。

640?wx_fmt=png

TensorFlow提供多個抽象級別供您根據須要進行選擇。它經過使用高級Keras API用於構建和訓練模型,這使得TensorFlow入門和機器學習變得容易。

瀏覽此連接以查看安裝過程:https://www.tensorflow.org/install。使用這些文章開始使用TensorFlow:

  • TensorFlow 101:瞭解張量和圖形,讓您開始深度學習

    (https://www.analyticsvidhya.com/blog/2017/03/tensorflow-understanding-tensors-and-graphs/)

  • 使用Keras和TensorFlow在R中開始深度學習(https://www.analyticsvidhya.com/blog/2017/06/getting-started-with-deep-learning-using-keras-in-r/)

     

/* PyTorch */

什麼是PyTorch?嗯,這是一個基於Python的科學計算包,能夠用做:

  • NumPy的替代品,可使用GPU的強大功能

  • 深度學習研究平臺,提供最大的靈活性和速度

轉到此處(https://pytorch.org/get-started/locally/)查看不一樣操做系統的安裝過程。

PyTorch提供如下功能:

  • 混合前端

  • 工具和庫:一個活躍的研究人員和開發人員社區創建了豐富的工具和庫生態系統,用於擴展PyTorch並支持從計算機視覺到強化學習等領域的開發

  • 雲支持:PyTorch在主要雲平臺上獲得很好的支持,經過預先構建的映像提供無摩擦的開發和輕鬆擴展,在GPU上進行大規模培訓,在生產規模環境中運行模型的能力等等

如下是有關PyTorch的兩篇很是詳細且易於理解的文章:

  • PyTorch簡介 - 一個簡單而強大的深度學習庫(https://www.analyticsvidhya.com/blog/2018/02/pytorch-tutorial/)

  • PyTorch入門 - 瞭解如何構建快速準確的神經網絡(4個案例研究!)(https://www.analyticsvidhya.com/blog/2019/01/guide-pytorch-neural-networks-case-studies/)

用於數據可解釋性的Python庫

你真的瞭解你的模型是如何工做的嗎?你能解釋爲何你的模型可以得出結果嗎?這些是每一個數據科學家應該可以回答的問題。構建黑盒模型在業界是沒有用的。

因此,我已經提到了兩個Python庫,能夠幫助您解釋模型的性能。

/* LIME */LIME是一種算法(和庫),能夠解釋任何分類器或迴歸量的預測。LIME如何作到這一點?經過一個可解釋的模型來近似它。靈感來自「爲何我應該相信你?」:解釋任何分類器的預測「,這個模型解釋器可用於生成任何分類算法的解釋器。

640?wx_fmt=png

安裝LIME很簡單:

 

pip install lime

 

  • 在機器學習模型中創建信任(在Python中使用LIME)(https://www.analyticsvidhya.com/blog/2017/06/building-trust-in-machine-learning-models/)

/* H2O */

H2O的無人駕駛AI提供簡單的數據可視化技術,用於表示高度特徵交互和非線性模型行爲。它經過可視化提供機器學習可解釋性(MLI),闡明建模結果和模型中特徵的影響。

640?wx_fmt=png

經過如下連接閱讀有關H2O的無人駕駛AI執行MLI的更多信息。

  • 機器學習可解釋性

用於音頻處理的Python庫

音頻處理或音頻分析是指從音頻信號中提取信息和含義以進行分析或分類或任何其餘任務。它正在成爲深度學習中的一種流行功能,因此要留意這一點。

/* LibROSA */

640?wx_fmt=png

單擊此連接(https://librosa.github.io/librosa/install.html)以查看安裝詳細信息。

這是一篇關於音頻處理及其工做原理的深刻文章:

  • 使用深度學習開始使用音頻數據分析(帶案例研究)(https://www.analyticsvidhya.com/blog/2017/08/audio-voice-processing-deep-learning/)

/* Madmom */

您須要先安裝如下庫才能安裝Madmom:

  • NumPy

  • SciPy

  • Cython

  • Mido

您須要如下軟件包來測試安裝是否成功:

  • PyTest

  • PyAudio

  • PyFftw

安裝Madmom的代碼:

 

pip install madmom

 

640?wx_fmt=png

咱們甚至有一篇文章要了解Madmom如何用於音樂信息檢索:

  • 學習音樂信息檢索的音頻節拍跟蹤(使用Python代碼)(https://www.analyticsvidhya.com/blog/2018/02/audio-beat-tracking-for-music-information-retrieval/)

/* pyAudioAnalysis */

pyAudioAnalysis是一個用於音頻特徵提取,分類和分段的Python庫。它涵蓋了普遍的音頻分析任務,例如:

  • 對未知聲音進行分類

  • 檢測音頻事件並排除長時間錄音中的靜音時段

  • 執行有監督和無監督的分割

  • 提取音頻縮略圖等等

 

您可使用如下代碼安裝它:

 

pip install pyAudioAnalysis

 

640?wx_fmt=png

用於圖像處理的Python庫

若是您正在尋找數據科學行業的角色,您必須學習如何使用圖像數據。隨着組織可以收集愈來愈多的數據(主要得益於計算資源的進步),圖像處理正變得無處不在。

所以,請確保您對如下三個Python庫中的至少一個感到滿意。

/* OpenCV-Python */談到圖像處理,OpenCV是我想到的第一個名字。OpenCV-Python是用於圖像處理的Python API,它結合了OpenCV C ++ API和Python語言的最佳特性。

它主要用於解決計算機視覺問題。

OpenCV-Python使用了咱們在上面看到的NumPy。全部OpenCV陣列結構都與NumPy數組進行轉換。這也使得與使用NumPy的其餘庫(如SciPy和Matplotlib)集成更容易。

在您的系統中安裝OpenCV-Python:

 

pip3 install opencv-python

 

如下是兩個關於如何在Python中使用OpenCV的流行教程:

  • 使用深度學習從視頻構建人臉檢測模型(Python實現)(https://www.analyticsvidhya.com/blog/2018/12/introduction-face-detection-video-deep-learning-python/)

  • 16個OpenCV函數啓動計算機視覺之旅(使用Python代碼)(https://www.analyticsvidhya.com/blog/2019/03/opencv-functions-computer-vision-python/)

/* Scikit-image */

您可使用它來執行圖像分割,幾何變換,色彩空間操做,分析,過濾,形態學,特徵檢測等等。

咱們須要在安裝scikit-image以前使用如下軟件包:

  • Python(> = 3.5)

  • NumPy(> = 1.11.0)

  • SciPy(> = 0.17.0)

  • joblib(> = 0.11)

 

這就是你能夠在你的機器上安裝scikit-image的方法:

 

 

pip install -U scikit-learn

 

640?wx_fmt=png

/* Pillow */

Pillow提供了幾種執行圖像處理的標準程序:

  • 每像素操做

  • 掩蔽和透明處理

  • 圖像過濾,例如模糊,輪廓,平滑或邊緣查找

  • 圖像加強,例如銳化,調整亮度,對比度或顏色

  • 向圖像添加文字等等!

 

如何安裝Pillow?這很簡單:

 

 

pip install Pillow

 

查看如下AI漫畫,瞭解Pillow在計算機視覺中的使用:

  • AI Comic:ZAIN - 問題#2:使用計算機視覺進行面部識別

 

用於數據庫的Python庫

學習如何從數據庫存儲,訪問和檢索數據是任何數據科學家必備的技能。你根本沒法擺脫角色的這個方面。構建模型很棒可是若是不首先檢索數據,你會怎麼作?

我選擇了兩個與SQL相關的Python庫,你可能會發現它們頗有用。

/* psycopg */Psycopg是最受歡迎的PostgreSQL(一種用於Python編程語言的高級開源關係數據庫)適配器。Psycopg的核心是徹底實現Python DB API 2.0規範。

640?wx_fmt=png

目前的psycopg2實現支持:

  • Python版本2.7

  • Python 3版本從3.4到3.7

  • PostgreSQL服務器版本從7.4到11

  • 9.1的PostgreSQL客戶端庫版本

     

如下是如何安裝psycopg2的方法:

 

 

pip install psycopg2

/* SQLAlchemy */

640?wx_fmt=png

它旨在實現高效,高性能的數據庫訪問。SQLAlchemy認爲數據庫是關係代數引擎,而不只僅是表的集合。

要安裝SQLAlchemy,您可使用如下代碼行:

 

pip install SQLAlchemy

 

用於部署的Python庫

你知道什麼型號的部署?若是沒有,你應該儘快學習。部署模型意味着將最終模型放入最終應用程序(或技術上稱爲生產環境)。

/* Flask */Flask是一個用Python編寫的Web框架,一般用於部署數據科學模型。Flask有兩個組成部分:

  • Werkzeug:它是Python編程語言的實用程序庫

  • Jinja:它是Python的模板引擎

 

查看下面的示例以打印「Hello world」:

 

  1.  
    from flask import Flask
  2.  
    app = Flask(__name__)
  3.  
     
  4.  
    @app.route("/")
  5.  
    def hello():
  6.  
    return "Hello World!"
  7.  
     
  8.  
    if __name__ == "__main__":
  9.  
    app.run()

 

如下文章是學習Flask的一個很好的起點:

  • 在生產中將機器學習模型部署爲API的教程(使用Flask)(https://www.analyticsvidhya.com/blog/2017/09/machine-learning-models-as-apis-using-flask/)

結束筆記

在本文中,咱們看到了一大堆python庫,它們在進行數據科學項目時經常使用。那裏有更多的庫,但這些是每一個數據科學家應該知道的核心庫。

相關文章
相關標籤/搜索