Python熊貓和JMP大家好
我與JMP合作夥伴討論了Python和JMP。在討論中,他們問了兩個問題。
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 Pandas和JMP我們再次討論了這個問題,但似乎有一些錯誤。
Python API似乎不穩定。matplotlib的pyplot庫中存在一些錯誤。

但是在Python中可以。

接下來的過程如何?
1。 使用啟動JMP流程 JMP Python API
從win32com.client導入調度
jmp = Dispatch(“ JMP.Application”)
jmp.visible =真#假
2。 工作的Python熊貓 (開始使用Python進行數據處理 )
3。熊貓的結果轉換成 JMP 文件
為此,JMP需要在Python中提供JMP Sned庫,例如 Python Get()
4。啟動JMP腳本
在dt = Current Data Table()之後啟動腳本
回复:Python Pandas和JMP謝謝保羅,
根據您的評論,我將與我們的合作夥伴進行深入的討論
再次感謝
回复:Python Pandas和JMP好吧,以前的anwser只是顯示了要返回一個python對象,而不是從熊貓那裡獲取數據。這是一個更好的例子。 那是從StackOverflow借來的代碼,用於將數據從數據幀獲取到numpy。
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 Pandas和JMPJMP的python支持正在進行中,請耐心等待我們不斷提高其功能和易用性。 我已經直接在Python.org上使用Python 3.6.4在Mac上的JMP 14.1中運行了以下代碼
正在導入Pandas,只是沒有將行中的變量評估到日誌窗口中。 如果用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
從腳本對象可以將其處理為新的數據表