Comment convertir Python Pandas dataFrame au format jmp sans l'enregistrer en tant que fichiers ?Je sais que JMP prend en charge la fonction "Python Interface" dans l'environnement de script JMP. Mais parfois, il sera préférable de travailler en collaboration indépendamment avec un ingénieur Python et un ingénieur JMP.
Dans notre cas, l'ingénieur Python lit les fichiers de base de données avec l'interface DB, effectue le pré-traitement avec la bibliothèque Pandas et souhaite convertir le format JMP car l'ingénieur JMP n'a besoin que des données au format JMP pour effectuer l'analyse des données et le post-traitement avec JSL.
Comme vous l'imaginez, le goulot d'étranglement est de savoir comment convertir le dataFrame de Python Pandas sans l'enregistrer en tant que fichiers. Le moyen le plus simple consiste à enregistrer des fichiers et à les lire au format jmp, mais il faut plusieurs fois pour les enregistrer et les lire. J'aimerais savoir où se trouve une bibliothèque pour convertir Python Pandas dataFrame au format jmp directement en mémoire ou non.
Re : Comment convertir Python Pandas dataFrame au format jmp sans l'enregistrer en tant que fichiers ?Merci pour le retour.J'adorerais pouvoir simplement ouvrir un fichier .parquet directement avec JMP.
Nous utilisons déjà des connexions DB pour récupérer des données, mais il y a tellement d'inefficacités dans l'utilisation de .csv dans un pipeline de données complet (écriture d'extraction, stockage, lecture), nous aimerions commencer à utiliser parquet.
Re : Comment convertir Python Pandas dataFrame au format jmp sans l'enregistrer en tant que fichiers ?Les formats JSON sont trop nombreux à gérer.
Re : Comment convertir Python Pandas dataFrame au format jmp sans l'enregistrer en tant que fichiers ?@Craige_Hales toi-da mec Craig : )
Re : Comment convertir Python Pandas dataFrame au format jmp sans l'enregistrer en tant que fichiers ?To_Json avec Orient=table pourrait être un bon choix. Il a besoin de convertir du binaire en texte et inversement. L'assistant JSON de JMP devrait le gérer assez directement. L'utilisation de CSV avec l'importation de plusieurs fichiers peut en fait être assez rapide. Il utilisera tous vos processeurs CPU pour charger les colonnes en parallèle lorsque JMP les importera. Cela peut être trop lent côté serveur en fonction de la manière dont il est implémenté.
J'ai lancé mon propre transfert binaire à binaire dans le Beowulf, Newton et M. Hanson article de blog, il y a quelque temps. Il a utilisé numpy pour générer un bloc de données binaires à partir du code Python et blob vers la fonction de matrice dans JSL pour charger les données binaires. Cela a bien fonctionné parce que les données étaient toutes numériques.
Re : Comment convertir Python Pandas dataFrame au format jmp sans l'enregistrer en tant que fichiers ?Je suppose que vous pouvez utiliser la commande "ouvrir la base de données" de JMP ou le générateur de requêtes pour extraire les données directement de la base de données. Vous auriez besoin d'un pilote ODBC pour la base de données. Après vous être connecté à la base de données, vous pouvez soumettre une requête en SQL pour récupérer vos données dans JMP. Query Builder vous permettrait d'écrire graphiquement le SQL.
CSV est un type de fichier de transport de données assez courant, donc je ne l'abandonnerais pas si rapidement. De plus, JMP multithread lit les fichiers texte et csv afin qu'ils s'ouvrent assez rapidement.
Re : Comment convertir Python Pandas dataFrame au format jmp sans l'enregistrer en tant que fichiers ?Bonjour!Je sais qu'il s'agit d'un message vieux de 4 ans et que je suis un nouvel utilisateur de la communauté JMP... mais pour nos cas d'utilisation, la solution présentée ici au message d'origine n'est pas complète pour nos besoins.
Nous aimerions qu'un serveur exécutant Python uniquement (pas JMP / JSL) soit capable de faire toutes les extractions de données et préparations / transformations, puis puisse sérialiser les données (sans écriture de fichier local) et renvoyer les données à un client sous une forme directement lisible dans JMP.
Nos données sont plus grandes... peut-être dire, 100k à 1M lignes... et 10 à 100 colonnes...Il est hétérogène (numérique et catégoriel) et peut contenir des valeurs manquantes.
Est-ce que l'une des méthodes DataFrame.to_() prend en charge cela ?Ces méthodes pandas peuvent être écrites et un tampon IO plutôt qu'un fichier pour gagner du temps, puis un transfert réseau vers le client JMP ?
Les principaux formats candidats que nous voudrions travailler sont les .to_parquet(), to_hdf(), to_feather() .On dirait que pandas a une méthode to_stata() qui écrit au format "Stata".Je ne suis pas sûr que JSL (SAS) soit suffisamment ouvert pour que Pandas puisse l'implémenter un jour (peut-être en bas de la liste).Le parquet semble être universel de nos jours, et les pandas ont également le type Arrow "Table" comme type de première classe, ce qui nous intrigue également.
Nous voudrions éviter les formats qui nécessitent une réanalyse des données et l'attribution de types de données (numérique, catégorique, date_heure... ... donc .to_csv() et to_json() ou d'autres formats de texte ne sont pas vraiment utiles.
Merci d'avance d'avoir lu le message, et faites-moi savoir si j'aurais dû commencer un nouveau fil, plutôt que de répondre à celui-ci.
Randall
Re : Comment convertir Python Pandas dataFrame au format jmp sans l'enregistrer en tant que fichiers ?Une méthode pour ce faire serait de convertir le Python Pandas dataFrame vers une version JSL d'une table JMP.Il s'agit d'une forme entièrement prise en charge et documentée d'un tableau de données JMP.Et cela vous permettra d'inclure n'importe laquelle des propriétés de colonne et des états de ligne, etc. Pour voir des exemples de ce que vous auriez à faire, il vous suffit de pointer vers n'importe quelle table de données JMP existante et de demander à JMP de générer le script qui va recréer la table.
Re : Comment convertir Python Pandas dataFrame au format jmp sans l'enregistrer en tant que fichiers ?Puis-je demander des détails sur la conversion de Python Pandas dataFrame au format jmp en l'enregistrant sous forme de fichiers ?
Je souhaite extraire des données en tant que DataFrames Pandas et les enregistrer sous un format que JMP peut lire facilement pour des investigations ultérieures.
Merci d'avance
Re : Comment convertir Python Pandas dataFrame au format jmp sans l'enregistrer en tant que fichiers ?Dans jmp 14 T, il y a de nouvelles fonctions pour recevoir et envoyer des choses avec Python.
Je n'ai pas encore pu les utiliser.
Il existe une fonction appelée Python Get(name) qui pourrait fonctionner.
Re : Comment convertir Python Pandas dataFrame au format jmp sans l'enregistrer en tant que fichiers ?Merci pour votre conseil.
Mais si possible, j'aimerais savoir comment transférer directement au format jmp que JSL (JMP Script Language) reconnaît les données dataFrame dans l'environnement JSL. Cela signifie que JSL reconnaît Pandas dataFrame comme un JMP. La raison en est que, dans mon cas, je peux faire presque tout le travail d'automatisation JSL si je peux le démarrer à partir du format de données JMP.
Re : Comment convertir Python Pandas dataFrame au format jmp sans l'enregistrer en tant que fichiers ?si les fichiers sont petits et tiennent dans le presse-papiers, vous pouvez simplement enregistrer le bloc de données dans le presse-papiers et le coller du presse-papiers dans JMP.
Voici un exemple tiré d'un Discovery Summit Talk :
https://community.jmp.com/t5/Discovery-Summit-2017/Leaving-Python-and-REST-to-Introduce-SAS-Viya-TM-Processing/ta-p/44078
names default to here(1);
path=Get Current Directory();
dt1=Open("$SAMPLE_DATA/Big Class.jmp");
current data table(dt1);
dt1<< Bring Window To Front;
main menu("Copy With Column Names");
text="\[
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
df=pd.read_clipboard(sep='\\s+')
size= (df.height * df.weight)/df.age ** .5
ax = plt.subplot(111, projection='polar')
c = plt.scatter(df.height, df.weight, c=df.age, s=size, cmap=plt.cm.hsv)
c.set_alpha(0.55)#transparency
plt.show()
]\";
path=Get Current Directory();
save text file(path||"graph.py", text);
x = RunProgram(
executable( "/Users/user1/anaconda/bin/python" ),
options(path||"graph.py")
,readfunction("blob")
);
close(dt1, nosave);//this executes as soon as the graph window is closed