공부합시다!/python

19. Excel 및 CSV 파일 다루기

간서치 2023. 2. 17. 00:15
728x90

마지막 장이네요!

오늘 Python 연재를 끝내면서 잠시 휴식모드로 들어가려 합니다.

일정이 너무 바빠진 관계로..... - 다시 찾아온 기회 잘 살려봐야겠지요!
지난 시간 파일 다루기에 이어 오늘은 Excel 및 CSV 파일 다루기 입니다.

대용량 파일 내보내기에 많이 사용이 되는 CSV파일 다루기와 그 형제격인 Excel 파일 다루기 입니다.

파이썬으로 이런 작업까지 

 

'''
Excel, CSV 처리
 1. csv 읽기
 2. csv 쓰기
 3. xls, xlsx 읽기
 4. 패키지 설치
'''

# 파이썬 외부 파일 처리
# 파이썬 Excel, CSV 파일 읽기 및 쓰기
# CSV : MIME - test/csv

# 예제 1
import csv

with open('./resource/sample1.csv', 'r') as f:
  reader = csv.reader(f)
  next(reader)                   # csv파일의 칼럼 list 제외
  # 확인
  print(reader)
  print(type(reader))
  print(dir(reader))
  print()

  for c in reader:
    print(c)


# 예제 2
import csv

with open('./resource/sample1.csv', 'r') as f:
  reader = csv.reader(f, delimiter='|')
  next(reader)                   # csv파일의 칼럼 list 제외
  # 확인
  print(reader)
  print(type(reader))
  print(dir(reader))
  print()

  for c in reader:
    print(c)

# 예제 3

with open('./resource/sample1.csv', 'r') as f:
  reader = csv.DictReader(f)
  for c in reader:
    print(c)
  
# 예제 4
w = [[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18]]

with open('./resource/sample4.csv', 'w', newline='') as f:  # newline 한줄 제거
  wt = csv.writer(f)
  for v in w:           # 특정 조건을 필터링 할 경우는 for문이 적당
    wt.writerow(v)

# 예제 5
with open('./resource/sample5.csv', 'w', newline='') as f:
  wt = csv.writer(f)
  wt.writerows(w)

# XSL, XSLX
# openpyxl, xlsswriter, xlrd, xlwt, xlutils
# pandas를 주로 사용
# 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())  # 문서 앞부분 5줄
print()
print(xlsx.tail())  # 문서 끝부분 5줄
print(xlsx.shape)   # 행과 열 수 출력

# 엑셀 or csv 다시 쓰기

xlsx.to_excel('./resource/result.xlsx', index=False)
xlsx.to_csv('./resource/result.csv', index=False)

728x90