데이터 분석을 위한 Kotlin·Java 라이브러리
데이터 분석을 위한 Kotlin·Java 라이브러리 (Kotlin and Java libraries for data analysis)
데이터 수집부터 모델 구축까지, Kotlin은 데이터 파이프라인의 여러 작업을 돕는 튼튼한 라이브러리를 제공해요. 게다가 Java와 100% 상호운용이 가능해서, 검증된 Java 생태계까지 그대로 활용할 수 있죠. 이 글에서는 Kotlin과 Java의 대표적인 데이터 분석 라이브러리를 표로 정리해 볼게요.
출처: Kotlin 공식 문서
본문
데이터 수집부터 모델 구축까지, Kotlin은 데이터 파이프라인의 다양한 작업을 돕는 견고한 라이브러리들을 제공해요.
자체 라이브러리뿐 아니라 Kotlin은 Java와도 100% 상호운용이 가능해요. 이 상호운용성 덕분에 성능이 검증된 Java 라이브러리 전체 생태계를 그대로 활용할 수 있죠. 이런 장점 덕분에 Kotlin 데이터 프로젝트에서 작업할 때 Kotlin 라이브러리든 Java 라이브러리든 원하는 대로 사용할 수 있어요.
Kotlin 라이브러리
| 라이브러리 | 용도 | 특징 |
|---|---|---|
| Kotlin DataFrame | 데이터 수집, 데이터 정리 및 처리 | 데이터 프레임 생성·정렬·정리, 피처 엔지니어링 등의 연산 / 구조화된 데이터 처리 / CSV, JSON 등 여러 입력 형식 지원 / SQL 데이터베이스에서 읽기 / 다양한 API와 연결해 데이터에 접근하고 타입 안전성 높이기 |
| Kandy | 데이터 탐색 및 시각화 | 다양한 차트를 그릴 수 있는 강력하고 읽기 쉬운 타입 안전 DSL / JVM용으로 Kotlin으로 작성된 오픈소스 라이브러리 / Datalore 지원 / Kotlin DataFrame과 매끄러운 통합 |
| KotlinDL | 모델 구축 | Keras에서 영감을 받은 Kotlin 딥러닝 API / 처음부터 딥러닝 모델을 학습하거나 기존 Keras·ONNX 모델을 가져와 추론하기 / 기존 사전 훈련 모델을 내 작업에 맞게 조정하는 전이 학습(transfer learning) / Android 플랫폼 지원 |
| Multik | 데이터 정리 및 처리, 모델 구축 | 다차원 배열에 대한 수학 연산(선형대수, 통계, 산술 등) / 배열 생성·복사·인덱싱·슬라이싱 등의 연산 / 타입·차원 안전성과 교체 가능한 계산 엔진을 갖춘 Kotlin 관용적 라이브러리로, JVM 또는 네이티브 코드로 실행 |
| Kotlin for Apache Spark | 데이터 수집, 데이터 정리 및 처리, 데이터 탐색 및 시각화, 모델 구축 | Apache Spark와 Kotlin 사이의 호환 계층 / Kotlin 관용적 코드로 Apache Spark 데이터 변환 연산 / 중괄호나 메서드 참조 속 데이터 클래스·람다 표현식 같은 Kotlin 기능을 간단히 활용 |
| Lets-Plot | 데이터 탐색 및 시각화 | Kotlin으로 작성된 통계 데이터 플로팅 / Datalore 지원 / JVM, JS, Python과 호환 / Compose Multiplatform 애플리케이션에 차트 임베딩 |
| KMath | 데이터 정리 및 처리, 데이터 탐색 및 시각화, 모델 구축 | Kotlin Multiplatform(JVM, JS, Native, Wasm)에서 수학 추상화를 다루는 모듈형 라이브러리 / 대수 구조, 수학 표현식, 히스토그램, 스트리밍 연산용 API / ND4J, Apache Commons Math, Multik을 포함한 기존 Java·Kotlin 라이브러리 위의 교체 가능한 래퍼 / Python의 NumPy에서 영감을 받았지만 타입 안전성 같은 추가 기능 포함 |
| kravis | 데이터 탐색 및 시각화 | 표 형식 데이터의 시각화 / R의 ggplot에서 영감을 받음 |
Java 라이브러리
Kotlin은 Java와 100% 상호운용되므로, 잘 검증된 Java 데이터 분석 라이브러리도 부담 없이 사용할 수 있어요.
| 라이브러리 | 용도 | 특징 |
|---|---|---|
| Tablesaw | 데이터 수집, 데이터 정리 및 처리, 데이터 탐색 및 시각화 | 데이터 불러오기·정리·변환·필터링·요약 도구 / Plot.ly에서 영감을 받음 |
| CoreNLP | 데이터 정리 및 처리 | 자연어 처리 툴킷 / 감정·인용 귀속 같은 텍스트의 언어학적 주석 / 8개 언어 지원 |
| Smile | 데이터 정리 및 처리, 데이터 탐색 및 시각화, 모델 구축 | 머신러닝·자연어 처리를 위한 즉시 사용 가능한 알고리즘 / 선형대수, 그래프, 보간, 시각화 도구 / 함수형 Kotlin API, Scala API, Clojure API 등을 제공 |
| Smile-NLP-kt | 데이터 정리 및 처리 | Smile의 자연어 처리 부분에 대한 Scala 암시적 변환을 Kotlin으로 다시 작성한 것 / Kotlin 확장 함수·인터페이스 형식의 연산 / 문장 분리, 형태소 분석(stemming), 단어 가방(bag of words) 등의 작업 |
| ND4J | 데이터 정리 및 처리, 모델 구축 | JVM용 행렬 수학 라이브러리 / 500개가 넘는 수학·선형대수·딥러닝 연산 |
| Apache Commons Math | 데이터 정리 및 처리, 모델 구축 | Java용 수학·통계 연산 / 상관관계, 분포, 선형대수, 기하학 등 연산 / 머신러닝 모델 |
| NM Dev | 데이터 정리 및 처리, 모델 구축 | 수치 알고리즘을 담은 Java 수학 라이브러리 / 객체지향 수치 방법 / 선형대수, 최적화, 통계, 미적분 등의 연산 |
| Apache OpenNLP | 데이터 정리 및 처리, 모델 구축 | 자연어 텍스트 처리를 위한 머신러닝 기반 툴킷 / 토큰화, 문장 분리, 품사 태깅 등의 작업 / 데이터 모델링과 모델 검증을 위한 내장 도구 |
| Charts | 데이터 탐색 및 시각화 | 과학적 차트용 JavaFX 라이브러리 / 로그 스케일, 히트맵, 힘-방향(force-directed) 그래프 같은 복잡한 차트 |
| DeepLearning4J | 모델 구축 | Java용 딥러닝 라이브러리 / 모델 가져오기·재훈련(Pytorch, Tensorflow, Keras) / JVM 마이크로서비스 환경, 모바일 기기, IoT, Apache Spark에 배포 |
| Timefold | 모델 구축 | 최적화 계획 문제를 풀기 위한 솔버 유틸리티 / 객체지향·함수형 프로그래밍 모두 호환 |