판다에서 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
'programing' 카테고리의 다른 글
페이지 로드 시 jQuery Fancybox를 시작하는 방법은? (0) | 2023.09.09 |
---|---|
VBA에서 감가상각되지 않는 방법으로 SQL Server에 액세스하는 방법은 무엇입니까? (0) | 2023.09.09 |
MySQL/MariaDB 사용자 정의 변수가 grafana에서 작동하도록 하려면 어떻게 해야 합니까? (0) | 2023.09.09 |
mariaDB 서비스가 windows에 의해 중지됨 (0) | 2023.09.09 |
PowerShell 2.0 및 "'Param'이라는 용어는 cmdlet, 함수, 스크립트 파일 또는 작동 가능한 프로그램의 이름으로 인식되지 않습니다." (0) | 2023.09.09 |