【问题标题】:Reading feather object in R is slow在R中读取羽毛对象很慢
【发布时间】:2017-08-11 18:04:16
【问题描述】:

我正在使用feather 包在 Python(收集数据)和 R(用于分析)之间进行数据交换,在 Python 中写入和读取数据非常快。但是,在 R 中读取相同的羽化对象非常慢,对于具有大约 80K 行和 24 列的大约 10MB 羽化对象,大约需要几分钟。每次我在本地读取羽毛对象时,它都不是由于网络延迟。

我认为唯一可能是,一些变量(准确地说是 5 个)是 Python 中的 int64 类型,当 R 导入它们时,它们会被强制转换为 double 类型。这会导致 R 在读取羽毛对象期间发出coercing int64 to double 警告。任何人都可以确认这一点还是有其他解释?

编辑:强制不是问题,我将 Python 中的 int64 列重新保存为 int32,而 R 中的读取仍然很慢。需要帮助。

编辑 2:示例代码 根据要求,这是我正在运行的代码。基本上只是从子文件夹中读取羽毛对象:

library(feather)
test_feather = read_feather("C:/my_folder/subfolder/test.feather")

【问题讨论】:

  • 我已经使用 Father 和 R 来读取数 GB 的非结构化文本,而且速度非常快。也许您可以按照通常的 stackoverflow 标准提供您的脚本,以便我们发现您的用户错误。谢谢
  • @Justin 我只是在运行读取命令,所以我的代码就是data <- read_feather("c:/my_project/subfolder/my_data.feather")
  • sessionInfo() 和一个可重现的例子好吗?
  • @BenBolker 添加了sessionInfo(),我不知道如何最好地发布一个可复制的示例,因为我不能简单地在这里发布我的羽毛对象。正如我所说,它来自一个 Python 数据帧,该数据帧大约有 50k 行,有 25 个变量,混合了 float64、int32、日期时间和 unicode 字符串
  • 可能是因为数据首先在 Linux 系统中处理/写入,然后尝试在 Windows 机器上读取 R 中的羽毛对象?

标签: python r feather


【解决方案1】:

问题是由于在 Linux 环境中创建了 feather 对象,而在 Windows 系统中读取 R 中的同一对象。我不完全了解细节,但基本上每个操作系统在表示磁盘上的二进制数据时都有不同的规范。

我不记得在文档中阅读过这个问题/警告(尽管我认为它是显而易见的和隐含的),但也许一点提醒可能会避免一些未来的人犯同样的错误。

【讨论】:

    猜你喜欢
    • 2021-06-12
    • 2020-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多