Diese Präsentation erläutert die neuen und wichtigen Aktualisierungen der Python-Unterstützung in JMP 18, die eine deutlich engere Integration mit Python und ein wesentlich verbessertes, auf Python ausgerichtetes Benutzererlebnis ermöglichen. In JMP 18 können Sie:
Die für Python verfügbaren JMP-Funktionen werden im Laufe der Zeit erweitert, der Fokus liegt jedoch aktuell auf kritischen Funktionen und der Unterstützung von In-Memory-Daten. In dieser Präsentation erfahren Sie aus erster Hand mehr über die Änderungen und deren Hintergründe und erleben die neuen Funktionen für JMP-Nutzer. Erweiterbarkeit und Datenimportmöglichkeiten durch externe Python-Pakete werden erläutert, und der Zugriff auf GPUs über die Python-Schnittstelle mithilfe externer Pakete wird demonstriert.
Hallo, ich bin Paul Nelson. Ich möchte heute über JMP, Python und unsere nächsten Schritte sprechen. Nach einer der Präsentationen im letzten Jahr haben wir beschlossen, dass wir uns noch verbessern können. JMP und Python hatten Verbesserungspotenzial, und genau darüber werde ich hier sprechen.
Die größten Herausforderungen für die Kunden bestanden darin, die Python-Unterstützung von JMP 14 bis 17 zum Laufen zu bringen. Wenn es funktionierte, lief alles einwandfrei. Allzu oft war das jedoch nicht der Fall. Die zahlreichen Python-Distributionen und unterschiedlichen Umgebungen erschwerten uns das Testen.
Anaconda ließ sich unter Windows manchmal zum Laufen bringen, und auch virtuelle Python-Umgebungen funktionierten manchmal. Da jeder unterschiedliche Python-Versionen verwendete, konnte ein Skript nicht einmal von einer gemeinsamen Python-Version in der Umgebung des Benutzers abhängen.
Das Bearbeiten von Python-Code im JSON-Editor war schwierig und umständlich. In einer Sprache, in der Codeblöcke durch Leerzeichen getrennt werden, gestaltete sich das Einfügen als Zeichenkette in JSL als Herausforderung. Die unzureichende Fehlerberichterstattung in älteren JMP-Versionen erschwerte zudem das Debuggen von Python-Skripten.
Die Übertragung der Datentabellen und -matrizen erfolgte schließlich über das Dateisystem. Bei den Datentabellen wurde die Übertragung als CSV-Datei durchgeführt, was bei großen Datenmengen langsam ist. Große Klassen funktionieren problemlos, aber noch größere Datenmengen sind langsam.
Unsere Vision war es, die Python-Integration so einfach wie möglich zu gestalten. Keine Konfiguration erforderlich. Daher haben wir Python Version 3.115 und JMP 18.0 standardmäßig integriert. Python wird zusammen mit JMP installiert. Es handelt sich um eine einheitliche Umgebung, und alle Benutzer verwenden dieselbe Python-Version und dieselbe JMP-Version.
Wir sind noch einen Schritt weiter gegangen und haben sichergestellt, dass der Datenaustausch zwischen JSL und Python speicherintern erfolgt und kein Speicherzugriff erforderlich ist. Wir haben eine einladende und produktive Umgebung für Python-Programmierer geschaffen. Außerdem bieten wir jetzt einen Python-Skripteditor mit Codefarbgebung und Syntaxhervorhebung.
Sie können reine Python-Skripte direkt im Skripteditor und innerhalb der Python-Umgebung ausführen, direkt auf JMP-Daten und das Protokoll zugreifen sowie JSL aufrufen und Daten aus Python heraus abrufen. Die Fehlerberichterstattung im JMP-Protokoll und im eingebetteten Protokoll wurde deutlich verbessert.
Da es sich nun um eine einheitliche Umgebung handelt, können wir sie testen und verifizieren. Unsere Umgebung entspricht der, die Sie sehen sollten. Wir haben im Skriptindex eine eigene Python-Kategorie hinzugefügt, um die Möglichkeiten des Import-JMP-Pakets und einiger weiterer Hilfspakete zu erläutern und anhand von Beispielen zu zeigen.
Der andere Aspekt ist, dass wir dadurch die Funktionalitäten von JMP mithilfe der umfangreichen Python-Paketbibliothek erweitern können. Wir versuchen nicht, eine direkte Alternative zu JSL zu schaffen. Vielmehr möchten wir eine vertraute und produktive Umgebung für die Python-Programmierung innerhalb von JMP bereitstellen.
Dies ist eine Modernisierung, eine Überarbeitung und ein grundlegender Umbau. Einige der ursprünglichen Designentscheidungen für die Python-Integration von JMP erwiesen sich als einschränkend. Wir haben alles darangesetzt, die durch die Änderung entstehenden Beeinträchtigungen so gering wie möglich zu halten und gleichzeitig eine solide und stabile Grundlage für die Zukunft zu schaffen.
Es wird erwartet, dass die Probleme auf den Übergang zu JMP beschränkt bleiben. Entscheidend ist, dass wir jetzt nur noch die Python-Version unterstützen, die wir mit JMP ausliefern. Man kann sich das wie eine private virtuelle JMP-Umgebung vorstellen.
Außerdem haben wir in den Skripten die Funktionsweise des Sendens von Datentabellen in Python geändert. Es wird nun ein JMP-Objekt dieser Datentabelle erstellt. Dies ermöglicht den direkten Zugriff auf die JMP-Datentabelle. Die In-Memory-Kopie kann bearbeitet und geändert werden. Es handelt sich nicht mehr um eine Kopie.
JMP 14 bis 17 erstellte ein Pandas DataFrame-Objekt, indem die Daten über eine temporäre CSV-Datei im Dateisystem kopiert wurden. Bei großen Datenmengen führt der Export nach CSV zu erheblichen Problemen: Die Datei wird sehr groß und die Verarbeitung langsam. Zudem besteht das Risiko eines Genauigkeitsverlusts, da die Daten zwischen Binär- und Textformat umgerechnet werden.
Falls Sie dieselbe Funktionalität benötigen, haben wir in den Beispieldateien eine DT-Klasse für pandas Python bereitgestellt, die eine zweifache pandas-Funktion enthält. Diese funktioniert wie bisher intern: Sie erstellt eine temporäre CSV-Datei und weist pandas an, diese zu importieren.
Es gibt auch ein JMP-zu-Pandas-Beispiel, das zeigt, wie man aus einem JMP-Datentabellenobjekt einen Pandas-DataFrame im Speicher erstellt, indem man jeweils eine Spalte in Pandas mit einer Spalte aus JMP aufbaut.
Die Python-Funktion `Send Matrix` schrieb früher über das Dateisystem. Sie erstellte eine Datei mit Gleitkommazahlen (Doubles), die NumPy dann einlas. Dies geschieht nun intern im Speicher, und es wird direkt auf die Matrix zugegriffen, anstatt eine Kopie anzulegen.
Der Großteil der JSL Python API bleibt unverändert. Die Änderungen beschränkten sich hauptsächlich auf das Entfernen veralteter Argumente und Funktionen, die zur Konfiguration der ursprünglichen Python-Unterstützung und zur Auswahl einer bestimmten Python-Version dienten.
Die einzige API-Entfernung betraf die Python-Funktion `getgraphics`, die ein Bild aus Matplotlib abrief. In unserem Skriptindex finden Sie ein Beispiel, das genau zeigt, wie Sie dasselbe, was JMP intern erledigte, mit reinem JSL- und Python-Code erreichen. Zeigen Sie es uns. Mal sehen. Verlassen wir die Demo.
Hier haben wir JMP. Ich möchte Ihnen unter anderem zeigen, dass Sie in den Symbolleisten Python-Symbole sehen und im Menü „Datei – Neu“ die Option „JSON-Skript“ finden, jetzt aber „Neues Python-Skript“. Wir öffnen den Python-Skripteditor.
Wir können das eingebettete Protokoll anzeigen. Wir haben ein JMP-Importpaket. Importieren Sie JMP. Wir haben darauf geachtet, Python-Dokumentationszeichenfolgen bereitzustellen, sodass Sie `help JMP Python` ausführen können. Wir können dieses Skript ausführen. Sie werden sehen, dass wir die Objekte und Funktionen innerhalb dieses JMP-Importpakets der obersten Ebene dokumentiert haben.
Es gibt eine Reihe von Konstanten. Die meisten speziellen Verzeichnisse sind vertreten. Also können wir Folgendes tun: Und jetzt mache ich es in Python: JMP open. JMP, nun ja, ich kann heute nicht tippen, JMP. SAMPLE DATA. Plus. Big Boss. Und genau wie in JSL können wir die Codezeile auswählen und sie im Skript ausführen. Und wir haben eine große Klasse.
Dies ist keine Kopie. Wir können auf dieses Objekt zugreifen. Wir hätten beispielsweise `TT equals JMP open` verwenden können und hätten eine Referenz erhalten. Alternativ können wir auch `TT equals JMP.current` verwenden. Dadurch erhalten wir eine Referenz auf die aktuelle Datentabelle.
Wir können zum Beispiel `print TT` ausgeben. Das zeigt uns, dass es sich um eine große Klasse handelt. Sie hat die Dimensionen 5 x 40 Spalten. Aber es geht noch besser: Wir können zum Beispiel `TT.Name` ausgeben. Und wir können die `slice`-Operatoren von Python verwenden. Ich weise das Programm an, jeden zweiten Namen in der Spalte `Name` ab der ersten Null auszugeben.
In Python indizieren wir, wie es in Python üblich ist, mit Null. Unsere Datentabelle ist spaltenweise indiziert. Da wir ein spaltenweises Datenformat verwenden, erhalten wir bei der Ausgabe von „Jeder zweite Name“ die Werte: Katie, Jane, Lilly, James, Barbara, Susan, Joe und David.
Das ist ein Live-Zugriff, also können wir Dinge tun wie… und wir können Dinge wie TT tun, und wir können entweder den Namen oder den Spaltenindex verwenden. Spalte, die wir ausgeben. Das gibt uns… auswählen. Hier ist Ihre… Ich habe eine ausgewählt, richtig, Lewis. Entschuldigung. Null Null. Ist Katie. Da die Datentabelle live ist, können Sie Katie
Einen Moment bitte. Kleinbuchstaben. Groß- und Kleinschreibung gemischt. Jetzt sehen wir die Ausgabe in unserem eingebetteten Protokoll. Sie werden feststellen, dass wir die Datentabelle geändert haben. Dadurch können Sie Datentabellen bearbeiten, auf sie in Python zugreifen und sie auch direkt in Python erstellen. Wir haben uns die Mühe gemacht.
Wir haben nun den Skriptindex. Ich zeige Ihnen hier… Wie bereits erwähnt, ist die Funktion „Grafiken abrufen“ veraltet. Sie ist in JMP nicht mehr gültig, aber das Beispiel im Skriptindex zeigt Ihnen, wie Sie von Ihrer bisherigen Vorgehensweise zur internen JMP-Implementierung übergehen, um die Grafik zu speichern, das Bild zu öffnen und ein neues Fenster damit zu erstellen.
Eine der praktischen Neuerungen der Python-zentrierten Umgebung ist die eigene Kategorie innerhalb der Python-Kategorie. Das JMP-Importpaket enthält Datentabellenobjekte. Für jedes Objekt gibt es Beispiele. Man kann neue Spalten erstellen, Zeilen hinzufügen und die Tabelle speichern. Auch die Eigenschaften, wie z. B. das Abrufen von Tabellennamen, sind verfügbar.
Dieses Skript erstellt eine neue Datentabelle mit Python. Wir haben auch ein JMP-Dienstprogramm. Damit können wir pip JMP ausführen, da es eine eigene, isolierte Umgebung erstellt. Pakete müssen in der isolierten Umgebung von JMP installiert werden.
Hoffentlich treten keine Konflikte zwischen Ihren JMP-Paketen und anderen Python-Installationen auf. Wir haben die einzelnen Komponenten voneinander getrennt. Falls nötig, können Sie mit `create jpip` ein Skript erstellen, das das Python-pip-Skript umschließt und Ihnen die Installation ermöglicht. Alternativ können Sie es auch direkt aus der JMP-Utils-Klasse innerhalb des Gems ausführen.
Hier zeigen wir die Liste der pip-Befehle an. Der Befehl `pip` gibt die Liste der in meiner Python-Umgebung installierten Pakete zurück. Ein weiteres Beispiel zeigt, wie man Pakete installieren kann. Dieser Befehl wird direkt aus JMP ausgeführt.
Es gibt einige Einschränkungen, weshalb es das Tool `create jpip` gibt. Wenn ein Paket wie NumPy im Speicher geladen wird, da es eine gemeinsam genutzte Bibliothek enthält, kann Windows die Aktualisierung dieses Pakets verhindern. Manche Pakete müssen kompiliert werden. Dies muss gegebenenfalls über die Kommandozeile erfolgen.
Einige davon funktionieren möglicherweise, müssen aber über die Kommandozeile ausgeführt werden. Deshalb sollten Sie ein jpip-Wrapper-Skript erstellen. Nach dem Ausführen öffnet sich ein Fenster, in dem Sie das Verzeichnis für die Datei auswählen können. Anschließend wird ein jpip-Wrapper-Skript erstellt, das Sie über die Kommandozeile ausführen können.
Beim Ausführen des Skripts müssen Sie nach der Installation den Parameter `--minus` verwenden. Wir erledigen das automatisch für Sie, wenn das Skript von hier aufgerufen wird. Es gibt auch eine JSL-Funktion, die die Installation durchführt. Die Installation von Python-Paketen ist sogar noch einfacher. Sie können einfach das JSL-Skript ausführen, und es ruft im Hintergrund pip auf und richtet alle notwendigen Umgebungsvariablen ein, um das Paket in die isolierte Umgebung von JMP einzufügen.
Los geht's. Dann können wir Ihnen weitere Demos zeigen. Das hier sind die einfachen Grundlagen. Aber was wir auch… Teil dieses gesamten Prozesses war, war, JMP Python-freundlicher zu gestalten und die Erweiterung der JMP-Funktionen durch zusätzliche Python-Pakete deutlich zu vereinfachen.
Ein häufig geäußerter Wunsch unserer Kunden ist der Import von Parquet-Dateien. Diese Demo importiert eine Tabelle von meiner Festplatte – eine, die ich aus dem Internet heruntergeladen habe. Genau. Anschließend wird die Struktur der Parquet-Datei ausgegeben und eine JMP-Datentabelle spaltenweise aus den Daten der Parquet-Datei erstellt. Wir leeren die Protokolle. Sehen Sie selbst.
Ich habe das Skript nicht ausgeführt. Ich muss wohl ein paar Dinge markiert haben. So, jetzt wissen wir's. Es handelte sich um eine Parquet-Datei. Wir haben sie beim Import mit PQ in das Parquet-Format konvertiert. Die Eigenschaften der Parquet-Datei: Sie umfasst tausend Zeilen. Die Struktur ist 13 Spalten mal tausend Zeilen. Das Schema zeigt die Spaltennamen an.
Hier ganz unten können wir unter anderem zeigen, dass wir mit den Verbesserungen, die wir auf der Python-Seite vornehmen wollen, noch lange nicht fertig sind. Bis dahin können Sie JSL jedoch von Python aus ausführen.
Obwohl der Python-Code Funktionen wie das Festlegen von Anzeigebreiten oder das Ändern von Spaltentypen noch nicht unterstützt, können Sie zwar eine neue Spalte erstellen, aber deren Typ nicht in Python ändern. Wir arbeiten daran, diese Funktionen zu implementieren. Bis dahin gibt es jedoch einen Workaround, mit dem Sie JSL-Skripte aus Python heraus ausführen können, genauso wie Sie zuvor Python aus JSL heraus ausführen konnten.
Mit dieser erweiterten Umgebung können Sie nun zwischen den beiden Systemen hin- und herwechseln. Python kann JSL-Skripte ausführen. Dieser Python-Aufruf kann dann wiederum in der JSL-Umgebung ausgeführt werden, sodass Sie Aufrufe verschachteln und so Funktionen realisieren können, die sonst nicht möglich wären. Beispielsweise können Sie eine Parquet-Datei verarbeiten, deren Datentyp JMP nicht nativ unterstützt. Wir haben dies jedoch durch den Import eines entsprechenden Python-Pakets ermöglicht.
Eine weitere Sache, die mir sehr am Herzen liegt. Ich bin zwar kein Statistiker, aber ich kenne mich mit Grafik und Mathematik aus. Hier verwenden wir Open Compute Language oder OpenCL. Wir haben das OpenCL-Paket importiert, um ein Mandelbrot-Fraktal zu erstellen. Zuerst zeigen wir Ihnen die CPU-Version. Die Ausführung dauert etwa 16 Sekunden.
Das ist mühsam, und Sie werden feststellen, dass JMP selbst langsam ist. Es reagiert nicht, da Python an diesem Punkt die Kontrolle hat. Wenn Sie eine Wartezeit für eine laufende Zelle tief in engen Schleifen einfügen, können Sie die Kontrolle zurückgewinnen. Hierbei wird die CPU zur Generierung dieses Fraktals verwendet.
Jetzt ändern wir das so, dass die GPU zum Einsatz kommt, und führen das Skript aus. Zack. Das Bild wird in Sekundenbruchteilen generiert, gespeichert und in ein Skript eingebunden. Mal sehen, was dabei herauskommt. Mit der GPU dauerte es 16 Sekunden, im Vergleich zu… aber wenn wir weit genug zurückgehen… Tatsächlich dauerte es während meiner Präsentation 32 Sekunden, es mit der CPU auszuführen.
Dies eröffnet neue Möglichkeiten, wenn Sie die GPU mit JMP nutzen möchten. Dies ist nun über Python möglich. Wir haben sowohl PyOpenCL als auch PyCUDA getestet. Wenn Sie also eine Nvidia-Grafikkarte besitzen und mit CUDA arbeiten, können Sie PyCUDA oder das allgemeinere OpenCL einbinden. Dadurch wird die Rechenleistung von JMP weiter verbessert, ohne dass die Leistung Ihres Desktop-Rechners ungenutzt bleibt.
Wir können uns auch über Python mit SaaS verbinden. SaaS bietet ein SaaS-y-Paket an, das wir installiert haben… und ein Teil dieser Arbeit stammt von einem meiner Kollegen. Löschen wir die Protokolle. Jetzt sehen wir, was ich habe, und können das Skript ausführen.
Es sammelt die Daten wie erwartet. Los geht's. Dieses Skript verwendet JSL, um sicherzustellen, dass alle benötigten Python-Pakete bereits installiert sind. Das können Sie einrichten. Ein Grund dafür, dass im Protokoll steht, dass diese Voraussetzungen erfüllt sind. Hier sind alle Ergebnisse der Skriptausführung mit Verbindung zu SaaS. Wir verwenden das SaaS-Py-Paket und gehen das Protokoll nun erneut durch.
Das Skript wird im Log protokolliert. Wie bereits erwähnt, erhalten wir Verbindungsinformationen zur SaaS-Plattform, zum Ausführen der Produkte und zur Logistik. Anschließend werden die Ausgabewerte und das Ende der SaaS-Sitzung zurückgegeben.
Wir haben gehört, dass TensorFlow auf Interesse stoßen könnte. Hier ist ein ganz einfaches Beispiel. Falsch, ich habe TensorFlow installiert und das Ganze läuft über JSL, aber wir hätten diesen Code genauso gut in Python ausführen können.
Es führt TensorFlow aus und berechnet die Summe. Sicherlich fallen Ihnen noch viel komplexere Anwendungsfälle ein, als ich hier demonstrieren kann. PyDigest ist ein weiteres Beispiel. Es verwendet den Bildschirm. Hier ist ein Beispiel, das ich erstellt habe, um verschiedene Funktionen zu demonstrieren, darunter die Ausführung von JSL. Damit kann ich ein Verzeichnis mit JMPs `pick directory` auswählen und dieses in einem Python-Skript verwenden. Das ist alles reines Python-Skript. Es ermöglicht mir, ein Verzeichnis auszuwählen.
Es erstellt eine Prüfsumme für jede Datei im Verzeichnis. Diese wird in einer SQLite-Datenbank gespeichert und anschließend eine JMP-Datentabelle aus den Datenbankdaten generiert. Dadurch erhalten Sie Einblicke in die Datenbankprogrammierung, die Erstellung von JMP-Datentabellen mit Python und die Ausführung von JSL mit Python.
Verzeichnis auswählen. Ich habe hier viele Daten, also wählen wir einfach den Ordner „Präsentation“, den Parquet-Ordner oder den ausgewählten Ordner. Jetzt haben wir eine Tabelle mit Prüfsummen. Sie haben die… erstellt, sie überprüft jede Datei im Verzeichnis, gibt mir deren Pfadnamen und eine MD5-Prüfsumme des Dateiinhalts aus. Datenbank erstellt. JMP-Datentabelle mit Python erstellt und JSL verwendet, um die Spaltenbreiten festzulegen.
Auch das haben wir noch nicht implementiert, aber es steht auf unserer Liste. Sie können aber, wenn Sie möchten, JSL-Funktionen aus Ihrem Python-Code heraus nutzen.
Manche möchten vielleicht R verwenden. Nun, in diesem Fall habe ich eine Verbindung über unseren Server auf meinem Rechner und in unserer Umgebung hergestellt. Es war einfach einfacher, unseren Server innerhalb eines Windows-Systems für die Linux-WSL-Umgebung auszuführen.
Ich habe hier einen R-Server-Dämon am Laufen. Und ich benutze den reservierten Client. Ich mache nur eine kleine Sache: Ich erstelle einen R-Vektor auf dem Server, summiere das Ergebnis und führe dieses Skript aus. Wir haben uns mit unserem Server verbunden. Wir erhalten den Vektor und haben alle Elemente summiert, um sechs zu erhalten. Unser py2. Wir haben auch einige Beispiele dafür. Wenn Sie etwas wirklich Einfaches benötigen, das über die Kommandozeile funktioniert, gibt es ein Beispiel, wie man einen Prozess verwendet, um R über die Kommandozeile auszuführen.
Abschließend noch die Statistikaufgabe, bei der Jon Saul ihm geholfen hat. Erstellen Sie ein Beispiel mit dem HDB-Scan-Python-Paket. Wichtig zu wissen: Matplotlib unter Windows verfügt über kein Grafik-Backend. Wenn Sie also Ausgaben sehen möchten, ist PyQt5 unserer Erfahrung nach die beste Wahl.
Als Backend wird auf dem Mac, falls Sie Matplotlib verwenden, entweder das AGG-Backend (das nicht-grafische Backend) oder PyQt5 bzw. PySide installiert. Matplotlib verwendet auf dem Mac standardmäßig das Cocoa-Backend. Ein Fehler führt dazu, dass JMP beendet wird, sobald das letzte Matplotlib-Fenster geschlossen wird.
Um dies zu verhindern, laden wir Matplotlib, falls es auf Ihrem System gefunden wird und ein Backend vorhanden ist, und erzwingen die Verwendung des Qt-Backends. Andernfalls stellen wir sicher, dass es sich um ein nicht-grafisches Backend handelt. Wir haben es als Backend festgelegt. Ich habe PyQt5 auf meinem Rechner installiert. Mit diesem Beispiel führen wir ein Clustering des HDB-Scans durch.
Jetzt zeigen wir das eingebettete Protokoll. Wir führen das Skript aus. Das Ergebnis ist eine in Matplotlib generierte Datentabelle. Hier sehen Sie, dass wir mit JMP geöffnet und die DT-Referenz verwendet haben. Das sind die Beispiele, die ich habe. Glauben Sie mir.
Ich werde die Präsentation fortsetzen. Unsere Prioritäten für die nahe Zukunft: Kontinuierliche Optimierung und Verbesserung. Verbesserung der Dateninteroperabilität zwischen JMP und Python. Aktuell besteht die Einschränkung bei der Spaltenbearbeitung darin, dass zwar Spalten beliebigen Typs erstellt werden können, die Werte jedoch nur für numerische und Zeichenkettenspalten, Ausdrucksspalten oder Statusspalten geändert und abgerufen werden können. Die Erstellung verknüpfter Tabellen ist für die Zukunft geplant.
Der Python-Skripteditor unterstützt zwar Codefarbgebung und Syntaxhervorhebung, aber noch keine automatische Einrückung. Wir werden uns das ebenfalls ansehen.
Ziel der Modernisierung war es, die Python-Integration in JMP sofort einsatzbereit zu machen. Nutzer sollten ohne Konfiguration produktiv mit JMP und Python arbeiten können. Andernfalls wäre die Integration sehr problematisch. Warum also nicht die Zeit für Python-Programmierer verkürzen, um in JMP produktiv zu arbeiten, und JMP so weiterentwickeln? Die Funktionalität von JMP verbessern und es dank der einfachen Erweiterung mit externen Python-Paketen zu einer zentralen Analyseplattform machen.
Wir verbessern unsere Fähigkeit, verschiedene Datenformate zu laden, die von anderen entwickelt wurden, wie beispielsweise das Parquet-Format (das wir ebenfalls getestet haben) und HDF5. Es gibt unzählige Formate – mehr, als ein einzelnes Entwicklerteam intern implementieren kann. Mit dieser Methode lässt sich das Python-Paket einbinden, und aus diesen Daten kann eine JMP-Datentabelle erstellt werden, die in JMP verfügbar ist.
Vielen Dank für Ihre Zeit. Wir hoffen, Ihnen hat unsere Arbeit gefallen und freuen uns über Ihr Feedback.