Python Pandas und JMPHallo zusammen
Ich habe mit JMP Partners über Python und JMP gesprochen. Während der Diskussion stellten sie zwei Fragen.
1. Wie kann man Python-Pandas-Spalten (direkt) in JMP-Spalten umwandeln, ohne sie zu speichern?
2. Wenn Sie Python Init () in JMP ausführen, besteht das Problem, dass Pandas nicht importiert wird
1) Wenn wir Python Init () in JMP ausführen, importieren wir wie folgt.
Pandas als _JMPpd importieren
(Python3.6 ist mit JMP verbunden und Pandas ist bereits in Python3.6 installiert.) |
Bild 1 ist das Ergebnis von Pandas importieren und Versionskontrolle
2) In JMP ist jedoch ein Fehler aufgetreten (Bild 2)
Anderes Modul (zB sqlalchemy, pymssql etc) ist ok, fehler gibt es nur bei pandas.
Re: Python Pandas und JMPWir haben dieses Problem noch einmal besprochen, aber es scheint, dass ein Fehler vorliegt.
Die Python-API scheint nicht stabil zu sein. In der Pyplot-Bibliothek von matplotlib ist ein Fehler aufgetreten.

Aber OK in Python.

Wie wäre es mit dem folgenden Prozess?
1. Starten des JMP-Prozesses mit JMP Python API
von win32com.client import Dispatch
jmp = Dispatch ("JMP.Application")
jmp.visible = True #False
2. Arbeitende Python-Pandas (Starten der Datenverarbeitung mit Python )
3. Das Ergebnis von Pandas konvertieren zu JMP Datei
Dazu muss JMP eine JMP-Sned-Bibliothek in Python-Qualität anbieten Python Get ()
4. Starten des JMP-Skripts
Startskript nach dt = Current Data Table ()
Re: Python Pandas und JMPDanke Paul,
Mit Ihrem Kommentar hätte ich eine ausführliche Diskussion mit unserem Partner
Danke noch einmal
Re: Python Pandas und JMPNun, die vorherige Antwort zeigte nur, dass ein Python-Objekt zurückgeholt wurde und nicht die beabsichtigten Daten von Pandas. Hier ist ein besseres Beispiel. Dieser leiht sich Code von StackOverflow aus, wenn er Daten von DataFrame zu NumPy abruft.
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 hat den Fehler, dass es scheinbar nicht in der Lage ist, ein Numpy-Array zu importieren, es sei denn, es hat alle den gleichen Datentyp ... In diesem Beispiel werden die Daten also in den Datenrahmen eingefügt und anschließend wieder in ein anderes Wörterbuch übertragen, das dann wieder an JMP übertragen wird.
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();
Die folgende Ausgabe geben
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 und JMPDie Python-Unterstützung von JMP ist in Arbeit. Bitte nehmen Sie mit uns Kontakt auf, um die Funktionen und die Benutzerfreundlichkeit von JMP zu verbessern. Ich habe den folgenden Code in JMP 14.1 auf dem Mac mit Python 3.6.4 direkt von Python.org ausgeführt
Pandas wird importiert. Variablen in einer Zeile werden nur nicht im Protokollfenster ausgewertet. Wenn Sie es mit einem Ausdruck (pd .__ version__) umschließen, erhalten Sie den Wert in das Protokoll. Der folgende Code zeigt dies und zeigt, wie ein Pandas-DataFrame verwendet und die Daten als Skriptobjekt wieder in JMP abgerufen werden.
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();
Die Ergebnisse aus diesem Code:
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
Aus dem Skriptobjekt kann es in eine neue Datentabelle verarbeitet werden