안녕하세요. 오픈네트웍시스템입니다.
이번에는 dify에서 기본제공 되는 라이브러리 외에도 다른 라이브러리를 사용할 수 있다는 것을 아시나요?
이번에는 데이터 분석에 필수인 pandas,numpy,matplotlib을 Dify에서 활용하는 방법을 알려드리려고 합니다.
아직 라이브러리 설치를 안하셨다면, 이전 게시글 참고해주세요
라이브러리 | 핵심 키워드 | 비유 | 핵심 역할 |
NumPy | 행렬, 배열, 고속 계산 | 식재료 | 숫자를 빠르고 효율적으로 처리 |
Pandas | DataFrame, 표, 전처리 | 도마와 칼 | 데이터를 자르고, 붙이고, 정리함 |
Matplotlib | 그래프, 차트, 시각화 | 플레이팅 | 데이터를 보기 좋게 시각화함 |
***서울특별시 법정동별시간별전력사용량을 다운받아 주세요https://data.seoul.go.kr/dataList/OA-22835/F/1/datasetView.do
Dify를 실행 해 새로운 챗/워크플로우를 생성해주세요
Code 노드 샌드박스는 네트워크가 차단되어 파일 URL로 직접 접근이 불가능합니다. 문서 추출기가 샌드박스 밖에서 파일을 읽어 텍스트로 변환해주기 때문에 Code 노드는 네트워크 없이 텍스트만 받으면 됩니다.
또한 답변 노드에서 Base64인코딩이 바로 이뤄지지 않기 때문에 Base64 노드를 이용해줍니다.
기본적으로 dify는 300MB가 넘는 파일은 인식하지 못하니 설정에서 변경하시거나 제가 올린 하단의 실습 파일을 이용해 보세요.
Code 노드 핵심 함수
실습 파일 - 코드 및 csv 파일 첨부
parse_markdown_table : 문서 추출기 출력(마크다운) → DataFrame
parse_datetime :USE_YM + USE_HM → datetime 컬럼 생성
filter_last_month : 최근 30일 필터링
make_hourly_total :구/동별 → 서울 전체 시간별 합산
draw_timeseries :시계열 꺾은선 차트
draw_daily :일별 합계 바 차트
draw_hour_avg :시간대별 평균 바 차트
to_b64 : matplotlib 차트 → base64 문자열
이미지 용량 제한이 뜬다면, dpi 를 낮춰 주세요
결과
이렇게 복잡한 자료들도 Dify에서 보기좋게 구현 할 수 있습니다.