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
从脚本对象可以将其处理为新的数据表