PyMongo를 사용하여 Pandas 데이터 프레임을 MongoDB에 삽입

Hira Arif 2023년6월21일
PyMongo를 사용하여 Pandas 데이터 프레임을 MongoDB에 삽입

MongoDB는 데이터를 저장하고 쿼리하기 위해 JSON과 유사한 유연한 문서를 지원하는 오픈 소스 문서 지향 데이터베이스입니다. JavaScript로 쿼리를 표현할 수 있는 동적 체계 없는 쿼리 언어(DQL)를 사용합니다.

변화하는 데이터에 대한 빠른 액세스가 필요한 애플리케이션을 위한 백엔드 데이터베이스로 MongoDB를 설계할 수 있으며 배포는 웹 앱 및 API와 같이 시간이 지남에 따라 달라집니다.

Pandas 데이터 프레임은 Excel의 테이블이나 행과 열이 있는 데이터베이스와 같이 데이터 분석 및 데이터 조작에 사용되는 Python 데이터 구조 클래스입니다. 이 튜토리얼은 PyMongo를 사용하여 Pandas 데이터 프레임을 MongoDB에 삽입하는 방법을 설명합니다.

PyMongo를 사용하여 Pandas 데이터 프레임을 MongoDB에 삽입

pandas 데이터 프레임을 MongoDB에 삽입하려면 아래 Python 라이브러리를 설치해야 합니다.

  1. 판다

    PS C:\> pip install pandas
    
  2. json

    PS C:\> pip install json
    
  3. 파이몽고

    PS C:\> pip install pymongo
    

아래 코드를 실행하여 클라이언트를 생성해 봅시다.

예제 코드(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() 함수는 해당 클래스를 사용하여 포트 번호 27017에서 로컬로 MongoDB 서버를 연결하여 연결을 생성합니다.

그런 다음 연결클라이언트로 반환합니다. 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() 함수는 clientdb_name을 인수로 사용하여 db라는 데이터베이스를 생성합니다. 오류가 있는 경우 이 기능은 프로그램을 중단하지 않고 예외를 인쇄합니다.

이제 아래 코드를 실행하여 컬렉션을 생성해 보겠습니다.

예제 코드(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 데이터 프레임을 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에 삽입된 데이터 프레임은 아래와 같습니다.

데이터베이스 출력