2018년 12월 15일 토요일

PyThon TSV 파일 읽기/저장

TSV 파일이란

TSV란 TAB으로 분리된 형식의 text 파일을 의미합니다. 해당 내용만을 다루기 위한 모듈이 python에는 준비되어 있지는 않고 CSV (Comma Separated Values) format 모듈을 이용해서 사용합니다.


쓰기


cvs.writer를 사용합니다. delimiter='\t' 는 구분자로서 탭을 의미합니다.
write 예제
import numpy as np
import csv

MAX_COLMUM = 5
MAX_ITEM = 20
AREA_INDEX = 2
AREA_INDEX2 = 4

# 지역 범주를 만들기 위하여
area = '서울 부산 대구 인천 광주 대전 울산 세종 경기 강원'.split()

f = open('train.tsv', 'w', encoding='utf-8', newline='')
wr = csv.writer(f, delimiter='\t')

# 첫째줄은 컬럼의 제목을 위해서 write합니다.
# 그중에서 AREA_INDEX 여기 위치는 지역명이 들어갑니다.
title = np.arange(MAX_COLMUM).tolist()
title[AREA_INDEX] = "지역"
wr.writerow(title)

for index in range(0,MAX_ITEM):
 random_data = np.random.rand(MAX_COLMUM).tolist()
 random_data[AREA_INDEX] = area[int((random_data[AREA_INDEX]*100)%10)]
 random_data[AREA_INDEX2] = area[int((random_data[AREA_INDEX2]*100)%10)]
 wr.writerow(random_data)

f.close()


결과
0 1 지역 3 4
0.30789676210454797 0.3160718715457761 광주 0.618074061962662 부산
0.4779143261004096 0.7640950473377978 인천 0.7554662967547567 인천
0.46356805076582885 0.5837447431729355 대전 0.793675978965779 광주
0.5695109222857196 0.05089301078346342 인천 0.9556152127770076 부산
0.04493729261707624 0.14316706161067427 경기 0.3853064558624778 울산
0.4211392967613088 0.4223696769241083 울산 0.5668579921124862 광주
0.6968309725237914 0.9771633054896907 서울 0.8357267917293922 경기
0.11353740126056755 0.7601654905557846 대전 0.743158407293178 부산
0.22370034270270966 0.3115915771469119 대전 0.11848968372403645 부산
0.137646137601257 0.600286886461799 광주 0.7007352606121582 강원
0.031428666050948184 0.39108944068098905 대전 0.8733145643417124 강원
0.9964849451141898 0.1515641318053479 인천 0.5335673749065628 인천
0.22542471556473298 0.8561772376533481 서울 0.9362096685200896 울산
0.4686621433360696 0.17537990374522128 대구 0.3499523151304561 울산
0.046060811241397714 0.8299155100569963 경기 0.21535901604117658 경기
0.1899909553960777 0.21936448957471155 인천 0.6575452140509177 경기
0.41758513381425333 0.42277109702047366 서울 0.8529515809615816 부산
0.3197992908993763 0.13481439248189842 강원 0.4037015504523124 대구
0.0562629654450455 0.551939153390536 인천 0.9260164254116474 세종
0.587953265713976 0.6413981811587487 대구 0.023584307830762707 대전


읽기


읽을때는 csv 모듈을 사용하지 않고 pandas 모듈을 사용하겠습니다.

tsv 파일 읽기 예제
import pandas as pd

dataset = pd.read_csv("train.tsv", delimiter='\t', header=0)

print(dataset)

read_csv를 이용하여 쉽게 데이터를 읽었습니다.

결과
           0         1  지역         3   4
0   0.307897  0.316072  광주  0.618074  부산
1   0.477914  0.764095  인천  0.755466  인천
2   0.463568  0.583745  대전  0.793676  광주
3   0.569511  0.050893  인천  0.955615  부산
4   0.044937  0.143167  경기  0.385306  울산
5   0.421139  0.422370  울산  0.566858  광주
6   0.696831  0.977163  서울  0.835727  경기
7   0.113537  0.760165  대전  0.743158  부산
8   0.223700  0.311592  대전  0.118490  부산
9   0.137646  0.600287  광주  0.700735  강원
10  0.031429  0.391089  대전  0.873315  강원
11  0.996485  0.151564  인천  0.533567  인천
12  0.225425  0.856177  서울  0.936210  울산
13  0.468662  0.175380  대구  0.349952  울산
14  0.046061  0.829916  경기  0.215359  경기
15  0.189991  0.219364  인천  0.657545  경기
16  0.417585  0.422771  서울  0.852952  부산
17  0.319799  0.134814  강원  0.403702  대구
18  0.056263  0.551939  인천  0.926016  세종
19  0.587953  0.641398  대구  0.023584  대전


header=None일때


읽기
import pandas as pd

dataset = pd.read_csv("train.tsv", delimiter='\t', header=None)

print(dataset)


결과
           0         1   2         3   4
0   0.000000  1.000000  지역  3.000000   4
1   0.307897  0.316072  광주  0.618074  부산
2   0.477914  0.764095  인천  0.755466  인천
3   0.463568  0.583745  대전  0.793676  광주
4   0.569511  0.050893  인천  0.955615  부산
5   0.044937  0.143167  경기  0.385306  울산
6   0.421139  0.422370  울산  0.566858  광주
7   0.696831  0.977163  서울  0.835727  경기
8   0.113537  0.760165  대전  0.743158  부산
9   0.223700  0.311592  대전  0.118490  부산
10  0.137646  0.600287  광주  0.700735  강원
11  0.031429  0.391089  대전  0.873315  강원
12  0.996485  0.151564  인천  0.533567  인천
13  0.225425  0.856177  서울  0.936210  울산
14  0.468662  0.175380  대구  0.349952  울산
15  0.046061  0.829916  경기  0.215359  경기
16  0.189991  0.219364  인천  0.657545  경기
17  0.417585  0.422771  서울  0.852952  부산
18  0.319799  0.134814  강원  0.403702  대구
19  0.056263  0.551939  인천  0.926016  세종
20  0.587953  0.641398  대구  0.023584  대전
결과를 보면 0번 줄에 0,1,지역.... 으로 title이 되어야 하는 자리가 데이터로 들어간 상태가 되었습니다. (빨간색)














댓글 1개:

  1. Tsv 파일의 위치가 중요한가요? Tsv 파일의 위치때문인지 컴파일러가 찾지를 못합니다.

    답글삭제