再見(jiàn) Jupyter Notebook, DataSpell 起飛!
如果 JupyterLab 和 PyCharm 有一個(gè)孩子,那么他一定是DataSpell,一個(gè)面向?qū)I(yè)數(shù)據(jù)科學(xué)家的專(zhuān)業(yè) IDE。
雖然 Pycharm 這樣的 IDE 非常強(qiáng)大,但它并不適用于數(shù)據(jù)科學(xué),因此大部分?jǐn)?shù)據(jù)科學(xué)家都會(huì)選擇使用富有交互性的 JupyterLab 或 Jupyter Notebook 作為常用 IDE。但在調(diào)試完整項(xiàng)目時(shí)又不得不切換回具有專(zhuān)業(yè)環(huán)境的PyCharm。
這樣屬實(shí)有點(diǎn)麻煩,直到我發(fā)現(xiàn)了 DataSpell。
什么是DataSpell?
Dataspell是專(zhuān)為數(shù)據(jù)科學(xué)家打造的集成開(kāi)發(fā)環(huán)境(IDE)。它由Jetbrains(IntelliJ Idea 和 PyCharm 背后的公司)開(kāi)發(fā),因此無(wú)需進(jìn)一步介紹。
DataSpell 具有我們期望從 Jupyter 中獲得的一些典型功能,例如命令模式、編輯器模式、單元格導(dǎo)航、筆記本快捷方式和交互式輸出。
也就是說(shuō),對(duì)于專(zhuān)業(yè)數(shù)據(jù)科學(xué)家來(lái)說(shuō),這是一個(gè)更強(qiáng)大的專(zhuān)業(yè) IDE。這就是為什么我更喜歡 DataSpell 而不是 Jupyter Notebook(和 Pycharm)的原因之一了。
以下是 IDE 提供的內(nèi)容:
- 原生筆記本體驗(yàn)——如果你使用過(guò) Jupyter,將會(huì)有賓至如歸的感覺(jué)。
- 智能編碼輔助——就像 Jupyter 和 PyCharm 生了一個(gè)孩子一樣。
- Markdown 和 JavaScript — 根據(jù)需要設(shè)置筆記本的樣式并嵌入數(shù)據(jù)可視化。
- 交互式 shell — REPL 控制臺(tái) + 語(yǔ)法檢查。
SQL 數(shù)據(jù)庫(kù)支持——連接到數(shù)據(jù)庫(kù)、直觀地檢查數(shù)據(jù)、導(dǎo)入/導(dǎo)出數(shù)據(jù)等。
一睹為快
如果你使用過(guò)PyCharm,那么這個(gè)外觀和感覺(jué)都會(huì)很熟悉。
創(chuàng)建第一個(gè)Notebook
該過(guò)程幾乎與任何其他 Jetbrains 產(chǎn)品相同。單擊根目錄并轉(zhuǎn)到New — Jupyter Notebook
并命名為 first_notebook.ipynb
創(chuàng)建筆記本時(shí),可能已經(jīng)看到創(chuàng)建 R 腳本和Julia文件的選項(xiàng)。其實(shí)Dataspell 不僅支持Python ,還同時(shí)支持 R 和 Julia。
使用基本的 Python 數(shù)據(jù)科學(xué)庫(kù)測(cè)試
Numpy 數(shù)組和 Pandas DataFrame
與 DataFrame 的良好交互性
當(dāng)將 DataFrame 顯示為輸出時(shí),與其他 Notebook 編輯器不同,當(dāng) DataFrame 很大時(shí),DataSpell 可以顯示整個(gè) DataFrame 而不會(huì)屏蔽某些數(shù)據(jù)。當(dāng) DataFrame 較大時(shí),DataSpell 會(huì)自動(dòng)添加一個(gè)滾動(dòng)條,讓你可以滾動(dòng)查看整個(gè)數(shù)據(jù)集。
同時(shí),可以通過(guò)單擊列名輕松對(duì)數(shù)據(jù)進(jìn)行排序,這將使用該列按升序或降序?qū)?DataFrame 進(jìn)行排序(如果單擊兩次)。
如果要在單個(gè)框架中查看更多數(shù)據(jù),可以選擇在單獨(dú)的選項(xiàng)卡中打開(kāi) DataFrame。
Matplotlib 繪圖
出色的智能編碼輔助
Jupyter Notebook 的一個(gè)缺點(diǎn)是它的編碼輔助,雖然可以打開(kāi)擴(kuò)展 “hinterland”啟用自動(dòng)補(bǔ)全,但效果不佳。
如果按下“tab”按鈕,它有時(shí)會(huì)再次寫(xiě)入整個(gè)變量名稱(chēng),而不是僅完成名稱(chēng)的其余部分,有時(shí)甚至?xí)詣?dòng)完成單詞,甚至無(wú)須按 Enter。
DataSpell 的編碼輔助與 Pycharm 的一樣智能,有智能代碼完成、錯(cuò)誤檢查和更多可用的東西。
Markdown 支持
除此之外,DataSpell 還支持 Markdown,這意味著我們的腳本仍將具有帶有 h1、h2、h3 標(biāo)題、純文本、編號(hào)列表、項(xiàng)目符號(hào)等的“筆記本風(fēng)格”(雖然尚不支持 LaTeX語(yǔ)法) 。將鼠標(biāo)懸停在一個(gè)單元格上方,然后單擊Add Markdown Cell:
另一種方法是單擊code下拉菜單并將單元格類(lèi)型切換為 Markdown。
這里有一些 Markdown 代碼供嘗試:
這是運(yùn)行單元格時(shí)的外觀:
出色的可視化輸出
Jupyter Notebook 的一項(xiàng)很酷的功能是無(wú)需任何額外安裝即可輸出可視化效果。而 Pycharm 則不然,但 DataSpell 可以與Jupyter媲美!
只需要打開(kāi).ipynb包含創(chuàng)建可視化的代碼的文件,你會(huì)發(fā)現(xiàn)所有可視化都會(huì)漂漂亮亮地顯示出來(lái)。
甚至支持交互式可視化
你猜怎么著?Dataspell 與 Plotly、Bokeh、Altair 和 ipywidgets 等交互式可視化庫(kù)配合得很好。
如下交互式可視化效果:
Pycharm 等完整 IDE 的一些很酷的特性(而 Jupyter Notebook 缺乏)是版本控制、輕松的終端訪問(wèn)和數(shù)據(jù)庫(kù)集成。
版本控制
版本控制幫助我們跟蹤和管理對(duì)軟件代碼的更改。你可能用來(lái)管理源代碼更改的流行版本控制系統(tǒng)是 Github。
使用 DataSpell,你可以克隆 Git 項(xiàng)目、提交和推送更改、使用分支等等!
終端
DataSpell 有一個(gè)內(nèi)置終端,支持操作系統(tǒng)上可用的命令。終端在你的腳本下方可用,因此無(wú)需打開(kāi)第二個(gè)窗口來(lái)再次使用終端!
虛擬環(huán)境管理
當(dāng)您使用 Python 一段時(shí)間后,你應(yīng)該已經(jīng)意識(shí)到為每個(gè)項(xiàng)目設(shè)置虛擬環(huán)境的重要性。DataSpell 通過(guò)提供設(shè)置頁(yè)面,可以輕松為任何數(shù)據(jù)科學(xué)項(xiàng)目配置虛擬環(huán)境。此外,它具有對(duì)許多數(shù)據(jù)科學(xué)家常用的 Conda 環(huán)境的內(nèi)置支持。
數(shù)據(jù)庫(kù)工具
如果我們每天都在使用 MongoDB、MySQL 和 Oracle 等數(shù)據(jù)庫(kù),那么我有個(gè)好消息!DataSpell 可以連接到數(shù)據(jù)庫(kù),因此我們可以直接從 IDE 訪問(wèn)和查詢(xún)數(shù)據(jù)庫(kù)。
以下是支持的數(shù)據(jù)庫(kù)工具的完整列表:
這里介紹如何使用sqlite3包建立連接、創(chuàng)建數(shù)據(jù)庫(kù)和表:
現(xiàn)在可以像往常一樣插入數(shù)據(jù):
Dataspell 的特別之處在于無(wú)需離開(kāi) IDE 或編寫(xiě)不必要的查詢(xún)即可探索數(shù)據(jù)庫(kù)的選項(xiàng)。只需雙擊數(shù)據(jù)庫(kù),就會(huì)打開(kāi)一個(gè)新的側(cè)窗口,然后可以單擊任何感興趣的表格,以在單獨(dú)的選項(xiàng)卡中對(duì)其進(jìn)行探索:
其實(shí)該功能在PyCharm 的專(zhuān)業(yè)版中也能找到,因此并不能算作DataSpell獨(dú)有的功能。
調(diào)試器
Jupyter Notebook 缺少可以幫助我們輕松檢測(cè)和刪除代碼中的錯(cuò)誤的調(diào)試器。
幸運(yùn)的是,DataSpell 有一個(gè)同時(shí)支持 Jupyter notebooks 和 Python 腳本的調(diào)試器。因此我們可以直接Debug,如在斷點(diǎn)處停止、管理變量等等。
插件
我喜歡 Pycharm 和 DataSpell 的一點(diǎn)是當(dāng)屬其插件,他們有很多出色的插件可供我們下載。
其實(shí)我們?yōu)?Pycharm 安裝的大多數(shù)插件也可均適用于 DataSpell。例如,使用 Rainbow CSV 為使用 Pycharm 打開(kāi)的 CSV 文件中的列設(shè)置不同的顏色。
雖然介紹了這么多關(guān)于Dataspell的優(yōu)點(diǎn),但用不用還是取決于你的實(shí)際需求,如果你的編碼工作比數(shù)據(jù)科學(xué)多,那么 PyCharm 可能是更好的選擇。另一方面,如果你所做的大部分工作都是純粹的數(shù)據(jù)科學(xué),那么 Dataspell 就是你的一個(gè)較好的選擇。而相對(duì)于免費(fèi)Jupyter,收費(fèi)的Dataspell也是是阻止你使用的一大原因。
歸根結(jié)底,永遠(yuǎn)留在我們身邊的不是工具,而是我們通過(guò)使用最適合我們需求的工具獲得的知識(shí)。你會(huì)不會(huì)從 JupyterLab 或 Jupyter Notebook 切換到Dataspell呢?