파이썬 팬더와 JMP안녕 모두
JMP 파트너와 Python 및 JMP에 대해 논의했습니다. 토론하는 동안 두 가지 질문을했습니다.
1. 파이썬 팬더 열을 저장하지 않고 JMP 열로 직접 변환하는 방법은 무엇입니까?
2. JMP에서 Python Init ()를 수행하는 경우 Pandas를 가져 오지 못하는 문제가 있습니다.
1) JMP에서 Python Init ()를 실행할 때 아래와 같이 가져옵니다.
팬더를 _JMPpd로 가져 오기
(Python3.6은 JMP와 함께 제공되며 Pandas는 Python3.6에 이미 설치되어 있습니다) |
그림 1은 팬더 수입 버전 확인
2) 그러나 JMP, 그림 2에 약간의 오류가 있습니다.
다른 모듈 (예 : sqlalchemy, pymssql 등)은 괜찮습니다. 팬더에만 오류가 있습니다.
재 : 파이썬 팬더와 JMP이 문제에 대해 다시 논의했지만 약간의 오류가있는 것 같습니다.
파이썬 API가 안정적이지 않습니다. matplotlib의 pyplot 라이브러리에 오류가 있습니다.

그러나 파이썬에서는 괜찮습니다.

다음 프로세스는 어떻습니까?
1. JMP 프로세스 시작 JMP Python API
win32com.client import Dispatch에서
jmp = Dispatch ( "JMP.Application")
jmp.visible = 참 # 거짓
2. 파이썬 팬더 작업 (Python으로 데이터 처리 시작 )
삼. 팬더의 결과 ~로 변환하다 JMP 파일
이것에 대해 JMP는 JMP Sned 라이브러리를 Python으로 제공해야합니다. 파이썬 Get ()
4. JMP 스크립트 시작
dt = 현재 데이터 테이블 () 이후 스크립트 시작
재 : 파이썬 팬더와 JMP고마워 폴
당신의 의견으로, 나는 우리 파트너와 깊은 토론 시간을 가질 것입니다
다시 감사합니다
재 : 파이썬 팬더와 JMP이전 anwser는 방금 파이썬 객체를 가져 오는 것으로 나타났습니다. 팬더에서 데이터를 의도대로 가져 오지 않았습니다. 다음은 더 좋은 예입니다. 데이터를 데이터 프레임에서 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재 : 파이썬 팬더와 JMPJMP의 Python 지원은 진행중인 작업이므로 계속해서 기능과 사용 편의성을 개선하기 위해 우리와 함께하십시오. Python.org에서 직접 Python 3.6.4를 사용하여 Mac의 JMP 14.1에서 아래 코드를 실행했습니다.
팬더를 가져 오는 중입니다. 한 줄의 변수가 로그 창에 평가되지 않는 것입니다. print (pd .__ version__)로 감싸면 로그에 값을 얻습니다. 아래 코드는 그것을 보여주고 팬더 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
스크립트 객체에서 새 데이터 테이블로 처리 할 수 있습니다.