我使用以下命令从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文档。