10 excel, csv 파일 읽기, 쓰기
2020년02월18일10 excel, csv 파일 읽기, 쓰기
CSV : MIME - text/csv 타입 csv를 제어하려면 아래처럼 import 해야한다.
import csv # 기본 제공
예제1
# open으로 파일을 열때 인코딩 타입 정해주려면 세 번째 인자로 넣어준다.
with open('./resource/sample1.csv', 'r', encoding='euc-kr') as f:
reader = csv.reader(f)
next(reader) # Header 스킵 - 라인 스킵한다 보면 됨
# 확인
print(reader)
print(type(reader))
print(dir(reader))
# 메소드 속성 확인, __iter__가 있으면 순회 가능한 것이니 for 돌려볼 수 있다.
print()
for c in reader:
print(c)
예제2
csv 구분자는 대부분 ,
(콤마)로 되어있는데, 가끔 |
같은 문자로 구분될 때도 있다. 이때는 reader()함수에 delimiter
키워드로 구분자를 지정해준다.
with open('./resource/sample2.csv', 'r', encoding='euc-kr') as f:
reader = csv.reader(f, delimiter='|') # 구분자 정해주는 키워드
next(reader) # Header 스킵 - 라인 스킵한다 보면 됨
# 확인
print(reader)
print(type(reader))
print(dir(reader))
# 메소드 속성 확인, __iter__가 있으면 순회 가능한 것이니 for 돌려보면 좋
print()
for c in reader:
print(c)
예제3 (Dict변환)
with open('./resource/sample1.csv', 'r', encoding='euc-kr') as f:
reader = csv.DictReader(f)
for c in reader:
for k, v in c.items():
print(k, v)
print('----------')
예제4 - 쓰기
w = [[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18]]
with open('./resource/sample3.csv', 'w', newline='') as f: # newline으로 개행 제거
wt = csv.writer(f)
for v in w: # if문 같은 거 쓸 때 활
wt.writerow(v)
예제5
with open('./resource/sample4.csv', 'w', newline='') as f:
# newline으로 개행 제거
wt = csv.writer(f)
wt.writerows(w) # 한번에 다 입용력
# XSL, XLSX
# openpyxl, xlsxwriter, xlrd, xlwt, xlutils
# pandas 를 주로 사용(openpyxl, xlrd 같이)
# pip install xlrd
# pip install openpyxl
# pip install pandas
import pandas as pd
# sheetname='시트명' 또는 숫자, header=숫자(몇번째를 헤더로 정할), skiprow=숫자(몇번째 행은 안가져올지)
xlsx = pd.read_excel('./resource/sample.xlsx')
# 상위 데이터 확인
print(xlsx.head()) # 다섯개 보여줌
print()
# 데이터 확인
print(xlsx.tail()) # 끝에 다섯개 보여줌
# 데이터 확인
print(xlsx.shape) # 행, 열 반
# 엑셀 or CSV 다시 쓰기
xlsx.to_excel('./resource/result.xlsx', index=False)
xlsx.to_csv('./resource/result.csv', index=False)