PyMongo を使用して Pandas データ フレームを MongoDB に挿入する
MongoDB は、データを格納およびクエリするための柔軟な JSON のようなドキュメントをサポートする、オープンソースのドキュメント指向データベースです。 JavaScript でクエリを表現できる、動的でスキームのないクエリ言語 (DQL) を使用します。
変化するデータへの高速アクセスを必要とするアプリケーションのバックエンド データベースとして MongoDB を設計することができ、展開は Web アプリや API として時間の経過とともに変化します。
Pandas データ フレームは、Excel のテーブルや行と列を持つデータベースなど、データ分析とデータ操作に使用される Python データ構造のクラスです。 このチュートリアルでは、PyMongo を使用して Pandas データ フレームを MongoDB に挿入する方法について説明します。
PyMongo を使用して Pandas データ フレームを MongoDB に挿入する
pandas
データ フレームを MongoDB に挿入するには、以下の Python ライブラリをインストールする必要があります。
-
パンダ
PS C:\> pip install pandas
-
json
PS C:\> pip install json
-
ピモンゴ
PS C:\> pip install pymongo
以下のコードを実行して client
を作成しましょう。
コード例 (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()
Python パッケージ pymongo
からクラス MongoClient
をインポートします。 上記の関数 create_connection()
は、そのクラスを使用して、MongoDB サーバーをポート番号 27017
でローカルに接続することにより 接続
を作成します。
次に、connection
を client
に返します。 db
という名前のデータベースを作成する以下のコードを実行してみましょう。
コード例 (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)
関数 create_database()
は、client
と db_name
を引数として取り、db
という名前のデータベースを作成します。 エラーが発生した場合、この関数はプログラムを中断することなく Exception
を出力します。
それでは、以下のコードを実行して collection
を作成しましょう。
コード例 (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)
上記の関数 create_collection()
を使用して、提供されたデータベースで指定された名前の コレクション
を作成します。 これにより、Pandas Data Frame を MongoDB に挿入できます。
以下のコードは、作成された collection
に Pandas Data Frame を挿入します。
コード例 (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)
pandas
データ フレームを MongoDB に挿入するには、まず、pandas
ライブラリを使用してそれを読み取る必要があります。 デフォルトでは、MongoDB は JSON 形式のファイルをサポートしているため、to_json()
関数を使用してデータ フレームをサポートされている形式に変換する必要があります。
関数 insert_records()
は、db
、collection_name
、および変換されたデータ フレーム records
を引数として取り、それらを collection
に挿入します。 insert_many()
関数を使用して、一度に複数のレコードを挿入します。
最後に、データ フレームをデータベースに挿入したので、以下のコードを実行して接続を閉じる必要があります。
コード例 (demo.py
に保存):
# Close Connection
def close_connection(client):
if client:
client.close()
print("Connection closed!!")
close_connection(client)
関数 close_connection()
は client.close()
関数を使用して、接続が存在する場合はそれを閉じます。
次に、Python ファイル demo.py
を次のように実行します。
PS C:>python demo.py
出力 (コンソールに出力):
一方、MongoDB に挿入されるデータ フレームは以下のとおりです。