繁体   English   中英

如何将 mongodb 文档集合转换为 python 中的 numpy 数组?

[英]How can I convert a mongodb document collection to a numpy Array in python?

我正在尝试从我的 MongoDB 中获取密钥“Verlauf”上具有相同值的所有文档。 到目前为止有效。 但后来我想将此 output 转换为 numpy 数组。 这是如何运作的?

我使用以下命令从 MongoDB 获取列表中的文档:

v1 = list(collection.find({"Verlauf": 1}))

Output 看起来像这样(对于 2 个匹配的文档):

[{'_id': ObjectId('5f05aca208c3c86edf465953'), 'Verlauf': 1, 'Wie stark haben Sie den Kraftverlauf empfunden?': 2, 'Wie gut wurde dies empfunden?': 3, 'Dritte Frage hier einfügen': 4, 'Vierte Frage hier einfügen': 5, 'Fünfte Frage hier einfügen': 6, 'Sechste Frage hier einfügen': 7}, {'_id': ObjectId('5f05b89d48eb73c488a90efb'), 'Verlauf': 1, 'Wie stark haben Sie den Kraftverlauf empfunden?': 4, 'Wie gut wurde dies empfunden?': 5, 'Dritte Frage hier einfügen': 4, 'Vierte Frage hier einfügen': 5, 'Fünfte Frage hier einfügen': 4, 'Sechste Frage hier einfügen': 5}]

有没有办法在 numpy 数组中构造来自该列表的数据,其中第一行包含第一个键的所有值,第二行包含第二个键的所有值?

所以对于这个例子:

[ [5f05aca208c3c86edf465953, 5f05b89d48eb73c488a90efb],
  [1, 1],  
  [2, 4],
  [3, 5],
  [4, 4],
  [5, 5],
  [6, 4],
  [7, 5]]

我对所有这些数据处理都很陌生,非常感谢任何建议。

稍后我想分析这些数据以获取所有文档中每个键的最小值、最大值、下四分位数、上四分位数和中位数。

提前致谢。 问候汤姆

我不经常使用 python 所以我相当有信心有更好的方法来做到这一点。

当我玩它时,通常是小规模的实验,因此我只使用蛮力方法(你可以用几种不同的方式来做到这一点)。

columns = ["_id", "field1", "field2"]
data = list(map(lambda item: [item["_id"], item["field1"], item["field2"]], db.collection.find({})))

df = DataFrame(data, columns=columns)

你甚至可以多加一点糖:

columns = ["_id", "field1", "field2"]
data = list(map(lambda item: list(map(lambda col: item[col], columns)), db.collection.find({})))

df = DataFrame(data, columns=columns)

请注意,这不适用于嵌套字段,即"field1.nested"值,因为 python 希望您使用item["field1"]["nested"]访问嵌套字典值。 在这种情况下,我通常只使用 for 循环来实现所需的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM