본문 바로가기

DATA STUDY/모두의 데이터분석 with 파이썬

첫째 마당 - 서울의 기온 데이터 분석하기 UNIT 02

CSV 파일에서 데이터 읽어오는 함수

csv.reader() - csv 파일에서 데이터 읽어오기, 데이터 분석 실습을 할때 import csv한 후 csv.reader(f)를 사용해서 데이터를 가져왔습니다.

 

csv.writer() - csv 파일에 데이터 저장, 책에 있는 writer 설명은 쉽게 와닿지 않았습니다. 다른 사이트를 참고해본 결과 csv 파일에 새로운 내용을 추가할때 사용하는 함수라고 이해했습니다.

 

쉽게 생각하면 문서 파일을 열때 읽기 전용인지 수정가능인지 선택하는 것과 비슷한 것 같습니다.

 

docs.python.org/ko/3/library/csv.html

 

csv — CSV 파일 읽기와 쓰기 — Python 3.9.2 문서

소위 CSV (Comma Separated Values – 쉼표로 구분된 값) 형식은 스프레드시트와 데이터베이스에 대한 가장 일반적인 가져오기 및 내보내기 형식입니다. CSV 형식은 RFC 4180에서 표준화된 방식으로 형식을

docs.python.org

좀더 자세한 설명입니다(사실 읽어보면 무슨 말인지 더 이해가 안가기도 합니다...)

 

굳이 csv.writer() 함수를 사용하지 않더라도 엑셀 프로그램을 통해서 csv 파일 수정이 가능하니 그것도 해보시는걸 추천드립니다.

 

관련 공부를 하면서 데이터가 정말 중요하다는 것을 느끼는데 엑셀을 통해서 대략적인 데이터 형태를 보는 것도 좋은 방법이 될거라는 생각이 듭니다.

주피터 노트북

파이썬을 비롯한 40여 개의 프로그래밍 언어로 코드 작성이 가능하고 바로 그 자리에서 실행도 할 수 있는 환경을 제공합니다.

 

soooprmx.com/archives/8626

 

파이썬은 처음이라 - IDLE은 처음이라 · Wireframe

아주 당연한 이야기지만 어떤 프로그래밍 언어도 책으로만 공부할 수는 없다. 프로그래밍 언어에서 가장 중요한 것은 직접 코드를 타이핑해서 쳐보고, 그것을 실행해보는 경험이다. 이것은 단

soooprmx.com

 

medium.com/@salaryup/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D%EC%97%90-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%85%B8%ED%8A%B8%EB%B6%81%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%B4%EC%95%BC-%ED%95%98%EB%8A%94-10%EA%B0%80%EC%A7%80-%EC%9D%B4%EC%9C%A0-feat-%ED%81%B4%EB%A6%B0%EC%BD%94%EB%93%9C-d7c170925309

 

머신러닝에 파이썬 노트북을 사용해야 하는 10가지 이유 (feat.클린코드)

머신러닝과 데이터 분석에는 주피터 노트북이 단연 압도적으로 인기를 끌고 있고, 이 중에서도 파이썬 노트북이 가장 활발히 쓰이고 있습니다.

medium.com

주피터 노트북은 사용이 비교적 쉽고 공유가 쉽다는 장점 외에도 수많은 장점이 있습니다.

 

특히 저처럼 학습하는 사람에게는 학습 과정을 깔끔하게 정리할 수 있게 해주는 굉장한 도구라고 생각합니다.

 

다만, 주피터 노트북을 사용하기 위해서는 마크다운을 따로 숙지해야합니다. 처음에는 어려웠는데 지금은 나름 익숙해졌습니다. 쓰는 것만 계속 사용해서 그럴수도 있겠네요.

 

아나콘다(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()

 

코드를 이렇게 작성하면 첫 번째 열인 헤더 부분이 아닌 그 다음 두 번재 열부터 출력이 됩니다.