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

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

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

gabriel yang

Published

October 3, 2024

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

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
Date Title Author
Jan 1, 3000 전체 카테고리 gabriel yang
Oct 3, 2024 Pandas에서 Column 추가 및 삭제하는 방법 gabriel yang
Sep 21, 2024 Pandas에서 결측치(NaN) 처리하기 gabriel yang
Sep 11, 2024 Pandas SQL 쿼리 이용하기 gabriel yang
Aug 29, 2024 Pandas에서 데이터 형식 변경하기 gabriel yang
Aug 29, 2024 Pandas에서 데이터를 정렬하는 방법 gabriel yang
Aug 29, 2024 Pandas에서 인덱싱 및 슬라이싱하는 방법 gabriel yang
Aug 27, 2024 Pandas SQL 데이터베이스 읽어오기 gabriel yang
Aug 26, 2024 Pandas groupby 사용방법 gabriel yang
Aug 26, 2024 Pandas에서 두 개의 데이터프레임을 연결하기 gabriel yang
Aug 24, 2024 Pandas에서 melt를 사용해야 하는 데이터 유형과 사용 방법 gabriel yang
Aug 24, 2024 Pandas에서 pivot_table 사용하기 gabriel yang
Aug 24, 2024 Pandas에서 reset_index를 사용해야 하는 이유 gabriel yang
Aug 22, 2024 Pandas Excel과 CSV 파일을 읽어오는 방법 gabriel yang
Aug 19, 2024 Pandas DataFrame의 컬럼 이름 변경하기 gabriel yang
Aug 17, 2024 Pandas SettingWithCopyWarning 문제 해결 gabriel yang
Nov 30, 2023 Dataframe을 Dict로 생성 및 변환 gabriel yang
Nov 29, 2023 python datetime 사용법 정리 gabriel yang
Sep 14, 2023 Pandas 중복 데이터 제거하기 gabriel yang
No matching items
Back to BLOG LIST