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.
-
pandas
PS C:\> pip install pandas
-
json
PS C:\> pip install json
-
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):
Mientras que el marco de datos insertado en MongoDB está debajo.