JMP® 18: Pythonistas를 단순히 만족시키는 것 이상1년 전 Python을 사용하는 JMP 사용자들은 우리의 Python 인터페이스가 최적이 아니라는 점을 분명히 밝혔습니다. 아야! 우리는 5년 전에 도입한 JMP와 Python 통합이 큰 성과를 거두고 있다고 생각했습니다. 만족 스러울 뿐이라는 점(즉, 충분하지만 최고는 아니라는 점)을 깨닫고 우리는 이 문제를 정면으로 해결하기로 결정했습니다.
JMP 수석 시스템 개발자인 Paul Nelson은 JMP 18의 JMP 내에서 Python 스크립트를 작성하고 실행하기 위한 일관되고 모든 기능을 갖춘 통합 개발 환경을 만들기 위한 노력을 주도했습니다.
저는 최근 Paul과 업그레이드된 JMP 및 Python 통합에 관해 이야기를 나눴습니다. Paul은 Python 개발자에게 훨씬 더 생산적인 환경을 제공하는 것이 목표라고 강조했습니다. 몇 가지 주요 개선 사항은 다음과 같습니다.
구성 없이 설치 즉시 작동하는 일관된 환경입니다. Python은 고객 Python 환경을 무제한으로 지원합니다. 무제한 고객 Python 환경에서 테스트할 수 없는 새로운 JMP 및 Python 기능을 추가하는 것은 불가능했습니다. 해결책? JMP 18에는 설치 즉시 작동하는 완벽하게 테스트된 환경의 기반이 되는 내장형 Python 버전이 포함되어 있습니다.
실제 환경에서 Python 데이터 테이블에 대한 직접 메모리 액세스. 이전 버전에서는 Python 사용자가 JMP 데이터 테이블의 복사본에 액세스했습니다. 이제 JMP 18에서는 Python 환경에서 JMP 데이터 테이블에 직접 액세스할 수 있으므로 Python 사용자는 JMP 내의 Python 스크립트에서 JMP 테이블에 액세스하고 생성하고 수정할 수 있습니다.
Python 주석 달기, 코드 색상 지정 및 내장된 로그를 사용하는 새로운 Python 스크립트 편집기입니다. 이전 통합에서는 JSL(JMP 스크립팅 언어)을 사용했습니다. JSL은 JSL 개발자에게 친숙했지만 Python 경험이 있지만 JSL 경험이 없는 JMP 사용자에게는 종종 매력적이지 않았습니다. JMP 18에서 사용자는 JMP 스크립트 편집기에서 직접 Python 스크립트를 열고 실행할 수 있으며 Python 스크립트에서 JSL을 실행할 수 있습니다. JMP 스크립팅 색인은 새로운 기능의 샘플을 문서화하고 제공합니다. Python 스크립트를 위한 일관된 환경을 갖추면 Python과 JSL을 사용하여 추가 기능을 작성하기 위한 기반도 제공됩니다.
Paul의 이야기를 더 들어보세요:
Paul의 3월 21일 라이브 웹 세미나 개발자 튜토리얼: JMP 18의 새로운 Python 통합 및 스크립팅 기능에 등록하여 Paul의 전체 세부 정보와 인터페이스 시연을 들어보세요. 그리고 영국 맨체스터에서 열리는 JMP Discovery Summit에 참석하시면 3월 6일 오전 전체회의에서 Paul의 연설을 들을 수 있습니다.
그런데 저는 Python 프로그래머가 아니기 때문에 Python 창시자인 Guido van Rossum이 새로운 언어 작업을 시작할 때 "Monty Python's Flying Circus"의 스크립트를 읽었다는 소문을 들어본 적이 없습니다. 그는 짧고 독특하며 흥미로운 이름을 원했기 때문에 Python이라고 부르기로 결정했습니다. 그럴듯하게 들리네요!
JMP 수석 시스템 개발자인 Paul Nelson은 JMP 18의 JMP 내에서 Python 스크립트를 작성하고 실행하기 위한 일관되고 모든 기능을 갖춘 통합 개발 환경을 만드는 데 앞장섰습니다. 그 결과는 무엇일까요? Python 개발자를 위한 보다 생산적인 환경은 설치 즉시 작동하고, 라이브 환경에서 Python 데이터 테이블에 대한 직접 메모리 액세스를 제공하며, Python 주석 및 코드 색상 표시와 내장된 로그를 사용하는 통합 Python 스크립트 편집기입니다.
자동화 및 스크립팅답변: JMP® 18: 단순히 Pythonista를 만족시키는 것 이상와, 정말 멋진 것 같아요!
답변: JMP® 18: 단순히 Pythonista를 만족시키는 것 이상Python에서 JMP로 데이터를 다시 가져오는 것에 대한 의견/질문입니다.
현재 우리는 이것을 할 수 있습니다:
dt = Python Get( df )
여기서 'df'는 Python 데이터 프레임입니다.
위 명령이 실제로 수행하는 작업은 $TEMP 폴더의 CSV에 데이터 프레임을 쓴 다음 JSL을 호출하여 읽은 다음 해당 임시 CSV를 삭제하는 것입니다. 대용량 파일의 경우 파일 쓰기와 스캔/읽기 모두에 분명히 오버헤드가 있습니다.
Python에서 JMP로 직접 메모리 내 전송이 가능하다면 매우 좋을 것입니다.
답변: JMP® 18: 단순히 Pythonista를 만족시키는 것 이상혹시 JMP v18에서 Python 코드가 포함된 수식 열을 지원하나요?
답변: JMP® 18: 단순히 Pythonista를 만족시키는 것 이상JMP 14-17에서는 Python Send( dt )와 Python Get( df ) 모두 임시 파일을 통해 CSV를 저장하여 작동했습니다. 이는 JMP 18의 주요 변경 사항 중 하나입니다. JMP 18을 사용하면 Python Send( dt )가 이제 Python에서 jmp.DataTable 객체를 생성합니다. 이것은 복사본이 아니며 실제 기억 에 남는 참조입니다. 데이터 테이블. Python에서 직접 읽고 수정할 수 있습니다. JSL에서 Python Get(dt)을 수행하면 데이터 테이블에 메모리 내 데이터 테이블 참조가 표시됩니다. 호환성 문제로 남겨진 것은 원래 Python Get( df )입니다. Pandas 데이터프레임을 JMP 데이터 테이블에 복사본으로 가져오는 방법입니다.
이제 Python에서 데이터 프레임을 가져와 데이터 프레임 열을 반복하고 메모리 내에서 이에 상응하는 JMP 데이터 테이블을 생성할 수 있습니다. jmp.DataTable을 참조하세요. JMP 18 스크립팅 인덱스의 새로운 Python 카테고리 아래에 있습니다. 샘플 스크립트에 대한 Python 하위 디렉터리도 있습니다. 여기에는 jmp.DataTable 객체에서 메모리 내 pandas.DataFrame을 생성하는 두 가지 방법과 pandas.DataFrame( in-memory )에서 jmp.DataTable 객체를 생성하는 한 가지 예를 보여주는 JMP2pandas.py 스크립트가 있습니다.
# create JMP DataTable from pandas DataFrame
dt2 = jmp.DataTable('BC2',df.shape[0])
for j in range( df.shape[1] ):
dt2.new_column(dt[j].name, dt[j].dtype)
dt2[j] = list(df.iloc[:,j])
여기서 df는 pandas 데이터프레임이고 dt2는 새로운 JMP DataTable입니다. (dt는 JMP jmp.DataTable 객체이기도 하며 유형 매개변수는 jmp.DataType 열거 값입니다.) 예제 파일은 'Big Class.jmp'를 dt로 열고 pandas.DataFrame을 생성하고 데이터 프레임에서 dt2를 생성합니다.
답변: JMP® 18: 단순히 Pythonista를 만족시키는 것 이상수식 열은 JMP 18의 Python 코드를 지원하지 않습니다. 이는 조사 중인 기능이며 훌륭한 기능이 될 것입니다. JMP 18을 강력하게 만들고, 시작 시 작업하고, Python 인식 스크립트 편집기를 지원하고, 오류 보고를 강화하고, 스크립팅 인덱스를 추가하고, Python에서 JMP로의 연결을 열기 위해서는 엄청난 양의 인프라를 추가해야 했습니다. 한동안 부족했던 많은 것들이 이제 향상되어 JMP 내에서 매력적이고 생산적인 Python 환경을 만들었습니다.
이제 무거운 작업이 완료되었으므로 우리는 그것을 하루라고 부르지 않습니다. 앞으로 훨씬 더 많은 일이 일어날 것입니다.