首页 > 解决方案 > 有没有将 Pandas DataFrame 转换为 H2O Frame 的有效方法?

问题描述

我有一个 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,没有 null 或 NaN 值。

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

标签: pythonpandasperformancedataframeh2o

解决方案


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

  2. 将该 csv 文件放在 h2o 服务器可以看到的地方。(如果您在同一台机器上运行客户端和服务器,情况已经如此。)

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

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

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


推荐阅读