JMP 18 bietet eine neue Möglichkeit zur Integration mit Python und eine unabhängige Python-Umgebung, die speziell für die Verwendung mit JMP entwickelt wurde. Darüber hinaus verfügt JMP jetzt über einen nativen Python-Editor und JMP-spezifische Python-Pakete. Diese Python-Umgebung in JMP bietet verbesserte Konnektivität und Interaktion mit JMP. Die Verwendung von Python mit JMP war noch nie so einfach.
Machen Sie sich mit der integrierten Python-Entwicklungsumgebung (IDE) in JMP 18 vertraut und erfahren Sie, wie Sie
- Suchen Sie die Python-IDE.
- Führen Sie ein einfaches Beispiel aus.
- Installieren Sie Python-Pakete.
- Führen Sie das JSL-Skript von Python aus.
- Senden Sie eine Python-Variable an JSL.
- Erstellen Sie eine JMP-Datentabelle aus Python.
Beginnen wir damit, wie Sie den neuen Python-Editor finden.
Als nächstes sehen wir uns ein einfaches Beispiel in Python an und wie das eingebettete Protokoll angezeigt wird:
Once you've determined which packages are installed, watch how to install a new one and how to upgrade pip. </CODE></P>
<P></P>
<iframe src="https://players.brightcove.net/6058004218001/default_default/index.html?videoId=6357446770112" width="1036" height="540" allowfullscreen allow="encrypted-media"></iframe>
<P></P>
<P>Der von mir verwendete Code ist unten:</P>
<PRE class="bp-text bp-text-plain hljs bp-is-scrollable" tabindex="0"><CODE class="bp-text-code py"><SPAN class="hljs-selector-tag">import</SPAN> <SPAN class="hljs-selector-tag">jmp</SPAN>
<SPAN class="hljs-selector-tag">import</SPAN> <SPAN class="hljs-selector-tag">jmputils <SPAN class="hljs-selector-id">#listing</SPAN> packages installed jmputils<SPAN class="hljs-selector-class">.jpip</SPAN>(<SPAN class="hljs-string">'list'</SPAN>) <SPAN class="hljs-selector-id">#Installing</SPAN> function jmputils<SPAN class="hljs-selector-class">.jpip</SPAN>(<SPAN class="hljs-string">'install'</SPAN>,<SPAN class="hljs-string">'numpy </SPAN><SPAN class="hljs-string">pandas'</SPAN>) <SPAN class="hljs-selector-id">#Upgrade</SPAN> pip jmputils<SPAN class="hljs-selector-class">.jpip</SPAN>(<SPAN class="hljs-string">'install --upgrade'</SPAN>, <SPAN class="hljs-string">'pip setuptools'</SPAN>)</SPAN>
Als Nächstes lernen wir die Funktion jmp.run_jsl kennen, die ein JSL-Skript in Python kapselt.
Der von mir verwendete Python-Beispielcode lautet wie folgt:
<SPAN class="hljs-selector-tag"><SPAN class="hljs-keyword">import</SPAN> jmp <BR />jmp.run_jsl(<BR /> '''<BR /> //this is a JSL comment<BR /> Open ("$Desktop/Wafer Stacked.csv")<BR /><BR /> '''<BR />)</SPAN>
Stellen Sie sich nun vor, dass eine CSV-Datentabelle mit Pandas in Python importiert wurde. Wenn wir sie als Variable an das JSL-Skript senden möchten, können wir die Python-Funktion „Get“ verwenden und JSL-Funktionen wie Graph Builder nutzen.
Der Code lautet wie folgt:
<SPAN class="hljs-keyword">import</SPAN> jmp
<SPAN class="hljs-keyword">import</SPAN> pandas <SPAN class="hljs-keyword">as</SPAN> pd
pd_dt= pd.read_csv(<SPAN class="hljs-string">"Wafer Stacked.csv"</SPAN>)
<SPAN class="hljs-keyword">print</SPAN> (pd_dt.head());
jmp.run_jsl(<SPAN class="hljs-string">''' jmp_dt= Python Get (pd_dt); jmp_dt<< Graph Builder( Size( 567, 444 ), Show Control Panel( 0 ), Show Legend( 0 ), Variables( X( :X_Die ), Y( :Y_Die ), Color(:Defects) ), Elements( Heatmap( X, Y, Legend( 5 ) ) ) ); '''</SPAN>)
Abschließend erstellen wir eine neue JMP-Datentabelle mit Python und dem Modul „jmp“. In diesem Beispiel verwende ich eine CSV-Datei und das Pandas-Paket. Dies lässt sich jedoch auch auf andere Dateitypen anwenden, insbesondere auf solche, die nicht direkt in JMP geöffnet werden können.
Hallo,
Ich bin mir nicht sicher, ob ich im richtigen Bereich bin. Ich möchte ein Add-In für mein Python-Skript erstellen, aber es funktioniert nicht. Ist das möglich? Wie?
Dank im Voraus,
Ahmed
Hallo @AhmedMetroEM
Besser wäre es, diese Frage als neuen Thread im Diskussionsbereich der Community zu stellen. So ist sie auch für andere mit ähnlichen Interessen leichter zu finden: https://community.jmp.com/t5/Discussions/bd-p/discussions
Du kannst mich im Text mit meiner Benutzer-ID und einem @-Zeichen markieren, damit ich eine Benachrichtigung zu deiner Frage erhalte. So kann ich sie leichter finden und dort antworten, da sich vielleicht auch andere melden möchten.
Kurze Antwort vorweg: Generell würde ich sagen: ja, es kommt auf die Details an.
#adding all columns
for i in range(len(pd_dt.columns)):
jmp_dt.new_column(pd_dt.columns[i],jmp.DataType.Character)
jmp_dt[i]=pd_dt[pd_dt.columns[i]].astype(str)
Diese schlanke Version ist für sehr kleine Datentabellen ausreichend.
Beim Zugriff auf Spalten großer Datentabellen scheint es unerlässlich zu sein, den Code mit Anfangs-/Enddatentabelle einzuschließen.
Python in JMP: Best Practices für die Umwandlung von DataFrame-Spalten in DataTable-Spalten und Auswirkungen auf die Berechnungsgeschwindigkeit
[Für die Übertragung großer Datenmengen in JMP19 verwenden Sie dt = jmp.from_dataframe(pandas_df)]