歡迎光臨
每天分享高質量文章

最全Python資料工具箱:標準庫、第三方庫和外部工具都在這裡了

導讀:Python資料工具箱涵蓋從資料源到資料視覺化的完整流程中涉及到的常用庫、函式和外部工具。其中既有Python內建函式和標準庫,又有第三方庫和工具。這些庫可用於檔案讀寫、網路抓取和解析、資料連線、數清洗轉換、資料計算和統計分析、影象和影片處理、音訊處理、資料挖掘/機器學習/深度學習、資料視覺化、互動學習和整合開發以及其他Python協同資料工作工具。

為了區分不同物件的來源和型別,本節將在描述中透過以下方法進行標識:

[Python內建函式]:Python自帶的內建函式。函式無需匯入,直接使用。例如要計算-3.2的絕對值,直接使用abs函式,方法是  abs(-3.2)  

[Python標準庫]:Python自帶的標準庫。Python標準庫無需安裝,只需要先透過import方法匯入便可使用其中的方法。例如匯入string模組,然後使用其中的find方法:

import string

string.find('abcde','b')

[第三方庫]:Python的第三方庫。這些庫需要先進行安裝(部分可能需要配置),具體方法參考“1.2.3 Python第三方庫”,然後透過import方法匯入便可使用其中的方法。

[外部工具]:非Python寫成的庫或包,用於Python資料工作的相關工具。

01 檔案讀寫

檔案的讀寫包括常見的txt、Excel、xml、二進位制檔案以及其他格式的資料文字,主要用於本地資料的讀寫。

/函式

描述

推薦度

open(name[, mode[, buffering]])

[Python內建函式]Python預設的檔案讀寫方法

★★★

numpy.loadtxt、numpy.load和numpy.fromfile

[第三方庫]Numpy自帶的讀寫函式,包括loadtxt、load和fromfile,用於文字、二進位制檔案讀寫

★★★

pandas.read_*

[第三方庫]Pandas自帶的read檔案方法,例如ead_csv、read_fwf、read_table等,用於文字、Excel、二進位制檔案、HDF5、表格、SAS檔案、SQL資料庫、Stata檔案等的讀寫

★★★

xlrd

[第三方庫]用於Excel檔案讀取

★★

xlwt

[第三方庫]用於Excel檔案寫入

★★

pyexcel-xl

[第三方庫]用於Excel檔案讀寫

★★

xluntils

[第三方庫]用於Excel檔案讀寫

★★

pyExcelerator

[第三方庫]用於Excel檔案讀寫

openpyxl

[第三方庫]用於Excel檔案讀寫

lxml

[第三方庫]xml和HTML讀取和解析

★★★

xml

[Python標準庫]xml物件解析和格式化處理

★★★

libxml2

[第三方庫]xml物件解析和格式化處理

xpath

[第三方庫]xml物件解析和格式化處理

★★

win32com

[第三方庫]有關Windows系統操作、Office(Word、Excel等)檔案讀寫等的綜合應用庫

02 網路抓取和解析

網路抓取和解析用於從網際網路中抓取資訊,並對HTML物件進行處理,有關xml物件的解析和處理的庫在“1.檔案讀寫”中找到。

/函式

描述

推薦度

requests

[第三方庫]網路請求庫,提供多種網路請求方法並可定義複雜的傳送資訊

★★★

urllib

[Python標準庫] Python自帶的庫,簡單的讀取特定URL並獲得傳回的資訊

★★

urllib2

[Python標準庫] Python自帶的庫,讀取特定URL並獲得傳回的資訊,相對於urllib可處理更多HTTP資訊,例如cookie、身份驗證、重定向等

★★

urlparse

[Python標準庫] Python自帶的URL解析庫,可自動解析URL不同的域、引數、路徑等

★★★

HTMLParser

[Python標準庫]Python自帶的HTML解析模組,能夠很容易的實現HTML檔案的分析

★★★

Scapy

[第三方庫]分散式爬蟲框架,可用於模擬使用者傳送、偵聽和解析並偽裝網路報文,常用於大型網路資料爬取

★★★

Beautiful Soup

[第三方庫]Beautiful Soup是網頁資料解析和格式化處理工具,通常配合Python的urllib、urllib2等庫一起使用

★★★

03 資料庫連線

資料庫連線可用於連線眾多資料庫以及訪問通用資料庫介面,可用於資料庫維護、管理和增、刪、改、查等日常操作。

/函式

描述

推薦度

mysql-connector-python

[第三方庫]MySQL官方驅動連線程式

★★★

MySQL-python

[第三方庫]MySQL連線庫

★★

cx_Oracle

[第三方庫]Oracle連線庫

★★★

psycopg2

[第三方庫]Python程式語言中非常受歡迎的PostgreSQL配接器

★★★

redis

[Python標準庫]Redis連線庫

★★★

pymongo

[第三方庫]MongoDB官方驅動連線程式

★★★

HappyBase

[第三方庫]HBase連線庫

★★★

py2neo

[第三方庫]Neo4j連線庫

★★★

cassandra-driver

[第三方庫] Cassandra(1.2+)和DataStax Enterprise(3.1+)連線庫

★★★

sqlite3

[Python標準庫] Python自帶的模組,用於操作SQLite資料庫

★★★

pysqlite2

[第三方庫] SQLite   3.x連線庫

★★

bsddb3

[第三方庫]Berkeley   DB連線庫

bsddb3

bsddb

[Python標準庫] Python自帶的模組,提供了一個到Berkeley DB庫的介面

★★

dbhash

[Python標準庫] Python自帶的模組,dbhash模組提供了使用BSD資料庫庫開啟資料庫的功能。該模組映象了提供對DBM樣式資料庫訪問的其他Python資料庫模組的介面。 bsddb模組需要使用dbhash

★★

adodb

[第三方庫] ADOdb是一個資料庫抽象庫,支援常見的資料和資料庫介面並可自行進行資料庫擴充套件,該庫可以對不同資料庫中的語法進行解析和差異化處理,具有很高的通用性

★★★

SQLObject

[第三方庫] SQLObject是一種流行的物件關係管理器,用於向資料庫提供物件介面,其中表為類、行為實體、列為屬性

★★

SQLAlchemy

[第三方庫] SQLAlchemy是Python SQL工具包和物件關係對映器,為應用程式開發人員提供了SQL的全部功能和靈活性控制

★★

ctypes

[第三方庫] ctypes是Python的一個外部庫,提供和C語言相容的資料型別,可以很方便地呼叫C DLL中的函式

★★★

pyodbc

[第三方庫] Python透過ODBC訪問資料庫的介面庫

★★★

Jython

[第三方庫] Python透過JDBC訪問資料庫的介面庫

★★★

04 資料清洗轉換

資料清洗轉換主用於資料正式應用之前的預處理工作。

/函式

描述

推薦度

frozenset([iterable])

[Python內建函式]傳回一個新的frozenset物件,可選擇從iterable取得的元素

★★★

int(x)

[Python內建函式]傳回x的整數部分

★★★

isinstance(object, classinfo)

[Python內建函式]傳回object是否是指定的classinfo實體資訊

★★★

len(s)

[Python內建函式]傳回物件的長度或專案數量

★★★

long(x)

[Python內建函式]傳回由字串或數字x構造的長整型物件

★★★

max(iterable[, key])

[Python內建函式]傳回一個可迭代或最大的兩個或多個引數中的最大項

★★★

min(iterable[, key])

[Python內建函式]傳回一個可迭代或最大的兩個或多個引數中的最小項

★★★

range(start, stop[, step])

[Python內建函式]用於與for迴圈一起建立迴圈串列,透過指定start(開始)、stop(結束)和step(步長)控制迭代次數並獲取迴圈值

★★★

raw_input(prompt)

[Python內建函式]捕獲使用者輸入並作為字串傳回(不推薦使用input作為使用者輸入的捕獲函式)

★★★

round(number[, ndigits])

[Python內建函式]傳回number小數點後ndigits位的四捨五入的浮點數

★★★

set([iterable])

[Python內建函式]傳回一個新的集合物件,可選擇從iterable獲取的元素

★★★

slice(start, stop[, step])

[Python內建函式]傳回表示由範圍(start、stop、step)指定的索引集的切片物件

★★

sorted(iterable[, cmp[, key[, reverse]]])

[Python內建函式]從iterable的項中傳回一個新的排序串列

★★★

xrange(start, stop[, step])

[Python內建函式]此函式與range()非常相似,但傳回一個xrange物件而不是串列

★★★

string

[Python標準庫]字串處理庫,可實現字串查詢、分割、組合、替換、去重、大小寫轉換及其他格式化處理

★★★

re

[Python標準庫]正則運算式模組,在文字和字串處理中經常使用

★★★

random

[Python標準庫]該模組為各種分佈實現偽隨機數生成器,支援資料均勻分佈、正態(高斯)分佈、對數正態分佈、負指數分佈、伽馬和β分佈等

★★★

os

[Python標準庫]用於新建、刪除、許可權修改、切換路徑等目錄操作,以及呼叫執行系統命令

★★★

os.path        

[Python標準庫]針對目錄的遍歷、組合、分割、判斷等操作,常用於資料檔案的判斷、查詢、合併

★★★

prettytable

[Python標準庫]格式化表格輸出模組

★★

json

[Python標準庫]Python物件與json物件的轉換

★★★

base64

[Python標準庫]將任意二進位制字串編碼和解碼為文字字串的Base16,Base32和Base64

★★★


05 資料計算和統計分析

資料計算和統計分析主要用於資料探查、計算和初步資料分析等工作。

/函式

描述

推薦度

numpy

[第三方庫]NumPy是Python科學計算的基礎工具包,很多Python資料計算工作庫都依賴它

★★★

scipy

[第三方庫]Scipy是一組專門解決科學和工程計算不同場景的主題工具包

★★★

pandas

[第三方庫]Pandas是一個用於Python資料分析的庫,它的主要作用是進行資料分析。Pandas提供用於進行結構化資料分析的二維的表格型資料結構DataFrame,類似於R中的資料框,能提供類似於資料庫中的切片、切塊、聚合、選擇子集等精細化操作,為資料分析提供了便捷

★★★

statsmodels

[第三方庫]Statsmodels是Python的統計建模和計量經濟學工具包,包括一些描述性統計、統計模型估計和統計測試,集成了多種線性回歸模型、廣義線性回歸模型、離散資料分佈模型、時間序列分析模型、非引數估計、生存分析、主成分分析、核密度估計以及廣泛的統計測試和繪圖等功能

★★★

abs(x)

[Python內建函式]傳回x的絕對值

★★★

cmp(x, y)

[Python內建函式]比較兩個物件x和y,並根據結果傳回一個整數。 如果x y則傳回值為正

★★

float(x)

[Python內建函式]傳回從數字或字串x構造的浮點數

★★★

pow(x, y[, z])

[Python內建函式]傳回x的y次冪。如果z存在,則傳回x的y次冪,模z

★★★

sum(iterable[, start])

[Python內建函式]從左到右依次迭代,傳回總和

★★★

math

[Python標準庫]數學函式庫,包括正弦、餘弦、正切、餘切、弧度轉換、對數運算、圓周率、絕對值、取整等數學計算方法

★★★

cmath

[Python標準庫]與math基本一致,區別是cmath運算的是複數

★★

decimal

[Python標準庫]10進位制浮點運算

★★

fractions

[Python標準庫]分數模組提供對有理數算術的支援

★★


06 自然語言處理和文字挖掘

自然語言處理和文字挖掘庫主要用於以自然語言文字為物件的資料處理和建模。

/函式

描述

推薦度

nltk

[第三方庫]NLTK是一個Python自然語言處理工具,它用於對自然語言進行分類、解析和語意理解。目前已經有超過50種語料庫和詞彙資源

★★★

pattern

[第三方庫]Pattern是一個網路資料挖掘Python工具包,提供了用於網路挖掘(如網路服務、網路爬蟲等)、自然語言處理(如詞性標註、情感分析等)、機器學習(如向量空間模型、分類模型等)、圖形化的網路分析模型

★★★

gensim

[第三方庫]Gensim是一個專業的主題模型(發掘文字中隱含主題的一種統計建模方法)Python工具包,用來提供可擴充套件統計語意、分析純文字語意結構以及檢索語意上相似的檔案

★★★

結巴分詞

[第三方庫]結巴分詞是國內流行的Python文字處理工具包,分詞樣式分為三種樣式:精確樣式、全樣式和搜尋引擎樣式,支援繁體分詞、自定義詞典等,是非常好的Python中文分詞解決方案,可以實現分詞、詞典管理、關鍵字抽取、詞性標註等

★★★

SnowNLP

[第三方庫]SnowNLP是一個Python寫的類庫,可以方便的處理中文文字內容。該庫是受到了TextBlob的啟發而針對中文處理寫的類庫,和TextBlob不同的是這裡沒有用NLTK,所有的演演算法都是自己實現的,並且自帶了一些訓練好的字典

★★

smallseg

[第三方庫] Smallseg是一個開源的、基於DFA的輕量級的中文分詞工具包。可自定義詞典、切割後傳回登入詞串列和未登入詞串列、有一定的新詞識別能力

★★

spaCy

[第三方庫] spaCy是一個Python自然語言處理工具包,它結合Python和Cython使得自然語言處理能力達到了工業強度

★★★

TextBlob

[第三方庫]TextBlob   是一個處理文字資料的Python庫,可用來做詞性標註、情感分析、文字翻譯、名詞短語抽取、文字分類等

★★

PyNLPI

[第三方庫] PyNLPI是一個適合各種自然語言處理任務的集合庫,可用於中文文字分詞、關鍵字分析等,尤其重要的是其支援中英文對映,支援UTF-8和GBK編碼的字串等

★★★


07 影象和影片處理

影象處理和影片處理主要適用於基於影象的操作、處理、分析和挖掘,如人臉識別、影象識別、標的跟蹤、影象理解等。

/函式

描述

推薦度

PIL

[第三方庫]PIL是一個常用的影象讀取、處理和分析的庫,提供了多種資料處理、變換的操作方法和屬性

★★

OpenCV

[第三方庫]OpenCV是一個強大的影象和影片工作庫。它提供了多種程式介面,支援跨平臺(包括移動端)應用。OpenCV的設計效率很高,它以最佳化的C / C ++編寫,庫可以利用多核處理。除了對影象進行基本處理外,還支援影象資料建模,並預製了多種影象識別引擎,如人臉識別

★★★

scikit-image

[第三方庫] scikit-image(也稱skimage)是一個影象處理庫,支援顏色樣式轉換、濾鏡、繪圖、影象處理、特徵檢測等多種功能

★★

imageop

[Python標準庫] Python自帶的函式,對影象基本操作,包括裁剪、縮放、樣式轉換

colorsys

[Python標準庫] Python自帶的函式,實現不同影象色彩樣式的轉換

imghdr

[Python標準庫] Python自帶的函式,傳回影象檔案的型別


08 音訊處理

音訊處理主要適用於基於聲音的處理、分析和建模,主要應用於語音識別、語音合成、語意理解等。

/函式

描述

推薦度

TimeSide

[第三方庫] TimeSide是一個能夠進行音訊分析、成像、轉碼、流媒體和標簽處理的Python框架,可以對任何音訊或影片內容非常大的資料集進行複雜的處理

★★★

audiolazy

[第三方庫]audiolazy是一個用於實時聲音資料流處理的庫,支援實時資料應用處理、無限資料序串列示、資料流表示等

★★

pydub

[第三方庫] pydub支援多種格式聲音檔案,可進行多種訊號處理(例如壓縮、均衡、歸一化)、訊號生成(例如正弦、方波、鋸齒等)、音效註冊、靜音處理等

★★★

audioop

[Python標準庫] Python自帶的函式,可實現對聲音片段的一些常用操作

★★

tinytag

[第三方庫] tinytag用於讀取多種聲音檔案的元資料,涵蓋MP3、OGG、OPUS、MP4、M4A、FLAC、WMA、Wave等格式

★★

aifc

[Python標準庫] Python自帶的函式,讀寫AIFF和AIFC檔案

sunau

[Python標準庫] Python自帶的函式,讀寫Sun AU檔案

wave

[Python標準庫] Python自帶的函式,讀寫WAV檔案

★★

chunk

[Python標準庫] Python自帶的函式,讀取EA IFF 85塊格式的檔案

sndhdr

[Python標準庫] Python自帶的函式,傳回聲音檔案的型別

ossaudiodev

[Python標準庫]該模組支援訪問OSS(開放聲音系統)音訊介面

★★★


09 資料挖掘/機器學習/深度學習

資料挖掘、機器學習和深度學習等是Python進行資料建模和挖掘學習的核心模組。

/函式

描述

推薦度

Scikit-Learn

[第三方庫]scikit-learn(也稱SKlearn)是一個基於Python的機器學習綜合庫,內建監督式學習和非監督式學習機器學習方法,包括各種回歸、聚類、分類、流式學習、異常檢測、神經網路、整合方法等主流演演算法類別,同時支援預置資料集、資料預處理、模型選擇和評估等方法,是一個非常完整、流行的機器學習工具庫

★★★

TensorFlow

[第三方庫]TensorFlow   是谷歌的第二代機器學習系統,內建深度學習的擴充套件支援,任何能夠用計算流圖形來表達的計算,都可以使用 TensorFlow

★★★

NuPIC

[第三方庫] NuPIC是一個以HTM(分層時間記憶)學習演演算法為工具的機器智慧平臺。NuPIC適合於各種各樣的問題,尤其適用於檢測異常和預測應用

★★★

Orange

[第三方庫] Orange透過圖形化操作介面,提供互動式資料分析功能,尤其適用於分類、聚類、回歸、特徵選擇和交叉驗證工作

★★★

theano

[第三方庫] Theano是非常成熟的深度學習庫。它與Numpy緊密整合,支援GPU計算、單元測試和自我驗證

★★★

keras

[第三方庫] Keras是一個用Python編寫的高階神經網路API,能夠執行在TensorFlow或者Theano之上,它的開發重點是實現快速實驗

★★

neurolab

[第三方庫] Neurolab是具有靈活網路配置和Python學習演演算法的基本神經網路演演算法庫。它包含透過遞迴神經網路(RNN)實現的不同變體,該庫是同類RNN API中最好的選擇之一

★★

PyLearn2

[第三方庫] PyLearn2是基於Theano的深度學習庫,它旨在提供極大的靈活性,並使研究人員可以進行自由可控制,引數和屬性的靈活、開放配置是亮點

★★★

OverFeat

[第三方庫] OverFeat是一個深度學習庫,主要用於圖片分類、定位物體檢測

★★

Pyevolve

[第三方庫] Pyevolve是一個完整的遺傳演演算法框架,也支援遺傳程式設計

★★

Caffe

[第三方庫] Cafffe是一個深度學習框架,主要用於計算機視覺,它對影象識別的分類具有很好的應用效果

★★


10 資料視覺化

資料視覺化主要用於做資料結果展示、資料模型驗證、圖形互動和探查等方面。

/函式

描述

推薦度

Matplotlib

[第三方庫] Matplotlib是Python的2D繪相簿,它以各種硬複製格式和跨平臺的互動式環境生成出版質量級別的圖形,開發者可以僅需要幾行程式碼,便可以生成多種高質量圖形

★★★

seaborn

[第三方庫] Seaborn是在Matplotlib的基礎上進行了更高階的API封裝,它可以作為Matplotlib的補充

★★

bokeh

[第三方庫] Bokeh是一種互動式視覺化庫,可以在WEB瀏覽器中實現美觀的視覺效果

★★★

Plotly

[第三方庫] Plotly提供的圖形庫可以進行線上WEB互動,並提供具有出版品質的圖形,支援線圖、散點圖、區域圖、條形圖、誤差條、框圖、直方圖、熱圖、子圖、多軸、極坐標圖、氣泡圖、玫瑰圖、熱力圖、漏斗圖等眾多圖形

★★★

VisPy

[第三方庫] VisPy是用於互動式科學視覺化的Python庫,旨在實現快速,可擴充套件和易於使用

★★

PyQtGraph

[第三方庫] PyQtGraph是一個建立在PyQt4 / PySide和numpy之上的純Python圖形和GUI庫,主要用於數學/科學/工程應用

★★

ggplot

[第三方庫] ggplot是用Python實現的圖形輸出庫,類似於 R中的圖形展示版本

★★★


11 互動學習和整合開發

互動學習和整合開發主要用來做Python開發、除錯和整合之用,包括Python整合開發環境和IDE。

/函式

描述

推薦度

IPython

[第三方庫]IPython   是一個基於Python 的互動式shell,比預設的Python shell 好用得多,支援變數自動補全、自動縮排、互動式幫助、魔法命令、系統命令等,內建了許多很有用的功能和函式

★★★

Elpy

[第三方庫] Elpy是Emacs用於Python的開發環境,它結合併配置了許多其他軟體包,它們都是用Emacs Lisp和Python編寫的

★★

PTVS

[第三方庫] Visual Studio 的 Python 工具

★★

PyCharm

[外部工具]PyCharm帶有一整套可以幫助使用者在使用Python語言開發時提高其效率的工具,比如除錯、語法高亮、專案管理、程式碼跳轉、智慧提示、自動完成、單元測試、版本控制並可整合IPython、系統終端命令列等,在PyCharm裡幾乎就可以實現所有有關Python工作的全部過程

★★★

LiClipse

[外部工具]   LiClipse是基於Eclipse的免費多語言 IDE,透過其中的PyDev可支援 Python開發應用

★★

Spyder

[外部工具] Spyder是一個開源的Python IDE,由IPython和眾多流行的Python庫的支援,是一個具備高階編輯、互動式測試、除錯以及數字計算環境的互動式開發環境

★★



12 其他Python協同資料工作工具

其他Python協同資料工作工具指除了上述主題以外,其他在資料工作中常用的工具或庫。

/函式

描述

推薦度

tesseract-ocr

[外部工具]這是一個Google支援的開源OCR圖文識別專案,支援超過200種語言(包括中文),並支援自定義訓練字符集,支援跨Windows、Linux、Mac OSX 多平臺使用

★★★

RPython

[第三方庫]R整合庫

★★★

matpython

[第三方庫]MATLAB整合庫

★★★

Lunatic Python

[第三方庫]Lua整合庫

★★

PyCall.jl

[第三方庫]Julia整合庫

★★

PySpark

[第三方庫] Spark提供的Python API

★★★

dumbo

[第三方庫] 這個模組可以讓Pythoner輕鬆的編寫和執行 Hadoop 程式,程式版本比較早,可以作為參考

★★

dpark

[第三方庫]Python對Spark的克隆版本,類MapReduce框架

★★

streamparse

[第三方庫] Streamparse允許透過Storm對實時資料流執行Python程式碼

★★★

關於作者:宋天龍(TonySong),資深大資料技術專家,歷任軟通動力集團大資料研究院資料總監、Webtrekk中國區技術和諮詢負責人、國美線上大資料中心經理。

本文摘編自《Python資料分析與資料化運營》,經出版方授權釋出。

延伸閱讀《Python資料分析與資料化運營

轉載請聯絡微信:togo-maruko

點選文末右下角“寫留言”發表你的觀點


推薦閱讀

用《復聯3》的豆瓣評分教會你正確使用條形圖、餅圖、漏斗模型

入門乾貨:從《權力的遊戲》戰鬥場景中搞懂資料抽樣和過濾

別被資料帶進溝裡:這才是應用資料的正確姿勢!

大資料沒用?!張小龍:我們很少看統計資料!

Q: 你都經常用哪些Python的庫?

歡迎留言與大家分享

覺得不錯,請把這篇文章分享給你的朋友

轉載 / 投稿請聯絡:baiyu@hzbook.com

更多精彩,請在後臺點選“歷史文章”檢視

點選閱讀原文,瞭解更多

贊(0)

分享創造快樂