PythonパンダとJMPこんにちは、みんな
PythonとJMPについてJMPパートナーと話し合いました。議論の中で、彼らは2つの質問をしました。
1。Pythonパンダの列を保存せずに(直接)JMP列に変換する方法は?
2。JMPでPython Init()を実行する場合、Pandasがインポートされないという問題があります
1)JMPでPython Init()を実行すると、次のようにインポートされます。
パンダを_JMPpdとしてインポート
(Python3.6はJMPと連携しており、PandasはPython3.6に既にインストールされています)|
写真1はの結果ですパンダのインポートおよびバージョンチェック
2)しかし、JMPにはエラーがあります、写真2
その他のモジュール(例、 sqlalchemy、pymssqlなど)は問題ありません。Pandasにのみエラーがあります。
再:PythonパンダとJMPこの問題について再度議論しましたが、何らかのエラーがあるようです。
Python APIは安定していないようです。matplotlibのpyplotライブラリにエラーがあります。

しかし、PythonでOKです。

次のプロセスはどうですか?
1。 JMPプロセスの開始 JMP Python API
win32com.client import Dispatchから
jmp = Dispatch( "JMP.Application")
jmp.visible = True #False
2。 作業用Pythonパンダ (Pythonでのデータ処理の開始 )
3。パンダの結果に変換 JMP ファイル
これに注目して、JMPはPythonでJMP Snedライブラリを提供する必要があります。 Python Get()
4。JMPスクリプトの開始
dt = Current Data Table()の後のスクリプトの開始
再:PythonパンダとJMPポール、ありがとう
あなたのコメントで、私たちのパートナーとの深い議論の時間があります
再度、感謝します
再:PythonパンダとJMPさて、以前のanwserは、意図したとおりにpandasからデータを取得するのではなく、pythonオブジェクトを取得することを示しました。これがより良い例です。 これは、データフレームからnumpyにデータを取得する際にStackOverflowからコードを借用します。
https://stackoverflow.com/questions/13187778/convert-pandas-dataframe-to-numpy-array-preserving-index?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
JMPにはバグがあり、すべて同じデータ型でない限りnumpy配列をインポートできないようです... したがって、この例では、データをデータフレームに入れてから、別のディクショナリに戻します。これは、JMPに転送されます。
Python Init();
Python Submit("\[
import pandas as pd
import numpy as np
print('Pandas Version: ' + pd.__version__)
data = {'state':['Ohio','Ohio','Ohio','Nevada','Nevada','Nevada'],'year':[2000,2001,2002,2001,2002,2003], 'pop':[1.5,1.7,3.6,2.4,2.9,3.2]
}
df = pd.DataFrame(data)
print(df)
v = df.values
print(v)
cols = df.columns
types = [(cols[i], df[k].dtype.type) for (i, k) in enumerate(cols)]
dtype = np.dtype(types)
array = np.zeros(v.shape[0], dtype)
for (i, k) in enumerate(array.dtype.names):
array[k] = v[:, i]
print(array.dtype.names);
print(array)
d={}
l=[]
for (i, k) in enumerate(array.dtype.names):
d[k] = v[:,i].tolist()
print(d)
print('leaving python')
]\");
Print("inJSL");
pyData = Python Get(d);
Print(data);
Python Term();
次の出力を与える
Pandas Version: 0.22.0
pop state year
0 1.5 Ohio 2000
1 1.7 Ohio 2001
2 3.6 Ohio 2002
3 2.4 Nevada 2001
4 2.9 Nevada 2002
5 3.2 Nevada 2003
[[1.5 'Ohio' 2000]
[1.7 'Ohio' 2001]
[3.6 'Ohio' 2002]
[2.4 'Nevada' 2001]
[2.9 'Nevada' 2002]
[3.2 'Nevada' 2003]]
('pop', 'state', 'year')
[(1.5, 'Ohio', 2000) (1.7, 'Ohio', 2001) (3.6, 'Ohio', 2002)
(2.4, 'Nevada', 2001) (2.9, 'Nevada', 2002) (3.2, 'Nevada', 2003)]
{'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2], 'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'], 'year': [2000, 2001, 2002, 2001, 2002, 2003]}
leaving python
"inJSL"
["pop" => {1.5, 1.7, 3.6, 2.4, 2.9, 3.2}, "state" => {"Ohio", "Ohio", "Ohio", "Nevada", "Nevada", "Nevada"}, "year" => {2000, 2001, 2002, 2001, 2002, 2003}]
0再:PythonパンダとJMPJMPのpythonサポートは進行中です。その機能と使いやすさの改善を継続するため、ご協力ください。 Python.orgから直接Python 3.6.4を使用して、MacのJMP 14.1で以下のコードを実行しました
パンダはインポートされていますが、行の変数がログウィンドウに評価されていないだけです。 print(pd .__ version__)でラップすると、値がログに記録されます。 以下のコードはそれを示しており、pandas DataFrameを取得して、データをスクリプトオブジェクトとしてJMPに戻すことを示しています。
Python Init(Path("/Library/Frameworks/Python.framework/Versions/3.6/lib/libpython3.6.dylib"), Use Python Version("3.6") );
Python Submit("\[
import pandas as pd
print('Pandas Version: ' + pd.__version__)
data = {'state':['Ohio','Ohio','Ohio','Nevada','Nevada','Nevada'],'year':[2000,2001,2002,2001,2002,2003], 'pop':[1.5,1.7,3.6,2.4,2.9,3.2]
}
frame = pd.DataFrame(data)
print(frame)
]\");
data = Python Get(data);
Print(data);
Python Term();
このコードの結果:
Pandas Version: 0.22.0
pop state year
0 1.5 Ohio 2000
1 1.7 Ohio 2001
2 3.6 Ohio 2002
3 2.4 Nevada 2001
4 2.9 Nevada 2002
5 3.2 Nevada 2003
["pop" => {1.5, 1.7, 3.6, 2.4, 2.9, 3.2}, "state" => {"Ohio", "Ohio", "Ohio", "Nevada", "Nevada", "Nevada"}, "year" => {2000, 2001, 2002, 2001, 2002, 2003}]
0
スクリプトオブジェクトから、新しいデータテーブルに処理できます。