摘要: 這些python庫真「冷」,但真的很強大!javascript
Python是一種神奇的語言。事實上,它是近幾年世界上發展最快的編程語言之一,它一次又一次證實了它在開發工做和數據科學立場各行業的實用性。整個Python系統和庫是對於世界各地的用戶(不管是初學者或者高級)都是一個恰當的選擇。其成功和受歡迎的緣由之一是它強大的庫,這些庫使其具備動態性和快速性。html
在本文中,咱們將看到一些除了經常使用的像pandas、scikit-learn、 matplotlib以外的數據科學任務的Python庫。雖然一看見像pandas,scikit-learn這些庫就讓人腦子浮現出機器學習任務,但瞭解並學習這個領域的其餘python庫總歸是有益的。java
一、Wgetpython
從網頁提取數據是數據科學家的重要任務之一。Wget是一個免費的非交互性的從網上下載文件的實用工具。它支持HTTP、HTTPS和FTP協議,以及經過HTTP代理檢索。由於它是非交互性的,因此即便用戶沒有登陸,也能夠在後臺工做。因此下次你想下載一個網站或頁面的圖片,wget能夠幫助你。git
安裝:github
$ pip install wget
例子:正則表達式
import wget url = 'http://www.futurecrew.com/skaven/song_files/mp3/razorback.mp3' filename =wget.download(url) 100% [................................................] 3841532 / 3841532filename 'razorback.mp3'
二、Pendulum算法
對於那些在python中使用日期時間感到沮喪的,可使用Pendulum。它是一個python包,能夠緩解日期時間操做,是一個python的原生類替代。若是想深刻了解請參考該文檔。數據庫
安裝:編程
$ pip install pendulum
例子:
import pendulum dt_toronto = pendulum.datetime(2012, 1, 1, tz='America/Toronto') dt_vancouver =pendulum.datetime(2012, 1, 1, tz='America/Vancouver')print(dt_vancouver.diff(dt_toronto).in_hours()) 3
我看到過大多數分類算法效果,每一個類的樣本數量幾乎是相同的,如balanced。可是現實生活狀況下大部分是不平衡數據集,它會影響學習階段和隨後的機器學習算法的預測。幸運的是,建立了這個imbalanced庫來解決這個問題。它兼容了scikit-learn而且是scikit-learn-contrib項目的一部分。當下次遇到不平衡數據集,能夠嘗試使用這個庫。
安裝:
pip install -U imbalanced-learn #or conda install -c conda-forge imbalanced-learn
例子:
用法和例子請參考文檔。
NLP任務中清理文本數據經常須要在句子中換關鍵字或從句子中提取關鍵字。一般,這些操做能夠用正則表達式來完成,但若是搜索方面遇到了數以千計的數量,可能會成爲麻煩。Python的FlashText模塊,該模塊基於FlashText算法提供了恰當的替代等狀況。FlashText最好的部分是運行時間與搜索詞的數量無關,你能夠在這裏瞭解更多。
安裝:
$ pip install flashtext
例子:
提取關鍵字
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']
替代關鍵字
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.'
這個名字聽起來確實很奇怪,但在處理字符串匹配時,fuzzywuzzy是一個很是有用的庫,能夠輕鬆實現操做,好比字符串比較比率,令牌比率等。它也方便匹配保存在不一樣數據庫的記錄。
安裝:
$ 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 repo找到更多有趣的例子。
六、PyFlux
時間序列分析是機器學習領域最多見的問題之一。PyFlux是一個在Python中爲了時間序列問題而創建的開源庫。該庫有一個良好的現代時間序列模型包括但不限於ARIMA、GARCH和VAR模型。簡而言之,PyFlux針對時間序列建模提供了一種機率方法,值得一試。
安裝:
pip install pyflux
例子:
用法例子請參考相關文檔。
結果可視化是數據科學的一個重要方面。可以可視化結果具備很大的優點。 IPyvolume是一個Python庫,只需最少的配置和精力就能夠在Jupyter notebook中可視化3d體積和字形(例如3d散點圖)。可是,它目前處於1.0以前的階段。一個很好的比喻是這樣的:IPyvolume的volshow是3d數組而matplotlib的imshow是2d數組。你能夠在這裏讀更多關於它的內容。
安裝:
Using pip $ pip install ipyvolume Conda/Anaconda $ conda install -c conda-forge ipyvolume
例子:
動畫
立體渲染
八、Dash
Dash是一個用於構建Web應用程序的高效Python框架。它寫在Flask,Plotly.js和React.js之上,並將現有的UI元素(以下拉列表,滑塊和圖形)與你的分析Python代碼聯繫起來,而無需使用javascript。Dash很是適合構建數據可視化應用程序,而後能夠在Web瀏覽器中呈現這些應用程序。用戶指南可在此處訪問。
安裝
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!)
例子
下面的示例顯示了下拉表的高度交互式圖形。當用戶在下拉列表中選擇一個值時,應用程序代碼會將Google財經中的數據動態導出到Pandas DataFram中。
九、Gym
OpenAI的Gym是一個用於開發和比較強化學習算法的工具包。它與任何數值計算庫兼容,如TensorFlow或Theano。Gym庫是測試問題的必要集合,也稱爲環境 – 你可使用它來訓練強化學習算法。這些環境具備共享接口,容許編寫通用算法。
安裝
pip install gym
例子
如下是運行環境CartPole-v0中1000個步驟的實例的例子,在每一個步驟渲染環境。
你能夠在這裏瞭解更多的環境。
結論
這些是我選的對於數據科學有用的python庫,而不是常見的如numpy,pandas等。若是你知道能夠添加到列表中的其餘庫,請在下面的評論中說起。別忘了嘗試一下。