본문 바로가기
데이터과학 기초/Python배우기

헷갈리는 csv, tsv 한번에 정리하자 - TidyData(타이디데이터)

by eigenvector 2022. 8. 20.
반응형

데이터 저장 방식?

파이썬이나 R과 같은 통계 관련 프로그램을 사용하다 보면 csv나 tsv에 대한 이야기를 듣게 됩니다.

 

어느 정도 작업(?)에 익숙해졌으면 모르지만, 처음 이런 형식을 접한 초보 유저는 당황하게 되는데요.

 

사실, 꼼꼼하게 내용을 확인하면 그리 어렵지 않다는 사실을 알 수 있습니다.

 

오늘은 파이썬, R에서 사용하는 파일 형식에 대해 알아보도록 하겠습니다.

 


타이디 데이터(TidyData)

 

기본적으로 컴퓨터를 통한 데이터 분석에서 사용하는 형식은 타이디 데이터(TidyData) 형식을 갖습니다.

 

간단하게 말해서, 가로축과 세로축을 가진 값을 말하는데요. 

 

구체적으로, 여기서 말하는 가로축과 세로축은 각각 실험대상과, 속성을 의미합니다.

 

사실, 이렇게 말하면 과학 연구자가 아닌 이상 헷갈리기 쉬운데요. 이는 해당 속성이 수학적 배경을 갖고 있기 때문입니다.

 

이는 아래와 같은 이유를 갖습니다.

 

행렬(Matrix)

 

대학에서 수학 관련 과목을 배웠거나, 수학을 난이도 있게 공부했다면 이것이 "행렬(Matrix)"와 깊은 관계를 갖는다는 것을 알 수 있습니다.

 

수학이라고 하니 얼핏 듣기에는 무시무시해 보이지만, 실제로는 별로 어렵지 않은 구조인데요.

 

예를 들어 바나나, 사과, 딸기를 파는 가게에서 손님 3명의 정보를 저장한다고 해 봅시다.

 

  1. 바나나 2개, 사과 3개, 딸기 1개 (1번 손님)
  2. 바나나 1개, 사과 2개, 딸기 3개 (2번 손님)
  3. 바나나 0개, 사과 4개, 딸기 0개 (3번 손님)

대충 이런 식으로 표현할 수 있겠습니다.

 

그렇다면 우리는 "바나나가 얼마나 팔린 거야?"라고 물어볼 때

 

"(1번 손님이) 2개, (2번 손님이) 1개, (3번 손님이) 0개씩 사갔어"

 

라고 말할 수 있고, 다른 관점에서 "1번 손님이 과일을 몇 개 사갔어?"라고 물어본다면

 

"(바나나) 2개, (사과) 3개, (딸기) 1개 팔렸어"

 

라고 답할 수 있습니다.

 

좀 더 디테일하게 본다면, 관점을 과일 기준으로 볼 때 세로축, 손님 기준으로 볼 때 가로축이 되겠군요.

 

이것을 영어로 표현한다면 columns(세로축), rows(가로축)이 됩니다.

 

행렬(Matrix)과 정렬된 데이터(TidyData)는 같은 이야기를 하고 있지만, 행렬이 좀 더 수학적인 관점으로 데이터를 바라본다고 할 수 있습니다.

 

 

좌측이 행렬(Matrix), 행렬에 해석이 생기면 우측으로 변화

 


CSV? TSV?

그래서 CSV와 TSV는 무엇을 의미하는가?

 

라고 질문한다면, 위와 같은 형식을 그대로 옮기기 위한 방법이라고 볼 수 있습니다.

 

CSV(Comma Separated Value), TSV(Tab-separated value)라는 설명에서 알 수 있듯이, 데이터를 컴퓨터에 입력하는 형식인 것입니다.

 

세로축을 구분하는 기준이 CSV는 콤마(,)로 TSV는 탭(\t) 형태를 갖고 있는 것이 차이일 뿐이죠.

 

가로축은 어떻게 구분할까요? 둘 다 줄 바꿈(\n)을 사용하게 됩니다.

 

즉, 위의 행렬을 csv로 옮긴다면 아래와 같습니다. 실제로 아래 내용을 복사 붙여 넣기 해서 메모장에서 "test.csv"로 저장하면 csv 파일이 됩니다.

 

바나나,사과,딸기
2,3,1
1,2,3
0,4,0

 

(똑같이 tsv로 변환한다면 , 표기를 탭 표기로 변경하면 됩니다)

 

이렇게 csv혹은 tsv로 변환한 포맷은 파이썬부터 R, 엑셀까지 거의 모든 통계와 데이터 편집 프로그램에서 사용 가능합니다.

 

파이썬에서는 Pandas를 통해 다음과 같이 읽을 수 있습니다.

 

import pandas as pd

df = pd.read_csv("test.csv")

 

간단히 데이터를 본다면, 다음과 같이 행과 열에 맞춰 데이터가 로드된 것을 확인할 수 있습니다.

 

 


정리

  • 데이터 과학에서는 행렬에 기반한 타이디 데이터 형식을 사용한다
  • 타이디데이터 형식은 데이터를 보는 관점에 따라 정리한 것이다
  • CSV 혹은 TSV는 행렬 or 타이디 데이터를 효율적으로 컴퓨터에게 전달하는 형식이다

 

 

반응형