JMP® 18: Pythonista を単に満足させるだけではありません1 年前、Python も使用していた JMP ユーザーは、私たちの Python インターフェースが最適とは言えないと考えていることを明らかにしました。ああ!私たちは、5 年以上前に導入した JMP と Python の統合が的を射ていると考えていました。それは満足のいくものでしかない (言い換えれば、十分ではあるが最高ではない) ことに気づき、私たちはこの課題に正面から取り組むことにしました。
JMP の主任システム開発者である Paul Nelson は、JMP 18 の JMP 内で Python スクリプトを作成および実行するための、一貫したフル機能の統合開発環境を作成する取り組みの先頭に立ちました。
私は最近、アップグレードされた JMP と Python の統合について Paul と話しました。 Paul 氏は、目標は Python 開発者に大幅に生産性の高い環境を提供することであると強調しました。主な改善点には次のようなものがあります。
構成を必要とせず、インストールするとすぐに機能する一貫した環境。 Python は、無制限の顧客の Python 環境をサポートします。無制限の顧客の Python 環境ではテストできない新しい JMP および Python 機能を追加することは不可能でした。ソリューション? JMP 18 には、インストール後すぐに動作する完全にテストされた環境の基礎となる Python の組み込みバージョンが含まれています。
ライブ環境で Python データ テーブルに直接メモリ アクセスします。以前のバージョンでは、Python ユーザーは JMP データ テーブルのコピーにアクセスしました。 JMP 18 では、Python 環境から JMP データ テーブルに直接アクセスできるため、Python ユーザーは JMP 内の Python スクリプトから JMP テーブルにアクセス、作成、変更できるようになります。
Python のコメントとコードの色付け、および埋め込みログを使用する新しい Python スクリプト エディター。以前の統合では、JMP Scripting Language (JSL) が使用されました。 JSL は JSL 開発者にとって馴染みのあるものでしたが、Python の経験はあっても JSL の経験がない JMP ユーザーにとっては魅力的ではないことがよくありました。 JMP 18 では、ユーザーは JMP スクリプト エディターで Python スクリプトを開いて直接実行したり、Python スクリプトから JSL を実行したりできます。 JMP Scripting Index には、新しい機能の文書とサンプルが記載されています。 Python スクリプト用の一貫した環境があると、Python と JSL を使用してアドインを作成するための基盤も提供されます。
ポールの話をもっと聞いてください:
JMP の主任システム開発者である Paul Nelson は、JMP 18 の JMP 内で Python スクリプトを作成および実行するための、一貫したフル機能の統合開発環境を作成する取り組みの先頭に立ちました。その結果は? Python 開発者にとってより生産的な環境は、インストールするとすぐに機能し、ライブ環境で Python データ テーブルに直接メモリ アクセスできるようになり、Python のコメント付けとコード カラーリング、埋め込みログを使用する統合された Python スクリプト エディターが提供されます。
自動化とスクリプト作成Re: JMP® 18: Pythonista を単に満足させるだけではありませんうわー、これはすごいですね!
Re: JMP® 18: Pythonista を単に満足させるだけではありませんPython から JMP にデータを戻すことに関するコメント/質問。
現在、これを行うことができます:
dt = Python Get( df )
ここで、「df」は Python データフレームです。
上記のコマンドが実際に行っていることは、$TEMP フォルダー内の CSV にデータフレームを書き込み、それを読み取るために JSL を呼び出してから、その一時 CSV を削除することであることに気付きました。大きなファイルの場合、ファイルの書き込みとスキャン/読み込みの両方にオーバーヘッドが明らかに発生します。
これが Python から JMP へ直接メモリ内転送できれば非常に素晴らしいでしょう。
Re: JMP® 18: Pythonistas の単なる満足を超えて興味深いのですが、JMP v18 は Python コードの数式列をサポートしますか?
Re: JMP® 18: Pythonistas の単なる満足を超えてJMP 14-17では、Python Send (dt)とPython Get(df)は両方とも一時ファイルを介してCSVを保存することで動作していました。これはJMP 18の大きな変更点の1つです。JMP 18では、Python Send (dt)はPythonでjmp.DataTableオブジェクトを作成するようになりました。これはコピーではなく、メモリ内のライブ参照です。 データ テーブル。Python から直接読み取り、変更できます。JSL から Python Get ( dt ) を実行すると、データ テーブルでメモリ内のデータ テーブル参照が取得されます。互換性の問題から残されたのは、pandas データフレームをコピーとして JMP データ テーブルに取得する元の Python Get( df ); メソッドです。
Python でデータ フレームを取得し、データ フレームの列を反復処理するだけで、JMP データ テーブルに相当するものをメモリ内に作成できるようになりました。JMP 18 のスクリプト インデックスの新しい Python カテゴリの jmp.DataTable を参照してください。サンプル スクリプトの Python サブディレクトリもあります。そこには、jmp.DataTable オブジェクトからメモリ内に pandas.DataFrame を作成する 2 つの方法と、pandas.DataFrame (メモリ内) から jmp.DataTable オブジェクトを作成する例を 1 つ示す JMP2pandas.py スクリプトがあります。
# 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 DataTable です。(dt も JMP jmp.DataTable オブジェクトであり、type パラメーターは jmp.DataType 列挙値であることに注意してください。) サンプル ファイルは 'Big Class.jmp' を dt として開き、pandas.DataFrame を作成し、データ フレームから dt2 を作成します。
Re: JMP® 18: Pythonistas の単なる満足を超えてJMP 18 では、数式列は Python コードをサポートしていません。これは現在調査中のもので、素晴らしい機能となるでしょう。JMP 18 を堅牢にし、起動時に機能し、Python 対応のスクリプト エディターをサポートし、エラー レポートを強化し、スクリプト インデックスを追加し、Python から JMP への橋渡しを行うには、膨大な量のインフラストラクチャを追加する必要がありました。長い間欠けていた多くの機能が強化され、JMP 内で魅力的で生産性の高い Python 環境が実現しました。
大変な作業は終わったので、これで終わりではありません。まだまだ作業は続きます。