JMP19 - 데이터프레임 교환 프로토콜 사용 중단 경고최근 JSL 로그에서 이 메시지를 봤는데, jmp19에서 뭔가 다른 방식으로 바뀐 건가요? 이 기능은 결국 단계적으로 폐지될 예정인데, 저는 jmp18에서 jmp 테이블을 pandas 데이터프레임으로 변환하는 사용자 정의 함수를 사용했었지만 jmp19에서는 작동하지 않았습니다. 그렇다면 이제는 어떻게 하면 같은 결과를 얻을 수 있을까요?
저는 JSL 스크립트 내부에서 파이썬 코드를 실행합니다.
Python Send(o28k_raw);<BR />Python Submit(<BR />raw_data = pd.api.interchange.from_dataframe(o28k_raw)<BR />);
이 경고:
:18: Pandas4Warning: The Dataframe Interchange Protocol is deprecated.
For dataframe-agnostic code, you may want to look into:
- Arrow PyCapsule Interface: https://arrow.apache.org/docs/format/CDataInterface/PyCapsuleInterface.html
- Narwhals: https://github.com/narwhals-dev/narwhals
자동화 및 스크립팅데이터 혼합 및 정리제목: JMP19 - 데이터프레임 교환 프로토콜(DIP) 사용 중단 경고JMP 19에서 Python을 더 활용하는 방법에 대한 JMP 사용자 커뮤니티 게시글을 보셨나요?
JMP 19에서는 새로운 함수인 `jmp.from_dataframe()`을 사용하여 Pandas 데이터프레임을 다루는 것이 더 쉬워졌습니다.
제목: JMP19 - 데이터프레임 교환 프로토콜(DIP) 사용 중단 경고같은 링크에서 아래 코드를 찾았지만, 쿼리는 제가 언급한 것과 다릅니다.
pd.api.interchange.from_dataframe()
제목: JMP19 - 데이터프레임 교환 프로토콜(DIP) 사용 중단 경고흥미롭게도, 다음 파이썬 스크립트를 실행했을 때 아무런 경고도 표시되지 않습니다.
import jmp
import pandas as pd
dt = jmp.open(jmp.SAMPLE_DATA + "Big Class.jmp")
pandas_df = (pd.api.interchange.from_dataframe(dt))
print(pandas_df)
JMP의 파이썬 편집기에서 파이썬 코드를 실행할 때도 오류가 발생하는지, 아니면 "파이썬 제출" 기능을 사용하여 실행할 때만 오류가 발생하는지 확인해 주시겠습니까?
다음과 같이 시도해 봤는데 오류가 발생하지 않았습니다.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Python Send( dt );
Python Submit( "pandas_df = (pd.api.interchange.from_dataframe(dt))" );
Python Submit( "dt2 = jmp.from_dataframe(pandas_df)" );
Python Get(dt2);
이 스크립트들을 테스트해 보시고 귀하 쪽에서도 동일한 경고 메시지가 표시되는지 확인해 주시겠습니까?
제목: JMP19 - 데이터프레임 교환 프로토콜(DIP) 사용 중단 경고Python Submit을 사용하여 파이썬 코드를 실행할 때뿐만 아니라 JMP의 파이썬 편집기에서 파이썬 스크립트를 실행할 때도 이 경고가 표시됩니다.
pandas_df = (pd.api.interchange.from_dataframe(dt))
/*:
<STRING>
:1: Pandas4Warning: The Dataframe Interchange Protocol is deprecated. For dataframe-agnostic code, you may want to look into: - Arrow PyCapsule Interface: https://arrow.apache.org/docs/format/CDataInterface/PyCapsuleInterface.html - Narwhals: https://github.com/narwhals-dev/narwhals
</STRING>
//:*/
import jmp
import pandas as pd
dt = jmp.open(jmp.SAMPLE_DATA + "Big Class.jmp")
pandas_df = (pd.api.interchange.from_dataframe(dt))
print(pandas_df)
/*:
:5: Pandas4Warning: The Dataframe Interchange Protocol is deprecated.
For dataframe-agnostic code, you may want to look into:
- Arrow PyCapsule Interface: https://arrow.apache.org/docs/format/CDataInterface/PyCapsuleInterface.html
- Narwhals: https://github.com/narwhals-dev/narwhals
제목: JMP19 - 데이터프레임 교환 프로토콜(DIP) 사용 중단 경고답변 감사합니다. 위에 있는 파이썬 코드는 스크립팅 인덱스에서 가져온 것이라 일반적으로 문제없이 실행됩니다.
JMP 최신 버전(19.1.2)이 아닌 경우, 업데이트 후 다시 시도해 보시기 바랍니다. 이미 최신 버전을 사용 중이시라면 JMP 기술 지원팀 (support@jmp.com) 으로 문의하시는 것을 권장합니다.
제목: JMP19 - 데이터프레임 교환 프로토콜(DIP) 사용 중단 경고이 경고는 팬더 자체에서 나온 것입니다.
PyCapsule 인터페이스를 활용하도록 내부적으로 업데이트를 진행했습니다. 정확한 출시 시기는 안정성 확보를 위한 테스트 결과에 따라 결정될 예정입니다. 이번 업데이트를 통해 jmp.from_arrow() 함수가 추가되고, Arrow 인터페이스 요구 사항을 지원하기 위해 jmp.DataTable 객체가 확장될 것입니다. jmp.from_dataframe() 함수 또한 새로운 기능을 활용하도록 내부적으로 재작업되었습니다.
import pandas as pd
dt = jmp.open(jmp.SAMPLE_DATA + "Big Class.jmp")
pandas_df = pd.DataFrame.from_arrow(dt)
print(pandas_df)
제목: JMP19 - 데이터프레임 교환 프로토콜(DIP) 사용 중단 경고이 경고는 pandas 3.0 이상 버전에서 발생합니다.
제목: JMP19 - 데이터프레임 교환 프로토콜(DIP) 사용 중단 경고설명해주셔서 감사합니다.
제가 이해하기로는 현재의 사용 중단 경고는 JMP가 아닌 Pandas에서 비롯된 것이며, 향후 JMP 릴리스에서는 Arrow/PyCapsule 인터페이스를 직접 지원하여 다음과 같은 워크플로우를 사용할 수 있게 될 것입니다.
dt = jmp.open(...)
pandas_df = pd.DataFrame.from_arrow(dt)
데이터프레임 교환 프로토콜에 의존하지 않고.
한편, 저는 여러 JMP 버전에 걸쳐 배포된 프로덕션 스크립트를 유지 관리하는 최적의 접근 방식을 모색하고 있습니다.
과거 JMP 18에서는 사용자 지정 변환 함수를 사용했습니다.
def jmp_to_pandas(jmp_table):
data = {}
for col in jmp_table:
data[col.name] = list(col)
return pd.DataFrame(data)
JMP 19로 업그레이드한 후, 저는 다음과 같이 변경했습니다:
<SPAN>pd.api.interchange.from_dataframe(...)</SPAN>
이 방법은 작동하지만 이제 Pandas 사용 중단 경고가 발생합니다.
Arrow 지원이 제공되어 프로덕션 환경에 배포된 스크립트를 재검토해야 할 때까지 Interchange API를 계속 사용하는 것이 좋을까요, 아니면 Pandas 및 JMP 버전 업데이트에도 안정적으로 유지되어야 하는 프로덕션 코드에 대해 사용자 지정 DataTable-DataFrame 변환으로 되돌리는 것이 좋을까요?
또한, 향후 Arrow 구현과 관련해서도 마찬가지입니다.<SPAN>pyarrow</SPAN>Arrow 인터페이스가 필수 종속성인지, 아니면 사용자가 추가 패키지를 설치하지 않고도 JMP를 통해 노출되는지 궁금합니다.
추가적인 맥락을 알려주셔서 감사합니다.
제목: JMP19 - 데이터프레임 교환 프로토콜(DIP) 사용 중단 경고일반적으로 성능상의 이점 때문에 인터체인지 프로토콜과 같은 최신 DataFrame 변환 방식을 계속 사용하는 것이 좋습니다. 스크립트에서 콘솔 출력에 접근해야 하는 경우에는 경고를 숨기는 것이 도움이 될 수 있지만, 일반적으로 권장하지 않습니다.
import warnings
warnings.simplefilter(action='ignore', category=DeprecationWarning)
안정성 측면에서 이 경고는 Pandas4Warning으로 표시되며, 이는 pandas 4.0에서 이러한 경고가 적용될 것임을 의미합니다( 업데이트된 경고 정책 참조). pandas는 일반적으로 약 3년마다 주요 릴리스를 진행해 왔지만, 예상 릴리스 날짜는 (제가 알기로는) 공개하지 않았습니다. 하지만 Arrow PyCapsule 인터페이스는 pandas 4.0에서 JMP에서 사용 가능할 것으로 확신합니다.
워크플로에서 사용하는 특정 JMP/pandas 버전을 알 수 없으므로, 사용자 지정 DataTable 변환이 해당 사용 사례에 더 적합할 수 있습니다. 또한 jmp.from_dataframe_using_csv 함수 도 사용 가능하며, pandas의 주요 릴리스(2.3.3과 3.0.0에서 테스트)에서 큰 차이가 없다는 점도 참고하십시오. 이 함수는 JMP 19에서 사용할 수 있으며 JMP 20에서도 계속 사용할 수 있습니다.
현재 구현에서 `jmp.from_dataframe()`은 pandas.DataFrame을 인수로 받을 때 하위 호환성을 유지하기 위해 내부적으로 Arrow PyCapsule 인터페이스(` jmp.from_arrow` )를 호출하므로 스크립트 자체를 수정할 필요는 없습니다. 하지만 다음 질문에 대해 말씀드리자면, pandas는 이러한 메서드를 사용할 때 pyarrow가 필수 종속성이므로 실행 환경에 pyarrow를 설치해야 할 수도 있습니다. 저희가 아는 바로는 이는 pandas에 더 특화된 사항이며, polars는 pyarrow 종속성을 요구하지 않습니다.
파이썬이나 데이터프레임 변환에 대해 더 궁금한 점이 있거나 추가 질문이 있으시면 언제든지 편하게 문의해 주세요. 기꺼이 도와드리겠습니다.