Ein Kollege fragte mich, ob wir Beispiele hätten, die das Senden einer Datentabelle an Python, das Ändern der Daten in Python und das Zurückgeben der geänderten Tabelle zeigten. Ich habe keines im Skriptindex gefunden, also habe ich eines zum Teilen erstellt.
Dieses Skript zeigt eine vollständige Hin- und Rückfahrt. Übergeben einer Datentabelle an Python, Ändern der Daten in Python und anschließendes Zurückgeben der Ergebnisse an das JSL-Skript. Verwenden Sie die beliebteste Datentabelle aller ... Große Klasse. Dieses Skript übergibt die Tabelle an Python, erstellt eine Spalte „Gewicht geteilt durch Höhe“ als „lb_inch“ und gibt die geänderte Tabelle an JSL zurück.
Wenn JMP eine Datentabelle an Python übergibt, erstellt es einen Pandas-Datenrahmen als Python-Objekt.
Da auf meinem Computer mehrere Python-Versionen installiert sind, muss ich JMP mitteilen, wo sich die Python-Installation befindet, die ich verwenden möchte. Dies geschieht mit der Python-Init-Anweisung.
Python Init (Pfad (), Python-Version verwenden ())
Path() ist der Pfad zur gemeinsam genutzten Python-Bibliothek
Verwenden Sie Python Version() ist die Version von Python, die ich möchte.
Unter Windows maskieren Sie das Pfadtrennzeichen, sodass es anstelle von c:\anaconda3\...\python36.dll c:\\anaconda3\\...\\python36.dll lautet, wobei ... der Rest ist Dateisystempfad.
Dieses Python Init() verweist auf die Python-Installation auf meinem Mac.
Names Default To Here( 1 );
Python Init(Path("/Library/Frameworks/Python.framework/Versions/3.6/lib/libpython3.6.dylib"),
Use Python Version("3.6")
);
dt1 = Open( "$SAMPLE_DATA/Big Class.jmp" );
Python Send( dt1 );
Close( dt1 );
Python Submit("print(dt1)");
Python Submit("\[
# The JMP Data table is transferred to Python as a pandas data frame
# Print out the column names
for col in dt1.columns:
print( col )
# Create a new column and apply formula to data, creating pounds per inch
# weight / height
def my_formula(w,h):
return w / h
dt1['lb_inch'] = dt1.apply(lambda row: my_formula(row['weight'],row['height']), axis=1)
dt1.head()<BR />
# print the modified table from Python
print(dt1)
]\");
<BR />// Get the modified table back from Python
dt2 = Python Get(dt1);
dt2 << New Data View;
Python Term();