概述
- 這篇文章中,我們挑選了24個用於數據科學的Python庫。
- 這些庫有著不同的數據科學功能,例如數據收集,數據清理,數據探索,建模等,接下來我們會分類介紹。
- 您覺得我們還應該包含哪些Python庫?讓我們知道!
介紹
我是Python語言的忠實粉絲,它是我在數據科學方面學到的第一門程式語言。Python有三個特點:
- 它的易用性和靈活性
- 全行業的接受度:它是業內最流行的數據科學語言
- 用於數據科學的龐大數量的Python庫
事實上,有如此多的Python庫,要跟上它們的發展速度可能會變得非常困難。這就是為什麼我決定消除這種痛苦,並編輯這24個Python庫。換句話說,在數據科學領域,你掌握這個24個python庫就夠了!
那是對的 - 我根據各自在數據科學中的角色對這些庫進行了分類。所以我提到了用於數據清理,數據操作,可視化,構建模型甚至模型部署(以及其他)的庫。這是一個非常全面的列表,可幫助您開始使用Python進行數據科學之旅。
用於不同數據科學任務的Python庫:
用於數據收集的Python庫:
- Beautiful Soup
- 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
用於數據收集的Python庫
您是否遇到過一種情況,即您沒有足夠的數據來解決您想要解決的問題?這是數據科學中一個永恆的問題。這就是為什麼學習如何提取和收集數據對數據科學家來說是一項非常關鍵的技能。它開闢了以前無法實現的途徑。
所以這裡有三個有用的Python庫,用於提取和收集數據。
/* Beautiful Soup */
收集數據的最佳方法之一是抓取網站(當然是道德和合法的!)。手動完成需要花費太多的手動工作和時間。美麗的湯是你的救星。
Beautiful Soup是一個HTML和XML解析器,它為解析的頁面創建解析樹,用於從網頁中提取數據。從網頁中提取數據的過程稱為網絡抓取。
使用以下代碼安裝BeautifulSoup:
pip install beautifulsoup4
這是一個實現Beautiful Soup的簡單代碼,用於從HTML中提取所有anchor標記:
#!/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中使用BeautifulSoup:
- 使用BeautifulSoup在Python中進行Web Scraping的初學者指南
- (https://www.analyticsvidhya.com/blog/2015/10/beginner-guide-web-scraping-beautiful-soup-python/)
/* Scrapy */
Scrapy是另一個用於Web抓取的超級有用的Python庫。它是一個開源和協作框架,用於從網站中提取您需要的數據。它使用起來快速而簡單。
這是安裝Scrapy的代碼:
pip install 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在Python中進行Web Scraping(有多個示例)
- (https://www.analyticsvidhya.com/blog/2017/07/web-scraping-in-python-using-scrapy/)
/* Selenium */
Selenium是一種用於自動化瀏覽器的流行工具。它主要用於行業測試,但對於網絡抓取也非常方便。實際上,Selenium在IT領域變得非常受歡迎,所以我相信很多人至少會聽說過它。
我們可以輕鬆地編寫Python腳本以使用Selenium自動化Web瀏覽器。它為我們有效地提取數據並以我們喜歡的格式存儲數據,以供將來使用。
我最近寫了一篇關於使用Python和Selenium抓取YouTube視頻數據的文章:
- 數據科學項目:使用Python和Selenium對YouTube數據進行刮擦以對視頻進行分類
- (https://www.analyticsvidhya.com/blog/2019/05/scraping-classifying-youtube-video-data-python-selenium/)
用於數據清理和操作的Python庫
好吧 - 所以你已經收集了你的數據並準備好潛入。現在是時候清理我們可能面臨的任何混亂數據並學習如何操作它,以便我們的數據可以用於建模。
這裡有四個Python庫可以幫助您實現這一目標。請記住,我們將處理現實世界中的結構化(數字)和文本數據(非結構化) - 這個庫列表涵蓋了所有這些。
/* Pandas */
在數據處理和分析方面,沒有什麼能比pandas更勝一籌。它是現階段最流行的Python庫。Pandas是用Python語言編寫的,特別適用於操作和分析任務。
Pandas需要預先安裝Python或Anaconda,這裡是需要的代碼:
pip install pandas
Pandas提供的功能如下:
- 數據集加入和合併
- 數據結構列刪除和插入
- 數據過濾
- 重塑數據集
- DataFrame對象操縱數據等等!
這是一篇文章和一個很棒的備忘單,讓你的pandas技能達到最佳狀態:
- 12用於數據操作的Python中有用的熊貓技術
- (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 */
在檢測異常值時苦苦掙扎?你不是一個人。這是有抱負(甚至已建立)數據科學家的常見問題。你如何定義異常值?
別擔心,PyOD庫可以幫到您。
PyOD是一個全面且可擴展的Python工具包,用於檢測外圍對象。異常檢測基本上是識別與大多數數據顯著不同的稀有項目或觀察。
您可以使用以下代碼下載pyOD:
pip install pyod
想了解PyOD如何工作以及如何自己實現?那麼,下面的指南將回答你所有的PyOD問題:
- 使用PyOD庫在Python中學習異常檢測的一個很棒的教程
- (https://www.analyticsvidhya.com/blog/2019/02/outlier-detection-python-pyod/)
/* NumPy */
像Pandas一樣,NumPy是一個非常受歡迎的Python庫。NumPy引入了支持大型多維數組和矩陣的函數。它還引入了高級數學函數來處理這些數組和矩陣。
NumPy是一個開源庫,有多個貢獻者。它預先安裝了Anaconda和Python,這裡是安裝它的代碼:
pip install 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 */
到目前為止,我們已經討論了如何清理和操作數值數據。但是,如果你正在處理文本數據呢?
spaCy是一個超級有用且靈活的自然語言處理(NLP)庫和框架,用於清理文本文檔以進行模型創建。與用於類似任務的其他庫相比,SpaCy更快。
在Linux中安裝Spacy的代碼:
pip install -U spacy
python -m spacy download en
要在其他作業系統上安裝它,請參考此連結(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/)
用於數據可視化的Python庫
下一個是什麼?我在整個數據科學最喜歡的方面 - 數據可視化!數據可視化後,我們的假設將得到直觀的驗證!
這裡有三個用於數據可視化的很棒的Python庫。
/* Matplotlib */
Matplotlib是Python中最流行的數據可視化庫。它允許我們生成和構建各種圖表。它可以與Seaborn一起使用。
您可以通過以下代碼安裝matplotlib:
pip install matplotlib
以下是我們可以使用matplotlib構建的不同類型的圖表的幾個示例:
# 直方圖
%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()
既然我們已經介紹了Pandas,NumPy和現在的matplotlib,請查看下面的教程,將這三個Python庫網格化:
- 使用NumPy,Matplotlib和Pandas在Python中進行數據探索的終極指南
- (https://www.analyticsvidhya.com/blog/2015/04/comprehensive-guide-data-exploration-sas-using-python-numpy-scipy-matplotlib-pandas/)
/* Seaborn */
Seaborn是另一個基於matplotlib的繪圖庫。它是一個python庫,提供高級介面來繪製有吸引力的圖形。matplotlib可以做什麼,Seaborn只是以更具視覺吸引力的方式做到這一點。
Seaborn的一些功能是:
- 面向數據集的API,用於檢查多個變量之間的關係
- 方便地查看複雜數據集的整體結構
- 用於選擇顯示數據中圖案的調色板的工具
您只需使用一行代碼即可安裝Seaborn:
pip install seaborn
讓我們通過一些很酷的圖表來看看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);
這是另一個例子:
import seaborn as sns
sns.catplot(x="day", y="total_bill", hue="smoker",
kind="violin", split=True, data=tips);
/* Bokeh */
Bokeh是一個交互式可視化庫,面向現代Web瀏覽器進行演示。它為大量數據集提供了多種圖形的優雅構造。
Bokeh可用於創建交互式圖表,儀錶板和數據應用程式。安裝代碼:
pip install bokeh
請閱讀以下文章,了解有關Bokeh的更多信息並查看其中的操作:
- 使用Bokeh進行交互式數據可視化(在Python中)
- (https://www.analyticsvidhya.com/blog/2015/08/interactive-data-visualization-library-python-bokeh/)