9 個鮮為人知的 Python 資料科學庫

2018-12-09 11:54:00

除了 pandas、scikit-learn 和 matplotlib,還要學習一些用 Python 進行資料科學的新技巧。

Python 是一種令人驚嘆的語言。事實上,它是世界上增長最快的程式語言之一。它一次又一次地證明了它在各個行業的開發者和資料科學者中的作用。Python 及其庫的整個生態系統使其成為全世界使用者的恰當選擇,無論是初學者還是高階使用者。它成功和受歡迎的原因之一是它的一組強大的庫,使它如此動態和快速。

在本文中,我們將看到 Python 庫中的一些資料科學工具,而不是那些常用的工具,如 pandas、scikit-learn 和 matplotlib。雖然像 pandas、scikit-learn 這樣的庫是機器學習中最常想到的,但是了解這個領域的其他 Python 庫也是非常有幫助的。

Wget

提取資料,尤其是從網路中提取資料,是資料科學家的重要任務之一。Wget 是一個免費的工具,用於從網路上非互動式下載檔案。它支援 HTTP、HTTPS 和 FTP 協定,以及通過 HTTP 代理進行存取。因為它是非互動式的,所以即使使用者沒有登入,它也可以在後台工作。所以下次你想下載一個網站或者網頁上的所有圖片,wget 會提供幫助。

安裝:

$ pip install wget

例子:

import wgeturl = 'http://www.futurecrew.com/skaven/song_files/mp3/razorback.mp3'filename = wget.download(url)100% [................................................] 3841532 / 3841532filename'razorback.mp3'

鐘擺

對於在 Python 中處理日期時間感到沮喪的人來說, Pendulum 庫是很有幫助的。這是一個 Python 包,可以簡化日期時間操作。它是 Python 原生類的一個替代品。有關詳細資訊,請參閱其文件

安裝:

$ pip install pendulum

例子:

import pendulumdt_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# orconda install -c conda-forge imbalanced-learn

例子:

有關用法和範例,請參閱其文件

FlashText

在自然語言處理(NLP)任務中清理文字資料通常需要替換句子中的關鍵詞或從句子中提取關鍵詞。通常,這種操作可以用正規表示式來完成,但是如果要搜尋的術語數達到數千個,它們可能會變得很麻煩。

Python 的 FlashText 模組,基於 FlashText 演算法,為這種情況提供了一個合適的替代方案。FlashText 的最佳部分是執行時間與搜尋項的數量無關。你可以在其 文件 中讀到更多關於它的資訊。

安裝:

$ pip install flashtext

例子:

提取關鍵詞:

from flashtext import KeywordProcessorkeyword_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 fuzzfrom fuzzywuzzy import process# 簡單的匹配率fuzz.ratio("this is a test", "this is a test!")97# 部分的匹配率 fuzz.partial_ratio("this is a test", "this is a test!") 100

更多的例子可以在 FuzzyWuzy 的 GitHub 倉庫得到。

PyFlux

時間序列分析是機器學習中最常遇到的問題之一。PyFlux 是 Python 中的開源庫,專門為處理時間序列問題而構建的。該庫擁有一系列優秀的現代時間序列模型,包括但不限於 ARIMA、GARCH 以及 VAR 模型。簡而言之,PyFlux 為時間序列建模提供了一種概率方法。這值得一試。

安裝:

pip install pyflux

例子:

有關用法和範例,請參閱其 文件

IPyvolume

交流結果是資料科學的一個重要方面,視覺化結果提供了顯著優勢。 IPyvolume 是一個 Python 庫,用於在 Jupyter 筆電中視覺化 3D 體積和形狀(例如 3D 散點圖),設定和工作量極小。然而,它目前處於 1.0 之前的階段。一個很好的類比是這樣的: IPyVolumee volshow 是 3D 陣列,Matplotlib 的 imshow 是 2D 陣列。你可以在其 文件 中讀到更多關於它的資訊。

安裝:

Using pip$ pip install ipyvolumeConda/Anaconda$ conda install -c conda-forge ipyvolume

例子:

動畫:

體繪製:

Dash

Dash 是一個用於構建 Web 應用程式的高效 Python 框架。它構建於 Flask、Plotty.js 和 Response.js 之上,將下拉式選單、滾軸和圖形等流行 UI 元素與你的 Python 分析程式碼聯絡起來,而不需要JavaScript。Dash 非常適合構建可在 Web 瀏覽器中呈現的資料視覺化應用程式。有關詳細資訊,請參閱其 使用者指南

安裝:

pip install dash==0.29.0  # The core dash backendpip install dash-html-components==0.13.2  # HTML componentspip install dash-core-components==0.36.0  # Supercharged componentspip install dash-table==3.1.3  # Interactive DataTable component (new!)

例子:

下面的範例顯示了一個具有下拉功能的高度互動的圖表。當使用者在下拉選單中選擇一個值時,應用程式程式碼將資料從 Google Finance 動態匯出到 Pandas 資料框架中。

Gym

OpenAI 而來的 Gym 是開發和比較強化學習演算法的工具包。它與任何數值計算庫相容,如 TensorFlow 或 Theano。Gym 是一個測試問題的集合,也稱為“環境”,你可以用它來制定你的強化學習演算法。這些環境有一個共用的介面,允許您編寫通用演算法。

安裝:

pip install gym

例子:

以下範例將在 CartPole-v0 環境中,執行 1000 次,在每一步渲染環境。

你可以在 Gym 網站上讀到 其它的環境

結論

這些是我挑選的有用但鮮為人知的資料科學 Python 庫。如果你知道另一個要新增到這個列表中,請在下面的評論中提及。

本文最初發表在 Analytics Vidhya 的媒體頻道上,並經許可轉載。