CSV 파일에서 데이터 읽어오는 함수
csv.reader() - csv 파일에서 데이터 읽어오기, 데이터 분석 실습을 할때 import csv한 후 csv.reader(f)를 사용해서 데이터를 가져왔습니다.
csv.writer() - csv 파일에 데이터 저장, 책에 있는 writer 설명은 쉽게 와닿지 않았습니다. 다른 사이트를 참고해본 결과 csv 파일에 새로운 내용을 추가할때 사용하는 함수라고 이해했습니다.
쉽게 생각하면 문서 파일을 열때 읽기 전용인지 수정가능인지 선택하는 것과 비슷한 것 같습니다.
docs.python.org/ko/3/library/csv.html
좀더 자세한 설명입니다(사실 읽어보면 무슨 말인지 더 이해가 안가기도 합니다...)
굳이 csv.writer() 함수를 사용하지 않더라도 엑셀 프로그램을 통해서 csv 파일 수정이 가능하니 그것도 해보시는걸 추천드립니다.
관련 공부를 하면서 데이터가 정말 중요하다는 것을 느끼는데 엑셀을 통해서 대략적인 데이터 형태를 보는 것도 좋은 방법이 될거라는 생각이 듭니다.
주피터 노트북
파이썬을 비롯한 40여 개의 프로그래밍 언어로 코드 작성이 가능하고 바로 그 자리에서 실행도 할 수 있는 환경을 제공합니다.
주피터 노트북은 사용이 비교적 쉽고 공유가 쉽다는 장점 외에도 수많은 장점이 있습니다.
특히 저처럼 학습하는 사람에게는 학습 과정을 깔끔하게 정리할 수 있게 해주는 굉장한 도구라고 생각합니다.
다만, 주피터 노트북을 사용하기 위해서는 마크다운을 따로 숙지해야합니다. 처음에는 어려웠는데 지금은 나름 익숙해졌습니다. 쓰는 것만 계속 사용해서 그럴수도 있겠네요.
아나콘다(anaconda)를 설치하셨으면 주피터 노트북을 바로 사용할 수 있습니다.
데이터 불러오기
import csv #1
f = open('파일이름.csv', 'r', encoding = 'cp949') #2
data = csv.reader(f, delimiter = ',') #3
print(data) #4
f.close() #5
1. import csv를 한 후 f 변수에 파일 이름/불러오는 방식/인코더를 설정해주면 됩니다.
2. open 함수를 이용해 읽기 모드로 csv 파일을 오픈한 후 f(파일 핸들러)에 저장합니다. 개인적으로 Encoding 부분에 대해서는 아직 공부가 필요합니다. 책에서는 cp949를 사용하고 있는데 어떨때나 utf-8을 치기도 하고 종류가 여러가지인 것 같습니다. 어느 상황에서 어떤 Encoding을 선택해야하는지 좀더 공부해야할 것 같습니다.
책에서 cp949가 windows 한글 인코딩 방식이라고 설명하고 있습니다. 다만, Ubuntu에서 인코딩 관련 오류가 났을때 cp949가 먹히는 경우가 있어서 확인이 필요합니다.
3. f를 reader 함수를 이용해 data라는 객체 생성. delimiter는 구분자라는 의미를 갖고 있는데 여기서는 콤마(,)를 기준으로 분리해서 저장할 것을 의미합니다.
4. data를 프린트 해줘
5. 2번에서 파일 오픈했으니까 닫아줘. 이게 엄청 중요합니다.
여기서 주의해야할 점은 CSV 파일과 파이썬 파일을 동일한 위치에 저장해야한다는 점입니다. 그렇지 않으면 'No such file or directory : '이라는 오류가 나타납니다.
데이터 출력하기
import csv
f = open('파일이름.csv', encoding = 'cp949')
data = csv.reader(f)
for row in data:
print(row)
f.close()
for문을 이용해서 데이터를 뽑아내면 리스트 형태로 출력됩니다.
리스트 형태이기 때문에 인덱싱과 슬라이싱이 가능합니다.
그리고 데이터가 콤마를 기준으로 따옴표로 둘러싸여 있는데(EX. '가나다', '나다라', '마마마') 이는 모든 데이터가 문자열(string)으로 표현된다는 것을 의미합니다.
따라서 크기 비교를 하려면 반드시 실수(float) 형태로 변환을 해야합니다.
헤더 저장하기
헤더(Header)란 데이터 파일에서 여러 가지 값들이 어떤 의미를 갖는지 표시한 행을 의미합니다.
next 함수는 첫 번째 데이터 행을 읽어오면서 데이터 탐색 위치를 다음 행으로 이동시키는 명령어
next 함수를 사용하여 별도로 헤더를 저장합니다.
import csv
f = open('파일이름.csv')
data = csv.reader(f)
header = next(data)
print(header)
f.close()
책의 데이터를 예시로 들면 ['날짜', '지점', '평균기온', '최저기온', '최고기온']이 출력됩니다.
import csv
f = open('파일이름.csv')
data = csv.reader(f)
header = next(data)
for row in data:
print(row)
f.close()
코드를 이렇게 작성하면 첫 번째 열인 헤더 부분이 아닌 그 다음 두 번재 열부터 출력이 됩니다.
'DATA STUDY > 모두의 데이터분석 with 파이썬' 카테고리의 다른 글
둘째 마당 - 내 생일 기온 그래프 그리기(인코딩) UNIT 05 (0) | 2021.03.07 |
---|---|
둘째 마당 - 기본 그래프 그리기 UNIT 04 - 02 (0) | 2021.03.06 |
둘째 마당 - 기본 그래프 그리기 UNIT 04 - 01 (0) | 2021.03.05 |
첫째 마당 - 서울이 가장 더웠던 날은 언제였을까 UNIT 03 (0) | 2021.03.03 |
첫째 마당 - 기온 공공데이터 UNIT 01 (0) | 2021.03.02 |