ファイルとして保存せずに、Python Pandas dataFrame を jmp 形式に変換するにはどうすればよいですか?JMPがJMPスクリプト環境内で「Pythonインターフェース」機能をサポートしていることは知っています。 しかし、場合によっては、Python エンジニアと JMP エンジニアが独立して共同作業を行った方がよい場合もあります。
今回の場合、Python エンジニアは DB インターフェースでデータベースファイルを読み込み、Pandas ライブラリで前処理を行い、JMP エンジニアはデータ分析と JSL での後処理を行うために JMP 形式のデータのみが必要なので、JMP 形式に変換したいと考えています。
ご想像のとおり、ボトルネックは、Python Pandas の dataFrame をファイルとして保存せずに変換する方法です。 最も簡単な方法は、ファイルを jmp 形式で保存して読み込むことですが、保存と読み込みに何度も時間がかかります。 Python Pandas dataFrame をメモリ内で直接 jmp 形式に変換するライブラリがあるかどうかを知りたいです。
Re: Python Pandas dataFrame をファイルとして保存せずに jmp 形式に変換するにはどうすればよいですか?投稿していただきありがとうございます。JMP を使用して .parquet ファイルを直接開くことができれば幸いです。
すでに DB 接続を使用してデータをフェッチしていますが、完全なデータ パイプライン (抽出、書き込み、保存、読み取り) で .csv を使用すると非効率が非常に多いため、parquet の使用を開始したいと考えています。
Re: Python Pandas dataFrame をファイルとして保存せずに jmp 形式に変換するにはどうすればよいですか?JSON 形式は多すぎて処理できません。
Re: Python Pandas dataFrame をファイルとして保存せずに jmp 形式に変換するにはどうすればよいですか?@Craige_Hales君だ、クレイグ:)
Re: Python Pandas dataFrame をファイルとして保存せずに jmp 形式に変換するにはどうすればよいですか?Orient=table を指定した To_Json が良い選択かもしれません。 バイナリからテキストに変換し、再度バイナリに変換する必要があります。 JMP の JSON ウィザードはこれをかなり直接的に処理する必要があります。 複数のファイルのインポートで CSV を使用すると、実際には十分に高速になる可能性があります。 JMP が列をインポートするときに、すべての CPU プロセッサを使用して列を並列にロードします。 実装方法によっては、サーバー側で遅すぎる可能性があります。
私は独自のバイナリからバイナリへの転送をロールしました。ベーオウルフ、ニュートン、ミスター・ハンソンいつかのブログ投稿。 numpy を使用して Python コードからバイナリ データのブロックを出力し、JSL の行列関数に blob を使用してバイナリ データを再度ロードしました。 データはすべて数値だったので、これはうまくいきました。
Re: Python Pandas dataFrame をファイルとして保存せずに jmp 形式に変換するにはどうすればよいですか?JMP の「データベースを開く」コマンドまたはクエリ ビルダーを使用して、データベースから直接データを取得できると思います。 データベースには ODBC ドライバーが必要です。 データベースに接続した後、SQL でクエリを送信して、JMP でデータを取得できます。 クエリ ビルダーを使用すると、SQL をグラフィカルに作成できます。
CSV は非常に一般的なタイプのデータ転送ファイルなので、すぐに放棄するつもりはありません。 また、JMP マルチスレッドはテキスト ファイルと CSV ファイルを読み取るため、ファイルはかなり速く開きます。
Re: Python Pandas dataFrame をファイルとして保存せずに jmp 形式に変換するにはどうすればよいですか?こんにちは!これが 4 年前の投稿であることは承知しており、私は JMP コミュニティの新ユーザーです...しかし、私たちのユースケースでは、元の投稿に対してここで紹介したソリューションは、私たちのニーズを包括するものではありません。
(JMP / JSLではなく) Pythonのみを実行するサーバーで、すべてのデータの取得と準備/変換を実行し、(ローカル ファイルへの書き込みなしで) データをシリアル化し、データをクライアントに送り返すことができるようにしたいと考えています。 JMP で直接読み取り可能な形式で。
私たちのデータはさらに大きく、行数が 10 万から 100 万、列が 10 から 100 になる可能性があります。これは異種 (数値およびカテゴリ) であり、欠損値が含まれる可能性があります。
DataFrame.to_() メソッドのいずれかがこれをサポートしていますか?これらの pandas メソッドをファイルではなく IO バッファーに記述して時間を節約し、その後 JMP クライアントにネットワーク転送することができます。
私たちが使用したい主要な候補形式は、 .to_parquet()、to_hdf()、to_feather() です。pandas には「Stata」形式に書き込む to_stata() メソッドがあるようです。JSL (SAS) が、いつか Pandas で実装できるほどオープンなものであるかどうかはわかりません (リストの下位にあるかもしれません)。最近は寄木細工が普遍的になっているようですが、パンダにも一流のタイプとしてArrow「Table」タイプがあるので、それも興味津々です。
データの再解析やデータ型 (数値、カテゴリ、日付時刻など) の割り当てを必要とする形式は避けたいと考えています。 ... したがって、.to_csv() や to_json() などのテキスト形式は実際には役に立ちません。
投稿を最後まで読んでいただきありがとうございます。このスレッドに返信するのではなく、新しいスレッドを開始するべきだったかどうかお知らせください。
ランドール
Re: Python Pandas dataFrame をファイルとして保存せずに jmp 形式に変換するにはどうすればよいですか?これを行う 1 つの方法は、 Python Pandas dataFrame を JMP テーブルの JSL バージョンに変換します。これは、完全にサポートされ文書化された形式の JMP データ テーブルです。また、列プロパティや行の状態などを含めることができます。実行する必要がある例を確認するには、既存の JMP データ テーブルを指定し、JMP に次のスクリプトを生成するように指示するだけです。テーブルを再作成します。
Re: Python Pandas dataFrame をファイルとして保存せずに jmp 形式に変換するにはどうすればよいですか?Python Pandas の dataFrame をファイルとして保存しながら jmp 形式に変換する方法の詳細を尋ねることはできますか?
データを Pandas dataFrame としてマイニングし、さらなる調査のために JMP が簡単に読み取れる形式で保存したいと考えています。
前もって感謝します
Re: Python Pandas dataFrame をファイルとして保存せずに jmp 形式に変換するにはどうすればよいですか?jmp 14 T には、Python で情報を取得および送信するための新しい関数がいくつかあります。
まだ使いこなせていません。
Python Get(name) という関数が機能する可能性があります。
Re: Python Pandas dataFrame をファイルとして保存せずに jmp 形式に変換するにはどうすればよいですか?アドバイスありがとうございます。
しかし、可能であれば、JSL環境内でdataFrameデータをJSL(JMPスクリプト言語)が認識するjmp形式に直接転送する方法を知りたいです。 これは、JSL が Pandas dataFrame を JMP と同様に認識することを意味します。 その理由は、私の場合、JMP データ形式から起動できれば、ほとんどすべての JSL 自動化作業を実行できるからです。
Re: Python Pandas dataFrame をファイルとして保存せずに jmp 形式に変換するにはどうすればよいですか?ファイルが小さくクリップボードに収まる場合は、データ フレームをクリップボードに保存し、クリップボードから JMP に貼り付けることができます。
これは Discovery Summit の講演の一例です。
https://community.jmp.com/t5/Discovery-Summit-2017/Leveraging-Python-and-REST-to- Introduction-SAS-Viya-TM-Processing/ta-p/44078
names default to here(1);
path=Get Current Directory();
dt1=Open("$SAMPLE_DATA/Big Class.jmp");
current data table(dt1);
dt1<< Bring Window To Front;
main menu("Copy With Column Names");
text="\[
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
df=pd.read_clipboard(sep='\\s+')
size= (df.height * df.weight)/df.age ** .5
ax = plt.subplot(111, projection='polar')
c = plt.scatter(df.height, df.weight, c=df.age, s=size, cmap=plt.cm.hsv)
c.set_alpha(0.55)#transparency
plt.show()
]\";
path=Get Current Directory();
save text file(path||"graph.py", text);
x = RunProgram(
executable( "/Users/user1/anaconda/bin/python" ),
options(path||"graph.py")
,readfunction("blob")
);
close(dt1, nosave);//this executes as soon as the graph window is closed