我需要使用pandas分析140MB的Excel文件。问题是,如果我打开这个文件作为xlsx,只需要阅读它就需要5分钟的python。我试图手动将此文件保存为csv然后需要Python大约一秒钟才能打开并阅读它!有不同的2012-2014解决方案,为什么Python 3不能真正发挥作用。
有人可以建议如何快速将文件'C:\master_file.xlsx'
转换为'C:\master_file.csv'
吗?
答案 0 :(得分:2)
有一个项目旨在处理称为“行”的数据时非常pythonic。不过,它依赖于xlsx的“openpyxl”。我不知道这是否会比熊猫更快,但无论如何:
$ pip install rows openpyxl
和
import rows
data = rows.import_from_xlsx("my_file.xlsx")
rows.export_to_csv(data, open("my_file.csv", "wb"))
答案 1 :(得分:1)
最快速的想法:
作为额外的好处,您可以在将数据保存到csv之前清理数据。
import pandas as pd
df = pd.read_excel('C:\master_file.xlsx', header=0) #, sheetname='<your sheet>'
df.to_csv('C:\master_file.csv', index=False, quotechar="'")
在某些时候,处理大量数据将花费大量时间。只是生活中的一个事实。不过,如果这是一个问题,那么很适合寻找选择。
答案 2 :(得分:1)
在openpyxl中使用只读模式。以下内容应该有效。
import csv
import openpyxl
wb = load_workbook("myfile.xlsx", read_only=True)
ws = wb['sheetname']
with open("myfile.csv", "wb") as out:
writer = csv.writer(out)
for row in ws:
values = (cell.value for cell in row)
writer.writerow(values)
答案 3 :(得分:0)
我遇到了与您相同的问题。熊猫和openpyxl对我不起作用。
我遇到了这个解决方案,对我来说非常有用:
import win32com.client
xl=win32com.client.Dispatch("Excel.Application")
xl.DisplayAlerts = False
xl.Workbooks.Open(Filename=your_file_path,ReadOnly=1)
wb = xl.Workbooks(1)
wb.SaveAs(Filename='new_file.csv', FileFormat='6') #6 means csv
wb.Close(False)
xl.Application.Quit()
wb=None
xl=None
在这里,您可以通过Excel将文件转换为csv。我尝试过的所有其他方式都拒绝工作。