如何将 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