Inserte el marco de datos de Pandas en MongoDB usando PyMongo

Hira Arif 15 febrero 2024
Inserte el marco de datos de Pandas en MongoDB usando PyMongo

MongoDB es una base de datos orientada a documentos de código abierto que admite documentos flexibles similares a JSON para almacenar y consultar datos. Utiliza un lenguaje de consulta dinámico y sin esquemas (DQL) que le permite expresar consultas en JavaScript.

Podemos diseñar MongoDB como una base de datos back-end para aplicaciones que requieren acceso rápido a datos cambiantes y las implementaciones varían con el tiempo como aplicaciones web y API.

El marco de datos de Pandas es una clase de estructuras de datos de Python que se utiliza para el análisis y la manipulación de datos, como tablas en Excel o bases de datos con filas y columnas. Este tutorial explica la inserción de marcos de datos de Pandas en MongoDB utilizando PyMongo.

Inserte el marco de datos de Pandas en MongoDB usando PyMongo

Para insertar el marco de datos pandas en MongoDB, necesitamos instalar las siguientes bibliotecas de Python.

  1. pandas

    PS C:\> pip install pandas
    
  2. json

    PS C:\> pip install json
    
  3. pymongo

    PS C:\> pip install pymongo
    

Vamos a crear un cliente ejecutando el siguiente código.

Código de ejemplo (guardado en demo.py):

from pymongo import MongoClient


def create_connection():
    connection = None
    try:
        connection = MongoClient("mongodb://localhost:27017/")
        print("Connection made!!")
    except Exception as e:
        print(e)
    return connection


client = create_connection()

Desde el paquete de Python pymongo, importamos una clase MongoClient. La función anterior create_connection() usa esa clase para crear una conexión conectando el servidor MongoDB localmente en el número de puerto 27017.

Luego devuelve la conexión al cliente. Ejecutemos el siguiente código que crea una base de datos llamada db.

Código de ejemplo (guardado en demo.py):

def create_database(client, db_name):
    db = None
    try:
        db = client[db_name]
        print(f"Database {db_name} created!!")
    except Exception as e:
        print(e)
    return db


db_name = "companyDB"  # name of your database
db = create_database(client, db_name)

La función create_database() crea una base de datos llamada db tomando cliente y db_name como argumentos. En caso de cualquier error, esta función imprimirá la Excepción sin romper el programa.

Ahora, ejecutemos el siguiente código para crear una colección.

Código de ejemplo (guardado en demo.py):

def create_collection(db, collection_name):
    collection = None
    try:
        collection = db[collection_name]
        print(f"Collection {collection_name} created!!!")
    except Exception as e:
        print(e)
    return collection


collection_name = "startups"  # name of your collection
collection = create_collection(db, collection_name)

Creamos una colección utilizando la función anterior create_collection() con el nombre especificado en la base de datos provista. Nos permite la inserción de Pandas Data Frame en MongoDB.

El siguiente código inserta Pandas Data Frame en la colección creada.

Código de ejemplo (guardado en demo.py):

import json
import pandas as pd


def insert_records(collection, records):
    rows = None
    try:
        rows = collection.insert_many(records)
        print(f"{len(rows.inserted_ids)} records added successfully")
    except Exception as e:
        print(e)
    return rows


df_file = "50_Startups.csv"
df = pd.read_csv(df_file)

records = json.loads(df.T.to_json()).values()
insert_records(collection, records)

Para insertar el marco de datos pandas en MongoDB, primero tenemos que leerlo usando la biblioteca pandas. De forma predeterminada, MongoDB admite archivos de tipo JSON, por lo que debemos convertir el marco de datos al formato compatible mediante la función to_json().

La función insert_records() toma db, collection_name y marcos de datos convertidos registros como argumentos y los inserta en la colección. Usamos la función insert_many() para insertar múltiples registros a la vez.

Finalmente, como hemos insertado el marco de datos en la base de datos, debemos cerrar la conexión ejecutando el código a continuación.

Código de ejemplo (guardado en demo.py):

# Close Connection
def close_connection(client):
    if client:
        client.close()
        print("Connection closed!!")


close_connection(client)

La función close_connection() utiliza la función client.close() para cerrar la conexión si existe.

Ahora, ejecutamos el archivo de Python demo.py como:

PS C:>python demo.py

Salida (impresa en la consola):

salida de la consola

Mientras que el marco de datos insertado en MongoDB está debajo.

salida de la base de datos