[Python] 데이터 입,출력

R 만 주구장창 하다보니 Python 다 까먹어서 다시 시작하려 합니다.

txt 데이터 파일의 입,출력
실제 데이터 분석에서는 파이썬 안에서 데이터를 만들어 쓰는 것보다 txt, csv 와 같은 외부형식의 데이터를 많이 사용하기 때문에 입,출력이 매우 중요 
- 파일 열기 모드
아주 기본적이지만, 굉장히 중요함
r : 읽기 모드 - 파일을 읽을 때 사용. 이를 사용하면 원본 파일이 수정, 손상이 없음
w : 쓰기 모드 - 파일을 쓸 때 사용. 이를 데이터가 있는 파일에 사용하면 데이터가 초기화되서 전부 날아가는 사태가 발생할 수 있음. - 아직까지는 그런 적이 없어 다행 / 새로운 파일로 작성할 때만 사용! 읽는데는 사용하지 않는다고 보면 되는듯
a : 추가 모드 - 파일의 마지막에 새로운 내용을 추가할 때 사용 - 이건 r과 w의 결합인듯 

- 파일 생성하기
f = open("새파일.txt", 'w')
처럼 open 안에 파일이름.형식, 파일 열기 모드 선택하면 된다.
하지만, 파이썬은 R처럼 파일이 알아서 한 줄씩 읽히는 것이 절대 아니다.

여기서 파일을 한 줄씩 읽어 저장해줘야 쓸 수 있다. header 가 있는 경우는 특이한 문법을 사용해야 한다.

1) header 가 없는 경우
for 문을 사용해 1번째 줄부터 데이터를 읽어 들여야 한다. header 가 없기 때문에 1줄부터 그냥 쭉 읽으면 된다. (왜 네이버블로그는 탭 기능을 안되게 해둔건지 모르겠다. 띄어쓰기 3번 = tab 

f = 0 for f in 데이터 파일: f+=1 if f > 1: 데이터 변수명 = f.split('\t')

(오 이런 소스코드 창도 있었네 간지난다)
f= 0, f += 를 꼭 해줘야 한 줄씩 읽을 수 있다. 
그리고 header 가 없기 때문에 f 가 1보다 크면 을 조건으로 준 뒤에 .split 명령어를 쓰고 () 안에 어떤 문자로 구분되어 있는지를 입력하면 한 줄씩 데이터가 저장되어 리스트 형태로 반환된다. 

이걸 처음에 이해를 못해서 엄청 헤맨거 같다.

2) header 가 있는 경우

f = 0 for f in 데이터 파일: f+=1 if f == 1: 데이터 변수명_header = f.split('\t') if f > 2: 데이터 변수명_header = f.split('\t')

header 가 있기 때문에 1 번째 줄은 header 로 설정해줘야 한다. 그리고 2번째 줄부터 데이터다. 

이런 식으로 데이터를 읽을 수 있다. 

- 파일 출력하기
아까 설명한 파일 열기 모드에서 w 를 사용하면 된다. 여기서도 특이한 방법으로 파일을 저장한다.

f = open("경로/파일이름.파일형식", 'w') f.write(data)

데이터를 분석한 뒤에 f .write(저장할 데이터)를 넣어야 한다. 저 분석하는 동안에는 파일이 빈 파일이 된다.

이렇게 파일 입출력을 하면 된다. 빅데이터 시대의 파이썬은 서버에서 잘 돌아가므로 잘 쓰이는 것 같다. 하지만 파이썬이 R 보다 직관적이지 않고 변수 형태때문에 다루기가 어려운 것 같다

흑흑...

728x90
반응형