Pandas DataFrame은 Python 프로그래밍 언어에서 널리 사용되는 데이터 구조로, 데이터 조작 및 분석을 위한 강력한 도구입니다. DataFrame은 구조화된 데이터를 효과적으로 다루기 위한 포괄적인 도구 세트를 제공하며, 이를 통해 데이터 정제, 변환 및 분석과 같은 다양한 작업을 수행할 수 있습니다.
이 출력 파서는 사용자가 임의의 Pandas DataFrame을 지정하여 해당 DataFrame에서 데이터를 추출하고, 이를 형식화된 사전(dictionary) 형태로 조회할 수 있게 해주는 LLM(Large Language Model) 기반 도구입니다.
# LangSmith 추적을 설정합니다. https://smith.langchain.com
# !pip install langchain-teddynote
from langchain_teddynote import logging
# 프로젝트 이름을 입력합니다.
logging.langsmith("CH03-OutputParser")import pprint
from typing import Any, Dict
import pandas as pd
from langchain.output_parsers import PandasDataFrameOutputParser
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAI# ChatOpenAI 모델 초기화 (gpt-3.5-turbo 모델 사용을 권장합니다)
model = ChatOpenAI(temperature=0, model_name="gpt-3.5-turbo")format_parser_output 함수는 파서 출력을 사전 형식으로 변환하고 출력 형식을 지정하는 데 사용됩니다.
# 출력 목적으로만 사용됩니다.
def format_parser_output(parser_output: Dict[str, Any]) -> None:
# 파서 출력의 키들을 순회합니다.
for key in parser_output.keys():
# 각 키의 값을 딕셔너리로 변환합니다.
parser_output[key] = parser_output[key].to_dict()
# 예쁘게 출력합니다.
return pprint.PrettyPrinter(width=4, compact=True).pprint(parser_output)titanic.csv데이터를 읽어온 뒤 DataFrame 을 로드하여df변수에 할당합니다.- PandasDataFrameOutputParser를 사용하여 DataFrame을 파싱합니다.
# 파서를 설정하고 프롬프트 템플릿에 지시사항을 주입합니다.
parser = PandasDataFrameOutputParser(dataframe=df)
# 파서의 지시사항을 출력합니다.
print(parser.get_format_instructions())컬럼에 대한 값을 조회하는 예제입니다.
# 열 작업 예시입니다.
df_query = "Age column 을 조회해 주세요."
# 프롬프트 템플릿을 설정합니다.
prompt = PromptTemplate(
template="Answer the user query.\n{format_instructions}\n{question}\n",
input_variables=["question"], # 입력 변수 설정
partial_variables={
"format_instructions": parser.get_format_instructions()
}, # 부분 변수 설정
)
# 체인 생성
chain = prompt | model | parser
# 체인 실행
parser_output = chain.invoke({"question": df_query})
# 출력
format_parser_output(parser_output)첫 번째 행을 검색하는 예시입니다.
# 행 조회 예시입니다.
df_query = "Retrieve the first row."
# 체인 실행
parser_output = chain.invoke({"question": df_query})
# 결과 출력
format_parser_output(parser_output)특정 열에서 일부 행의 평균을 검색하는 작업 예제입니다.
# 임의의 Pandas DataFrame 작업 예시, 행의 수를 제한합니다.
df_query = "Retrieve the average of the Ages from row 0 to 4."
# 체인 실행
parser_output = chain.invoke({"question": df_query})
# 결과 출력
print(parser_output)다음은 요금(Fare) 에 대한 평균 가격을 산정하는 예시입니다.