轉載到請包括本文地址:http://spaces.ac.cn/archives/3902/
Python基本是我目前工作、計算、數據挖掘的唯一編程語言(除了符號計算用Mathematica外)。當然,基本的Python功能並不是很強大,但它勝在有巨量的第三方擴展庫。在選用Python的第三方庫時,我都會經過仔細考慮,希望能挑選出最簡單的、最直觀的一個(因為本人比較笨,太復雜用不了)。在數據處理方面,我用得最多的是Numpy和Pandas,這兩個絕對稱得上王者級別的庫,當然不能不提的是Scipy,但我很少直接用它,一般會通過Pandas間接調用了;可視化方面不用說是Matplotlib了;在建模方面,我會用Keras,直接上深度學習模型,Keras已經成為相當流行的深度學習框架了,如果做文本挖掘,通常還會用到jieba(分詞)、Gensim(主題建模,包含了諸如word2vec之類的模型),機器學習庫還有流行的Scikit Learn,但我很少用;網絡方面,寫爬蟲我用requests,這是個人性化的網絡庫,如果寫網站,我會用bottle,這是個單文件版的迷你框架,一切由自己定義,當然,我也不會去寫什么大型網站,我就寫一個簡單的的接口那樣而已;最后如果要並行的話,一般直接用multiprocessing。
不過,以上都不是本文要推薦的,本文要推薦的是兩個可以滲透到日常寫代碼的庫,它實現了我們平時很多時候都需要的功能,但是不用增加什么代碼,絕對讓人眼前一亮。
1. tqdm
tqdm的介紹用一張GIF就夠了。
說白了,它就是用來顯示進度條的,很漂亮,使用很直觀(在循環體里邊加個tqdm),而且基本不影響原程序效率。名副其實的“太強大美”了!這樣在寫運行時間很長的程序時,是該多么舒服啊!
2. retry
正如它的名字,retry是用來實現重試的。很多時候我們都需要重試功能,比如寫爬蟲的時候,有時候就會出現網絡問題導致爬取失敗,然后就需要重試了,一般我是這樣寫的(每隔兩秒重試一次,共5次):
import time def do_something(): xxx for i in range(5): try: do_something() break except: time.sleep(2)
這樣未免有些累贅。有了retry后,只需要。
from retry import retry @retry(tries=5, delay=2) def do_something(): xxx do_something()
也就是在函數的定義前,加一句@retry就行了。
Python果然是絕對省心~
轉載到請包括本文地址:http://spaces.ac.cn/archives/3902/