讓你事半功倍的9個(gè)小眾Python庫
Python 是世界上發(fā)展最快的編程語言之一。它一次又一次地證明了自己在開發(fā)人員和跨行業(yè)的數(shù)據(jù)科學(xué)中的實(shí)用性。Python 及其機(jī)器學(xué)習(xí)庫的整個(gè)生態(tài)系統(tǒng)使全世界的用戶(無論新手或老手)都愿意選擇它。Python 成功和受歡迎的原因之一是存在強(qiáng)大的庫,這些庫使 Python ***創(chuàng)造力且運(yùn)行快速。然而,使用 Pandas、Scikit-learn、Matplotlib 等常見庫在解決一些特殊的數(shù)據(jù)問題時(shí)可能并不實(shí)用,本文介紹的這些非常見庫可能更有幫助。
1.WGET
提取數(shù)據(jù),特別是從網(wǎng)絡(luò)中提取數(shù)據(jù)是數(shù)據(jù)科學(xué)家的重要任務(wù)之一。Wget 是一個(gè)免費(fèi)的工具,用于以非交互式方式從 Web 上下載文件。它支持 HTTP、HTTPS 和 FTP 協(xié)議,通過 HTTP 代理進(jìn)行檢索。由于它是非交互式的,即使用戶沒有登錄,它也可以在后臺(tái)工作。所以,如果你想下載一個(gè)網(wǎng)站或一個(gè)頁面上的所有圖片,wget 會(huì)幫助你。
安裝:
- $ pip install wget
示例:
- import wget
- url = 'http://www.futurecrew.com/skaven/song_files/mp3/razorback.mp3'
- filename = wget.download(url)
- 100% [................................................] 3841532 / 3841532
- filename
- 'razorback.mp3'
2.Pendulum
對(duì)于那些在 python 中被處理datetimes困擾的人來說,Pendulum 是個(gè)好選擇。它是一個(gè) Python 包,用于簡(jiǎn)化 datetimes 操作。它是 Python「本機(jī)」類(native class)的代替。更多內(nèi)容,請(qǐng)參閱文檔:
https://um.eustace.io/docs/# installation。
安裝:
- $ pip install pendulum
示例:
- import wget
- url = 'http://www.futurecrew.com/skaven/song_files/mp3/razorback.mp3'
- filename = wget.download(url)
- 100% [................................................] 3841532 / 3841532
- filename
- 'razorback.mp3'
3.IMBALANCED-LEARN
可以看出,當(dāng)每個(gè)類的樣本數(shù)量相等即平衡時(shí),大多數(shù)分類算法的工作效果***。但現(xiàn)實(shí)生活中充滿了不平衡的數(shù)據(jù)集,這些數(shù)據(jù)集對(duì)機(jī)器學(xué)習(xí)的學(xué)習(xí)階段和后續(xù)預(yù)測(cè)都有影響。創(chuàng)建這個(gè)庫是為了解決這個(gè)問題。它與 scikit-learn 兼容,并且是 scikit-learn-contrib 項(xiàng)目的一部分。下次遇到不平衡的數(shù)據(jù)集時(shí),可以嘗試一下。
安裝:
- pip install -U imbalanced-learn
- # or
- conda install -c conda-forge imbalanced-learn
示例:
有關(guān)用法和示例,請(qǐng)參考:http://imbalancedlearn.org/en/stable/api.html。
4.FLASHTEXT
在 NLP 任務(wù)中,清理文本數(shù)據(jù)通常需要替換句子中的關(guān)鍵詞或從句子中提取關(guān)鍵詞。通常,這樣的操作可以用正則表達(dá)式來完成,但是如果要搜索的詞匯量過大,操作就會(huì)變得麻煩。Python 中基于 FlashText 算法的 FlashText 模塊,為這種情況提供了一個(gè)合適的替代方案。FlashText ***的優(yōu)點(diǎn)是搜索詞數(shù)量不影響運(yùn)行時(shí)長(zhǎng)。更多相關(guān)信息請(qǐng)見:https://flashtext.readthedocs.io/en/latest/#。
安裝:
- $ pip install flashtext
示例
提取關(guān)鍵詞:
- from flashtext import KeywordProcessor
- keyword_processor = KeywordProcessor()
- # keyword_processor.add_keyword(<unclean name>, <standardised name>)
- keyword_processor.add_keyword('Big Apple', 'New York')
- keyword_processor.add_keyword('Bay Area')
- keywords_found = keyword_processor.extract_keywords('I love Big Apple and Bay Area.')
- keywords_found
- ['New York', 'Bay Area']
替換關(guān)鍵詞:
- keyword_processor.add_keyword('New Delhi', 'NCR region')
- new_sentence = keyword_processor.replace_keywords('I love Big Apple and new delhi.')
- new_sentence
- 'I love New York and NCR region.'
更多使用示例,請(qǐng)參閱官方文檔。
5.FUZZYWUZZY
雖然名字聽起來很奇怪,但涉及到字符串匹配時(shí),fuzzywuzzy 是一個(gè)非常有用的庫,可以很容易地實(shí)現(xiàn)諸如字符串比較比率、token 比率等操作。對(duì)于匹配不同數(shù)據(jù)庫中的記錄也很方便。
安裝:
- $ pip install fuzzywuzzy
示例:
- from fuzzywuzzy import fuzz
- from fuzzywuzzy import process
- # Simple Ratio
- fuzz.ratio("this is a test", "this is a test!")
- 97
- # Partial Ratio
- fuzz.partial_ratio("this is a test", "this is a test!")
- 100
更多有趣的例子可以在 GitHub 上找到:https://github.com/seatgeek/fuzzywuzzy。
6.PYFLUX
時(shí)間序列分析是機(jī)器學(xué)習(xí)領(lǐng)域最常見的問題之一。PyFlux 是 Python 中為處理時(shí)間序列問題而創(chuàng)建的開源庫。該庫有一系列極好的時(shí)間序列模型,包括但不限于 ARIMA、 GARCH 和 VAR 模型。簡(jiǎn)而言之,PyFlux 提供了一個(gè)時(shí)間序列建模的概率方法。值得嘗試。
安裝:
- pip install pyflux
示例:
有關(guān)用法和示例,請(qǐng)參考:https://pyflux.readthedocs.io/en/latest/index.html。
7.IPYVOLUME
交流結(jié)果是數(shù)據(jù)科學(xué)的一個(gè)基本方面。能夠?qū)⒔Y(jié)果可視化是一個(gè)很大的優(yōu)勢(shì)。IPyvolume 是一個(gè)用于在 Jupyter notebook 中可視化 3d 體積和字形(如 3d 散點(diǎn)圖)的 Python 庫,只需少量配置即可。然而,它目前還處于前 1.0 版。IPyvolume 的 volshow 之于 3d 數(shù)組,就像 matplotlib 的 imshow 之于 2d 數(shù)組一樣。更多相關(guān)信息請(qǐng)見:https://ipyvolume.readthedocs.io/en/latest/?badge=latest。
安裝:
- Using pip
- $ pip install ipyvolume
- Conda/Anaconda
- $ conda install -c conda-forge ipyvolume
8.DASH
Dash 是一個(gè)用于構(gòu)建 web 應(yīng)用程序的高效 Python 框架。它寫在 Flask、Plotly.js 和 React.js 之上,將下拉列表、滑塊和圖形等 UI 元素與你的分析性 Python 代碼直接相連,無需 javascript。Dash 非常適合構(gòu)建數(shù)據(jù)可視化應(yīng)用程序。然后這些應(yīng)用程序可以在 web 瀏覽器中進(jìn)行渲染。用戶指南請(qǐng)見:https://dash.plot.ly/。
安裝:
- pip install dash==0.29.0 # The core dash backend
- pip install dash-html-components==0.13.2 # HTML components
- pip install dash-core-components==0.36.0 # Supercharged components
- pip install dash-table==3.1.3 # Interactive DataTable component (new!)
示例:
下圖示例顯示了具有下拉功能的高度交互圖。當(dāng)用戶在下拉列表中選擇一個(gè)值時(shí),應(yīng)用程序代碼會(huì)動(dòng)態(tài)地將 Google Finance 的數(shù)據(jù)導(dǎo)出為 Pandas DataFrame。資源:
https://gist.github.com/chriddyp/3d2454905d8f01886d651f207e2419f0。
9.GYM
來自 OpenAI 的 Gym 是一個(gè)開發(fā)和對(duì)比強(qiáng)化學(xué)習(xí)算法的工具包。它兼容于任何數(shù)值計(jì)算庫,如 TensorFlow 或 Theano。Gym 庫是一個(gè)測(cè)試問題的集合,也被稱為環(huán)境——可以用它來計(jì)算你的強(qiáng)化學(xué)習(xí)算法。這些環(huán)境有一個(gè)共享的接口,允許你寫通用算法。
安裝:
- pip install gym
示例:
運(yùn)行環(huán)境 CartPole-v0 的 1000 個(gè)時(shí)間步驟實(shí)例,在每個(gè)步驟渲染環(huán)境。
閱讀其他環(huán)境請(qǐng)見:https://gym.openai.com/。
結(jié)論
這些是作者為數(shù)據(jù)科學(xué)挑選的實(shí)用 python 庫,而非常見的 numpy、panda 等。值得一試。
原文鏈接:
https://medium.com/analytics-vidhya/python-libraries-for-data-science-other-than-pandas-and-numpy-95da30568fad
【本文是51CTO專欄機(jī)構(gòu)“機(jī)器之心”的原創(chuàng)譯文,微信公眾號(hào)“機(jī)器之心( id: almosthuman2014)”】