數(shù)據(jù)處理一條龍!這15個Python庫不可不知
本文轉(zhuǎn)載自公眾號“讀芯術(shù)”(ID:AI_Discovery)
如果你是一名數(shù)據(jù)科學(xué)家或數(shù)據(jù)分析師,或者只是對這一行業(yè)感興趣,那下文中這些廣受歡迎且非常實用的Python庫你一定得知道。
從數(shù)據(jù)收集、清理轉(zhuǎn)化,到數(shù)據(jù)可視化、圖像識別和網(wǎng)頁相關(guān),這15個Python庫涵蓋廣泛,本文將對它們進行簡介。
想必其中一些你已經(jīng)熟知,但如果有不知道的,強烈建議你一定要好好了解一下。
數(shù)據(jù)收集
大部分?jǐn)?shù)據(jù)分析項目都始于數(shù)據(jù)收集和提取。在一些情況下,當(dāng)為公司處理現(xiàn)存問題時,公司可能會提供相關(guān)的數(shù)據(jù)組。但有些時候,可能并沒有現(xiàn)成的數(shù)據(jù),需要數(shù)據(jù)工程師自行收集。最常見的情況就是,數(shù)據(jù)工程師需要從網(wǎng)上自行尋找數(shù)據(jù)。
1. Scrapy

要想編寫一個Python網(wǎng)絡(luò)爬蟲來從網(wǎng)頁上提取信息,Scrapy可能是大部分人第一個想到的Python庫。例如,使用者可以提取某城市所有餐廳的評論或是收集網(wǎng)購網(wǎng)站上某一種產(chǎn)品的所有評論。
對于該庫最常見的用法是利用它來識別出現(xiàn)在網(wǎng)站頁面上那些有趣的信息模式,無論這些信息是以URL的形式出現(xiàn)還是以XPath的形式出現(xiàn)。一旦理清了這些信息的模式,Scrapy就可以協(xié)助使用者自動提取所需信息,并將其整理為表格或JSON格式的數(shù)據(jù)結(jié)構(gòu)。
使用pip即可輕松安裝Scrapy。
2. Selenium

Selenium設(shè)計者的初衷是將其打造成一個自動網(wǎng)站測試框架,但開發(fā)者們發(fā)現(xiàn)將其用作網(wǎng)頁數(shù)據(jù)抓取工具的效果更佳。
使用者在感興趣的網(wǎng)站上已經(jīng)進行了交互行為之后,Selenium一般能派上用場。比如說,使用者可能需要在網(wǎng)站上注冊一個賬戶,登陸自己的賬戶,再點擊幾個按鈕或是鏈接才能找到自己想要的內(nèi)容。
上述鏈接被定義為JavaScript函數(shù)。在這一情況下,要應(yīng)用Scrapy或者Beautiful Soup可能都不是很便捷,但使用Selenium就可以輕而易舉地完成這一過程。
但應(yīng)當(dāng)注意,Selenium比普通的抓取庫運行速度要慢得多。這是因為Selenium會將Chrome這樣的瀏覽器初始化并模擬瀏覽器代碼定義的所有行為。
因此,在處理URL模式或Xpaths時,最好還是使用Scrapy或者Beautiful Soup,不到萬不得已不要使用Selenium。
3. BeautifulSoup

Beautiful Soup是另一個可以用來收集網(wǎng)站內(nèi)容的Python庫。業(yè)界普遍認(rèn)為,學(xué)習(xí)BeautifulSoup所需時間比學(xué)習(xí)Scrapy所需時間要短很多。除此之外,Beautiful Soup更適合應(yīng)用于規(guī)模相對較小的問題或一次性的任務(wù)。
Scrapy要求使用者開發(fā)自己的“爬蟲”并通過命令行進行操作,而使用Beautiful Soup只需將其功能導(dǎo)入計算機中并聯(lián)機使用即可。因此,使用者甚至可以將Beautiful Soup應(yīng)用于自己的Jupyternotebook。
數(shù)據(jù)清理和轉(zhuǎn)化
數(shù)據(jù)清理和轉(zhuǎn)化的重要意義無需贅述,已經(jīng)有很多出色的Python庫能夠完美地處理這一問題。筆者將選擇幾個作為數(shù)據(jù)科學(xué)家或分析師不可不知的進行簡要介紹。
4. Pandas
這里提Pandas可能有點多余了,只要是處理過數(shù)據(jù)的從業(yè)者,就不可能沒用過Pandas。
使用者可以運用Pandas操控處于Pandas數(shù)據(jù)框架內(nèi)的數(shù)據(jù)。Pandas還內(nèi)置巨量的函數(shù),幫助使用者進行數(shù)據(jù)轉(zhuǎn)換。
無需多言,要想學(xué)好Python,Pandas必不可少。
5. Numpy

無論是普通用戶,還是數(shù)據(jù)科學(xué)家和分析師,Numpy都和Pandas一樣,是一個不可或缺的Python庫。
Numpy將Python的對象列表拓展成了全面的多維度序列。同時,Numpy還內(nèi)置了海量的數(shù)學(xué)函數(shù),這些函數(shù)幾乎能滿足使用者所有的運算要求。通常情況下,使用者可以將Numpy序列用作矩陣并進行矩陣運算。
筆者認(rèn)為,大部分的數(shù)據(jù)科學(xué)家開始寫Python代碼時,第一步都是輸入以下內(nèi)容:
- import numpy as np
- import pandas as pd
因此,說以上兩個庫是Python使用者中最受歡迎的無可厚非。
6. Spacy

Spacy可能不像上兩個庫一樣名聲遠(yuǎn)揚。Numpy和Pandas主要用于處理數(shù)值型數(shù)據(jù)和結(jié)構(gòu)型數(shù)據(jù),而Spacy則能夠幫助使用者將自由文本轉(zhuǎn)化為結(jié)構(gòu)型數(shù)據(jù)。
Spacy是最受歡迎的自然語言處理庫之一。從購物網(wǎng)站上抓取了大量的產(chǎn)品評論后需要從中提取有用的信息才能對它們進行分析。Spacy含有大量的內(nèi)置功能,這些功能能對使用者的工作提供大量幫助。例如詞法分析器,已命名個體識別以及特定文本檢測。
Spacy還有一大亮點,即它支持多種語言版本。其官網(wǎng)上聲稱該庫提供超55種語言版本。
數(shù)據(jù)可視化
數(shù)據(jù)可視化是數(shù)據(jù)分析中不可或缺的環(huán)節(jié),只有將結(jié)果進行可視化處理才能對數(shù)據(jù)內(nèi)容進行解釋。
7. Matplotlib
圖源:scriptverse
Matplotlib是最全面的Python數(shù)據(jù)可視化庫。有人認(rèn)為Matplotlib的界面很難看,但筆者認(rèn)為,作為最基礎(chǔ)的Python數(shù)據(jù)可視化庫,Matplotlib能為使用者的可視化目標(biāo)提供最大的可能性。
使用JavaScript的開發(fā)者們也有各自偏好的可視化庫,但當(dāng)所處理的任務(wù)中涉及大量不被高級庫所支持的定制功能時,開發(fā)者們就必須用到D3.js。Matplotlib也是如此。
8. Plotly
圖源:pngitem
雖然筆者堅信要進行數(shù)據(jù)可視化,就必須得掌握Matplotlib,但大多數(shù)情況下讀者更愿意使用Plotly,因為使用Plotly只需要寫最少的代碼就能得出最多彩繽紛的圖像。
無論是想構(gòu)造一張3D表面圖,或是一張基于地圖的散點圖,又或是一張交互性動畫圖,Plotly都能在最短的時間內(nèi)滿足要求。
Plotly還提供一個表格工作室,使用者可以將自己的可視化上傳到一個在線存儲庫中以便未來進行編輯。
數(shù)據(jù)模塊化
從事模塊化的數(shù)據(jù)分析師通常會被稱為高級分析師。如今,機器學(xué)習(xí)已經(jīng)不是什么新鮮概念了。而Python通常被認(rèn)為是機器學(xué)習(xí)最常用的語言,因此也有大量出色的庫支持在Python中使用。
9. Scikit Learn
圖源:kindpng
在沉溺于“深度學(xué)習(xí)”之前,所有人都應(yīng)當(dāng)從使用Scikit Learn來開啟自己的機器學(xué)習(xí)之旅。Scikit Learn有六大主要模塊,功能如下:
- 數(shù)據(jù)預(yù)處理
- 維度縮減
- 數(shù)據(jù)回歸
- 數(shù)據(jù)分類
- 數(shù)據(jù)聚類分析
- 模型選擇
只要能用好Scikit Learn,就已經(jīng)算得上是一名優(yōu)秀的數(shù)據(jù)科學(xué)家了。
10. Tensorflow
Tensorflow是由谷歌推出的開源機器學(xué)習(xí)庫。它最受歡迎的功能便是Tensorboard上的數(shù)據(jù)流圖像。
Tensorboard是一個基于網(wǎng)頁自動生成的儀表盤,它將數(shù)據(jù)學(xué)習(xí)流和結(jié)果進行了可視化處理,這一功能對于排錯和展示都十分有用。
11. PyTorch
圖源:mattolpinski
PyTorch是由Facebook發(fā)布的一個開源庫,用作Python的公用機器學(xué)習(xí)框架。與Tensorflow相比,PyTorch的語句更加適用于Python。正因此,學(xué)習(xí)使用PyTorch也更加容易。
作為一個專注于深度學(xué)習(xí)的庫,PyTorch還具有非常豐富的應(yīng)用程序接口函數(shù)和內(nèi)置函數(shù)來協(xié)助數(shù)據(jù)科學(xué)家更加快捷地訓(xùn)練自己的深度學(xué)習(xí)模型。
音頻和圖像識別
機器學(xué)習(xí)不僅能夠處理數(shù)字,同時也能幫助處理音頻和圖像(視頻往往被認(rèn)為是很多幀圖像組合在一起)。因此處理這些多媒體數(shù)據(jù)時,上述機器學(xué)習(xí)庫遠(yuǎn)遠(yuǎn)不夠。
12. OpenCV
圖源:opencv
OpenCV是最常用的圖像和視頻識別庫。毫不夸張地說,OpenCV能讓Python在圖像和視頻識別領(lǐng)域完全替代Matlab。
OpenCV提供各種應(yīng)用程序接口,同時它不僅支持Python,還支持Java和Matlab。OpenCV出色的處理能力使其在計算機產(chǎn)業(yè)和學(xué)術(shù)研究中都廣受好評。
13. Librosa
圖源:github
Librosa是一個非常強大的音頻和聲音處理Python庫。Librosa可以用來從音頻段中提取各個部分,例如韻律,節(jié)奏以及節(jié)拍。
像Laplacia分割這樣極度復(fù)雜的算法,在使用了Librosa之后只需幾行代碼就能輕而易舉的運用。
網(wǎng)頁
Python在被廣泛運用于數(shù)據(jù)科學(xué)領(lǐng)域前,曾經(jīng)可是網(wǎng)頁開發(fā)領(lǐng)域的寵兒。因此也有很多用于網(wǎng)頁開發(fā)的庫。
14. Django
圖源:amsterdam
要想使用Python來開發(fā)一個網(wǎng)頁服務(wù)后端,Django一直都是不二之選。Django的設(shè)計理念便是,能用幾行代碼就建立一個網(wǎng)站的高級框架。
Django直接與大多數(shù)知名數(shù)據(jù)庫相連,這樣使用者就可以省下建立連接和數(shù)據(jù)模型開發(fā)的時間。Django的使用者只需專注于業(yè)務(wù)邏輯而不需擔(dān)心受創(chuàng)建、更新、讀取和刪除(Create,update,retrieve and delete, CURD)的操控,因為Django是一個由數(shù)據(jù)庫驅(qū)動的框架。
15. Flask
Flask是一個用于Python的輕量級網(wǎng)頁開發(fā)框架。其最寶貴的特點是能夠輕而易舉地進行能夠滿足任何需求的定制化處理。
有很多提供網(wǎng)站UI的知名Python庫和Python工具都是使用Flask構(gòu)建的,例如Plotly Dash和Airflow。這些網(wǎng)站之所以使用Flask,正是由于其輕量級的特點。
誠然,還有許多優(yōu)秀的Python庫應(yīng)當(dāng)被提及,但上述這些庫就足夠你研究好一陣子了。人生苦短,及時Python!





































