본문 바로가기
ETC/Python

파이썬 엑셀 읽고 쓰기 (Python Excel Read / Write)

by Guardy 2020. 7. 28.
728x90

파이썬에서는 엑셀을 다룰 수 있는 모듈을 제공한다.

제공하는 모듈은 csv파일을 핸들링할 수 있다.

다음과 같은 과일에 대한 csv파일이 있고 우리는 이 값들을 가져와 우리의 코드에 사용하려고 한다.

 

test.py 를 다음과 같이 작성한다.

import csv 
with open('fruit.csv','r') as f: 
    reader = csv.reader(f)
print(reader)

결과 값은 다음과 같다.

<_csv.reader object at 0x000001E342E029E8>

csv reader를 통해 reader에 object를 가져온 것을 확인 할 수 있다.

그렇다면 어떻게 사용할 수 있을까? 딕셔너리를 이용하면 된다.

다음과 같이 코드를 수정해보자.

import csv 
with open('fruit.csv','r') as f: 
    reader = csv.DictReader(f)
    for column in reader:
        print(column)
C:\Users\devgu\Desktop>python test.py
OrderedDict([('index', '1'), ('name', 'apple'), ('price', '3000')])
OrderedDict([('index', '2'), ('name', 'banana'), ('price', '10000')])
OrderedDict([('index', '3'), ('name', 'watermelon'), ('price', '20000')])
OrderedDict([('index', '4'), ('name', 'plum'), ('price', '5000')])

그렇다면 가격들만 가져오려면 어떻게 수정하면 될까? 딕셔너리기 때문에 다음과 같이 수정하면 된다.

import csv 
with open('fruit.csv','r') as f: 
    reader = csv.DictReader(f)
    for column in reader:
        print(column['price'])
C:\Users\devgu\Desktop>python test.py
3000
10000
20000
5000

읽는 것을 했으니 이번엔 써볼 차례이다.

다음과 같은 2차원 데이터가 있다.

data = [[10,20,30],[40,50,60],[70,80,90]]

이 데이터를 data.csv로 저장해보도록 하자. 다음과 같이 코드를 작성하면 된다.

import csv 
data = [[10,20,30],[40,50,60],[70,80,90]]

with open('data.csv','w', newline='') as f: 
    makewrite = csv.writer(f) 
    for number in data: 
        makewrite.writerow(number)

프로그램을 실행시키면 py 파일이 있는 위치에 다음과 같이 csv파일이 생성된 것을 확인할 수 있다.

파일을 열었을 때도 정상적으로 저장된 것을 확인할 수 있다.

 

728x90