JMP® 18:不仅仅是满足 Python 爱好者一年前,也使用 Python 的 JMP 用户明确表示,他们认为我们的 Python 界面不太理想。哎哟!我们认为五年多前推出的 JMP 和 Python 集成已经达到了目标。意识到这只是令人满意(换句话说,它足够好,但不是最好的),我们决定正面应对挑战。
JMP 首席系统开发人员 Paul Nelson 率先创建了一个一致、功能齐全的集成开发环境,用于在 JMP 18 中编写和执行 JMP 中的 Python 脚本。
我最近与 Paul 讨论了升级后的 JMP 和 Python 集成。 Paul 强调,我们的目标是为 Python 开发人员提供一个更加高效的环境。一些关键改进包括:
一致的环境,安装后即可立即运行,无需配置。 Python 支持无限的客户Python 环境。添加无法在无限的客户 Python 环境中进行测试的新 JMP 和 Python 功能是站不住脚的。解决方案? JMP 18 包含一个嵌入式 Python 版本,它是经过全面测试的环境的基础,安装后即可立即运行。
在实时环境中直接内存访问 Python 数据表。在以前的版本中,Python 用户访问 JMP 数据表的副本。现在,JMP 18 提供从 Python 环境直接访问 JMP 数据表的功能,因此 Python 用户可以在 JMP 内从 Python 脚本访问、创建和修改 JMP 表。
新的 Python 脚本编辑器使用 Python 注释和代码着色以及嵌入式日志。之前的集成使用 JMP 脚本语言 (JSL)。 JSL 对于 JSL 开发人员来说很熟悉,但对于具有 Python 经验但没有 JSL 经验的 JMP 用户来说常常不受欢迎。在 JMP 18 中,用户可以直接在 JMP 脚本编辑器中打开和运行 Python 脚本,并从 Python 脚本运行 JSL。 JMP 脚本索引记录并提供了新功能的示例。拥有一致的 Python 脚本环境还为使用 Python 和 JSL 编写插件奠定了基础。
听听保罗的更多信息:
请考虑注册 Paul 于 3 月 21 日举办的现场网络研讨会开发人员教程:JMP 18 中的新 Python 集成和脚本功能,聆听他提供完整的详细信息并演示界面。而且,如果您参加在英国曼彻斯特举行的 JMP Discovery 峰会,您可以在 3 月 6 日上午的全体会议上听到 Paul 的讲话。
顺便说一句,作为一名 Python 程序员,我并没有听说过 Python 鼻祖 Guido van Rossum 在开始研究新语言时正在阅读《Monty Python's Flying Circus》脚本的传言。他想要一个简短、独特、有趣的名字,所以他决定将其命名为 Python。听起来很有道理!
JMP 首席系统开发人员 Paul Nelson 率先创建了一个一致、功能齐全的集成开发环境,用于在 JMP 18 中编写和执行 JMP 中的 Python 脚本。结果如何?为 Python 开发人员提供了一个更高效的环境,安装后即可立即运行,提供对实时环境中 Python 数据表的直接内存访问,以及使用 Python 注释和代码着色以及嵌入式日志的集成 Python 脚本编辑器。
自动化和脚本编写回复:JMP® 18:不仅仅是满足 Python 爱好者哇,这听起来棒极了!
回复:JMP® 18:不仅仅是满足 Python 爱好者关于将数据从 Python 返回到 JMP 的评论/问题。
目前我们可以这样做:
dt = Python Get( df )
其中“df”是 Python 数据框。
我注意到上面的命令实际上所做的是将数据帧写入 $TEMP 文件夹中的 CSV,然后调用 JSL 将其读入,然后删除该临时 CSV。对于大文件,写入文件和扫描/读入文件显然都会产生开销。
如果这可以是直接从 Python 到 JMP 的内存传输,那就太好了
回复:JMP® 18:不仅仅是满足 Pythonistas出于好奇,JMP v18 是否支持带有 python 代码的公式列?
回复:JMP® 18:不仅仅是满足 Pythonistas在 JMP 14-17 中,Python Send ( dt ) 和 Python Get( df ) 都通过临时文件保存 CSV 来操作。这是 JMP 18 中的主要变化之一。使用 JMP 18,Python Send ( dt ) 现在在 Python 中创建一个 jmp.DataTable 对象。这不是副本,而是对 数据表。它可以直接从 Python 读取和修改。如果您从 JSL 执行 Python Get (dt),您将获得内存中的数据表引用。出于兼容性考虑,剩下的是原始 Python Get(df);将 pandas 数据框作为副本放入 JMP 数据表中的方法。
现在,您可以使用 Python 中的数据框,简单地迭代数据框列并在内存中创建等效的 JMP 数据表。请参阅 JMP 18 脚本索引中新 Python 类别下的 jmp.DataTable。还有一个示例脚本的 Python 子目录。在那里,您将找到一个 JMP2pandas.py 脚本,它展示了两种从 jmp.DataTable 对象创建内存 pandas.DataFrame 的方法,以及一个从 pandas.DataFrame(内存中)创建 jmp.DataTable 对象的示例
# create JMP DataTable from pandas DataFrame
dt2 = jmp.DataTable('BC2',df.shape[0])
for j in range( df.shape[1] ):
dt2.new_column(dt[j].name, dt[j].dtype)
dt2[j] = list(df.iloc[:,j])
其中 df 是 pandas 数据框,dt2 是新的 JMP 数据表。(注意 dt 也是一个 JMP jmp.DataTable 对象,类型参数是 jmp.DataType 枚举值。)示例文件以 dt 形式打开“Big Class.jmp”,创建一个 pandas.DataFrame,然后从数据框创建 dt2。
回复:JMP® 18:不仅仅是满足 PythonistasJMP 18 中的公式列不支持 Python 代码。这是正在研究的问题,这将是一个很棒的功能。需要添加大量基础结构才能使 JMP 18 变得强大、在启动时工作、支持 Python 感知脚本编辑器、增强错误报告、添加脚本索引以及打开从 Python 到 JMP 的桥梁。许多曾经缺少的东西现在已经得到增强,使 JMP 中相信的 Python 环境变得引人入胜且富有成效。
现在,重任已尽,我们不会就此罢休。接下来还有更多工作要做。