04. loadsave (한글)
Introduction to DataFrames¶
Bogumił Kamiński, 2018년 5월 23일
출처¶
함께보기¶
- https://deepstat.tistory.com/69 (01. constructors)(in English)
- https://deepstat.tistory.com/70 (01. constructors)(한글)
- https://deepstat.tistory.com/71 (02. basicinfo)(in English)
- https://deepstat.tistory.com/72 (02. basicinfo)(한글)
- https://deepstat.tistory.com/73 (03. missingvalues)(in English)
- https://deepstat.tistory.com/74 (03. missingvalues)(한글)
- https://deepstat.tistory.com/75 (04. loadsave)(in English)
- https://deepstat.tistory.com/76 (04. loadsave)(한글)
using DataFrames # load package
데이터프레임 저장하기 및 불러오기¶
우리는 패키지의 모든 기능을 다루지는 않는다. 모든 것을 배우려면 문서(documentation)를 참조하는게 좋다.
여기서는 CSV 파일을 읽고 쓰는 CSV와 Julia 고유의 바이너리 형식으로 작업 할 수 있는 JLD를 로드한다.
(JLD는 현재 v1.0.1에서 작동하지 않는다.)
using CSV
# using JLD
테스트를 위해서 간단한 데이터프레임을 만들자.
x = DataFrame(A=[true, false, true], B=[1, 2, missing],
C=[missing, "b", "c"], D=['a', missing, 'c'])
그리고 eltypes를 이용해서 열타입을 보자.
eltypes(x)
이제 CSV를 이용해서 x를 디스크에 저장하자. 작업공간(working directory)에 x.csv라는 파일 명이 겹치지 않는지 반드시 확인 해야한다.
CSV.write("x.csv", x)
이제 x.csv를 읽어서 어떻게 저장돼있는지 보자.
print(read("x.csv", String))
우리는 이를 다시 불러올 수 있다. use_mmap=false는 메모리 매핑(memory mapping)을 하지 않도록 한다.
y = CSV.read("x.csv", use_mmap=false)
CSV로 데이터프레임을 읽어오면, 기본적으로 모든 열이 Missing을 허용하게 된다. 아래를 통해 열 타입이 바뀌었음을 알 수 있다.
eltypes(y)
이번에는 x를 바이너리 형태(binary format)으로 저장해보자. 작업공간에 x.jld라는 파일 명이 겹치지 않는지 반드시 확인 해야한다.
save("x.jld", "x", x)
x.jld를 y로 불러온 후 x와 y가 같은지 보자.
y = load("x.jld", "x")
y의 열 타입은 x와 같은 것을 볼 수 있다.
eltypes(y)
다음으로, bigdf.csv파일과 bigdf.jld파일을 만들건데, 마찬가지로 기존에 디스크에 파일이 없어야 한다.
특히, 10^3개의 행과 10^5개의 열이 있는 큰 데이터프레임을 디스크에 쓰도록 해서 시간을 확인할거다. JLD가 더 빠를 거라는 것을 예상할 수 있다. compress=true를 써서 파일 사이즈를 줄이자.
bigdf = DataFrame(Bool, 10^3, 10^2)
@time CSV.write("bigdf.csv", bigdf)
@time save("bigdf.jld", "bigdf", bigdf)
getfield.(stat.(["bigdf.csv", "bigdf.jld"]), :size)
마지막으로, 다음번 돌릴 때를 위해서 파일을 지우자.
#foreach(rm, ["x.csv", "x.jld", "bigdf.csv", "bigdf.jld"])
rm("x.csv")