Un collega mi ha chiesto se avevamo qualche campione che mostrava l'invio di una tabella dati a Python, la modifica dei dati all'interno di Python e la restituzione della tabella modificata. Non ne ho trovato uno nell'indice di scripting, quindi ne ho creato uno da condividere.
Questo script mostra un round trip completo. Passando una tabella dati in Python, modificando i dati in Python, quindi restituendo i risultati allo script JSL. Utilizzando la tabella dati preferita di tutti ... Grande classe Questo script passa la tabella a Python, crea una colonna di peso divisa per l'altezza come "lb_inch" e restituisce la tabella modificata a JSL.
Quando JMP passa una tabella di dati a Python, crea un dataframe Pandas come oggetto Python.
Poiché la mia macchina ha più versioni installate di Python, devo dire a JMP dove trovare l'installazione di Python che voglio usare. Questo è fatto con la dichiarazione di Python Init.
Python Init (Path (), Usa Python Version ())
Path () è il percorso della libreria condivisa di python
Usa Python Version () è la versione di python che voglio.
Su Windows, sfuggi al separatore del percorso, quindi anziché c: \ anaconda3 \ ... \ python36.dll, sarebbe c: \\ anaconda3 \\ ... \\ python36.dll dove ... è il resto del percorso del file system.
Questo Python Init () punta all'installazione Python sul mio 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();