Un colega me preguntó si teníamos muestras que mostraran el envío de una tabla de datos a Python, la modificación de los datos dentro de Python y la devolución de la tabla modificada. No encontré uno en el índice de scripting, así que creé uno para compartir.
Este guión muestra un viaje redondo completo. Pasando una tabla de datos a Python, modificando los datos en Python, y luego devolviendo los resultados al script JSL. Usando la tabla de datos favorita de todos ... Gran clase Esta secuencia de comandos pasa la tabla a Python, crea un peso dividido por la columna de altura como 'lb_inch' y devuelve la tabla modificada a JSL.
Cuando JMP pasa una tabla de datos a Python, crea un marco de datos de Pandas como el objeto de Python.
Debido a que mi máquina tiene varias versiones instaladas de Python, tengo que decirle a JMP dónde encontrar la instalación de Python que quiero usar. Esto se hace con la declaración de inicio de Python.
Inic de Python (ruta (), usar la versión de Python ())
Ruta () es la ruta a la biblioteca compartida de python
Use Python Version () es la versión de python que quiero.
En Windows, escape el separador de ruta, en lugar de c: \ anaconda3 \ ... \ python36.dll, sería c: \\ anaconda3 \\ ... \\ python36.dll donde ... Es el resto de la ruta del sistema de archivos.
Este Python Init () apunta a la instalación de Python en mi 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();