Problem beim Senden von Pandas DataFrame von Python an die JMP 18-DatentabelleKontext:
I am using JMP 18 with Python integration to merge multiple datasets. The merge and processing in Python works correctly using pandas, but when I try to send the final pandas DataFrame back to JMP using Python Get(), the resulting JMP Data Table is empty. I want to create a JMP table from my pandas DataFrame in Python and access it in JSL.
Beispiel für das, was ich versuche:
</CODE></STRONG></PRE>
<PRE>// Send JMP tables to Python
Python Send(jmp_table1);
Python Send(jmp_table2);
// Python processing
Python Submit("
import pandas as pd
def jmp_to_pandas(jmp_table):
cols = list(jmp_table)
data_dict = {}
for col in cols:
data_dict[col.name] = list(col)
return pd.DataFrame(data_dict)
# Convert JMP tables to pandas DataFrames
df1 = convert_jmp_to_pandas(jmp_table1)
df2 = convert_jmp_to_pandas(jmp_table2)
# Merge tables
merged_df = pd.merge_asof(df2, df1, left_on='Time', right_on='Time', direction='nearest')
");
// Attempt to bring merged DataFrame back to JMP
dt_merged = Python Get(merged_df);
dt_merged << Set Name("Merged_Data");
dt_merged << Show Window;
</PRE>
<PRE><STRONG data-start="638" data-end="669"><CODE class=" language-jsl">
Beobachtetes Problem:
-
dt_merged is created but contains no data. [aber der Datenrahmen wird generiert, da ich ihn als CSV speichern und verwenden kann]
-
Using global in Python does not seem to fix the issue.
-
Python Get() does not appear to recognize the pandas DataFrame correctly.
Was ich will:
-
Konvertieren Sie einen Pandas-DataFrame aus Python in eine JMP-Tabelle.
-
Greifen Sie in JSL mit dem richtigen Namen darauf zu, zeigen Sie das Fenster an und bearbeiten Sie Spalten.
-
Vermeiden Sie die Erstellung leerer Tabellen und behalten Sie alle Zeilen/Spalten bei.
Mögliche Lösungen, die ich in Betracht ziehe:
-
Aus Python in CSV exportieren und dann in JMP importieren – habe ich versucht und es funktioniert, aber ich möchte das nicht.
-
Ensuring the DataFrame is declared global before Python Get(). - hat nicht funktioniert
Umfeld:
-
JMP 18
-
Python 3.x (eingebettet)
- Verwendung innerhalb eines JSL-Skripts
Für Anleitungen oder funktionierende Beispiele zum Zurücksenden von Pandas-DataFrames von Python an JMP wären wir sehr dankbar!
Automatisierung und SkriptingGrundlegende Datenanalyse und -modellierungDatenzugriffDatenzusammenführung und -bereinigungDatenexploration und -visualisierungBetreff: Problem beim Senden von Pandas DataFrame von Python an die JMP 18-DatentabelleSehen Sie sich das Beispiel „Erstellen eines Pandas-DataFrame durch Durchlaufen von Datentabellenspalten“ im Scripting Guide > Python > Erstellen eines Pandas-DataFrame aus einer JMP-Datentabelle an. Außerdem denke ich, dass es in JMP19 einfacher ist , vom Python-DataFrame in eine JMP-Datatable ohne zwischengeschaltete CSV-Datei (JMP-Wunschliste) zu konvertieren, aber ich habe es aufgrund zu vieler Probleme mit JMP19 noch nicht versucht.
Betreff: Problem beim Senden von Pandas DataFrame von Python an die JMP 18-DatentabelleIhr dt_merged enthält zwar Daten, aber keine Ansicht.
verwenden
dt_merged << Neue Datenansicht ;
anstatt
dt_merged << Fenster anzeigen;
Die Tabelle ist vorhanden, verfügt aber noch nicht über ein zugehöriges Fenster.
Beachten Sie auch, dass in JMP 18 Python Get(df) intern dataframe -> CSV CSV -> data_table verwendet, genau wie in JMP 14-17. Nur die JMP-Datentabelle hat Live-Zugriff auf die Daten über JMP/Python-Grenzen hinweg.
In JMP 19 ist die Situation deutlich besser. JMP unterstützt das Portable Dataframe Protocol und benötigt nur eine Codezeile, um von einem JMP dt => einem Pandas DataFrame zu wechseln, und eine weitere Zeile, um vom DataFrame zur DataTable zu wechseln. Dies funktioniert für jedes Dataframe-ähnliche Paket, das das DataFrame-Protokoll unterstützt, und die Konvertierung erfolgt im Speicher.
Alternativ können Sie die zusammengeführte Datentabelle in Python mithilfe der jmp.DataTable-APIs erstellen und die Dataframe-Spalten einzeln durchgehen, um JMP-Spalten in der neuen Datentabelle zu erstellen. Die Tabellen scheinen Zeitdaten zu enthalten. Dies muss korrekt sein. In JMP 14-18 müssen Sie zwischen der Daten-Zeit-Darstellung von JMP und der Daten-Zeit-Darstellung von Python wechseln . Das Epochendatum für JMP ist der 1. Januar 1904 (wie in Excel auf dem Mac), während das Epochendatum von Python der 1. Januar 1970 ist.
JMP 19 führt die ordnungsgemäße Rangierung von Datums- und Uhrzeitwerten über die JSL-/Python-Grenzen hinweg durch.
Im Abschnitt „Python“ des Skriptindex finden Sie Beispiele für das JMP- Importpaket.
Ich empfehle dringend, auf JMP 19 zu aktualisieren. JMP 18 war eine grundlegende Änderung der Python-Integration in JMP. Obwohl die Unterstützung von JMP 18 nicht so umfassend war, wie wir es uns gewünscht hätten, bot es so viele Möglichkeiten, dass wir nicht bis JMP 19 warten wollten.
Betreff: Problem beim Senden von Pandas DataFrame von Python an die JMP 18-DatentabelleIch möchte auch darauf hinweisen, dass das jmp.DataTable-Objekt iterierbar ist, sodass Sie jmp_table direkt in Ihrer For-Schleife verwenden können. Es verhält sich bereits wie eine Liste von Spalten
def jmp_to_pandas(jmp_table):
data_dict = {}
for col in jmp_table:
data_dict[col.name] = list(col)
return pd.DataFrame(data_dict)
Betreff: Problem beim Senden von Pandas DataFrame von Python an die JMP 18-DatentabelleMir ist aufgefallen, dass die Daten in meinem Datenrahmen ziemlich bizarr sind. Bitte sehen Sie sich den Screenshot an. Dies ist das Datumsformat und nur wenige sind betroffen, Datum und Uhrzeit scheinen nicht betroffen zu sein.
Betreff: Problem beim Senden von Pandas DataFrame von Python an die JMP 18-DatentabelleDies ist das Datum in Sekunden. Sie können jede beliebige Zahl als Datum anzeigen, indem Sie die Spalteneinstellungen ändern:

Betreff: Problem beim Senden von Pandas DataFrame von Python an die JMP 18-DatentabelleHey, danke, ich habe das herausgefunden, arbeite aber dazwischen mit JSL- und Python-Code. Gibt es eine bessere Möglichkeit, dies im Code selbst zu berücksichtigen?
1 - Prozess in Python unter Verwendung des Epochenzeitversatzes
2- Weisen Sie das Spaltenformat jeder Spalte im JSL-Code neu zu. [mühsam]
Betreff: Problem beim Senden eines Pandas DataFrames von Python an eine JMP 18-Datentabelle- Unix-Zeitstempel in Datum und Uhrzeit umwandeln
<BR />:col << Format( "yyyy-mm-dd" );
Betreff: Problem beim Senden von Pandas DataFrame von Python an die JMP 18-DatentabelleDer Screenshot war ein Beispiel, ich habe Hunderte von Spalten:\ , mit inkonsistenter Formatierung in den Quelldaten. Danke übrigens
Betreff: Problem beim Senden von Pandas DataFrame von Python an die JMP 18-DatentabelleJMP19?
Betreff: Problem beim Senden eines Pandas DataFrames von Python an eine JMP 18-DatentabelleJMP 18, Organisation migriert nicht auf JMP 19. Ich bin mir nicht sicher, ob es sich um eine Testversion oder eine entwickelte Anwendung handelt. Ich vermute Letzteres.
Betreff: Problem beim Senden eines Pandas DataFrames von Python an eine JMP 18-DatentabelleVielleicht sollte man auf JMP 19.1 warten, um einige fehlende Funktionen zurückzubekommen: Undokumentierte Geheimnisse
außerdem:
Einer der Gründe für den Wechsel zu JMP19: from_dataframe()
Weiterführende Informationen zu Python in JMP 19
Ein weiterer Grund: wunderbare Verbesserungen im Datenraster wie Spalten-Tags und Filteransichten.
Organisieren und Filtern von Daten in der JMP 19-Datentabelle
Haben Sie die Möglichkeit, JMP19 "manuell" auf einem Testsystem zu installieren?
Betreff: Problem beim Senden eines Pandas DataFrames von Python an eine JMP 18-DatentabelleJa, das kann ich tun. Ich habe es aber noch nicht ausprobiert. Ein weiterer Grund, warum ich es nicht nutze, ist die Skriptkompatibilität, da andere Benutzer weiterhin JMP18 verwenden würden. Ich habe bereits jetzt einige Probleme mit Tabellenreferenzen und Joins.
Betreff: Problem beim Senden eines Pandas DataFrames von Python an eine JMP 18-Datentabelle
@zetaVagabond1 schrieb:
Ich habe bereits mit einer ganzen Reihe von Problemen mit Tabellenreferenzen und Joins zu kämpfen.
Probleme mit JMP18 im Vergleich zu JMP17?
Betreff: Problem beim Senden eines Pandas DataFrames von Python an eine JMP 18-DatentabelleJMP verwendet den 1. Januar 1904 als Epoche für die Zeit 0 in Sekunden (Mac Excel Epochendatum).
Python verwendet für die Zeitangabe 0 in Sekunden den Standard-UNIX-Epochenwert vom 1. Januar 1970.
JMP 19 serialisiert Datums- und Zeitwerte korrekt über die Grenzen von JSL und Python hinweg.
JMP 19 verfügt über die Funktion dt = jmp.from_dataframe(df), die eine Datumstabelle direkt aus dem Datenrahmen im Speicher erstellt.
In JMP 18 besteht die einzige Möglichkeit, die Spalten im Arbeitsspeicher zu erstellen, darin, die Pandas-Spalten zu durchlaufen und auf die Datums-/Zeitkonvertierung zu achten.
Alternativ können Sie die Daten auch über eine CSV-Datei einlesen. So wurde es in JMP 14–17 gehandhabt. Beachten Sie jedoch, dass es bei der Konvertierung von Binärdaten zu CSV-Dateien und zurück zu Binärdaten zu geringfügigen binären Abweichungen in den numerischen Werten kommen kann. Im Verzeichnis SAMPLE_SCRIPTS/Python von JMP 18 finden Sie Beispiele, die die Vorgehensweise mit CSV-Dateien veranschaulichen. Im Prinzip weisen Sie pandas an, die Daten als CSV-Datei zu speichern, und anschließend JMP, diese zu öffnen.
Ich empfehle Ihnen dringend, auf Version 19 zu aktualisieren. In Version 19 wurden dramatische Verbesserungen bei der Datentabellenverarbeitung vorgenommen.
Betreff: Problem beim Senden eines Pandas DataFrames von Python an eine JMP 18-DatentabelleRory Vaden: Wie kann man seine Zeit vervielfachen?
https://www.youtube.com/watch?v=y2X7c9TUQJ8

Hier die Antwort: Warten Sie heute noch ab, bis Ihre IT-Abteilung auf JMP19 umsteigt – vielleicht sollten Sie etwas Zeit und Mühe investieren, um sie davon zu überzeugen.
Dann kannst du morgen großartigen Code schreiben und anwenden.
Die Alternative wäre, heute damit zu beginnen, Code zu schreiben, der schon heute veraltet ist.
Python mit JMP19:
- einfach zu programmieren
- schlank
- viel schneller