遇到一个需要将CSV文件转换为excel文件的问题。因为是大数据(超过100万行*100列),所以多数pthon自带的转换方法都不可行。如:pandas,8G内存的电脑环境,只能处理50万行的数据,而且速度太慢。
使用dask.dataframe读取csv文件,然后遍历数据,同时用xlsxwriter写入excel。这种方法的速度比pandas自带的转换函数要快一些。
#!/usr/bin/python3
# -*- coding:utf-8 -*-
import xlsxwriter
import dask.dataframe as dd
if __name__ == '__main__':
dataCsv = dd.read_csv("test-2013.csv",encoding='utf-8')
workbook = xlsxwriter.Workbook('demo.xlsx', {'constant_memory': True})
workbook.allow_zip64 = True
worksheet = workbook.add_worksheet()
headlist = list(dataCsv.head(0))
worksheet.write_row(f"A1",headlist);
rowNum = 2
for index,row in dataCsv.iterrows():
worksheet.write_row(f"A{rowNum}",row);
rowNum +=1
#if(rowNum > 500000):
# break
workbook.close()