减少将数据库记录转换为数据帧所需时间的方法



我使用以下命令从mongodb集合中获取数据并转换为数据帧。获取30000条记录所花费的时间是>15秒。如何在不花费更多时间的情况下将其转换为数据帧?

db = conn.db
collection = db.collection_name
pd.DataFrame(list(collection.find()))

此问题可能与此问题重复。

我用上面链接问题中提供的选项进行了一个简短的性能测试(使用来自MongoDB数据库的示例数据(:

In [1]: %timeit df = pd.DataFrame(list(collection.find()))
1.11 s ± 2.44 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
In [2]: %timeit df = pd.DataFrame.from_records(collection.find())
1.11 s ± 1.69 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
In [3]: %timeit df = pd.json_normalize(collection.find())
4.89 s ± 13.7 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

免责声明

  • 这仅代表执行时间之间的比率,不能应用于您的确切问题,因为我无法访问您的数据
  • json_normalize()返回其他列之外的其他数据帧(未嵌套(列

如果您不需要MongoDB文档中的所有字段,我建议您只搜索真正需要的字段。请参阅MongoDB文档。

最新更新