JMP 是Pythonic! JMP 18 中增強的 Python 集成JMP 18 有一種與 Python 整合的新方法。 JMP 18 安裝附帶一個獨立的 Python 環境,設計用於與 JMP 一起使用。此外,JMP 現在還具有本機 Python 編輯器和特定於 JMP 的 Python 套件。此 JMP Python 環境增強了與 JMP 的連接性和互動性,這意味著將 Python 與 JMP 結合使用從未如此簡單。
在本系列部落格文章中,我向您介紹 Python 與 JMP 整合的新功能。本文將介紹 JMP 中新的 Python 腳本編輯器。在接下來的文章中,我將介紹整合的其他新功能以及套件管理。
JMP Python 腳本編輯器
在先前版本的 JMP 中,執行 Python 程式碼的唯一方法是連接到外部安裝的 Python 環境,然後使用 JMP 腳本語言 (JSL) 包裝器函數將 Python 程式碼提交到該環境。現在您可以直接在 JMP 中編輯並提交 Python 腳本!只需在 JMP 中開啟 Python 腳本或從「檔案」功能表(檔案 > 新 > Python 腳本)建立新腳本即可。

新的 Python 腳本編輯器具有語法突出顯示功能,可讓您以更自然的方式使用 Python 進行編碼。按一下「執行腳本」按鈕將執行 Python 程式碼,並且在 Python 中記錄的訊息會在 JMP 日誌中列出。
jmp和jmputils Python 套件
與新的 JMP Python 環境一起出現的是兩個新的「JMP 感知」Python 套件:jmp 和 jmputils。
使用 jmp 包您可以:
- 使用 jmp.run_jsl('''jsl script''') 從 Python 執行 JSL。
- 開啟、關閉和儲存資料表。
- 取得有關 JMP 中開啟的表格的資訊。
- 建立 JMP 資料表、新增/刪除/修改 JMP 資料表列以及新增/刪除 JMP 資料表行。
- 使用資料表上的從零開始的索引數組運算符,直接在記憶體中按列或儲存格存取 JMP 資料表中的資料。此索引還支援列索引和行索引上的 Python 切片運算子。
- 使用 JMP 資料表和 JMP 資料表列作為 Python 迭代的序列。
使用 jmputils 包您可以:
- 使用 jmputils.create_jmp(dir_path) 在指定目錄中建立命令列 JMP pip (jpip) 腳本。然後可以使用該腳本在 JMP Python 環境中安裝軟體套件。請注意,對於某些 python 套件,有時需要從命令列安裝。
- 使用 jmputils.jpip( ) 函數在 JMP Python 環境中安裝 python 套件。
所有這些函數在說明文件 [LINK] 中都有更詳細的描述,JMP 腳本索引中還有一個新的 Python 類別,列出了所有這些套件和函數。

Python JSL 函數
與先前版本的 JMP 一樣,您可以使用 Python Execute( )、Python Submit( ) 和 Python Submit File( ) 函數從 JSL 執行 Python。您也可以使用 Python Send( ) 和 Python Get( ) 函數在 JMP 和 Python 之間傳輸資料。
Python JSL 函數的變更包括:
- Python Connect() 仍然支援在 JMP 中建立本機 Python 的可編寫腳本的物件。
- Python Send(data_table) 現在在 Python 中建立一個 jmp.Datatable 對象,該物件是對可從 Python 記憶體中存取的 JMP 資料表的即時參考。以前,透過將表格作為 CSV 檔案匯出到磁碟並讓 pandas 讀取 CSV 文件,將 data_table 的副本建立為 pandas.DataFrame,這對於大型資料表來說可能非常慢,並且可能會因二進位檔案而導致資料降級->文字->二進位轉換。
- Python Get(物件名稱):
- 如果 object_name 是引用 Python 中開啟的 JMP 資料表的變數名稱,則它將傳回 Python 變數名稱所引用的 JMP 資料表的 JSL 可編寫腳本的物件參考。
- 如果 object_name 是 Python pandas 資料框,它會將 pandas 資料框寫入 CSV 文件,然後將該文件作為新的 JMP 資料表開啟。不過,考慮到從 Python 建立和連接記憶體中 JMP 資料表的新功能,不建議使用此方法。
不再需要的已棄用的 JSL Python 函數:
- Python 取得圖形( )
- Python 控制( )
- Python 初始化()
- Python 已連線 ( )
- Python 術語 ( )
新的 JSL Python 函數包括:
- Python Install Packages( ) 可讓您在 JMP Python 環境中安裝 python 軟體包。
- Python Create JPIP( ) 建立包裝 JMP jpip 的命令列腳本,可用來從作業系統中的命令列安裝 python 軟體包。該腳本是寫給透過目錄選擇器對話框選擇的導演的。
自動化和腳本編寫回覆:JMP 是 Pythonic! JMP 18 中增強的 Python 集成Workflow Builder 是否計劃接受 Python 作為 JSL 程式碼的替代方案?
回覆:JMP 是 Pythonic! JMP 18 中增強的 Python 集成在這篇文章中提供兩個「JMP 感知 Python 套件」文件的連結將會很有幫助。
謝謝!
艾瑞克
回覆:JMP 是 Pythonic! JMP 18 中增強的 Python 集成哦,我看到文章中有一個佔位符用於指向此類文檔的鏈接,只需將其替換為實際鏈接即可。
回覆:JMP 是 Pythonic! JMP 18 中增強的 Python 集成如果我無法使用自己的 python 解釋器,是否有解決方案為程式碼提供排程任務以定期執行該 python 程式碼來處理資料以自動產生圖表。
回覆:JMP 是 Pythonic! JMP 18 中增強的 Python 集成不。
那太有問題了。對於一些用戶來說,它只是起作用了,但太多的客戶在讓它起作用時遇到了困難。幾乎同樣重要的是,在 JMP 中執行的 Python 腳本無法保證它能夠在其他使用者的電腦上正常運作。如果有任何自訂 Python 安裝位置,則可能不會。作為用戶,將 JMP 提供的 Python 視為您自己的 JMP 特定 Python 虛擬環境。
我們投入了大量精力來確保 JMP Python 與系統上存在的其他 Python 安裝隔離。沒有什麼可以阻止您使用現有的管道,並且您可以將軟體包安裝到 JMP 環境中。您也許能夠將該工作流程引入 JMP 中。如果有的話,JMP 18 的附加功能應該可以讓您更輕鬆地在 JMP 和外部 Python 管道之間匯入/匯出資料(如果需要)。
我們相信,經過測試和驗證的 Python 安裝可在 JMP 首次啟動時運行,無需配置,可以帶來更好的客戶體驗。擁有已知的 Python 版本和位置可以讓我們專注於提供功能和功能,而不是因為不可預測的客戶 Python 安裝而努力解決問題。穩定性和嵌入式 Python 使我們能夠提供更深入的整合。從 Python 建立、修改和存取記憶體中的 JMP 資料表的新功能就是其中之一。
我確實認識到這確實會導致 JMP 14-17 的轉變。 JMP 18 是功能的根本轉變。一些最初的設計決策並沒有經得起時間的考驗。我已嘗試盡量減少不相容的情況,但一些更改是必要的。如果需要進行更改,則在 18 中完成,以確保 JMP 18 為前進提供穩定的基礎。
回覆:JMP 是 Pythonic! JMP 18 中增強的 Python 集成不,不是在不久的將來。但這將是一個很好的新功能請求。
有很多事情可以做。面臨的挑戰是首先關注那些為每個人帶來最大利益的問題。目前的主要焦點是基礎問題,尤其是 Python 和 JSL 之間的資料存取和互通性。
要讓資料表存取完全具備 Python 功能,還有很多工作要做,例如設定表達式列、行狀態列、列格式…確保 JSL 和 Python 之間的資料封送包含盡可能多的 JMP 資料類型盡可能。
正如任何大型檢修所預期的那樣,都會存在一些錯誤和小疏忽。這些也需要解決。雖然使用 Python 程式碼的 JMP 插件運作得很好,但插件建構器尚不了解 Python 文件,因此您必須手動打包 JMP 插件檔案( zip 檔案)。此外,雖然專案中的 Python 文件可以正常運行,但它還不知道如何查找專案文件中還包含的其他文件,例如資料表、其他資料檔案或其他 Python 腳本。如果您遇到其他應該有效的限制,請將其報告給技術支援。新的酷炫功能將提高 JMP 的工作能力,請作為功能請求提交。
回覆:JMP 是 Pythonic! JMP 18 中增強的 Python 集成嗨@Paul_Nelson ,
我提交了在工作流程建構器中提供 Python 支援的願望。
一個巨大的雙贏:
- JSL 和 Python 程式碼的無縫 poing pong
- 對於已經使用 Workflow Builder 的使用者來說是一個很好的增強。
工作流程產生器 + Python
回覆:JMP 是 Pythonic! JMP 18 中增強的 Python 集成對於 JMP 新手來說,這可能是個菜鳥問題。我仍在探索部落格。如何了解有關在 JMP 中使用 Python 腳本的更多資訊?我可以寫Python程式碼嗎?有部落格可以參考嗎?謝謝
回覆:JMP 是 Pythonic! JMP 18 中增強的 Python 集成你好@zetaVagabond1 ,
以下是我最喜歡的一些學習如何在 JMP 中使用 Python 腳本的資源:
JMP 18 中 Python 的整合入門
使用 JMP 提升你的 Python 水平
學術網路研討會:JMP 與 Python 的集成
@Paul_Nelson也在JMPer 電纜博客上發表了幾篇部落格文章。
回覆:JMP 是 Pythonic! JMP 18 中增強的 Python 集成請查看腳本索引,其中有功能文件和範例。從 JSL 工作時,有許多函數,例如 value = Python Get( py_var ); Python 發送(jsl_var); Python 提交(“python 程式碼”);
從 Python 方面來看,腳本索引中有一個完整的「Python」頂級類別,其中詳細介紹了跳轉導入套件和工具類套件的使用方法。在跳轉套件中,您將使用 Python 介面來實作 JMP 功能,包括從 Python 建立、讀取和寫入資料表,以及從 Python 腳本執行 JSL 的功能。 jmp.run_jsl(' JSL 程式碼 ')。 工具類包含 jmputils.jpip( ) 函數,它是 Python pip() 的包裝器,可確保安裝的軟體包最終在 JMP 的 Python 整合的隔離私有環境中完成。
回覆:JMP 很 Pythonic! JMP 18 增強了 Python 集成簡單說明一下,JMP v18 中我最喜歡的功能之一就是 Python 整合。我們有自己的 Python 套件來執行數據轉換和其他功能,而 JMP 可以輕鬆導入這些函數,讓我能夠從現有數據創建新的列數據,並將其直接推送回 JMP。就在前幾天,我需要對 JMP 資料表中的一些資料進行特定的座標轉換,使用 JMP 的 Python 功能,我只需幾分鐘就能建立新的欄位。
向 Paul 等人致敬,他們在 Python 相容性方面邁出瞭如此清晰/令人印象深刻的第一步!