【问题标题】:Is there efficient way to convert Pandas DataFrame to H2O Frame?有没有将 Pandas DataFrame 转换为 H2O Frame 的有效方法?
【发布时间】:2019-06-29 16:22:14
【问题描述】:

我有一个 Pandas 数据帧,我需要将其转换为 H2O 帧。我使用以下代码-

代码:

# Convert pandas dataframe to H2O frame
start_time = time.time()
input_data_matrix = h2o.H2OFrame(input_df)
logger.debug("3. Time taken to convert H2O Frame- " + str(time.time() - start_time))

输出:

2019-02-05 04:38:55,238 记录器调试 3. 转换 H2O 所需的时间 框架 - 9320.119945764542

数据框(即input_df)大小为 183K x 435,没有空值或 NaN 值。

大约需要 2 个小时。有没有更好的方法来执行这个操作?

【问题讨论】:

  • 交叉链接,可能重复但不确定答案是否正确:stackoverflow.com/q/46971969/1240268
  • 特别是这条评论 --> stackoverflow.com/questions/46971969/…
  • @aws_apprentice 该评论说明您的数据框是否包含 NaN 或缺失值。我没有。
  • 问题围绕着 NaN 但该评论仍然适用,您必须将整个数据帧从 python 写出到 java 内存,然后将其发送到云端,评论建议通过以下方式减少工作量删去pandash20 的步骤,所以我认为它适用

标签: python pandas performance dataframe h2o


【解决方案1】:
  1. 将 pandas 数据框保存到 csv 文件。 (如果您首先从 csv 文件加载它,并且没有对其进行任何数据处理,请跳过此步骤。)

  2. 将该 csv 文件放在 h2o 服务器可以看到的位置。 (如果你在同一台机器上运行客户端和服务器,已经是这种情况了。)

  3. 使用h2o.import_file()(优先于h2o.upload_file()h2o.H2OFrame()

h2o.import_file() 是将数据导入 H2O 的最快方式,但该文件必须对服务器可见。在处理远程集群时,这可能意味着将其上传到该服务器的文件系统,或将其放在 Web 服务器、HDFS 集群或 AWS S3 等上。

h2o.upload_file() 速度较慢的原因是它会对从客户端到服务器的数据进行 HTTP POST,而 h2o.H2OFrame() 速度较慢,因为它将您的 pandas 数据导出到临时 csv 文件,然后使用 @987654327 @,然后删除临时文件。)

【讨论】:

  • 感谢您提供有关 h2o.H2OFrame() 工作原理的见解。 I/O 操作(即从磁盘写入和读取)会不会更慢?
  • @EngineeredBrain h2o.H2OFrame() 在最好的情况下将是最慢的。 IE。它是执行步骤 1、2 和 3 的便捷功能。但是当您注意到它是瓶颈时,您通常可以做得更好,即如果您要使用 csv 文件 2 次以上,那么您自己执行步骤 1 之后是免费的第一次;如果服务器运行在本地主机上,则可以跳过第 2 步,如果运行的是多节点集群,import_file() 可以是多线程的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-08
  • 2023-04-06
  • 2018-05-24
  • 2023-01-29
  • 1970-01-01
  • 1970-01-01
  • 2022-07-19
相关资源
最近更新 更多