python - CSV

지환·2023년 6월 2일
0

python

목록 보기
12/12

출처| https://devpouch.tistory.com/55

CSV

엑셀 파일 종류는 흔히 xlsx, csv 등이 있는데요. 가장 다루기 쉬운 csv 파일을 대상으로 설명하려 합니다. csv파일은 xlsx보다 간단한 형식(쉼표로 데이터 구분)이기 떄문에 접근하기 쉬우실 겁니다. 그럼 파이썬으로 csv 파일을 다루는 방법에 대해서 살펴보도록 합시다.

파이썬으로 csv 읽기

파이썬으로 csv파일을 읽기위해서는 csv 모듈을 불러와야 합니다. 이 외에도 판다스를 이용하여 csv를 읽고 처리하는 방법이 있지만 여기에서는 csv 모듈을 활용한 처리만 다루도록 하겠습니다.

csv모듈의 reader함수를 이용하여 행별로 데이터를 가져와 루프를 돌면 csv 파일을 읽습니다. 간단한 예제 코드는 아래와 같습니다.

코드

import csv
 
f = open('example.csv','r')
rdr = csv.reader(f)
 
for line in rdr:
    print(line)
 
f.close()

해당 스크립트를 실행하면 아래와 같이 csv의 행단위로 데이터를 출력합니다.

결과

['사용자명', '지역']
['림코딩', '부산']
['김갑환', '서울']
['최번개', '강원']
['테리보가드', '경기']

각 line은 list 형식으로 되어있습니다.

그러므로 아래와 같이 해당 리스트의 인덱스를 지정하면 원하는 열만 가져올 수도 있습니다.

코드

for line in rdr:
    print(line[1])

결과

지역
부산
서울
강원
경기

파이썬으로 csv 쓰기

csv모듈을 이용하여 csv 파일을 쓰기 원한다면 writer함수를 사용하면 됩니다. open함수를 통해 파일명을 명시하고(writer.csv) 쓰기 모드를 옵션으로 주면(w) 해당 csv파일에다가 원하는 내용을 쓸 수 있습니다.

하지만 이대로 write를 해버리면 csv파일을 한 행씩 건너뛰면서 데이터를 넣게 되는 문제가 생깁니다. 이를 해결하기 위해 newline=''옵션을 주면 데이터가 띄어쓰기 없이 들어가게 됩니다. 코드는 아래와 같습니다.

코드

f = open('write.csv','w', newline='')
wr = csv.writer(f)
wr.writerow([1,'림코딩', '부산'])
wr.writerow([2,'김갑환', '서울'])
 
f.close()

파이썬으로 csv 행 추가하기

기존에 있는 파일에 새로운 행을 추가할 수 있습니다. 이를 위해서는 파일 오픈시에 open함수에 append모드의 약자인 'a'옵션을 주면 해당 csv파일의 마지막행에 데이터를 추가할 수 있게 됩니다. 예제 코드는 아래와 같습니다.

f = open('write.csv','a', newline='')
wr = csv.writer(f)
wr.writerow([3,'최번개', '강원'])
 
f.close()

pandas를 이용해서 csv 작성하기

csv파일 읽기

pandas를 이용해 csv 파일을 불러오기 위해서는 아래와 같이 pandas를 먼저 import 해야합니다. 그리고 약어로 지정한 pd를 사용하여 read_csv함수를 통해 csv 파일을 불러 올 수 있습니다.

import pandas as pd
data = pd.read_csv('파일경로/파일이름.csv')

csv파일 예시

CSV는 Comma Seperated Value의 약자로 ',' 쉼표(comma)로 분리된 텍스트 파일입니다. 예를 들면 아래와 같이 쓰여져 있는 텍스트 파일을 말합니다.

이름, 성별, 키
데이콘, 남자, 180
홍길동, 남자, 175
아이유, 여자, 163

파라미터

read_csv는 여러가지 파라미터를 통해서 옵션을 줄 수 있습니다. 더 많은 파라미터를 자세하게 확인하고 싶으시다면 판다스 공식 문서를 확인해주세요.

filepath or buffer

파일경로/파일이름.csv 을 입력하여 파일을 불러옵니다.

sep or delimiter

초기값은 comma(,)
만일 분리되어있는 기준이 쉼표(,)로 분리되어 있지 않은 경우 기준이 되는 값을 입력하면 됩니다. 예를 들어 슬라이스(/), Tab( ) 등 으로 분리되어 있는 경우를 말합니다.

초기값은 0
컬럼명으로 사용할 행의 번호를 입력합니다.

names

사용할 변수명을 입력합니다. 파일에 변수명이 없다면 header를 None으로 설정해야합니다.

index_col

데이터의 인덱스로 사용할 열의 번호를 입력합니다.

skiprows

첫 행을 기준으로 데이터를 얼마나 건너뛰고 읽어올지를 정합니다.

nrows

파일을 읽어올 행의 수를 입력합니다.

date_parser

시계열 타입으로 변환할 변수를 입력합니다.

csv파일 저장하기

작업이 끝난 뒤 쥬피터 노트북에있는 값들을 파일로 변환해서 저장하려면 어떻게 해야할까요? 바로 csv파일로 만들어서 저장하는 것 입니다. 그렇다면 쥬피터 노트북 내의 값들을 어떻게 csv파일로 저장하는지 알아보도록 하겠습니다.

아래와같이 to_csv를 사용하여 저장하고자 하는 파일경로와 파일명 그리고 csv 확장자를 같이 입력해주면 data의 값들이 파일로 저장되는것을 보실 수 있습니다.

data.to_csv('파일경로/파일명.csv', index = False)

단, 여기서 data는 위에서 read_csv를 통해 불러온 data와 같이 pandas의 DataFrame 형식이거나 Series 형식이어야 합니다.

index는 data의 index(행의 이름)를 같이 저장할 것인지 하지 않을 것인지를 결정하는 옵션입니다. 만약 위와 같이 index가 False라면 index를 저장되지 않습니다.

출처|https://dacon.io/codeshare/585

profile
아는만큼보인다.

0개의 댓글