HOWTO · Pandas

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

이 튜토리얼은 Python을 사용하여 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에 삽입된 데이터 프레임은 아래와 같습니다.

데이터베이스 출력