import pandas as pd
from pymongo import MongoClient
from faker import Faker
# Faker 객체 생성 (한국어 로케일 설정)
fake = Faker('ko_KR')
# MongoDB 연결 설정
client = MongoClient('mongodb://localhost:27017/') # 여기에 적절한 연결 정보 입력
db = client['fake_database'] # 데이터베이스 선택
#collection = db['fake_collection'] # 컬렉션 선택
collection_name = 'fake_collection'
# 기존 컬렉션이 있다면 삭제
if collection_name in db.list_collection_names():
db[collection_name].drop()
# 새로운 컬렉션 생성
collection = db[collection_name]
# 가상 데이터 생성 및 MongoDB에 저장
for _ in range(100):
fake_data = {
'name': fake.name(),
'email': fake.email(),
'age': fake.random_int(min=18, max=80),
'address': fake.address()
}
collection.insert_one(fake_data)
# MongoDB에서 데이터 조회하여 Pandas 데이터프레임으로 변환
data_from_mongodb = collection.find()
df = pd.DataFrame(data_from_mongodb)
# Pandas로 데이터 조건 조회 예제
# 나이가 30세 이상인 데이터 조회
df_above_30 = df[df['age'] >= 30]
# 이메일이 특정 도메인을 포함하는 데이터 조회
df_specific_domain = df[df['email'].str.contains('example.com')]
# 이름에 'John'이 포함된 데이터 조회
df_johns = df[df['name'].str.contains('김')]
# 결과 출력
print("나이가 30세 이상인 데이터:")
print(df_above_30)
print("\\n특정 이메일 도메인을 포함하는 데이터:")
print(df_specific_domain)
print("\\n이름에 'John'이 포함된 데이터:")
print(df_johns)
나이를 제외하고 데이터베이스 생성
import streamlit as st
import pandas as pd
from pymongo import MongoClient
from faker import Faker
# Faker 객체 생성 (한국어 로케일 설정)
fake = Faker('ko_KR')
# MongoDB 연결 설정
client = MongoClient('mongodb://localhost:27017/') # 여기에 적절한 연결 정보 입력
db = client['fake_database'] # 데이터베이스 선택
collection = db['fake_collection'] # 컬렉션 선택
# 가상 데이터 생성 및 MongoDB에 저장
def generate_fake_data(num_records):
for _ in range(num_records):
fake_data = {
'name': fake.name(),
'email': fake.email(),
'address': fake.address()
}
collection.insert_one(fake_data)
# Streamlit 애플리케이션
st.title("가상 데이터 조회기")
num_records = st.number_input("생성할 레코드 수를 입력하세요:", min_value=1, value=100)
# 데이터 생성 및 조회 버튼
if st.button("가상 데이터 생성"):
generate_fake_data(num_records)
st.success(f"{num_records}개의 가상 레코드가 생성되었습니다!")
# MongoDB에서 데이터 조회하여 Pandas 데이터프레임으로 변환
data_from_mongodb = collection.find()
df = pd.DataFrame(data_from_mongodb)
# 이메일 도메인 필터
email_domain = st.text_input("필터링할 이메일 도메인을 입력하세요:", value="")
filtered_df = df.copy()
if email_domain:
filtered_df = filtered_df[filtered_df['email'].str.contains(email_domain)]
# 이름 필터
name_filter = st.text_input("필터링할 이름을 입력하세요:", value="")
if name_filter:
filtered_df = filtered_df[filtered_df['name'].str.contains(name_filter)]
# 결과 출력
st.dataframe(filtered_df)