如果 JupyterLab 和 PyCharm 有一个孩子,那么他一定是DataSpell,一个面向专业数据科学家的专业 IDE。
虽然 Pycharm 这样的 IDE 非常强大,但它并不适用于数据科学,因此大部分数据科学家都会选择使用富有交互性的 JupyterLab 或 Jupyter Notebook 作为常用 IDE。但在调试完整项目时又不得不切换回具有专业环境的PyCharm。
这样属实有点麻烦,直到我发现了 DataSpell。
什么是DataSpell?
Dataspell是专为数据科学家打造的集成开发环境(IDE)。它由Jetbrains(IntelliJ Idea 和 PyCharm 背后的公司)开发,因此无需进一步介绍。
DataSpell 具有我们期望从 Jupyter 中获得的一些典型功能,例如命令模式、编辑器模式、单元格导航、笔记本快捷方式和交互式输出。
也就是说,对于专业数据科学家来说,这是一个更强大的专业 IDE。这就是为什么我更喜欢 DataSpell 而不是 Jupyter Notebook(和 Pycharm)的原因之一了。
以下是 IDE 提供的内容:
- 原生笔记本体验——如果你使用过 Jupyter,将会有宾至如归的感觉。
- 智能编码辅助——就像 Jupyter 和 PyCharm 生了一个孩子一样。
- Markdown 和 JavaScript — 根据需要设置笔记本的样式并嵌入数据可视化。
- 交互式 shell — REPL 控制台 + 语法检查。
SQL 数据库支持——连接到数据库、直观地检查数据、导入/导出数据等。
一睹为快
如果你使用过PyCharm,那么这个外观和感觉都会很熟悉。
创建第一个Notebook
该过程几乎与任何其他 Jetbrains 产品相同。单击根目录并转到New — Jupyter Notebook
并命名为 first_notebook.ipynb
创建笔记本时,可能已经看到创建 R 脚本和Julia文件的选项。其实Dataspell 不仅支持Python ,还同时支持 R 和 Julia。
使用基本的 Python 数据科学库测试
Numpy 数组和 Pandas DataFrame
与 DataFrame 的良好交互性
当将 DataFrame 显示为输出时,与其他 Notebook 编辑器不同,当 DataFrame 很大时,DataSpell 可以显示整个 DataFrame 而不会屏蔽某些数据。当 DataFrame 较大时,DataSpell 会自动添加一个滚动条,让你可以滚动查看整个数据集。
同时,可以通过单击列名轻松对数据进行排序,这将使用该列按升序或降序对 DataFrame 进行排序(如果单击两次)。
如果要在单个框架中查看更多数据,可以选择在单独的选项卡中打开 DataFrame。
Matplotlib 绘图
出色的智能编码辅助
Jupyter Notebook 的一个缺点是它的编码辅助,虽然可以打开扩展 “hinterland”启用自动补全,但效果不佳。
如果按下“tab”按钮,它有时会再次写入整个变量名称,而不是仅完成名称的其余部分,有时甚至会自动完成单词,甚至无须按 Enter。
DataSpell 的编码辅助与 Pycharm 的一样智能,有智能代码完成、错误检查和更多可用的东西。
Markdown 支持
除此之外,DataSpell 还支持 Markdown,这意味着我们的脚本仍将具有带有 h1、h2、h3 标题、纯文本、编号列表、项目符号等的“笔记本风格”(虽然尚不支持 LaTeX语法) 。将鼠标悬停在一个单元格上方,然后单击Add Markdown Cell:
另一种方法是单击code下拉菜单并将单元格类型切换为 Markdown。
这里有一些 Markdown 代码供尝试:
这是运行单元格时的外观:
出色的可视化输出
Jupyter Notebook 的一项很酷的功能是无需任何额外安装即可输出可视化效果。而 Pycharm 则不然,但 DataSpell 可以与Jupyter媲美!
只需要打开.ipynb包含创建可视化的代码的文件,你会发现所有可视化都会漂漂亮亮地显示出来。
甚至支持交互式可视化
你猜怎么着?Dataspell 与 Plotly、Bokeh、Altair 和 ipywidgets 等交互式可视化库配合得很好。
如下交互式可视化效果:
Pycharm 等完整 IDE 的一些很酷的特性(而 Jupyter Notebook 缺乏)是版本控制、轻松的终端访问和数据库集成。
版本控制
版本控制帮助我们跟踪和管理对软件代码的更改。你可能用来管理源代码更改的流行版本控制系统是 Github。
使用 DataSpell,你可以克隆 Git 项目、提交和推送更改、使用分支等等!
终端
DataSpell 有一个内置终端,支持操作系统上可用的命令。终端在你的脚本下方可用,因此无需打开第二个窗口来再次使用终端!
虚拟环境管理
当您使用 Python 一段时间后,你应该已经意识到为每个项目设置虚拟环境的重要性。DataSpell 通过提供设置页面,可以轻松为任何数据科学项目配置虚拟环境。此外,它具有对许多数据科学家常用的 Conda 环境的内置支持。
数据库工具
如果我们每天都在使用 MongoDB、MySQL 和 Oracle 等数据库,那么我有个好消息!DataSpell 可以连接到数据库,因此我们可以直接从 IDE 访问和查询数据库。
以下是支持的数据库工具的完整列表:
这里介绍如何使用sqlite3包建立连接、创建数据库和表:
现在可以像往常一样插入数据:
Dataspell 的特别之处在于无需离开 IDE 或编写不必要的查询即可探索数据库的选项。只需双击数据库,就会打开一个新的侧窗口,然后可以单击任何感兴趣的表格,以在单独的选项卡中对其进行探索:
其实该功能在PyCharm 的专业版中也能找到,因此并不能算作DataSpell独有的功能。
调试器
Jupyter Notebook 缺少可以帮助我们轻松检测和删除代码中的错误的调试器。
幸运的是,DataSpell 有一个同时支持 Jupyter notebooks 和 Python 脚本的调试器。因此我们可以直接Debug,如在断点处停止、管理变量等等。
插件
我喜欢 Pycharm 和 DataSpell 的一点是当属其插件,他们有很多出色的插件可供我们下载。
其实我们为 Pycharm 安装的大多数插件也可均适用于 DataSpell。例如,使用 Rainbow CSV 为使用 Pycharm 打开的 CSV 文件中的列设置不同的颜色。
虽然介绍了这么多关于Dataspell的优点,但用不用还是取决于你的实际需求,如果你的编码工作比数据科学多,那么 PyCharm 可能是更好的选择。另一方面,如果你所做的大部分工作都是纯粹的数据科学,那么 Dataspell 就是你的一个较好的选择。而相对于免费Jupyter,收费的Dataspell也是是阻止你使用的一大原因。
归根结底,永远留在我们身边的不是工具,而是我们通过使用最适合我们需求的工具获得的知识。你会不会从 JupyterLab 或 Jupyter Notebook 切换到Dataspell呢?