點(diǎn)擊上方“ Datawhal e ”,選擇“星標(biāo) ” 公眾號(hào)
第一時(shí)間獲取價(jià)值內(nèi)容
概述
-
這篇文章中,我們挑選了24個(gè)用于數(shù)據(jù)科學(xué)的Python庫(kù)。
-
這些庫(kù)有著不同的數(shù)據(jù)科學(xué)功能,例如數(shù)據(jù)收集,數(shù)據(jù)清理,數(shù)據(jù)探索,建模等,接下來(lái)我們會(huì)分類介紹。
-
您覺(jué)得我們還應(yīng)該包含哪些Python庫(kù)?讓我們知道!
介紹
我是Python語(yǔ)言的忠實(shí)粉絲,它是我在數(shù)據(jù)科學(xué)方面學(xué)到的第一門編程語(yǔ)言。Python有三個(gè)特點(diǎn):
-
它的易用性和靈活性
-
全行業(yè)的接受度:它是業(yè)內(nèi)最流行的數(shù)據(jù)科學(xué)語(yǔ)言
-
用于數(shù)據(jù)科學(xué)的龐大數(shù)量的Python庫(kù)
事實(shí)上,有如此多的Python庫(kù),要跟上它們的發(fā)展速度可能會(huì)變得非常困難。這就是為什么我決定消除這種痛苦,并編輯這24個(gè)Python庫(kù)。換句話說(shuō),在數(shù)據(jù)科學(xué)領(lǐng)域,你掌握這個(gè)24個(gè)python庫(kù)就夠了!
那是對(duì)的 - 我根據(jù)各自在數(shù)據(jù)科學(xué)中的角色對(duì)這些庫(kù)進(jìn)行了分類。所以我提到了用于數(shù)據(jù)清理,數(shù)據(jù)操作,可視化,構(gòu)建模型甚至模型部署(以及其他)的庫(kù)。這是一個(gè)非常全面的列表,可幫助您開(kāi)始使用Python進(jìn)行數(shù)據(jù)科學(xué)之旅。
用于不同數(shù)據(jù)科學(xué)任務(wù)的Python庫(kù):
用于數(shù)據(jù)收集的Python庫(kù):
-
Beautiful Soup
-
Scrapy
-
Selenium
用于數(shù)據(jù)清理和操作的Python庫(kù):
-
Pandas
-
PyOD
-
NumPy
-
Spacy
用于數(shù)據(jù)可視化的Python庫(kù):
-
Matplotlib
-
Seaborn
-
Bokeh
用于建模的Python庫(kù):
-
Scikit-learn
-
TensorFlow
-
PyTorch
用于模型可解釋性的Python庫(kù):
-
Lime
-
H2O
用于音頻處理的Python庫(kù):
-
Librosa
-
Madmom
-
pyAudioAnalysis
用于圖像處理的Python庫(kù):
-
OpenCV-Python
-
Scikit-image
-
Pillow
用于數(shù)據(jù)庫(kù)的Python庫(kù):
-
Psycopg
-
SQLAlchemy
用于部署的Python庫(kù):
-
Flask
用于數(shù)據(jù)收集的Python庫(kù)
您是否遇到過(guò)一種情況,即您沒(méi)有足夠的數(shù)據(jù)來(lái)解決您想要解決的問(wèn)題?這是數(shù)據(jù)科學(xué)中一個(gè)永恒的問(wèn)題。這就是為什么學(xué)習(xí)如何提取和收集數(shù)據(jù)對(duì)數(shù)據(jù)科學(xué)家來(lái)說(shuō)是一項(xiàng)非常關(guān)鍵的技能。它開(kāi)辟了以前無(wú)法實(shí)現(xiàn)的途徑。
所以這里有三個(gè)有用的Python庫(kù),用于提取和收集數(shù)據(jù)。
/* Beautiful?Soup */ 收集數(shù)據(jù)的最佳方法之一是抓取網(wǎng)站(當(dāng)然是道德和合法的!)。手動(dòng)完成需要花費(fèi)太多的手動(dòng)工作和時(shí)間。美麗的湯是你的救星。
Beautiful Soup是一個(gè)HTML和XML解析器,它為解析的頁(yè)面創(chuàng)建解析樹(shù),用于從網(wǎng)頁(yè)中提取數(shù)據(jù)。從網(wǎng)頁(yè)中提取數(shù)據(jù)的過(guò)程稱為網(wǎng)絡(luò)抓取。
使用以下代碼安裝BeautifulSoup:
pip?install?beautifulsoup4
這是一個(gè)實(shí)現(xiàn)Beautiful Soup的簡(jiǎn)單代碼,用于從HTML中提取所有anchor標(biāo)記:
#!/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',?'/'))
我建議通過(guò)以下文章來(lái)學(xué)習(xí)如何在Python中使用BeautifulSoup:
-
使用BeautifulSoup在Python中進(jìn)行Web Scraping的初學(xué)者指南
(https://www.analyticsvidhya.com/blog/2015/10/beginner-guide-web-scraping-beautiful-soup-python/)
/*? Scrapy ?*/
這是安裝Scrapy的代碼:
pip?install?scrapy
它是大規(guī)模網(wǎng)絡(luò)抓取的框架。它為您提供了有效提取網(wǎng)站數(shù)據(jù),根據(jù)需要處理數(shù)據(jù)并將其存儲(chǔ)在首選結(jié)構(gòu)和格式中所需的所有工具。
這是一個(gè)實(shí)現(xiàn)Scrapy的簡(jiǎn)單代碼:
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)
這是學(xué)習(xí)Scrapy并在Python中實(shí)現(xiàn)它的完美教程:
-
使用Scrapy在Python中進(jìn)行Web Scraping(有多個(gè)示例)
(https://www.analyticsvidhya.com/blog/2017/07/web-scraping-in-python-using-scrapy/)
/*? Selenium ?*/
我們可以輕松地編寫Python腳本以使用Selenium自動(dòng)化Web瀏覽器。它為我們有效地提取數(shù)據(jù)并以我們喜歡的格式存儲(chǔ)數(shù)據(jù),以供將來(lái)使用。
我最近寫了一篇關(guān)于使用Python和Selenium抓取YouTube視頻數(shù)據(jù)的文章:
-
數(shù)據(jù)科學(xué)項(xiàng)目:使用Python和Selenium對(duì)YouTube數(shù)據(jù)進(jìn)行刮擦以對(duì)視頻進(jìn)行分類
(https://www.analyticsvidhya.com/blog/2019/05/scraping-classifying-youtube-video-data-python-selenium/)
用于數(shù)據(jù)清理和操作的Python庫(kù)
好吧 - 所以你已經(jīng)收集了你的數(shù)據(jù)并準(zhǔn)備好潛入。現(xiàn)在是時(shí)候清理我們可能面臨的任何混亂數(shù)據(jù)并學(xué)習(xí)如何操作它,以便我們的數(shù)據(jù)可以用于建模。
這里有四個(gè)Python庫(kù)可以幫助您實(shí)現(xiàn)這一目標(biāo)。請(qǐng)記住,我們將處理現(xiàn)實(shí)世界中的結(jié)構(gòu)化(數(shù)字)和文本數(shù)據(jù)(非結(jié)構(gòu)化) - 這個(gè)庫(kù)列表涵蓋了所有這些。
/* Pandas */ 在數(shù)據(jù)處理和分析方面,沒(méi)有什么能比pandas更勝一籌。它是現(xiàn)階段最流行的Python庫(kù)。Pandas是用Python語(yǔ)言編寫的,特別適用于操作和分析任務(wù)。
Pandas需要預(yù)先安裝Python或Anaconda,這里是需要的代碼:
pip?install?pandas
Pandas提供的功能如下:
-
數(shù)據(jù)集加入和合并
-
數(shù)據(jù)結(jié)構(gòu)列刪除和插入
-
數(shù)據(jù)過(guò)濾
-
重塑數(shù)據(jù)集
-
DataFrame對(duì)象操縱數(shù)據(jù)等等!
這是一篇文章和一個(gè)很棒的備忘單,讓你的pandas技能達(dá)到最佳狀態(tài):
-
12用于數(shù)據(jù)操作的Python中有用的熊貓技術(shù)
(https://www.analyticsvidhya.com/blog/2016/01/12-pandas-techniques-python-data-manipulation/)
-
CheatSheet:使用Python中的Pandas進(jìn)行數(shù)據(jù)探索
(https://www.analyticsvidhya.com/blog/2015/07/11-steps-perform-data-analysis-pandas-python/)
/* PyOD */
別擔(dān)心,PyOD庫(kù)可以幫到您。
PyOD是一個(gè)全面且可擴(kuò)展的Python工具包,用于檢測(cè)外圍對(duì)象。異常檢測(cè)基本上是識(shí)別與大多數(shù)數(shù)據(jù)顯著不同的稀有項(xiàng)目或觀察。
您可以使用以下代碼下載pyOD:
pip?install?pyod
-
使用PyOD庫(kù)在Python中學(xué)習(xí)異常檢測(cè)的一個(gè)很棒的教程
(https://www.analyticsvidhya.com/blog/2019/02/outlier-detection-python-pyod/)
/* NumPy */
NumPy是一個(gè)開(kāi)源庫(kù),有多個(gè)貢獻(xiàn)者。它預(yù)先安裝了Anaconda和Python,這里是安裝它的代碼:
pip?install?numpy
# 創(chuàng)建數(shù)組
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 */ 到目前為止,我們已經(jīng)討論了如何清理和操作數(shù)值數(shù)據(jù)。但是,如果你正在處理文本數(shù)據(jù)呢?
spaCy是一個(gè)超級(jí)有用且靈活的自然語(yǔ)言處理(NLP)庫(kù)和框架,用于清理文本文檔以進(jìn)行模型創(chuàng)建。與用于類似任務(wù)的其他庫(kù)相比,SpaCy更快。
在Linux中安裝Spacy的代碼:
pip install -U spacy
python?-m?spacy download?en
要在其他操作系統(tǒng)上安裝它,請(qǐng)參考此鏈接(https://spacy.io/usage/)。
-
自然語(yǔ)言處理變得輕松 - 使用SpaCy(在Python中)
用于數(shù)據(jù)可視化的Python庫(kù)
下一個(gè)是什么?我在整個(gè)數(shù)據(jù)科學(xué)最喜歡的方面 - 數(shù)據(jù)可視化!數(shù)據(jù)可視化后,我們的假設(shè)將得到直觀的驗(yàn)證!
這里有三個(gè)用于數(shù)據(jù)可視化的很棒的Python庫(kù)。
/* Matplotlib */ Matplotlib是Python中最流行的數(shù)據(jù)可視化庫(kù)。它允許我們生成和構(gòu)建各種圖表。它可以與Seaborn一起使用。
您可以通過(guò)以下代碼安裝matplotlib:
pip?install?matplotlib
以下是我們可以使用matplotlib構(gòu)建的不同類型的圖表的幾個(gè)示例:
# 直方圖
%matplotlib inline
import?matplotlib.pyplot?as?plt
from?numpy.random?import?normal
x = normal(size=100)
plt.hist(x, bins=20)
plt.show()
# 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()
既然我們已經(jīng)介紹了Pandas,NumPy和現(xiàn)在的matplotlib,請(qǐng)查看下面的教程,將這三個(gè)Python庫(kù)網(wǎng)格化:
-
使用NumPy,Matplotlib和Pandas在Python中進(jìn)行數(shù)據(jù)探索的終極指南
/* Seaborn */ Seaborn是另一個(gè)基于matplotlib的繪圖庫(kù)。它是一個(gè)python庫(kù),提供高級(jí)界面來(lái)繪制有吸引力的圖形。matplotlib可以做什么,Seaborn只是以更具視覺(jué)吸引力的方式做到這一點(diǎn)。
Seaborn的一些功能是:
-
面向數(shù)據(jù)集的API,用于檢查多個(gè)變量之間的關(guān)系
-
方便地查看復(fù)雜數(shù)據(jù)集的整體結(jié)構(gòu)
-
用于選擇顯示數(shù)據(jù)中圖案的調(diào)色板的工具
您只需使用一行代碼即可安裝Seaborn:
pip?install?seaborn
讓我們通過(guò)一些很酷的圖表來(lái)看看seaborn能做什么:
import?seaborn?as?sns
sns.set()
tips = sns.load_dataset("tips")
sns.relplot(x="total_bill", y="tip", col="time",
hue="smoker", , size="size",
data=tips);
這是另一個(gè)例子:
import?seaborn?as?sns
sns.catplot(x="day", y="total_bill", hue="smoker",
kind="violin", split=True, data=tips);
/* Bokeh?*/ Bokeh是一個(gè)交互式可視化庫(kù),面向現(xiàn)代Web瀏覽器進(jìn)行演示。它為大量數(shù)據(jù)集提供了多種圖形的優(yōu)雅構(gòu)造。
Bokeh可用于創(chuàng)建交互式圖表,儀表板和數(shù)據(jù)應(yīng)用程序。安裝代碼:
pip?install?bokeh
-
使用Bokeh進(jìn)行交互式數(shù)據(jù)可視化(在Python中)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
