【问题标题】:Export pandas dataframe to SAS sas7bdat format将 pandas 数据框导出为 SAS sas7bdat 格式
【发布时间】:2022-01-27 22:08:49
【问题描述】:

我想到的流程:
1. 从 SAS 导出 sas7bdat
2. 在 python 中使用pd.read_sas 导入该文件并在 in
上做一些事情 3. 将 pandas 数据帧导出为 sas7bdat(或其他一些 SAS 二进制文件格式)。我以为pd.to_sas 会存在,但它不存在
4. 在 SAS 中打开新文件并对其进行进一步处理

上面第 3 点有解决方案吗?在我看来,我唯一的选择是 csv 或一些 SQL 数据库。
这不是一个真正的编程问题。希望不会有问题。

【问题讨论】:

  • python数据不能直接导出为SAS数据,需要先保存为csv/excel/sql数据,再由SAS读取。
  • @ShenglinChen - 你说得对,花了最后一个小时左右阅读 github 问题/提案,现在我很感激至少存在 read_sas。有趣的是,R 有一些包可以做到这一点。

标签: pandas sas


【解决方案1】:

Python 能够写入 SAS .xpt 格式(参见例如 the xport library),这是 SAS 的开放文件格式。 SAS7BDAT 是一种封闭文件格式,不打算被其他语言读取/写入;有些人已经对其进行了足够的逆向工程,至少可以阅读,但据我所知,没有好的 SAS7BDAT 编写器存在(例如,R 有避风港,这是我见过的最好的,但它仍然存在问题和事情做不到)。

不过,比 XPT 文件更常见的是编写一个 CSV,然后在你的 python/etc 中编写一个 SAS 输入脚本,这可能会很慢。程序。这使您可以非常轻松地使用变量标签、值标签、类型等;编写 SAS 输入脚本非常容易。许多其他软件包这样做是为了他们首选的方法来生成 SAS 文件。这还有一个额外的优势,即它很容易跨平台——不管你的 SAS 程序是在大型机、UNIX、Windows 等上;都是一样的。

编辑:如果您确实通过服务器或本地安装在本地获得 SAS 许可,则将 Python 数据导出到 SAS 的另一个选项是SASPy,这是一个 SAS 维护的开源项目,允许 Python 直接连接到SAS 实例并直接发送数据。 (在底层,我相信数据实际上大部分时间都是以 CSV 格式传输的,然后使用 SAS 代码读入。)SAS ODBC 驱动程序也是一种选择,但对于 Python,SASPy 很可能是最简单的选择。

【讨论】:

    【解决方案2】:

    “SAS7BDAT 是一种封闭的文件格式,不打算被其他语言读取/写入;有些人已经对其进行了足够的逆向工程,至少可以读取,但据我所知,没有好的 SAS7BDAT 编写器存在。”

    虽然 SAS7BDAT 是专有格式,但它不是封闭的。第三方产品可以使用 SAS 自己的 ODBC 驱动程序对其进行读写。 https://support.sas.com/en/software/sas-odbc-drivers.html。由于 Python 可以使用 ODBC(pyodbc),所以只需使用 SAS ODBC Driver 编写 SAS7BDAT 文件格式即可。

    IBM SPSS Statistics 和 IBM SPSS Modeler 还可以读取和写入 SAS7BDAT 格式以及前面提到的早期版本 7 格式和 SAS 传输文件格式(.xpt)文件。这些产品不需要 ODBC 来执行此操作,并且此功能通过 SAVE Translate 命令包含在 SPSS Statistics Base 中。它通过用于读取的 SAS Source 节点和用于写入的 SAS Export 节点包含在 SPSS Modeler Professional 中。

    【讨论】:

    • SAS ODBC 驱动程序不是证明 sas7bdat 是一种开放文件格式的证据。它需要 SAS 服务器(以及随附的许可证)才能运行;它不允许没有 SAS 的人编写 SAS 数据集。至于“封闭”或“开放”; “封闭”表示其文档不可免费获得的文件格式,而“开放”表示具有公开可用文档的文件格式。 SAS7BDAT 没有被 SAS 公开记录(尽管 Haven/etc. 已经记录了它的部分内容,这是逆向工程而不是来自 SAS)。
    猜你喜欢
    • 2015-07-12
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    • 2022-12-07
    • 2021-10-13
    • 1970-01-01
    相关资源
    最近更新 更多