Xan
Rust로 만든 터미널용 CSV 마법사(데이터 조작, 표시, 시각화, 분석, 웹 스크래핑, 텍스트 처리, 네트워크 분석 등)
Features
- 터미널에서 대용량 CSV 파일을 빠르고 효율적으로 처리할 수 있는 Rust 기반 도구
- 다양한 데이터 조작 기능 외에도 표시, 시각화, 분석, 웹 스크래핑, 텍스트 처리, 네트워크 분석까지 지원
- 내부적으로는 고성능을 위해 멀티스레딩, 표현식 언어, 병렬 처리를 활용
- 초대형 CSV (기가바이트급) 파일도 문제없이 처리 가능
- Python이나 Lua보다 훨씬 빠른 전용 표현식 언어 제공
- 단일 명령어 체이닝으로 복잡한 데이터 흐름 구현 가능
- 간단한 통계부터 히트맵, 히스토그램 등 기초 시각화까지 가능
- 사회과학 연구자 및 웹 데이터 분석을 위한 고급 기능 포함
- Linux, macOS, Windows 모두 지원
- .tsv, .psv, .ssv, .gz 등 다양한 포맷 자동 인식
핵심 명령어 예
- 탐색
- xan headers: 컬럼 목록 출력
- xan view: 터미널에서 테이블 형태로 보기
- xan flatten: 한 행의 모든 값을 펼쳐 보기
- xan hist, xan plot, xan heatmap: 시각화 기능
- xan search -s 키워드 파일.csv: 특정 키워드 포함 행 찾기
- xan filter '조건식' 파일.csv: 표현식으로 행 필터링
- xan select: 컬럼 선택
- xan map: 표현식으로 새 컬럼 생성
- xan transform: 기존 컬럼을 표현식으로 변경
- xan count: 행 개수 세기
- xan frequency: 빈도수 테이블 생성
- xan stats: 기술 통계 출력
- xan agg: 사용자 정의 집계
- xan groupby: 그룹 단위로 집계 수행
- xan sort -s 컬럼: 정렬
- xan dedup -s 컬럼: 중복 제거
- xan join: 키를 기준으로 조인
- xan merge: 정렬된 파일 병합
- xan cat: 행 또는 열 기준으로 연결
- xan map 'fmt("{} ({})", name, foundation_year)' key
- xan filter 'batch > 1'
- xan transform name 'split(name, ".") | first | upper'
- 표현식 언어는 CSV 조작에 특화된 경량 DSL로, 공식 문서에서 치트시트, 함수 목록, 집계 함수 목록 참고 가능
- xan hist: 텍스트 기반 히스토그램
- xan plot: 스캐터플롯/라인차트
- xan heatmap: 상관관계 히트맵
- xan view -p: 터미널에 전체 테이블 표시
고급 기능
- 표준 입력/출력 파이프라인 완벽 지원
- gzip 압축 파일 자동 처리
- 스크래핑 DSL 내장 (HTML → CSV 변환)
- lexicometry, fuzzy matching 지원: tokenize, vocab, cluster
- 네트워크/행렬 변환: network, matrix