Pandas 데이터프레임 mongodb에 저장하기

Pandas 데이터프레임 mongodb에 저장하기

Pandas
Pandas 데이터프레임 mongodb에 저장하기
Author

gabriel yang

Published

October 3, 2024


Pandas는 데이터 분석 및 조작에 매우 유용한 Python 라이브러리입니다. MongoDB는 NoSQL 데이터베이스로, 유연한 스키마와 높은 성능을 제공합니다. 이 글에서는 Pandas를 이용하여 MongoDB에서 데이터를 읽고, DataFrame을 MongoDB에 저장하는 방법을 설명하겠습니다.

1. 필요한 라이브러리 설치

Pandas를 사용하기 위해서는 pandas와 MongoDB와의 연결을 위한 pymongo 라이브러리가 필요합니다. 아래의 명령어를 통해 필요한 라이브러리를 설치할 수 있습니다.

pip install pandas pymongo

2. MongoDB와의 연결 설정

MongoDB에 연결하기 위해 pymongo 라이브러리를 사용하여 클라이언트를 생성합니다. MongoDB가 로컬에 설치되어 있다고 가정하겠습니다. MongoDB에 접속하기 위한 URL 형식은 다음과 같습니다:

mongodb://<username>:<password>@<host>:<port>/<database>

예제: MongoDB에 연결하기

import pymongo

# MongoDB 클라이언트 생성
client = pymongo.MongoClient("mongodb://localhost:27017/")

# 사용할 데이터베이스 선택
db = client["mydatabase_mongodb"]

# 사용할 컬렉션 선택
collection = db["mycollection"]

3. DataFrame을 MongoDB에 저장하기

Pandas DataFrame을 MongoDB에 저장하려면, DataFrame.to_dict() 메서드를 사용하여 DataFrame을 딕셔너리 형식으로 변환한 후, insert_many() 또는 insert_one() 메서드를 사용하여 MongoDB에 저장할 수 있습니다.

예제: DataFrame을 MongoDB에 저장하기

import pandas as pd

# 예시 데이터프레임 생성
data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['New York', 'Los Angeles', 'Chicago']
}

df = pd.DataFrame(data)

# DataFrame을 딕셔너리 형식으로 변환하여 MongoDB에 저장
collection.insert_many(df.to_dict('records'))

print("DataFrame has been saved to MongoDB.")

코드 설명:

  • df.to_dict('records'): DataFrame을 리스트 형태의 딕셔너리로 변환합니다. 각 딕셔너리는 DataFrame의 행을 나타냅니다.
  • collection.insert_many(): 변환된 딕셔너리 리스트를 MongoDB에 저장합니다.

4. MongoDB에서 DataFrame 읽기

MongoDB에서 데이터를 읽어 DataFrame으로 변환하려면, find() 메서드를 사용하여 데이터를 가져오고, Pandas의 DataFrame() 함수를 사용하여 DataFrame으로 변환합니다.

예제: MongoDB에서 DataFrame 읽기

# MongoDB에서 데이터 읽기
data_from_mongo = collection.find()

# 데이터를 DataFrame으로 변환
df_from_mongo = pd.DataFrame(list(data_from_mongo))

# '_id' 열 제거 (MongoDB에서 자동으로 생성된 ID)
df_from_mongo.drop('_id', axis=1, inplace=True)

print("\nDataFrame loaded from MongoDB:")
print(df_from_mongo)

출력

DataFrame loaded from MongoDB:
      Name  Age         City
0    Alice   25     New York
1      Bob   30  Los Angeles
2  Charlie   35      Chicago

코드 설명:

  • collection.find(): MongoDB에서 모든 데이터를 가져옵니다.
  • pd.DataFrame(list(data_from_mongo)): MongoDB에서 가져온 데이터를 리스트로 변환한 후, DataFrame으로 변환합니다.
  • df_from_mongo.drop('_id', axis=1, inplace=True): MongoDB에서 자동으로 생성된 _id 열을 삭제합니다.

5. 전체 코드 예제

이제까지의 내용을 종합하여 전체 코드를 작성해보겠습니다.

import pandas as pd
import pymongo

# MongoDB 클라이언트 생성
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase_mongodb"]
collection = db["mycollection"]

# 예시 데이터프레임 생성
data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['New York', 'Los Angeles', 'Chicago']
}

df = pd.DataFrame(data)

# DataFrame을 MongoDB에 저장
collection.insert_many(df.to_dict('records'))
print("DataFrame has been saved to MongoDB.")

# MongoDB에서 데이터 읽기
data_from_mongo = collection.find()
df_from_mongo = pd.DataFrame(list(data_from_mongo))
df_from_mongo.drop('_id', axis=1, inplace=True)

print("\nDataFrame loaded from MongoDB:")
print(df_from_mongo)

출력

DataFrame has been saved to MongoDB.

DataFrame loaded from MongoDB:
      Name  Age         City
0    Alice   25     New York
1      Bob   30  Los Angeles
2  Charlie   35      Chicago