Varn1t/EDAgent: 개인 탐색적 데이터 분석가 + AI 에이전트
요약
LangGraph와 Ollama를 활용하여 에이전트 기반의 완전한 탐색적 데이터 분석(EDA) 파이프라인을 구축했습니다. 이 시스템은 CSV/Excel 데이터를 입력받아 10개의 전문 AI 에이전트를 통해 분석, 정리 과정을 거칩니다. 최종적으로 대화형 Streamlit 대시보드, 색상 코딩된 터미널 출력, 그리고 히트맵이 포함된 HTML 보고서를 생성합니다.
핵심 포인트
- LangGraph와 Ollama 기반의 에이전트 시스템 구현
- 10단계 전문 AI 에이전트를 통한 자동 EDA 수행
- 대화형 Streamlit 대시보드 및 풍부한 HTML 보고서 출력
CSV 또는 Excel 데이터셋을 드롭하세요. 완전한 EDA(탐색적 데이터 분석)를 자동으로 얻으세요.

LangGraph와 Ollama로 구축된 에이전트 기반의 LLM 구동 탐색적 데이터 분석 파이프라인입니다.
10개의 전문 AI 에이전트가 데이터셋을 분석하고, 정리하며, 세련된 HTML 보고서를 생성합니다. 이 모든 과정은 100% 로컬에서 실행됩니다.
CSV 또는 Excel 데이터셋을 제공하면, 10단계 LangGraph 파이프라인이 구동됩니다. 각 노드는 AI 에이전트이며, 데이터의 다른 측면을 분석하고, 요약문을 작성하며, 그 결과를 다음 단계로 전달합니다. 최종적으로 다음과 같은 결과물을 얻게 됩니다:
-
탭별 결과와 실시간 에이전트 진행률 표시줄이 있는 대화형 Streamlit 대시보드 - CLI를 통해 실행했을 경우 풍부하고 색상 코딩된 터미널 출력(rich, color-coded terminal output) - 히트맵이 인라인으로 임베드된, 자체 포함적이고 다크 테마의 브라우저용
report.html -
correlation_heatmap.png로 저장된 상관관계 히트맵
output/ 디렉토리에 다음과 같은 결과물이 생성됩니다:
- 클리닝 에이전트에 의해 자동으로 수정되어 CSV로 다운로드할 준비가 된 정제된 데이터셋

schema → quality → stats → outliers → cleaning → correlation → importance → synthesis → model_rec → feature_eng
각 노드는 먼저 Python 분석 도구를 실행한 다음, 원시 결과를 LLM에 전달하여 추론하고 일반 영어로 요약합니다.
아키텍처 참고 사항: 모든 Python 계산(상관관계 행렬, 이상치 IQR 경계, 기술 통계)은 전체 데이터셋에서 실행되어 통계적 정확성을 보장합니다. LLM에 전달되는 데이터는 컨텍스트 창 과부하와 환각을 방지하기 위해 의도적으로 제한됩니다 (예: 가장 강력한 상관관계 상위 20개, 이상치 특징 상위 15개).
| # | 에이전트 | 기능 |
|---|---|---|
| 1 | Schema (스키마) | 컬럼별 형태(Shape), 데이터 타입, Null 개수 |
| 2 | Quality (품질) | 중복값, 결측치 비율(Missing value %), Null을 포함하는 컬럼 |
| 3 | Statistics (통계) | 기술 통계량(Descriptive stats), 왜도(Skewness), 범주형 값 카운트 |
| 4 | Outliers (이상치) | IQR 기반 탐지 — 개수, 경계값(bounds), 예시 값 |
| 5 | Data Cleaning (데이터 정제) | 결정론적 사전 정제기 + LLM 후처리 (아래 참조) |
| 6 | Correlation (상관관계) | Pearson 행렬, 다중공선성 플래그, 히트맵 |
| 7 | Feature Importance (특징 중요도) | 타겟 인식 상관관계 순위 지정, 분산/엔트로피로 폴백(fallback) |
| 8 | Synthesis (종합 분석) | 전체 EDA 내러티브 — 개요, 문제점, 패턴, 권장 사항 |
| 9 | Model Recommendation (모델 추천) | 문제 유형 추론, 모델 추천, 불확실성 플래그 지정, 지표 제안 |
| 10 | Feature Engineering (특징 공학) | 구체적인 새로운 특징 제안: 로그 변환(log transforms), 빈(bins), 상호작용(interactions), 인코딩(encodings) |
정제 에이전트는 **2단계 전략(two-pass strategy)**을 사용하여 LLM 품질에 관계없이 일반적인 데이터 문제를 안정적으로 수정합니다:
결측치와 유사한 문자열 정규화(Null-like string normalisation) — `
Streamlit 대시보드는 **이전 및 이후 (Before & After)**의 나란히 배치된 표와 색상 코드가 지정된 차이점 카드(행 / 누락 값 / 중복)를 보여줍니다.
Ollama를 설치하고 모델을 가져오세요:
ollama pull llama3.2
pip install -r requirements.txt
streamlit run app.py
브라우저에서 EDAgent 웹 대시보드가 열립니다. CSV 또는 Excel 데이터셋을 업로드 영역으로 드래그 앤 드롭하고 **EDA 파이프라인 실행 (Run EDA Pipeline)**을 클릭하세요.
# 자체 데이터셋의 경우
python pipeline.py your_dataset.csv
python pipeline.py your_dataset.xlsx
...
┌──────────────────────────────────────────────────────────────────┐
│ EDAgent 파이프라인 │
│ 데이터셋: Teen_Mental_Health_Dataset.csv 행: 1200 열: 13 │
...
| 도구 (Tool) | 역할 (Role) |
|---|---|
| Streamlit | 대화형 웹 대시보드 |
| ... |
EDAgent/
├── app.py # Streamlit 웹 대시보드
├── pipeline.py # 전체 LangGraph 파이프라인 (10개 에이전트 모두)
...
API 키가 필요하지 않습니다. 데이터가 클라우드로 전송되지 않습니다. 모든 것이 Ollama를 통해 사용자의 기기에서 실행됩니다. pipeline.py의 한 줄을 변경하여 llama3.2를 다른 Ollama 호환 모델로 교체하세요:
`:
llm = ChatOllama(model="your-model-here")
Varnit 제작 :)
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Claude Ecosystem의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기