使用Pandas和PyMongo将MongoDB数据加载到DataFrame的更好方法?

blu*_*hip 8 python pymongo pandas

我有一个0.7 GB的MongoDB数据库,其中包含我正在尝试加载到数据帧中的推文.但是,我收到一个错误.

MemoryError:    
Run Code Online (Sandbox Code Playgroud)

我的代码看起来像这样:

cursor = tweets.find() #Where tweets is my collection
tweet_fields = ['id']
result = DataFrame(list(cursor), columns = tweet_fields)
Run Code Online (Sandbox Code Playgroud)

我已经尝试了以下答案中的方法,在某些时候,在加载之前创建数据库的所有元素的列表.

然而,在另一个讨论list()的答案中,该人说它对小数据集有好处,因为所有内容都被加载到内存中.

就我而言,我认为这是错误的根源.这是太多的数据加载到内存中.我还可以使用其他什么方法?

blu*_*hip 8

我已将代码修改为以下内容:

cursor = tweets.find(fields=['id'])
tweet_fields = ['id']
result = DataFrame(list(cursor), columns = tweet_fields)
Run Code Online (Sandbox Code Playgroud)

通过在find()函数中添加fields参数,我限制了输出.这意味着我没有加载每个字段,只将所选字段加载到DataFrame中.现在一切都很好.


shx*_*hx2 5

从mongodb查询创建DataFrame的最快且可能是最有效的内存方式,就像你的情况一样,将使用monary.

这篇文章有一个简洁明了的解释.