반응형
LlamaIndex와 Pandas를 이용한 데이터 분석 및 검색
Pandas는 데이터 분석에서 널리 사용되는 강력한 Python 라이브러리입니다. 이를 LlamaIndex와 결합하면 DataFrame 데이터를 인덱싱하고 자연어 기반 검색 기능을 추가할 수 있습니다. 이 글에서는 Pandas와 LlamaIndex를 활용하여 데이터 분석과 검색 시스템을 구현하는 방법을 단계별로 설명합니다.
1. 프로젝트 개요
목표
- Pandas DataFrame 데이터를 LlamaIndex로 인덱싱합니다.
- 자연어 기반 검색을 통해 DataFrame 데이터를 탐색할 수 있는 시스템을 만듭니다.
주요 기능
- Pandas DataFrame 데이터 읽기 및 가공
- LlamaIndex를 사용한 데이터 인덱싱
- 자연어 질의 응답 시스템 구현
2. 개발 환경 준비
2.1 필수 라이브러리 설치
다음 명령어를 실행하여 필요한 라이브러리를 설치합니다:
pip install pandas llama-index openai
참고: OpenAI API 사용을 위해 API 키가 필요합니다.
2.2 기본 설정
Python 3.8 이상의 환경에서 개발하는 것을 권장합니다. 가상 환경(venv, Conda)을 사용하여 의존성 관리를 간편하게 할 수 있습니다.
3. 데이터 분석 및 검색 시스템 구현
3.1 데이터 준비
Pandas를 사용하여 CSV 파일을 읽어옵니다. 아래는 샘플 데이터 data.csv
입니다:
data.csv:
id,name,role,department
1,Alice,Software Engineer,Engineering
2,Bob,HR Manager,Human Resources
3,Charlie,Data Scientist,Engineering
4,Diana,Accountant,Finance
3.2 Pandas 데이터 읽기 및 가공
Pandas를 사용하여 데이터를 읽고 DataFrame으로 변환합니다.
import pandas as pd
# 데이터 읽기
data = pd.read_csv("data.csv")
print(data)
출력 결과:
id name role department
0 1 Alice Software Engineer Engineering
1 2 Bob HR Manager Human Resources
2 3 Charlie Data Scientist Engineering
3 4 Diana Accountant Finance
3.3 LlamaIndex를 사용한 인덱싱
DataFrame 데이터를 LlamaIndex로 변환하여 인덱싱합니다.
import os
from llama_index import GPTSimpleVectorIndex, Document
# OpenAI API 키 설정
os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY"
# DataFrame 데이터를 LlamaIndex에 추가
def dataframe_to_documents(df):
documents = []
for _, row in df.iterrows():
content = f"ID: {row['id']}\nName: {row['name']}\nRole: {row['role']}\nDepartment: {row['department']}"
documents.append(Document(content))
return documents
# 문서 생성 및 인덱싱
documents = dataframe_to_documents(data)
index = GPTSimpleVectorIndex.from_documents(documents)
print("데이터 인덱싱 완료!")
3.4 자연어 기반 검색
사용자가 입력한 질의를 처리하고 DataFrame 데이터를 검색합니다.
# 검색 질의 처리
while True:
query = input("질문을 입력하세요 (종료하려면 'exit' 입력): ")
if query.lower() == "exit":
print("프로그램을 종료합니다.")
break
response = index.query(query)
print(f"답변: {response}")
4. 실행 결과
데이터
ID | Name | Role | Department |
---|---|---|---|
1 | Alice | Software Engineer | Engineering |
2 | Bob | HR Manager | Human Resources |
3 | Charlie | Data Scientist | Engineering |
4 | Diana | Accountant | Finance |
실행 예시
질문을 입력하세요 (종료하려면 'exit' 입력): Engineering 부서의 직원은 누구인가요?
답변: Engineering 부서에는 Alice (Software Engineer), Charlie (Data Scientist)가 있습니다.
질문을 입력하세요 (종료하려면 'exit' 입력): exit
프로그램을 종료합니다.
5. 확장 가능성
5.1 대규모 데이터 처리
- 수백만 건의 데이터를 다루는 경우, 데이터를 여러 청크로 나누어 인덱싱하거나 데이터베이스와 결합하여 성능을 최적화할 수 있습니다.
5.2 고급 검색 기능 추가
- 키워드 필터링, 조건부 검색, 또는 특정 열에만 집중하는 기능을 추가할 수 있습니다.
5.3 웹 애플리케이션 통합
- Flask 또는 FastAPI를 사용하여 검색 기능을 RESTful API로 제공할 수 있습니다.
- Streamlit을 활용해 대시보드와 시각화를 추가하면 사용자 친화적인 인터페이스를 구축할 수 있습니다.
참고 자료
반응형
'LlamaIndex' 카테고리의 다른 글
LlamaIndex와 Streamlit을 활용한 데이터 검색 웹 애플리케이션 (0) | 2025.01.22 |
---|---|
LlamaIndex와 PyTorch를 활용한 텍스트 분류 모델 (1) | 2025.01.22 |
LlamaIndex와 FastAPI를 결합한 검색 API 개발 (0) | 2025.01.22 |
LlamaIndex를 활용한 웹 크롤러 개발 (0) | 2025.01.22 |
LlamaIndex를 이용한 Python 실시간 데이터 처리 (0) | 2025.01.22 |