¿Cómo convertir el dataFrame de Python Pandas al formato jmp sin guardarlo como archivos?Sé que JMP admite la función "Interfaz de Python" dentro del entorno de script JMP. Pero a veces será mejor hacer un trabajo conjunto de forma independiente con el ingeniero de Python y el de JMP.
En nuestro caso, el ingeniero de Python lee los archivos de la base de datos con la interfaz de base de datos y realiza un preprocesamiento con la biblioteca de Pandas, y desea convertir el formato JMP porque el ingeniero de JMP solo necesita datos en formato JMP para realizar el análisis de datos y el posprocesamiento con JSL.
Como puede imaginar, el cuello de botella es cómo convertir el marco de datos de Python Pandas sin guardarlo como archivos. La forma más sencilla es guardar archivos y leerlos en formato jmp, pero lleva muchas veces guardarlos y leerlos. Me gustaría saber dónde hay alguna biblioteca para convertir el marco de datos de Python Pandas al formato jmp directamente en la memoria o no.
Re: ¿Cómo convertir el dataFrame de Python Pandas al formato jmp sin guardarlo como archivos?Gracias por la publicación.Me encantaría poder simplemente abrir un archivo .parquet directamente con JMP.
Ya usamos conexiones de base de datos para obtener datos, pero hay tantas ineficiencias en el uso de .csv en canalizaciones de datos completas (escritura de extracción, almacenamiento, lectura), que nos encantaría comenzar a usar parquet.
Re: ¿Cómo convertir el dataFrame de Python Pandas al formato jmp sin guardarlo como archivos?Los formatos JSON son demasiados para manejar.
Re: ¿Cómo convertir el dataFrame de Python Pandas al formato jmp sin guardarlo como archivos?@Craige_Hales tú-pa hombre Craig:)
Re: ¿Cómo convertir el dataFrame de Python Pandas al formato jmp sin guardarlo como archivos?To_Json con Orient=table podría ser una buena opción. Necesita convertir de binario a texto y viceversa. El asistente JSON de JMP debería manejarlo de manera bastante directa. El uso de CSV con la importación de archivos múltiples en realidad podría ser lo suficientemente rápido. Utilizará todos los procesadores de su CPU para cargar las columnas en paralelo cuando JMP las esté importando. Puede ser demasiado lento en el extremo del servidor dependiendo de cómo se implemente.
Hice mi propia transferencia binaria a binaria en el Beowulf, Newton y el Sr. Hanson publicación de blog, en algún momento atrás. Usó numpy para generar un bloque de datos binarios desde el código de Python, y la función blob to matrix en JSL para volver a cargar los datos binarios. Eso funcionó bien porque los datos eran todos numéricos.
Re: ¿Cómo convertir el dataFrame de Python Pandas al formato jmp sin guardarlo como archivos?Supongo que podría usar el comando "abrir base de datos" de JMP o Query Builder para extraer datos directamente de la base de datos. Necesitaría un controlador ODBC para la base de datos. Después de conectarse a la base de datos, puede enviar una consulta en SQL para recuperar sus datos en JMP. Query Builder le permitiría escribir gráficamente el SQL.
CSV es un tipo bastante común de archivo de transporte de datos, por lo que no lo abandonaría tan rápido. Además, JMP multithread lee archivos de texto y csv para que se abran bastante rápido.
Re: ¿Cómo convertir el dataFrame de Python Pandas al formato jmp sin guardarlo como archivos?¡Hola!Sé que esta es una publicación de hace 4 años y soy un usuario nuevo en la comunidad de JMP... pero para nuestros casos de uso, la solución presentada aquí para la publicación original no es completa para nuestras necesidades.
Nos gustaría tener un servidor que solo ejecute Python (no JMP / JSL) que pueda realizar todas las extracciones y preparaciones / transformaciones de datos, luego serializar los datos (sin una escritura de archivo local) y enviar los datos de vuelta a un cliente en un formato directamente legible en JMP.
Nuestros datos son más grandes... puede ser, digamos, de 100k a 1M de filas... y de 10 a 100 columnas...Es heterogéneo (numérico y categórico) y puede contener valores faltantes.
¿Alguno de los métodos DataFrame.to_() es compatible con esto?¿Esos métodos pandas se pueden escribir y el búfer IO en lugar de un archivo para ahorrar tiempo, y luego la transferencia de red al cliente JMP?
Los principales formatos candidatos que nos gustaría trabajar son .to_parquet(), to_hdf(), to_feather() .Parece que pandas tiene un método to_stata() que escribe en el formato "Stata".No estoy seguro de que JSL (SAS) sea algo que esté lo suficientemente abierto como para que Pandas pueda implementarlo algún día (puede estar al final de la lista).El parquet parece ser universal en estos días, y los pandas también tienen el tipo Arrow "Table" como un tipo de primera clase, por lo que también nos intriga.
Nos gustaría evitar los formatos que requieren volver a analizar los datos y la asignación de tipos de datos (numéricos, categóricos, fecha_hora... ... entonces .to_csv() y to_json() u otros formatos de texto no son realmente útiles.
Gracias de antemano por leer la publicación, y avíseme si debería haber comenzado un nuevo hilo, en lugar de responder a este.
Randall
Re: ¿Cómo convertir el dataFrame de Python Pandas al formato jmp sin guardarlo como archivos?Un método para hacer esto sería convertir el Python Pandas dataFrame a una versión JSL de una tabla JMP.Esta es una forma totalmente compatible y documentada de una tabla de datos JMP.Y le permitirá incluir cualquiera de las Propiedades de columna y estados de fila, etc. Para ver ejemplos de lo que tendría que hacer, todo lo que tiene que hacer es apuntar a cualquier tabla de datos JMP existente y pedirle a JMP que genere el script que volverá a crear la tabla.
Re: ¿Cómo convertir el dataFrame de Python Pandas al formato jmp sin guardarlo como archivos?¿Puedo solicitar detalles sobre cómo convertir el marco de datos de Python Pandas al formato jmp y guardarlo como archivos?
Deseo extraer datos como marcos de datos de Pandas y guardarlos en un formato que JMP pueda leer fácilmente para futuras investigaciones.
gracias de antemano
Re: ¿Cómo convertir el dataFrame de Python Pandas al formato jmp sin guardarlo como archivos?En jmp 14 THay algunas funciones nuevas para obtener y enviar cosas con Python.
Todavía no he podido usarlos.
Hay una función llamada Python Get(name) que podría funcionar.
Re: ¿Cómo convertir el dataFrame de Python Pandas al formato jmp sin guardarlo como archivos?Gracias por tu consejo.
Pero si es posible, me gustaría saber cómo transferir directamente al formato jmp que JSL (JMP Script Language) reconoce los datos del marco de datos dentro del entorno JSL. Significa que JSL reconoce Pandas dataFrame como JMP uno. La razón es que, en mi caso, puedo hacer casi todo el trabajo de automatización JSL si puedo iniciarlo desde el formato de datos JMP.
Re: ¿Cómo convertir el dataFrame de Python Pandas al formato jmp sin guardarlo como archivos?si los archivos son pequeños y caben en el portapapeles, puede guardar el marco de datos en el portapapeles y pegarlo desde el portapapeles en JMP.
Este es un ejemplo de una charla de Discovery Summit:
https://community.jmp.com/t5/Discovery-Summit-2017/Leveraging-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