본문 바로가기
● 인공지능, 분석/20.12 생활 프로그래밍

[4. CSV] CSV 정의 / CSV 함수 만들기

by 0ver-grow 2021. 1. 4.
반응형

1. CSV란?

조건식이 많고 처리 데이터 양이 많으면 엑셀 데이터가 아닌 CSV 데이터 형식으로 다뤄야 한다.

 

CSV(Comma Separated Value) 정의 : 쉼표로 나눠진 값을 저장한 데이터

CSV 특징 :

1. 엑셀 자료를 불러와 복잡한 전산 작업 가능

2. 원형 그대로 가공하기 좋은 데이터 형식

3. 파이썬으로 불러와 복잡한 연산 수행이 가능

 

위와 같이 저장된 csv파일을 불러오면 comma로 구분된 형태를 볼 수 있다.

 

엑셀에 저장할 수 있는 CSV 파일 형식

1. CSV (쉼표 분리) : 프로그래밍용

2. CSV UTF-8 (쉼표 분리) : 한글 깨지는 문제 해결. 에디터, 인터프리터 환경에선 인코딩되지 않는 문제 발생가능

 

2. 파이썬으로 CSV 활용하기

파이썬으로 CSV파일의 내용을 불러와 

 

파이썬에서 사용하려면 CSV 파일 자료 형태를 수정해야함.

CSV형 리스트 = [[1행], [2행], ..., [n행]]

>>> import csv, os
>>> os.chdir(r'C:\Users\J3E\Desktop')
>>> f = open('a.csv','r')
>>> csv_read_obj = csv.reader(f) # a.csv를 가진 객체f를 읽음
>>> csv_read_obj
<_csv.reader object at 0x0000026A0F156E20>
>>> for i in csv_read_obj : # csv파일 출력
...     print(i)
...
['국', '영', '수']
['100', '98', '99']

>>> a_list = [] # csv형 리스트로 변경하기 위해 객체 만듦
>>> for i in csv_read_obj :
...     print(i)
...     a_list.append(i)
...
>>> a_list 
[] # ???

빈리스트인 이유는?

csv.reader(f)로 csv파일을 읽은 값을 csv_read_obj에 저장하면서 커서가 맨마지막으로 이동했기 때문

파일을 처음부터 읽기 위해선 seek()함수를 사용하여 커서를 처음으로 이동해야 한다.

 

>>> f.seek(0) # 커서를 처음으로 이동
0 # 커서가 처음으로 이동했다는 의미 

>>> for i in csv_read_obj :
...     print(i)
...     a_list.append(i)
...
['국', '영', '수']
['100', '98', '99']

>>> a_list
[['국', '영', '수'], ['100', '98', '99']]

 

계속 불러올 순 없으니 csv 파일을 불러오는 함수를 만들자

def opencsv(filename) :
     f = open(filename, 'r', encoding = 'utf-8')
     reader = csv.reader(f)
     output = []
     for i in reader :
             output.append(i)
     return output
     f.close()

위 코드를 모듈로 만들면 더 쉽게 인터프리터에서 활용가능하다.

반응형