數據科學中一些不常用但很有用的Python庫
導讀
提到數據科學的python包,大家想到的估計是numpy,pandas,scikit-learn之類的,這里給大家介紹一些不常用,但是非常有用的python包,就像是癢癢撓,雖然大部分時間用不上,但是真要用起來,還是挺爽的。
Python是個了不起的語言。事實上,這是世界上發展最快的語言之一(感覺沒有之一,就是最快的)。在數據科學領域和開發領域,一次又一次的為我們提供便利。整個Python的生態和庫使之成為所有用戶都適用(初學者和高級用戶)。Python之所以這么成功,原因之一就在于它的庫,讓Python變得靈活快速。
這篇文章中,我們會看一些不太常用的數據科學的庫,除了pandas,scikit-learn,matplotlib等。盡管說到數據科學,我們想到的就是pandas和scikit-learn,了解一下其他的python的庫也沒什么壞處。下面就是另外一些數據科學中可能會用到的Python庫。
Wget
從網絡獲取數據是Python科學家非常重要的任務。Wget是一個免費的工具,可以從Web上非交互式的下載文件,支持HTTP, HTTPS, 和 FTP協議,同樣支持HTTP代理。由于是非交互式的,所以可以后臺運行,用戶沒有登錄也可以。所以下次你需要從網上下載圖片的時候,可以試試wget。
安裝:
- $ 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'
Pendulum
這個是干啥的呢,你在處理日期時間的時候搞得頭大的時候,Pendulum就很適合你,這包是用來簡化日期時間的操作的,具體使用可以看 這里 。
安裝:
- $ 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
imbalanced-learn
大多數的分類問題中,當所有的類別中的樣本的數量大致相同時,效果是最好的,也就是樣本均衡。但是在實際情況中,往往都是非均衡的數據,這往往會影響訓練的過程以及后面的預測。幸好,這個庫可以幫我們解決這個問題。這個和scikit-learn兼容,是scikit-learn-contrib的一部分。下次可以試試。
安裝:
- pip install -U imbalanced-learn
- # or
- conda install -c conda-forge imbalanced-learn
例子:
請參考文檔。
FlashText
在清洗NLP相關的數據的時候,往往需要替換一些關鍵詞或者提取一些關鍵詞。通常,可以用正則表達式來干這個活,不過正則條件的數量上千的時候,就會很頭大。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
名字聽起來怪怪的,不過在字符匹配的時候,用起來還是爽爽的。可以輕松的實現字符比例,token比例等。還可以在不同的數據集中進行匹配。
安裝:
- $ 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
PyFlux
時間序列的處理是機器學習領域經常遇到的問題。PyFlux就是專門用來處理時間序列問題的開源Python庫。這個庫里有一系列的時間序列模型如ARIMA, GARCH 和VAR 等。簡單來說,PyFlux提供了時間序列到概率的建模,值的一試。
安裝
- pip install pyflux
例子
參考這里 。
Ipyvolume
交流結果是數據科學的非常重要的方面。結果可視化是個非常重要的優勢。IPyvolume是個3D可視化庫,不過這還是在pre-1.0的階段,可以這樣類別一下, IPyvolume是對3維數據的可視化,matplotlib是對二維數據的可視化。具體可以看 這里。
安裝
- Using pip
- $ pip install ipyvolume
- Conda/Anaconda
- $ conda install -c conda-forge ipyvolume
例子
- 標記

- 渲染

Dash
這是個創建web應用的用戶生產的Python框架。基于Flask寫的,可以用來構建數據可視化的app,這些app可以在網絡瀏覽器上渲染。用戶手冊可見 這里.
安裝
- 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!)
例子

Gym
Gym來自OpenAI,用來做強化學習。兼容所有的數值計算庫,如TensorFlow,Theano等。這個庫提供了一個問題測試的環境,你可以用這個環境來實驗你的強化學習算法。這些環境共享界面,使你可以寫通用的算法。
安裝
- pip install gym
例子

結論
這是我選的一些有用但是不常用的python庫,如果你知道其他的話,可以繼續添加,別忘了先試試。