JMP® 18: Andare oltre la semplice soddisfazione dei pythonistiUn anno fa, gli utenti JMP che utilizzavano anche Python hanno chiarito che ritenevano che la nostra interfaccia Python non fosse ottimale. Ahia! Pensavamo che l'integrazione tra JMP e Python, introdotta più di cinque anni fa, stesse colpendo nel segno. Rendendoci conto che era solo soddisfacente (in altre parole, che era abbastanza buono ma non il migliore), abbiamo deciso di affrontare la sfida a testa alta.
Paul Nelson, sviluppatore principale dei sistemi JMP, ha guidato l'impegno volto a creare un ambiente di sviluppo coerente, completo e integrato per la scrittura e l'esecuzione di script Python all'interno di JMP in JMP 18.
Recentemente ho parlato con Paul dell'integrazione aggiornata di JMP e Python. Paul ha sottolineato che l'obiettivo era fornire un ambiente significativamente più produttivo per gli sviluppatori Python. Alcuni miglioramenti chiave includono:
Un ambiente coerente che funzionerà immediatamente una volta installato, senza configurazione. Python supporta ambienti Python illimitati dei clienti. L'aggiunta di nuove funzionalità JMP e Python che non potevano essere testate in un numero illimitato di ambienti Python dei clienti era insostenibile. La soluzione? JMP 18 include una versione incorporata di Python che costituisce la base per un ambiente completamente testato che funzionerà immediatamente dopo l'installazione.
Accesso diretto alla memoria alle tabelle di dati Python in un ambiente live. Nelle versioni precedenti, gli utenti Python accedevano a una copia di una tabella di dati JMP. Ora, JMP 18 fornisce l'accesso diretto alle tabelle di dati JMP dall'ambiente Python, in modo che gli utenti Python possano accedere, creare e modificare le tabelle JMP dagli script Python all'interno di JMP.
Un nuovo editor di script Python che utilizza i commenti Python e la colorazione del codice, oltre a un registro incorporato. L'integrazione precedente utilizzava JMP Scripting Language (JSL). JSL era familiare agli sviluppatori JSL ma spesso non era invitante per gli utenti JMP con esperienza Python ma senza esperienza JSL. In JMP 18, gli utenti possono aprire ed eseguire script Python direttamente nell'editor di script JMP ed eseguire JSL dai propri script Python. Il JMP Scripting Index documenta e fornisce esempi delle nuove funzionalità. Avere un ambiente coerente per gli script Python fornisce anche una base per scrivere componenti aggiuntivi utilizzando Python e JSL.
Scopri di più da Paolo:
Valuta la possibilità di registrarti al webinar dal vivo di Paul , tutorial per sviluppatori: nuove funzionalità di integrazione e scripting di Python in JMP 18 , per ascoltarlo fornire dettagli completi e dimostrare l'interfaccia. E, se parteciperai al JMP Discovery Summit a Manchester, nel Regno Unito , potrai ascoltare Paul parlare durante la plenaria mattutina del 6 marzo.
A proposito, non essendo un programmatore Python, non avevo sentito la voce secondo cui il creatore di Python, Guido van Rossum, stava leggendo le sceneggiature di “Monty Python's Flying Circus” quando iniziò a lavorare sul nuovo linguaggio. Voleva un nome breve, unico e intrigante, quindi ha deciso di chiamarlo Python. Sembra plausibile!
Paul Nelson, sviluppatore principale dei sistemi JMP, ha guidato l'impegno volto a creare un ambiente di sviluppo coerente, completo e integrato per la scrittura e l'esecuzione di script Python all'interno di JMP in JMP 18. Il risultato? Un ambiente più produttivo per gli sviluppatori Python che funziona immediatamente una volta installato, fornisce accesso diretto alla memoria alle tabelle di dati Python in un ambiente live e un editor di script Python integrato che utilizza i commenti Python, la colorazione del codice e un registro incorporato.
Automazione e scriptingRi: JMP® 18: Andare oltre la semplice soddisfazione dei pythonistiWow, sembra fantastico!
Ri: JMP® 18: Andare oltre la semplice soddisfazione dei pythonistiCommento/domanda sul ripristino dei dati in JMP da Python.
Attualmente possiamo fare questo:
dt = Python Get( df )
dove 'df' è un dataframe Python.
Ho notato che ciò che fa effettivamente il comando precedente è scrivere il dataframe su un CSV nella cartella $TEMP, quindi invocare un JSL per leggerlo, quindi eliminare quel CSV temporaneo. Per file di grandi dimensioni c'è ovviamente un sovraccarico sia per scrivere il file che per scansionarlo/leggerlo.
Sarebbe molto bello se questo potesse essere un trasferimento in memoria direttamente da Python a JMP
Ri: JMP® 18: Andare oltre la semplice soddisfazione dei pythonistiPer curiosità, JMP v18 supporterà le colonne formula con codice Python?
Ri: JMP® 18: Andare oltre la semplice soddisfazione dei pythonistiIn JMP 14-17 sia Python Send ( dt ) che Python Get ( df ) funzionavano salvando CSV tramite un file temporaneo. Questo è uno dei principali cambiamenti in JMP 18. Con JMP 18, Python Send ( dt ) ora crea un oggetto jmp.DataTable in Python. Questa non è una copia, è un riferimento vivo nella memoria al tabella dati. Può essere letto e modificato direttamente da Python. Da JSL se esegui Python Get ( dt ), la tabella dati otterrai il riferimento alla tabella dati in memoria. Lasciato per problemi di compatibilità c'era l'originale Python Get( df ); metodo per inserire un dataframe panda in una tabella dati JMP come copia.
Ora hai il potere di prendere un frame di dati in Python e semplicemente eseguire l'iterazione sulle colonne del frame di dati e creare in memoria la tabella dati JMP equivalente. Vedi jmp.DataTable. nella nuova categoria Python nell'indice di scripting di JMP 18. Esiste anche una sottodirectory Python per gli script di esempio. Lì troverai uno script JMP2pandas.py che mostra due modi per creare in memoria un pandas.DataFrame da un oggetto jmp.DataTable e un esempio di creazione dell'oggetto jmp.DataTable da pandas.DataFrame (in-memory)
# create JMP DataTable from pandas DataFrame
dt2 = jmp.DataTable('BC2',df.shape[0])
for j in range( df.shape[1] ):
dt2.new_column(dt[j].name, dt[j].dtype)
dt2[j] = list(df.iloc[:,j])
Dove df è un dataframe panda e dt2 è il nuovo JMP DataTable. (nota che dt è anche un oggetto jmp.DataTable di JMP, il parametro type è un valore di enumerazione jmp.DataType.). Il file di esempio ha aperto "Big Class.jmp" come dt, crea un pandas.DataFrame, crea dt2 dal frame di dati.
Ri: JMP® 18: Andare oltre la semplice soddisfazione dei PythonistiLe colonne formula non supportano il codice Python in JMP 18. È qualcosa su cui stiamo studiando e sarebbe un'ottima funzionalità. C'era un'enorme quantità di infrastruttura da aggiungere per rendere JMP 18 robusto, funzionante all'avvio, supportare un editor di script compatibile con Python, una migliore segnalazione degli errori, aggiungere un indice di scripting e aprire un ponte da Python a JMP. Molte cose che mancavano da tempo, ora sono state migliorate per creare quello che si ritiene essere un ambiente Python invitante e produttivo all'interno di JMP.
Ora che il lavoro pesante è stato fatto, non chiudiamo qui la giornata. Molto altro in arrivo.