如何將 Python Pandas dataFrame 轉換為 jmp 格式而不另存為文件?我知道 JMP 在 JMP 腳本環境中支持“Python 接口”功能。 但有時 Python 工程師和 JMP 工程師獨立合作會更好。
在我們的案例中,Python 工程師使用 DB 接口讀取數據庫文件,並使用 Pandas 庫進行預處理,並希望將其轉換為 JMP 格式,因為 JMP 工程師只需要 JMP 格式數據即可使用 JSL 進行數據分析和後處理。
如您所想,瓶頸在於如何在不將其保存為文件的情況下轉換 Python Pandas dataFrame。 最簡單的方法是將文件保存並以jmp格式讀取,但保存和讀取它們需要多次。 我想知道哪裡有任何庫可以直接在內存中將 Python Pandas dataFrame 轉換為 jmp 格式。
回复:如何將 Python Pandas dataFrame 轉換為 jmp 格式而不將其另存為文件?感謝回帖。希望能夠使用 JMP 直接打開 .parquet 文件。
我們已經使用 DB 連接來獲取數據,但是在完整的數據管道(提取寫入、存儲、讀取)中使用 .csv 存在很多低效問題,我們很樂意開始使用 parquet。
回复:如何將 Python Pandas dataFrame 轉換為 jmp 格式而不將其另存為文件?JSON 格式太多而無法處理。
回复:如何將 Python Pandas dataFrame 轉換為 jmp 格式而不將其另存為文件?@Craige_Hales你達人克雷格 
回复:如何將 Python Pandas dataFrame 轉換為 jmp 格式而不將其另存為文件?To_Json with Orient=table 可能是一個不錯的選擇。 它確實需要從二進制轉換為文本,然後再轉換回來。 JMP 的 JSON 嚮導應該相當直接地處理它。 在多文件導入中使用 CSV 實際上可能已經足夠快了。 當 JMP 導入它們時,它將使用您所有的 CPU 處理器並行加載列。 根據它的實現方式,它在服務器端可能太慢了。
我確實在貝奧武夫、牛頓和漢森先生博文,有時回來。 它使用 numpy 從 Python 代碼輸出二進制數據塊,並使用 blob 到 JSL 中的矩陣函數以將二進制數據加載回去。 這很有效,因為數據都是數字的。
回复:如何將 Python Pandas dataFrame 轉換為 jmp 格式而不將其另存為文件?我想您可以使用 JMP 的“打開數據庫”命令或查詢生成器直接從數據庫中提取數據。 您需要一個用於數據庫的 ODBC 驅動程序。 連接到數據庫後,您可以在 SQL 中提交查詢以在 JMP 中檢索數據。 Query Builder 可以讓您以圖形方式編寫 SQL。
CSV 是一種非常常見的數據傳輸文件類型,所以我不會這麼快就放棄它。 JMP 多線程還讀取文本和 csv 文件,因此它們打開速度相當快。
回复:如何將 Python Pandas dataFrame 轉換為 jmp 格式而不將其另存為文件?你好!我知道這是一篇已有 4 年曆史的帖子,我是 JMP 社區的新用戶……但對於我們的用例,此處針對原始帖子提供的解決方案並不全面,無法滿足我們的需求。
我們希望有一個只運行 Python(不是 JMP / JSL)的服務器能夠進行所有數據拉取和準備/轉換,然後能夠序列化數據(無需本地文件寫入)並將數據發送回客戶端採用 JMP 中可直接讀取的形式。
我們的數據更大......可以說,100k 到 1M 行......和 10 到 100 列......它是異質的(數字的和分類的)並且可能包含缺失值。
是否有任何 DataFrame.to_() 方法支持這個?那些 pandas 方法可以寫入 IO 緩衝區而不是文件以節省時間,然後網絡傳輸到 JMP 客戶端?
我們想要使用的主要候選格式是 .to_parquet()、to_hdf()、to_feather()。看起來 pandas 有一個寫入“Stata”格式的 to_stata() 方法。不確定 JSL (SAS) 是否足夠開放,Pandas 有朝一日可以實現它(可能在列表中排名較低)。Parquet 現在似乎很普遍,pandas 也有 Arrow “Table” 類型作為第一類類型,所以這對我們來說也很有趣。
我們希望避免需要重新解析數據和分配數據類型(數字、分類、日期時間……)的格式。 ...所以 .to_csv() 和 to_json() 或其他文本格式並不是很有用。
在此先感謝您通讀這篇文章,讓我知道我是否應該開始一個新話題,而不是回复這個話題。
蘭德爾
回复:如何將 Python Pandas dataFrame 轉換為 jmp 格式而不將其另存為文件?這樣做的一種方法是將Python Pandas dataFrame 到 JMP 表的 JSL 版本。這是 JMP 數據表的完全受支持和記錄的形式。它將允許您包含任何列屬性和行狀態等。要查看您需要執行的操作的示例,您所要做的就是指向任何現有的 JMP 數據表並要求 JMP 生成腳本將重新創建表。
回复:如何將 Python Pandas dataFrame 轉換為 jmp 格式而不將其另存為文件?我可以詢問將 Python Pandas dataFrame 轉換為 jmp 格式並將其另存為文件的詳細信息嗎?
我希望將數據挖掘為 Pandas 數據幀,並將它們保存為 JMP 可以輕鬆讀取以供進一步調查的格式。
提前致謝
回复:如何將 Python Pandas dataFrame 轉換為 jmp 格式而不將其另存為文件?在 jmp 14 中,有一些新的函數可以用 Python 獲取和發送東西。
我還不能使用它們。
有一個名為 Python Get(name) 的函數可能有效。
回复:如何將 Python Pandas dataFrame 轉換為 jmp 格式而不將其另存為文件?感謝您的建議。
但如果可能的話,我想知道如何直接轉換為 JSL(JMP 腳本語言)在 JSL 環境中識別 dataFrame 數據的 jmp 格式。 這意味著 JSL 將 Pandas dataFrame 識別為像 JMP 一樣。 原因是,就我而言,如果我可以從 JMP 數據格式開始,我幾乎可以完成所有 JSL 自動化工作。
回复:如何將 Python Pandas dataFrame 轉換為 jmp 格式而不將其另存為文件?如果文件很小並且適合剪貼板,那麼您可以將數據框保存到剪貼板並將其從剪貼板粘貼到 JMP 中。
這是 Discovery 峰會演講中的一個例子:
https://community.jmp.com/t5/Discovery-Summit-2017/Leveraging-Python-and-REST-to-Introduce-SAS-Viya-TM-Processing/ta-p/44078
names default to here(1);
path=Get Current Directory();
dt1=Open("$SAMPLE_DATA/Big Class.jmp");
current data table(dt1);
dt1<< Bring Window To Front;
main menu("Copy With Column Names");
text="\[
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
df=pd.read_clipboard(sep='\\s+')
size= (df.height * df.weight)/df.age ** .5
ax = plt.subplot(111, projection='polar')
c = plt.scatter(df.height, df.weight, c=df.age, s=size, cmap=plt.cm.hsv)
c.set_alpha(0.55)#transparency
plt.show()
]\";
path=Get Current Directory();
save text file(path||"graph.py", text);
x = RunProgram(
executable( "/Users/user1/anaconda/bin/python" ),
options(path||"graph.py")
,readfunction("blob")
);
close(dt1, nosave);//this executes as soon as the graph window is closed