아무거나노트

많은 "파일"과 "시트"의 엑셀 칼럼(열) 헤더 정보 한꺼번에 보기 본문

파이썬

많은 "파일"과 "시트"의 엑셀 칼럼(열) 헤더 정보 한꺼번에 보기

축적의힘 2021. 1. 7. 15:10

한 파일 당 여러시트가 있고 그러한 파일이 다수일 경우 헤더 정보 한꺼번에 모으기

import glob
import pandas as pd
import os

# 1. 폴더에 들어있는 xlsx파일을 리스트 업
# 1.1) 폴더지정
folder=r"폴더위치를 넣어주세요"

# 1.2) 폴더 내 파일 나열
files= glob.glob(folder+"*.xlsx") 
files

# 2. 헤더 정보 모으기
# 2.1) 빈 리스트 생성 data 는 한 파일당 시트 목록 들이 한 원소로 리스트에 들어감. fdata는 헤더 정보를 모을 리스트임
data=[]
fdata=[]

# 2.2) 먼저 files의 엑셀 파일들의 시트이름을 불러서 sheetlist로 지정하고, 이를 data리스트에 원소로 넣음.

for file in files :
    sheetcheck=pd.ExcelFile(file)
    sheetlist=sheetcheck.sheet_names
    data.append(sheetlist)
    
# 2.3) data에 저장된 sheetlist에 대하여 하나씩 불러  파일이름 + 시트이름 + 시트의 헤드정보로 만들어줌 -> df

    for sheet in sheetlist :
        df =  [os.path.basename(file)] + [sheet] + pd.read_excel(file, encoding = "cp949",sheet_name=sheet).columns.to_list()
        fdata.append(df)
    
# 2.4) 해당 df 리스트를 데이터프레임형식으로 변환 및 저장.

df1 = pd.DataFrame(fdata)
df1.to_excel("header_info.xlsx")

- 폴더 위치를 불러오는데서 "EOL while scanning string literal" 에러가 뜨는 경우 폴더위치를 넣고 맨마지막에 \\를 넣었는지 확인할 것.

 

- glob을 할 때 xlsx 인지 xls 인지 csv 인지 확인할 것. 

- to_excel, to_csv, read_excel, read_csv 확인

- read_excel 할 때 sheet_name= 해야됨. sheet_names 하면 안됨