# xan - 터미널용 CSV 마법사

> Clean Markdown view of GeekNews topic #20221. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=20221](https://news.hada.io/topic?id=20221)
- GeekNews Markdown: [https://news.hada.io/topic/20221.md](https://news.hada.io/topic/20221.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2025-04-09T09:31:01+09:00
- Updated: 2025-04-09T09:31:01+09:00
- Original source: [github.com/medialab](https://github.com/medialab/xan)
- Points: 10
- Comments: 1

## Summary

Rust 기반의 도구인 xan은 **터미널에서 대용량 CSV 파일을 빠르고 효율적으로 처리**할 수 있도록 설계되었습니다. **멀티스레딩**과 **병렬 처리**를 활용하여 고성능을 제공하며, **표현식 언어**를 통해 Python이나 Lua보다 빠른 데이터 조작이 가능합니다. **표시, 시각화, 분석, 웹 스크래핑, 텍스트 처리, 네트워크 분석** 등의 다양한 기능을 지원하며, **단일 명령어 체이닝**으로 복잡한 데이터 흐름을 구현할 수 있습니다. 또한, **표준 입력/출력 파이프라인**, **gzip 압축 파일 처리**, **스크래핑 DSL** 등의 고급 기능을 포함하고 있습니다.

## Topic Body

- **터미널에서 대용량 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로, 공식 문서에서 [치트시트](./docs/moonblade/cheatsheet.md), [함수 목록](./docs/moonblade/functions.md), [집계 함수 목록](./docs/moonblade/aggs.md) 참고 가능  
- # 시각화 기능  
  - `xan hist`: 텍스트 기반 히스토그램  
  - `xan plot`: 스캐터플롯/라인차트  
  - `xan heatmap`: 상관관계 히트맵  
  - `xan view -p`: 터미널에 전체 테이블 표시  
  
### 고급 기능  
- **표준 입력/출력 파이프라인 완벽 지원**  
- **gzip 압축 파일 자동 처리**  
- **스크래핑 DSL** 내장 (HTML → CSV 변환)  
- **lexicometry, fuzzy matching** 지원: `tokenize`, `vocab`, `cluster`  
- **네트워크/행렬 변환**: `network`, `matrix`

## Comments



### Comment 36953

- Author: halfenif
- Created: 2025-04-09T13:30:49+09:00
- Points: 1

어떻게 응용 할 수 있을까 했는데, sort나 drop만 사용해도 의미가 있겠습니다.
