AI

CSV파일 읽기

Lagom92 2019. 8. 21. 14:37

CSV(Comma Separated Values)

몇 가지 필드들을 쉼표( )로 구분한 텍스트 데이터 및 텍스트 파일

 

  • 확장자: .csv
  • 비슷한 포맷으로는 TSV(탭으로 구분) 나 SSV(반각 스페이스로 구분)가 있다.
  • 엑셀 양식의 데이터를 프로그램에 상관없이 쓰기 위한 데이터 형식

 

  • 아래는 csv 파일을 읽는 코드의 예시이다.
import csv

f = open('advertising.csv', 'r', encoding='utf-8')
rdr = csv.reader(f)
for line in rdr:
   print(line)
f.close()

 

  • 파일을 계속 열고 있을 필요가 없으므로 with as 문을 이용해서 파일을 닫는 과정을 생략하기도 한다.
with open('advertising.csv') as csvfile:
   rdr = csv.reader(csvfile)
   for i in rdr:
      print(i)

 

csv 파일의 첫번째 줄에 header로서 당장 필요없는 데이터가 있다.
어떻게 없애지?
next 함수를 찾았다.

 

  • next() 함수
# skip the headers
next(rdr, None)

 

문자열로 값이 넣어져버렸다. numeric 어찌고 하는 에러가 뜬다...
그래서 float를 사용해서 숫자로 바꿔줬다.

 

for i in rdr:
    X.append([float(i[1]), float(i[2]), float(i[3] )]) 
    Y.append([float(i[4])])

 

numpy를 사용하면 코드가 더 깔끔할 수 있다고 한다.
나중에 변경을 해봐야겠다.

 

 

Pandas로 csv파일 읽기

 

위 코드로 csv파일을 읽을 경우 결과가 리스트 형식이 되었다.
numpy의 행렬계산을 해야하는데 자꾸 타입 에러가 뜬다..ㅜㅜ
그러던중 Pandas로도 csv 파일을 읽을 수 있다는걸 알게됬다.
이걸 이용하면 결과가 array로 나타나게 할 수 있다.

 

  • pandas 임포트 
import pandas as pd

 

  • pd로 csv 파일 읽기
data = pd.read_csv("advertising.csv", skiprows=[0,0], header=None)
data

 

skiprows를 이용하여 원하는 행을 제거 할 수 있다.

header=None를 이용해서 헤더를 제거할 수 있다.

 

 

  • array로 나타내려면 values를 사용해 주면 된다.
data.values

 

 

 

 

 


Reference

위키 백과

csv 파일 읽기와 쓰기

pandas로 csv파일 읽기_Blog