gpt4 book ai didi

python - 将数据从 MongoDB 游标加载到 pandas Dataframe 的更快方法

转载 作者:行者123 更新时间:2023-12-01 06:49:36 30 4
gpt4 key购买 nike

我正在尝试分析存储在 MongoDB 中的包含 150k 消息(约 40MB)的 Facebook 对话。我注意到将数据从 MongoDB 传输到 pandas 的时间很长(大约需要 25 秒),并且我发现 data = [msg for msg incursor] 是减慢该过程的步骤。

是否有更快的方法将 MongoDB 游标转换为 DataFrame?

这是我的一些代码:

from pymongo import MongoClient
import pandas as pd

connection = MongoClient(MONGODB_URI)
database = connection[DBS_NAME]
messages = database['messages']
cursor = messages.find(projection=FIELDS)
data = [msg for msg in cursor]
df = pd.DataFrame(data)

我也可以用 df = pd.DataFrame(list(cursor))df = pd.DataFrame.from_records(cursor) 替换此步骤,但仍然需要25秒。

我说它很慢,因为我想制作图表来显示谁发送的消息最多,并将它们放在网站中。我使用 Flask 在 Python 中进行分析,并将包含已处理数据的 json 传输到 JavaScript。这样,每次您进入网站时,它都会进行数据处理,我不希望在显示图表之前花费 25 秒。

最佳答案

在 mongodb 中而不是 Flask 中进行聚合

您可以将繁重的工作委托(delegate)给 mongodb,将数据从 mongodb 中取出需要 I/O,并且除非您的客户端和 mongo 服务器能够处理 40MB/秒,否则您无法将时间减少到亚秒。

db.getCollection('COLLECTION').aggregate([{$sortByCount: "$FIELD11"}, {$limit : 10}])

运行时间为 0.6 秒,大约有 30 万条记录

关于python - 将数据从 MongoDB 游标加载到 pandas Dataframe 的更快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59080521/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com