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

- 渲染

Dash
這是個創(chuàng)建web應用的用戶生產(chǎn)的Python框架?;贔lask寫的,可以用來構(gòu)建數(shù)據(jù)可視化的app,這些app可以在網(wǎng)絡瀏覽器上渲染。用戶手冊可見 這里.
安裝
- 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,用來做強化學習。兼容所有的數(shù)值計算庫,如TensorFlow,Theano等。這個庫提供了一個問題測試的環(huán)境,你可以用這個環(huán)境來實驗你的強化學習算法。這些環(huán)境共享界面,使你可以寫通用的算法。
安裝
- pip install gym
例子

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