Un collègue m'a demandé si nous avions des exemples montrant l'envoi d'une table de données à Python, la modification des données dans Python et le renvoi de la table modifiée. Je n'en ai pas trouvé dans l'index des scripts, j'en ai donc créé un à partager.
Ce script montre un aller-retour complet. Passer une table de données à Python, modifier les données en Python, puis renvoyer les résultats au script JSL. Utiliser la table de données préférée de tout le monde... Grande Classe. Ce script transmet la table à Python, crée une colonne de poids divisé par hauteur sous la forme « lb_inch » et renvoie la table modifiée à JSL.
Lorsque JMP transmet une table de données à Python, il crée une trame de données Pandas en tant qu'objet Python.
Étant donné que plusieurs versions de Python sont installées sur ma machine, je dois indiquer à JMP où trouver l'installation de Python que je souhaite utiliser. Cela se fait avec l'instruction Python Init.
Python Init ( Chemin ( ), Utiliser la version Python ( ) )
Path() est le chemin d'accès à la bibliothèque partagée Python
Utiliser Python Version() est la version de Python que je veux.
Sous Windows, échappez au séparateur de chemin afin qu'au lieu de c:\anaconda3\...\python36.dll, ce serait c:\\anaconda3\\...\\python36.dll où ... est le reste du chemin du système de fichiers.
Ce Python Init() pointe vers l'installation de Python sur mon 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();