programing

판다에서 read_excel을 사용하여 공정 속도를 높이는 방법은?

lastmoon 2023. 9. 9. 10:07
반응형

판다에서 read_excel을 사용하여 공정 속도를 높이는 방법은?

모든 시트를 하나의 엑셀 파일로 처리하려면 pd.read_excel을 사용해야 합니다.
하지만 대부분의 경우 시트 이름을 몰랐습니다.
그래서 나는 이것을 엑셀로 몇 장을 보는지 판단할 때 사용합니다.

i_sheet_count=0
i=0
try:
  df.read_excel('/tmp/1.xlsx',sheetname=i)
  i_sheet_count+=1
  i+=1
else:
  i+=1
print(i_sheet_count)

그 과정 중에, 저는 그 과정이 꽤 천천히 진행이 상당히 느리다는 것을 발견했습니다.
그러면 read_excel은 속도를 향상시키기 위해 제한된 행만 읽을 수 있습니까?
나는 를 저었지만 일을 하지않았습니다.아직 느리지만..

추측 없이 모든 워크시트 읽기

사용하다sheet_name = None의론.pd.read_excel. 이렇게 하면 모든 워크시트가 데이터 프레임 사전으로 읽힙니다.예를 들어,

dfs = pd.read_excel('file.xlsx', sheet_name=None)

# access 'Sheet1' worksheet
res = dfs['Sheet1']

행 또는 열 수 제한

사용가능parse_cols그리고.skip_footer열 및/또는 행 수를 제한하는 인수.이렇게 하면 읽기 시간이 단축되고, 다음과 같이 작동합니다.sheet_name = None.

예를 들어, 다음은 처음 3개의 열을 읽고 워크시트에 행이 100개 있으면 처음 20개만 읽습니다.

df = pd.read_excel('file.xlsx', sheet_name=None, parse_cols='A:C', skip_footer=80)

워크시트별 논리를 적용하려면 sheet_name을(를) 추출하면 됩니다.

sheet_names = pd.ExcelFile('file.xlsx', on_demand=True).sheet_names

dfs = {}
for sheet in sheet_names:
    dfs[sheet] = pd.read_excel('file.xlsx', sheet)

성능향상

Excel 파일을 Pandas로 읽는 것은 당연히 다른 옵션(CSV, Pickle, HDF5)에 비해 느립니다.성능 향상을 원한다면 이러한 다른 형식을 고려해 볼 것을 강력히 제안합니다.

예를 들어, 한 가지 방법은 VBA 스크립트를 사용하여 Excel 워크시트를 CSV 파일로 변환한 후 다음 을 사용하는 입니다.pd.read_csv.

편집 02 11월: 정답sheetname로.sheet_name

나는 많은 시트에 뛰어났습니다.저는 상태가 보이는 시트만 원했습니다.당신이 그것에 대해 모르더라도 괜찮습니다.하지만 당신이 엑셀에서 당신의 시트 이름을 읽고 싶다면 이 코드를 사용하면 됩니다.약 20장의 이름을 읽는 데 평균 3초가 걸렸습니다.이것을 얻기 위해서는 꽤 많은 시도가 필요합니다.

file_name = r'C:\Users\xyz.xlsx'
File_sheet_list = []
workbookObj = pd.ExcelFile(file_name)
LenOfWorkBook = len(workbookObj.book.worksheets)
idx = 0
for idx in range(0, LenOfWorkBook ):
  if workbookObj.book.worksheets[idx].sheet_state == "visible":
    File_sheet_list.append(workbookObj.book.worksheets[idx].title)

언급URL : https://stackoverflow.com/questions/50695778/how-to-increase-process-speed-using-read-excel-in-pandas

반응형