頂級Python庫

毫不能錯過的24個頂級Python庫

img

Python有如下三個特色:css

· 易用性和靈活性html

· 全行業高接受度:Python無疑是業界最流行的數據科學語言前端

· 用於數據科學的Python庫的數量優點python

事實上,因爲Python庫種類不少,要跟上其發展速度很是困難。所以,本文介紹了24種涵蓋端到端數據科學生命週期的Python庫。git

文中說起了用於數據清理、數據操做、可視化、構建模型甚至模型部署(以及其餘用途)的庫。這是一個至關全面的列表,有助於你使用Python開啓數據科學之旅。github

img

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

用於數據收集的Python庫算法

· Beautiful Soupsql

· 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

img

用於數據收集的Python庫

你是否曾遇到過這樣的狀況:缺乏解決問題的數據?這是數據科學中一個永恆的問題。這也是爲何學習提取和收集數據對數據科學家來講是一項很是重要的技能。數據提取和收集開闢了史無前例的道路。

如下是三個用於提取和收集數據的Python庫:

Beautiful Soup

傳送門:https://www.crummy.com/software/BeautifulSoup/bs4/doc/

收集數據的最佳方式之一就是抓取網站(固然是以合乎道德和法律的手段!)徒手作這件事須要耗費大量的勞動和時間。Beautiful Soup無疑是一大救星。

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

使用如下代碼可安裝BeautifulSoup:

pip install beautifulsoup4

下面是一個可實現從HTML中提取全部錨標記的Beautiful Soup簡單代碼:

#!/usr/bin/python3
# Anchor extraction from html document
from bs4 import BeautifulSoup
from urllib.request import urlopen

with urlopen('LINK') as response:
    soup = BeautifulSoup(response, 'html.parser')
    for anchor in soup.find_all('a'):
        print(anchor.get('href', '/'))

建議閱讀下面的文章,學習如何在Python中使用Beautiful Soup:

《新手指南:在Python中使用BeautifulSoup進行網頁抓取》傳送門:https://www.analyticsvidhya.com/blog/2015/10/beginner-guide-web-scraping-beautiful-soup-python/

Scrapy

傳送門:https://docs.scrapy.org/en/latest/intro/tutorial.html

Scrapy是另外一個可有效用於網頁抓取的Python庫。它是一個開源的協做框架,用於從網站中提取所需數據。使用起來快捷簡單。

下面是用於安裝Scrapy的代碼:

pip install scrapy

img

Scrapy是一個用於大規模網頁抓取的框架。可提供全部須要的工具備效地從網站中抓取數據,且依須要處理數據,並以使用者偏好的結構和格式存儲數據。

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

import scrapy

class Spider(scrapy.Spider):
    name = 'NAME'
    start_urls = ['LINK']

    def parse(self, response):
        for title in response.css('.post-header>h2'):
            yield {'title': title.css('a ::text').get()}

        for next_page in response.css('a.next-posts-link'):
            yield response.follow(next_page, self.parse

下面是一個學習Scrapy並在Python中實現Scrapy的絕佳教程:

《使用Scrapy在Python中進行網頁抓取(含多個示例)》傳送門:https://www.analyticsvidhya.com/blog/2017/07/web-scraping-in-python-using-scrapy/

Selenium

傳送門:https://www.seleniumhq.org/

Selenium是一個倍受歡迎的自動化瀏覽器工具。在業界經常使用於測試,但對於網頁抓取也很是方便。Selenium在IT領域很是流行。

img

編寫Python腳原本自動化使用Selenium的web瀏覽器是很容易的。它容許免費高效地提取數據,並將其存儲在首選格式中以備後用。

關於使用Python和Selenium抓取YouTube視頻數據的文章:

《數據科學項目:使用Python和Selenium抓取YouTube數據對視頻進行分類》傳送門:https://www.analyticsvidhya.com/blog/2019/05/scraping-classifying-youtube-video-data-python-selenium/

img

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

收集了數據以後,接下來要清理可能面臨的任何混亂數據,並學習如何操做數據,方便數據爲建模作好準備。

下面是四個可用於數據清理和數據操做的Python庫。請記住,文中僅指明在現實世界中處理結構化(數值)數據和文本數據(非結構化)——而該庫列表涵蓋了全部內容。

Pandas

傳送門:https://pandas.pydata.org/pandas-docs/stable/

在數據操做和數據分析方面,Pandas絕無敵手。Pandas一度是最流行的Python庫。Pandas是用Python語言編寫的,主要用於數據操做和數據分析。

這個名稱來源於術語「面板數據」,「面板數據」是一個計量經濟學術語,指的是包含同一我的在多個時間段內的觀察結果的數據集。

Pandas在Python or Anaconda中已完成預安裝,但以防須要,安裝代碼以下:

pip install pandas

img

Pandas有如下特色:

· 數據集鏈接和合並

· 刪除和插入數據結構列

· 數據過濾

· 重塑數據集

· 使用DataFrame對象來操做數據等

下面是一篇文章以及一份很棒的Cheatsheet,有助於使Pandas技能達標:

《Python中用於數據操做的12種有用的Pandas技術》傳送門: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

傳送門:https://pyod.readthedocs.io/en/latest/

難以發現異常值?這絕非個例。別擔憂,PyOD庫就在這裏。

PyOD是一個全面的、可伸縮的Python工具包,用於檢測外圍對象。離羣值檢測基本上是識別與大多數數據顯著不一樣的稀有項或觀測值。

如下代碼可用於下載pyOD:

pip install pyod

PyOD是如何工做的?如何實現PyOD?下面一則指南將回答全部關於PyOD的問題:

《學習在Python中使用PyOD庫檢測異常值的絕佳教程》傳送門:https://www.analyticsvidhya.com/blog/2019/02/outlier-detection-python-pyod/

NumPy

傳送門:https://www.numpy.org/

與Pandas同樣,NumPy也是一個很是受歡迎的Python庫。NumPy引入了支持大型多維數組和矩陣的函數,同時還引入了高級數學函數來處理這些數組和矩陣。

NumPy是一個開源庫,有多方貢獻者。在 Anaconda和Python中已預安裝Numpy,但以防須要,下面是安裝代碼:

pip install numpy

img

下面是使用NumPy可執行的一些基本功能:

建立數組

import numpy as np
x = np.array([1, 2, 3])
print(x)
y = np.arange(10)
print(y)
output - [1 2 3]
         [0 1 2 3 4 5 6 7 8 9]

基本運算

a = np.array([1, 2, 3, 6])
b = np.linspace(0, 2, 4)
c = a - b
print(c)
print(a**2)
output - [1. 1.33333333 1.66666667 4. ]
         [ 1 4 9 36]

以及更多其餘功能!

SpaCy

傳送門:https://spacy.io/

img

目前已經討論瞭如何清理數據和處理數值數據。可是若是正在處理文本數據呢?到目前爲止,現有的庫都沒法解決該問題。

Spacy是一個很是有用且靈活的天然語言處理( NLP )庫和框架,用於清理建立模型的文本文檔。與相似用途的其餘庫相比,SpaCy速度更快。

在Linux中安裝Spacy:

pip install -U spacy
python -m spacy download en

其餘操做系統上安裝Spacy,請點擊:https://spacy.io/usage

如下是學習spaCy的課程:

《簡化天然語言處理——使用SpaCy(在Python中)》傳送門:https://www.analyticsvidhya.com/blog/2017/04/natural-language-processing-made-easy-using-spacy-%e2%80%8bin-python/

img

用於數據可視化的Python庫

下一步是什麼呢?數據可視化!此處假設已獲得驗證,而且發掘了隱藏的觀點和模式。

下面是三個用於數據可視化的絕佳Python庫。

Matplotlib

傳送門:https://matplotlib.org/

Matplotlib是Python中最流行的數據可視化庫。容許生成和構建各類各樣的圖。Matplotlib是筆者的首選庫,可與Seaborn一塊兒用於進行數據可視化研究。

如下是安裝Matplotli的代碼:

pip install matplotlib

img

下面是使用Matplotlib構建的不一樣類型圖示的部分例子:

柱狀圖

%matplotlib inline
import matplotlib.pyplot as plt
from numpy.random import normal
x = normal(size=100)
plt.hist(x, bins=20)
plt.show()

img

3D 圖表

from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.gca(projection='3d')
X = np.arange(-10, 10, 0.1)
Y = np.arange(-10, 10, 0.1)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)
surf = ax.plot_surface(X, Y, Z, rstride=1,cstride=1, cmap=cm.coolwarm)
plt.show()

img

目前已經介紹了Pandas、NumPy和Matplotlib,那麼請查看下面的教程,該教程結合了以上三個庫進行講解:

《使用NumPy、Matplotlib和Pandas在Python中進行數據探索的終極指南》傳送門:https://www.analyticsvidhya.com/blog/2015/04/comprehensive-guide-data-exploration-sas-using-python-numpy-scipy-matplotlib-pandas/

Seaborn

傳送門:https://seaborn.pydata.org/

Seaborn是另外一個基於matplotlib的繪圖庫。它是一個爲繪製有吸引力的圖像而提供高級接口的python庫。matplotlib能實現功能,Seaborn只是以另外一種更吸引人的視覺方式來實現。

Seaborn 的一些特色:

· 做爲一個面向數據集的API,可用於查驗多個變量之間的關係

· 便於查看複雜數據集的總體結構

· 用於選擇顯示數據中模式的調色板的工具

下面一行代碼可用於安裝Seaborn:

pip install seaborn

img

瀏覽下面這些很酷的圖表,看看seaborn能作些什麼:

import seaborn as sns
sns.set()
tips =sns.load_dataset("tips")
sns.relplot(x="total_bill",y="tip", col="time",
            hue="smoker",style="smoker", size="size",
            data=tips);

img

下面是另一個例子:

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

img

Bokeh

傳送門:https://bokeh.pydata.org/en/latest/

Bokeh是一個面向現代網頁瀏覽器的交互式可視化庫,爲大量數據集提供優美的通用圖形結構。

Bokeh可用於建立交互式繪圖、儀表板和數據應用程序。

安裝:

pip install bokeh

img

瞭解更多關於Bokeh的知識及其實際應用:

《使用Bokeh的交互式數據可視化(在Python中)》傳送門:https://www.analyticsvidhya.com/blog/2015/08/interactive-data-visualization-library-python-bokeh/

img

用於建模的Python庫

如今到了本文最使人期待的部分——建模!這也是大多數人一開始接觸數據科學的緣由。

接下來經過這三個Python庫來探索建模。

Scikit-learn

傳送門:https://scikit-learn.org/stable/

就像用於數據操做的Pandas和用於可視化的matplotlib同樣,scikit-learn是Python構建模型中的佼佼者。沒有什麼能與之媲美。

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

Scikit-learn支持在機器學習中執行的不一樣操做,如分類、迴歸、聚類和模型選擇等。命名它——那麼scikit-learn會有一個模塊。

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

《Python中的Scikit-learn——筆者去年學到的最重要的機器學習工具!》傳送門:https://www.analyticsvidhya.com/blog/2015/01/scikit-learn-python-machine-learning-tool/

TensorFlow

傳送門:https://www.tensorflow.org/

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

TensorFlow提供多個抽象級別,可根據須要進行選擇。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

傳送門:https://pytorch.org/

什麼是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/

img

用於數據解釋性的Python庫

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

因此,上文中已經提到的兩個Python庫能夠幫助解釋模型的性能。

LIME

傳送門:https://github.com/marcotcr/lime

LIME是一種算法(庫),能夠解釋任何分類器或迴歸量的預測。LIME是如何作到的呢?經過可解釋的模型在局部不斷接近預測值,這個模型解釋器可用於生成任何分類算法的解釋。

img

安裝LIME很簡單:

pip install lime

下文將從整體上幫助開發LIME背後的直覺和模型可解釋性:

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

H2O

傳送門:https://github.com/h2oai/mli-resources

相信不少人都據說過H2O.ai,自動化機器學習的市場領導者。可是你知道其在Python中也有一個模型可解釋性庫嗎?

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

img

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

《機器學習可解釋性》傳送門:https://www.h2o.ai/wp-content/uploads/2018/01/Machine-Learning-Interpretability-MLI_datasheet_v4-1.pdf

img

用於音頻處理的Python庫

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

LibROSA

傳送門:https://librosa.github.io/librosa/

LibROSA是一個用於音樂和音頻分析的Python庫。它提供了建立音樂信息檢索系統所需的構建塊。

安裝指南傳送門:https://librosa.github.io/librosa/install.html

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

《利用深度學習開始音頻數據分析(含案例研究)》傳送門:https://www.analyticsvidhya.com/blog/2017/08/audio-voice-processing-deep-learning/

Madmom

傳送門:https://github.com/CPJKU/madmom

Madmom是一個用於音頻數據分析的很棒的Python庫。它是一個用Python編寫的音頻信號處理庫,主要用於音樂信息檢索(MIR)任務。

如下是安裝Madmom的必備條件:

· NumPy

· SciPy

· Cython

· Mido

如下軟件包用於測試安裝:

· PyTest

· Fyaudio

· PyFftw

安裝Madmom的代碼:

pip install madmom

下文可用以瞭解Madmom如何用於音樂信息檢索:

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

pyAudioAnalysis

傳送門:https://github.com/tyiannak/pyAudioAnalysis

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

· 對未知聲音進行分類

· 檢測音頻故障並排除長時間錄音中的靜音時段

· 進行監督和非監督的分割

· 提取音頻縮略圖等等

可使用如下代碼進行安裝:

pip install pyAudioAnalysis

img

img

用於圖像處理的Python庫

若是想要在數據科學行業有一番成就,那麼必須學習如何使用圖像數據。隨着系統可以收集愈來愈多的數據(主要得益於計算資源的進步),圖像處理愈來愈無處不在。

所以,請確保熟悉如下三個Python庫中的至少一個。

OpenCV-Python

傳送門:https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_setup/py_intro/py_intro.html

談到圖像處理,OpenCV首先浮如今腦海中。OpenCV-Python是用於圖像處理的Python API,結合了OpenCV C ++ API和Python語言的最佳特性。主要用於解決計算機視覺問題。

OpenCV-Python使用了上文提到的NumPy。全部OpenCV陣列結構都與NumPy數組相互轉換。這也使得與使用Numpy的其餘庫(如SciPy和Matplotlib)集成變得更加容易。

img

在系統中安裝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

傳送門:https://scikit-image.org/

Scikit-image是另外一個用於圖像處理的python庫,是用於執行多個不一樣圖像處理任務的算法集合。可用於圖像分割、幾何變換、色彩空間操做、分析、過濾,形態學、特徵檢測等等。

在安裝scikit-image前,請先安裝如下軟件包:

· Python(> = 3.5)

· NumPy(> = 1.11.0)

· SciPy(> = 0.17.0)

· joblib(> = 0.11)

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

pip install -U scikit-learn

img

Pillow

傳送門:https://pillow.readthedocs.io/en/stable/

Pillow是PIL(Python Imaging Library)的新版本。它是從PIL派生出來的,在一些Linux發行版(如Ubuntu)中被用做原始PIL的替代。

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

· 逐像素操做

· 掩模和透明處理

· 圖像過濾,例如模糊,輪廓,平滑或邊緣監測

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

· 在圖像上添加文字等等

安裝Pillow:

pip install Pillow

img

查看如下關於在計算機視覺中使用Pillow的AI漫畫:

《AI漫畫:Z.A.I.N —— 第二期:使用計算機視覺進行面部識別》傳送門:

https://www.analyticsvidhya.com/blog/2019/06/ai-comic-zain-issue-2-facial-recognition-computer-vision/

img

用於數據庫的Python庫

學習如何從數據庫存儲、訪問和檢索數據是數據科學家必備的技能。可是如何在不首先檢索數據的狀況下作到建模呢?

接下來介紹兩個與SQL相關的Python庫。

psycopg

傳送門:http://initd.org/psycopg/

img

Psycopg是Python編程語言中最流行的PostgreSQL(高級開源代碼關係數據庫)適配器。Psycopg的核心是徹底實現Python DB API 2.0規範。

目前的psycopg2實現支持:

· Python版本2.7

· Python 3版本(3.4到3.7)

· PostgreSQL服務器版本(7.4到11)

· PostgreSQL客戶端庫版本(9.1以上)

如下是安裝psycopg2的方法:

pip install psycopg2

SQLAlchemy

傳送門:https://www.sqlalchemy.org/

SQL是最流行的數據庫語言。SQLAlchemy是pythonSQL工具包和對象關係映射器,它爲應用程序開發人員提供了SQL的所有功能,且極具靈活性。

img

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

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

pip install SQLAlchemy

img

用於部署的Python庫

你知道哪些模型部署?部署模型意味着將最終模型放入最終應用程序(技術上稱爲生產環境)。

Flask

傳送門:http://flask.pocoo.org/docs/1.0/

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

· Werkzeug:Python編程語言的實用程序庫

· Jinja:Python的模板引擎

img

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

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
    return "HelloWorld!"
if __name__ == "__main__":
    app.run()

如下文章是學習Flask的良好開端:

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

img

持續更新

相關文章
相關標籤/搜索