Panda Python e JMPCiao a tutti
Ho discusso di Python e JMP con JMP Partners. Durante la discussione, hanno posto due domande.
1. Come convertire le colonne Panda di Python in colonne JMP (direttamente) senza salvarle?
2. In caso di esecuzione di Python Init () in JMP, c'è qualche problema che Pandas non può essere importato
1) Quando eseguiamo Python Init () in JMP, importiamo come di seguito.
importare i panda come _JMPpd
(Python3.6 è collegato a JMP e Pandas è già installato in Python3.6) |
L'immagine 1 è il risultato di importazione di panda e controllo della versione
2) Ma c'è qualche errore in JMP, Figura 2
Altro modulo (ad es. sqlalchemy, pymssql ecc.) è OK, c'è errore solo in Panda.
Ri: Python Panda e JMPAbbiamo discusso di nuovo questo problema, ma sembra che ci sia qualche errore.
L'API Python non sembra essere stabile. C'è qualche errore nella libreria pyplot di matplotlib.

Ma OK in Python.

Che ne dici del seguente processo?
1. Avvio del processo JMP con API JMP Python
da win32com.client import Dispatch
jmp = Dispatch ("JMP.Application")
jmp.visible = True #False
2. Panda di Python funzionanti (avvio dell'elaborazione dei dati con Python )
3. Il risultato di Panda convertire in JMP file
Per questo, JMP deve offrire la libreria JMP Sned in Python come Python Get ()
4. Avvio di JMP Script
Avvio dello script dopo dt = Current Data Table ()
Ri: Python Panda e JMPGrazie Paul,
Con il tuo commento, avrei un profondo momento di discussione con il nostro partner
Grazie ancora
Ri: Python Panda e JMPBene, il precedente risponditore aveva appena mostrato il recupero di un oggetto Python, non il recupero dei dati dai panda come previsto. Ecco un esempio migliore. Ciò prende in prestito il codice da StackOverflow per ottenere dati da dataframe 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 ha un bug, che non sembra essere in grado di importare un array numpy a meno che non sia tutto lo stesso tipo di dati ... Quindi questo esempio inserisce i dati nel frame di dati, quindi li riporta in un altro dizionario, che viene trasferito nuovamente su 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();
Dare il seguente risultato
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}]
0Ri: Python Panda e JMPIl supporto per Python di JMP è un lavoro in corso, ti preghiamo di tenere presente che continuiamo a migliorare le sue capacità e facilità d'uso. Ho eseguito il codice seguente in JMP 14.1 su Mac usando Python 3.6.4 direttamente da Python.org
Panda viene importato, è solo che le variabili su una riga non vengono valutate nella finestra del registro. Se lo avvolgi con una stampa (pd .__ versione__) ottieni il valore nel registro. Il codice seguente mostra ciò e mostra come prendere un DataFrame panda e riportare i dati in JMP come oggetto 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();
I risultati di questo codice:
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
Dall'oggetto script può essere elaborato in una nuova tabella di dati