Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Pandas DataFrame으로 디렉토리 내 모든 Excel 파일 한 번에 읽는 방법

디렉토리 안에 있는 여러 개의 Excel 파일을 하나씩 열어 확인하는 것은 번거로운 작업입니다. Python에서는 Glob 모듈read_excel() 메서드를 함께 사용하면 특정 폴더 아래의 모든 Excel 파일을 자동으로 찾아 Pandas DataFrame으로 손쉽게 불러올 수 있습니다.

예시 데이터 준비

이번 예제에서는 데스크톱 폴더에 다음과 같이 두 개의 Excel 파일이 저장되어 있다고 가정하겠습니다.

  • Sales1.xlsx
  • Sales2.xlsx

1단계: 파일 경로 설정 및 파일 목록 가져오기

먼저 Excel 파일들이 위치한 경로를 지정합니다. 그런 다음 glob.glob() 함수를 사용해 해당 경로에서 확장자가 .xlsx인 모든 파일 목록을 가져옵니다.

path = "C:\\Users\\amit_\\Desktop\\"

filenames = glob.glob(path + "*.xlsx")
print('File names:', filenames)

2단계: 반복문으로 모든 Excel 파일 읽기

가져온 파일 목록을 for 반복문으로 순회하면서 각 파일을 pd.read_excel()로 읽어 DataFrame 형태로 출력합니다.

for file in filenames:
   print("Reading file = ", file)
   print(pd.read_excel(file))

전체 코드

지금까지의 과정을 하나로 합친 전체 코드는 다음과 같습니다.

import pandas as pd
import glob

# 데스크톱 디렉토리에서 Excel 파일 가져오기
path = "C:\\Users\\amit_\\Desktop\\"

# 확장자가 .xlsx인 모든 파일 읽기
filenames = glob.glob(path + "*.xlsx")
print('File names:', filenames)

# 반복문으로 모든 Excel 파일 순회
for file in filenames:
    # Excel 파일 읽기
    print("Reading file = ", file)
    print(pd.read_excel(file))

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다. 각 파일의 이름이 먼저 표시되고, 이어서 해당 파일의 내용이 DataFrame으로 출력되는 것을 확인할 수 있습니다.

File names:['C:\\Users\\amit_\\Desktop\\Sales1.xlsx','C:\\Users\\amit_\\Desktop\\Sales2.xlsx']

Reading file = C:\Users\amit_\Desktop\Sales1.xlsx
          Car      Place   UnitsSold
0         Audi   Bangalore          80
1      Porsche     Mumbai         110
2  RollsRoyce       Pune         100

Reading file = C:\Users\amit_\Desktop\Sales2.xlsx
          Car        Place   UnitsSold
0         BMW        Delhi          95
1    Mercedes    Hyderabad          80
2  Lamborgini  Chandigarh          80

정리 및 추가 팁

이처럼 Glob 모듈과 read_excel() 메서드를 조합하면 수십 개의 Excel 파일도 몇 줄의 코드로 일괄 처리할 수 있습니다.

  • 다른 확장자 처리: 구버전 Excel 파일(.xls)까지 포함하려면 패턴을 *.xls*로 지정하면 됩니다.
  • 여러 시트가 있는 경우: sheet_name=None 옵션을 사용하면 파일 내 모든 시트를 사전(dict) 형태로 한 번에 읽을 수 있습니다.
  • DataFrame 병합: 읽어온 파일들을 하나로 합치고 싶다면 pd.concat()을 활용해 리스트에 담긴 DataFrame들을 결합할 수 있습니다.