개발/ETC

[python] 여러개의 엑셀 파일 CSV 변환 ( 한번에 불러오기 )

wonpick 2021. 6. 15. 12:40

각각의 원본 파일을 받았는데 모두가 엑셀 자료였다.

씨에스브이로 변환이 필요하여 폴더 안에 있는 원본 파일을 모두 변환 한 뒤 각각의 파일을 데이터 프레임으로 가져왔다. 

 

파일에 있는 엑셀을 csv 파일로 변환한 뒤 저장csv파일을 다시 데이터프레임으로 불러오기!

# 1️⃣ xlsx to csv

import xlrd
def to_csv():
    for i in range(1, 7):
        wb = xlrd.open_workbook('경로작성/%d.xlsx'%(i)) #파일명을 숫자로 통일 후 전체 불러옴
        sh = wb.sheet_by_name('Sheet1')  #엑셀 시트 이름
        csv_file = open("경로/%d.csv"%(i), 'w',encoding='UTF8') #csv 저장할 곳
        wr = csv.writer(csv_file, quoting=csv.QUOTE_ALL )

        for rownum in range(sh.nrows):
            wr.writerow(sh.row_values(rownum))
        csv_file.close()


# 2️⃣ csv to dataframe
path = '경로' #csv 파일이 있는 경로 입력
file_list = os.listdir(path)
file_list_py = [file for file in file_list if file.endswith('.csv')] ## 파일명 끝이 .csv인 경우

## csv 파일들을 DataFrame으로 불러오기
CPS_list = []

# (전처리) 금액 단위 컴마 제거 함수
def remove_comma(x):
    return x.replace(',', '')
 
for i in file_list_py:
    CPS = pd.read_csv(path+i,engine='python', encoding='utf-8-sig')
    CPS_list.append(CPS)

df_concat = pd.concat(df_list) # list 속 DataFrame들을 일괄 병합함.
    
# 리스트 데이터셋 보여줘
for dataset in CPS_list:
    display(dataset)
    
# 3️⃣ 파일 하나당 리스트안에 저장
a=CPS_list[0] #이런식으로 원하는 데이터 추출 후 전처리 진행