본문 바로가기
Algorithm/자료구조, 알고리즘

[코딩 알고리즘 완주반] 8일차. 파이썬 외부 파일 처리 ( Excel, CSV 파일)

by newnu 2021. 3. 22.
반응형

# CSV 파일 읽기, 쓰기

# 파이썬 외부 파일 처리
# 파이썬 Excel, CSV 파일 읽기 및 쓰기

# CSV :  MIME - text/csv

import csv

# 예제 1
# encoding 변수 지정 안해주면 기본적으로 'utf-8' 디코딩 -> UnicodeDecodeError 오류
with open('./resource/sample1.csv','r',encoding='euc-kr') as f:
    reader  = csv.reader(f)
    # next(reader) Header 스킵

    # 확인
    print(reader) # <_csv.reader object at 0x7fda14faf650>
    print(type(reader)) # <class '_csv.reader'>
    print(dir(reader))
    print("예제 1")

    for c in reader: # 한줄씩 프린트
        print(c)
       

# 예제 2
# 구분하기
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))
    print("예제 2")

    for c in reader:
        print(c)

# 예제 3 (Dict 변환)
with open('./resource/sample1.csv','r',encoding='euc-kr') as f:
    reader  = csv.DictReader(f)
    print("예제 3")
    # for c in reader:
    #     print(c)
    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]]
# newline - 개행 설정
with open('./resource/sample3.csv','w',newline='') as f:
    wt = csv.writer(f)
	
    # 한줄씩 쓰기
    for v in w:
        wt.writerow(v)

# 예제 5
with open('./resource/sample4.csv','w',newline='') as f:
    wt = csv.writer(f)
    wt.writerows(w) # 한번에 모든 줄 쓰기

 

# Excel 파일 읽기

# XSL, XLSX
# openpyxl, xlswriter, xlrd, xlwt, xlutils
# pandas를 주로 사용 (openpyxl, xlrd)
# pip install openpyxl
# pip install pandas

import pandas as pd 

xlsx = pd.read_excel('./resource/sample.xlsx')

# 상위 데이터 확인
print(xlsx.head())
print()

# 하위 데이터 확인
print(xlsx.tail())
print()

# 데이터 확인
print(xlsx.shape) # 행,열

# 엑셀 or CSV 다시 쓰기
xlsx.to_excel('./resource/result.xlsx', index=False)
xlsx.to_csv('./resource/result.csv', index=False)
반응형