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

最全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)

分享創造快樂