2016-08-17 3 views
1

가 나는 40메가바이트의 dataframe 'dfScore'나는 .xlsx '에 드리고자이 .xlsx'에 있습니다. 코드가 수행 될 때 enter image description here ,쓰기 dataframe이 너무 느

writer = pandas.ExcelWriter('test.xlsx', engine='xlsxwriter') 
dfScore.to_excel(writer,sheet_name='Sheet1') 
writer.save() 

dfScore.to_excel 거의 한 시간을 코드, the code writer.save()를 또 한 시간 걸립니다. 이게 정상인가? 10 분 이내에 잡을 수있는 좋은 방법이 있습니까?

이미 stackoverflow에서 검색했지만 내 제안에 대한 제안이없는 것으로 보입니다.

+0

데이터 프레임의 크기는 4 백만 행 5 열입니다. csv에 글쓰기를 시도하고 시간을 비교하십시오. – Merlin

+0

현대 Excel 스프레드 시트는 1,048,576 행만 처리 할 수 ​​있습니다. –

+0

너무 느리지 않고 붙어 있습니다. 그것은 죽었다. 엑셀이 처리 할 수있는 것보다 많은 행을 작성하고 있습니다. 그리고 그것은 저명한 작가로 하여금 조용히 있지만 기적을 무기한으로 기다리게합니다. 결코 일어나지 않을 것입니다. 데이터 프레임을 비트로 분할하여 별도의 시트로 작성하거나 다른 형식 (예 : csv)을 사용하거나 통계 도구를 사용하여 데이터 프레임을 압축하여 Excel에 적합하게 만듭니다. – Kartik

답변

0

코드 dfScore.to_excel에 약 1 시간이 걸리며 코드 writer.save()가 또 한 시간 걸립니다. 이게 정상인가?

소리가 너무 높게 들립니다. XlsxWriter 테스트를 실행하여 1,000,000 개의 행과 5 개의 열을 작성했으며 ~ 100 초가 걸렸습니다. 시간은 테스트 머신의 CPU와 메모리에 따라 달라 지지만 1 시간은 36 배 느려지므로 적절하지 않습니다.

Excel 및 XlsxWriter는 워크 시트 당 1,048,576 개의 행만 지원하므로 효과적으로 데이터의 3/4을 버리고 시간을 낭비하게됩니다.

10 분 미만 걸릴 수있는 좋은 방법이 있습니까?

순수 XlsxWriter 프로그램의 경우 pypy이 좋은 속도를냅니다. 예를 들어 필자의 1,000,000 행 × 5 열의 테스트 케이스를 재실행하는 시간은 99.15 초에서 16.49 초 사이였다. 나는 팬더가 pypy와 함께 일하는지 알지 못한다.

0

왜 .csv로 저장하지 않으시겠습니까? 개인 랩톱에서 더 무거운 DataFrames로 작업했으며 xlsx에 글쓰기와 동일한 문제가있었습니다.

your_dataframe.to_csv('my_file.csv',encoding='utf-8',columns=list_of_dataframe_columns) 

다음 MS Excel 또는 온라인 변환기로 간단히 .xlsx로 변환 할 수 있습니다.