파일에서 데이터 가져오기
파일에서 데이터 가져오기 (Retrieve data from files)
분석의 첫 단추는 데이터를 잘 불러오는 일이에요. Kotlin DataFrame 라이브러리는 CSV나 JSON 같은 파일에서 데이터를 가져와 다듬고 내보내는 일련의 과정을 여러 예제로 배울 수 있게 해 줘요. 이 글에서 그 흐름을 처음부터 끝까지 살펴볼게요.
출처: Kotlin 공식 문서
본문
Kotlin DataFrame 라이브러리는 비구조화된 데이터와 구조화된 데이터 모두를 다룰 수 있게 해 줘요. 데이터 변환에는 .add(), .split(), .convert(), .parse() 같은 메서드를 사용할 수 있어요. 또한 이 도구셋은 CSV, JSON, XLS, Parquet, Apache Arrow를 포함한 다양한 구조화된 파일 형식에서 데이터를 가져오고 조작할 수 있게 해 줘요. 지원되는 모든 형식은 DataFrame 문서에서 확인할 수 있어요.
이 가이드에서는 여러 예제를 통해 데이터를 가져오고, 다듬고, 처리하는 방법을 배울 수 있어요.
시작하기 전에
IntelliJ IDEA 2026.2부터 Kotlin Notebook은 더 이상 IDE에 번들로 포함되지 않고, JetBrains에서 공식 지원하지도 않게 돼요. 소스 코드는 GitHub에 계속 남아 있어요.
자세한 내용은 블로그 포스트에서 확인할 수 있어요.
이 튜토리얼을 따라 하려면:
-
File | New | Kotlin Notebook을 선택해요.
-
Kotlin DataFrame을 가져와요.
%use dataframe다른 코드 셀보다 먼저
%use dataframe줄이 있는 코드 셀을 실행해서, 노트북에서 DataFrame 라이브러리와 그 API를 사용할 수 있게 준비해 두세요.
데이터 가져오기
파일에서 데이터를 가져오려면 DataFrame.read() 함수를 사용해요.
val movies = DataFrame.read("movies.csv")
DataFrame.read() 함수는 파일 확장자와 내용을 기반으로 입력 형식을 감지해요.
DataFrame 라이브러리가 입력 데이터를 읽는 방식을 제어하기 위해 추가 인자를 전달할 수도 있어요. 예를 들어 다음 코드는 CSV 파일에 대해 사용자 정의 구분자(;)를 지정해요.
val movies = DataFrame.read("movies.csv", delimiter = ';')
추가 파일 형식과 다양한 읽기 함수에 대한 종합적인 개요는 Kotlin DataFrame 라이브러리 문서를 참고해요.
데이터 표시하기
데이터를 얻었다면 표시할 수 있어요. 가장 쉬운 방법은 데이터를 변수에 저장한 뒤 그 변수를 반환하는 거예요.
val jsonDf = DataFrame.read("jsonFile.json")
jsonDf
이 코드는 파일의 데이터를 대화형 테이블로 표시해요.
이 뷰를 사용해 값을 확인하고, 컬럼 이름을 살펴보고, 데이터셋의 상태를 쉽게 파악할 수 있어요.
데이터 구조 확인하기
데이터의 구조나 스키마에 대한 인사이트를 얻으려면 DataFrame 변수에 .schema() 함수를 사용해요.
예를 들어 jsonDf.schema()를 실행해 JSON 데이터셋의 각 컬럼 타입을 나열해 볼게요.

자동 완성 기능을 사용할 수도 있어요. 이 기능을 이용하면 DataFrame의 속성에 빠르게 접근하고 조작할 수 있어요. 데이터를 로드한 뒤 DataFrame 변수 다음에 점(.)을 입력하면 사용 가능한 컬럼과 그 타입 목록이 나타나요.

데이터 다듬기
Kotlin DataFrame은 데이터셋을 다듬기 위한 다양한 연산을 제공해요. 예를 들어 그룹화, 필터링, 업데이트, 새 컬럼 추가 같은 것들이 있어요. 이러한 함수는 데이터를 정리하고, 정돈하고, 변환할 수 있게 해 주는 데이터 분석의 핵심이에요.
예를 들어 movies.csv 데이터셋을 살펴볼게요. 이 데이터셋은 영화 제목과 개봉 연도를 같은 셀에 저장해요. 목표는 분석하기 쉽도록 이 데이터셋을 다듬는 것이에요.
-
데이터 로드 —
.read()함수로 파일을DataFrame에 로드해요.val movies = DataFrame.read("movies.csv") -
컬럼 추가 —
title컬럼에서 개봉 연도를 추출하기 위해 새year컬럼을 추가해요.val moviesWithYear = movies .add("year") { "\\d{4}".toRegex() .findAll(title) .lastOrNull() ?.value ?.toInt() ?: -1 } moviesWithYear -
값 업데이트 — 영화 제목에서 개봉 연도를 제거하려면
title컬럼을 업데이트해요.val moviesTitle = moviesWithYear .update("title") { "\\s*\\(\\d{4}\\)\\s*$".toRegex().replace(title, "") } moviesTitle이 코드는 영화 제목을 한 컬럼에 남기고, 개봉 연도를 다른 컬럼으로 옮겨요.
-
행 필터링 — 특정 데이터에 집중하려면
.filter()함수를 사용해요. 예를 들어 1986년 이후에 개봉한 영화만 남기려면:val newMovies = moviesTitle.filter { year >= 1996 } newMovies -
컬럼 제거 — 필요 없는 컬럼을 제거하려면
.remove()함수를 사용해요.val refinedMovies = newMovies.remove { movieID } refinedMovies
비교를 위해, 다듬기 전의 데이터셋을 보여줄게요.
다듬은 후의 데이터셋은 이렇게 나와요.
추가 사용 사례와 자세한 예제는 Kotlin Dataframe 예제를 참고해요.
데이터 내보내기
데이터를 다듬은 다음에는 쉽게 내보낼 수 있어요.
이를 위해 다양한 .write() 함수를 활용할 수 있어요. CSV, JSON, XLS, XLSX, Apache Arrow, 심지어 HTML 테이블까지 여러 형식으로 저장하는 것을 지원해요. 지원되는 모든 형식은 DataFrame 문서에서 확인할 수 있어요. 이 기능은 결과를 공유하거나, 보고서를 만들거나, 데이터를 추가 분석에 사용할 수 있게 준비할 때 특히 유용해요.
예를 들어 결과를 다음 형식으로 저장해 볼게요.
-
.writeJson()함수로 JSON 파일로 저장:refinedMovies.writeJson("movies.json") -
.writeCsv()함수로 CSV 파일로 저장:refinedMovies.writeCsv("movies.csv") -
Apache Arrow 파일로 저장 —
.writeArrorIPC()와.writeArrorFeather()함수 사용:refinedMovies.writeArrowIPC("movies.arrow") refinedMovies.writeArrowFeather("movies.feather")
.toStandaloneHTML() 함수로 브라우저에서 열 수 있는 독립형 HTML 테이블을 만들 수도 있어요.
refinedMoviesDf
.toStandaloneHTML(DisplayConfiguration(rowsLimit = null))
.openInBrowser()
다음 단계
-
Kandy 라이브러리로 데이터 시각화 알아보기
-
Kandy를 사용한 데이터 시각화에서 데이터 시각화에 대한 추가 정보 찾아보기
-
Kotlin에서 데이터 과학과 분석에 사용할 수 있는 도구·리소스에 대한 종합적인 개요는 데이터 분석을 위한 Kotlin·Java 라이브러리 참고하기