📜  将 PyMongo 光标转换为数据框

📅  最后修改于: 2022-05-13 01:54:39.461000             🧑  作者: Mango

将 PyMongo 光标转换为数据框

先决条件: MongoDB Python基础

本文是关于将 PyMongo 光标转换为 Pandas 数据框的。 find() 和 find_one() 等函数返回 Cursor 实例。

让我们开始:

  1. 导入所需模块:使用以下命令导入所需模块:
    from pymongo import MongoClient
    from pandas import DataFrame

    如果您的机器上尚未安装 MongoDB,您可以参考指南:使用Python安装 MongoDB 的指南

    如果 pandas 未安装,您可以使用 pip 安装它,如果您使用的是 Python3,则使用pip3而不是 pip 来安装所需的模块。

    pip install pandas
    
  2. 创建连接:现在我们已经导入了模块,是时候建立与 MongoDB 服务器的连接了,大概是在 localhost(主机名)的端口 27017(端口号)上运行。
    client = MongoClient(‘localhost’, 27017)
  3. 访问数据库:因为与 MongoDB 服务器的连接已建立。我们现在可以创建或使用现有的数据库。
    mydatabase = client.name_of_the_database
  4. 访问集合:我们现在使用以下语法从数据库中选择集合:
    collection_name = mydatabase.name_of_collection
  5. 获取文档:使用 find() 方法从集合中获取所有文档。它返回游标的实例。
    cursor = collection_name.find()
    
  6. 将光标转换为数据框:将光标转换为 Pandas 数据框。
    首先,我们将光标转换为字典列表。
    list_cur = list(cursor)
    

    现在,将列表转换为 Dataframe

    df = DataFrame(list_cur)
    

下面是实现。

样本数据库:

python-mongodb-sample-database1

# Python Program for demonstrating the 
# PyMongo Cursor to Pandas DataFrame
  
   
# Importing required modules
from pymongo import MongoClient
from pandas import DataFrame
  
   
# Connecting to MongoDB server
# client = MongoClient('host_name',
# 'port_number')
client = MongoClient('localhost', 27017)
  
# Connecting to the database named
# GFG
mydatabase = client.GFG
   
# Accessing the collection named
# gfg_collection
mycollection = mydatabase.College
  
# Now creating a Cursor instance
# using find() function
cursor = mycollection.find()
print('Type of cursor:',type(cursor))
  
# Converting cursor to the list of 
# dictionaries
list_cur = list(cursor)
  
# Converting to the DataFrame
df = DataFrame(list_cur)
print('Type of df:',type(df))
  
# Printing the df to console
print()
print(df.head())

输出:

Type of cursor: 
Type of df: 

   _id      name Roll No Branch
0    1  Vishwash    1001    CSE
1    2   Vishesh    1002     IT
2    3    Shivam    1003     ME
3    4      Yash    1004    ECE
4    5      Raju    1005    CSE