Python Pandas y JMPHola a todos
Discutí Python y JMP con JMP Partners. Durante la discusión, hicieron dos preguntas.
1) ¿Cómo convertir columnas de pandas de Python a Columna JMP (directamente) sin guardarlo?
2) En caso de hacer Python Init () en JMP, hay algún problema de que Pandas no se importe
1) Cuando ejecutamos Python Init () en JMP, importamos como a continuación.
importar pandas como _JMPpd
(Python3.6 está conectado con JMP y Pandas ya está instalado en Python3.6) |
La imagen 1 es el resultado de importación de pandas y verificación de versión
2) Pero, hay algún error en JMP, Imagen 2
Otro módulo (ej. sqlalchemy, pymssql, etc.) está bien, solo hay errores en Pandas.
Re: Python Pandas y JMPDiscutimos este problema nuevamente, pero parece que hay algún error.
La API de Python no parece ser estable. Hay algún error en la biblioteca pyplot de matplotlib.

Pero está bien en Python.

¿Qué tal el siguiente proceso?
1) Inicio del proceso JMP con API de Python JMP
desde win32com.client import Dispatch
jmp = Despacho ("JMP.Application")
jmp.visible = Verdadero # Falso
2) Pandas de pitón de trabajo (comenzando el procesamiento de datos con Python )
3) El resultado de los pandas convertir a JMP archivo
Para esto, JMP necesita ofrecer la biblioteca JMP Sned en Python como Python Get ()
4) Iniciando script JMP
Iniciar secuencia de comandos después de dt = tabla de datos actual ()
Re: Python Pandas y JMPGracias paul
Con su comentario, tendría un tiempo de discusión profundo con nuestro socio
Gracias de nuevo
Re: Python Pandas y JMPBueno, la respuesta anterior solo mostraba recuperar un objeto de Python, no obtener los datos de los pandas como había previsto. Aquí hay un mejor ejemplo. Eso toma prestado el código de StackOverflow para obtener datos del marco de datos a numpy.
https://stackoverflow.com/questions/13187778/convert-pandas-dataframe-to-numpy-array-preserving-index?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
JMP tiene un error, que no parece poder importar una matriz numpy a menos que sea del mismo tipo de datos ... Entonces, este ejemplo coloca los datos en el marco de datos, luego los devuelve a otro diccionario, que se transfiere a JMP.
Python Init();
Python Submit("\[
import pandas as pd
import numpy as np
print('Pandas Version: ' + pd.__version__)
data = {'state':['Ohio','Ohio','Ohio','Nevada','Nevada','Nevada'],'year':[2000,2001,2002,2001,2002,2003], 'pop':[1.5,1.7,3.6,2.4,2.9,3.2]
}
df = pd.DataFrame(data)
print(df)
v = df.values
print(v)
cols = df.columns
types = [(cols[i], df[k].dtype.type) for (i, k) in enumerate(cols)]
dtype = np.dtype(types)
array = np.zeros(v.shape[0], dtype)
for (i, k) in enumerate(array.dtype.names):
array[k] = v[:, i]
print(array.dtype.names);
print(array)
d={}
l=[]
for (i, k) in enumerate(array.dtype.names):
d[k] = v[:,i].tolist()
print(d)
print('leaving python')
]\");
Print("inJSL");
pyData = Python Get(d);
Print(data);
Python Term();
Dando el siguiente resultado
Pandas Version: 0.22.0
pop state year
0 1.5 Ohio 2000
1 1.7 Ohio 2001
2 3.6 Ohio 2002
3 2.4 Nevada 2001
4 2.9 Nevada 2002
5 3.2 Nevada 2003
[[1.5 'Ohio' 2000]
[1.7 'Ohio' 2001]
[3.6 'Ohio' 2002]
[2.4 'Nevada' 2001]
[2.9 'Nevada' 2002]
[3.2 'Nevada' 2003]]
('pop', 'state', 'year')
[(1.5, 'Ohio', 2000) (1.7, 'Ohio', 2001) (3.6, 'Ohio', 2002)
(2.4, 'Nevada', 2001) (2.9, 'Nevada', 2002) (3.2, 'Nevada', 2003)]
{'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2], 'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'], 'year': [2000, 2001, 2002, 2001, 2002, 2003]}
leaving python
"inJSL"
["pop" => {1.5, 1.7, 3.6, 2.4, 2.9, 3.2}, "state" => {"Ohio", "Ohio", "Ohio", "Nevada", "Nevada", "Nevada"}, "year" => {2000, 2001, 2002, 2001, 2002, 2003}]
0Re: Python Pandas y JMPEl soporte de Python de JMP es un trabajo en progreso, tenga paciencia con nosotros mientras continuamos mejorando sus capacidades y facilidad de uso. Ejecuté el siguiente código en JMP 14.1 en Mac usando Python 3.6.4 directamente desde Python.org
Se importan pandas, es solo que las variables en una línea no se evalúan en la ventana de registro. Si lo envuelve con una impresión (pd .__ versión__) obtendrá el valor en el registro. El siguiente código muestra eso, y muestra cómo tomar un DataFrame de pandas y recuperar los datos en JMP como un objeto de script.
Python Init(Path("/Library/Frameworks/Python.framework/Versions/3.6/lib/libpython3.6.dylib"), Use Python Version("3.6") );
Python Submit("\[
import pandas as pd
print('Pandas Version: ' + pd.__version__)
data = {'state':['Ohio','Ohio','Ohio','Nevada','Nevada','Nevada'],'year':[2000,2001,2002,2001,2002,2003], 'pop':[1.5,1.7,3.6,2.4,2.9,3.2]
}
frame = pd.DataFrame(data)
print(frame)
]\");
data = Python Get(data);
Print(data);
Python Term();
Los resultados de este código:
Pandas Version: 0.22.0
pop state year
0 1.5 Ohio 2000
1 1.7 Ohio 2001
2 3.6 Ohio 2002
3 2.4 Nevada 2001
4 2.9 Nevada 2002
5 3.2 Nevada 2003
["pop" => {1.5, 1.7, 3.6, 2.4, 2.9, 3.2}, "state" => {"Ohio", "Ohio", "Ohio", "Nevada", "Nevada", "Nevada"}, "year" => {2000, 2001, 2002, 2001, 2002, 2003}]
0
Desde el objeto de script se puede procesar en una nueva tabla de datos