用Python编写excel中大型数据集的输出
我有以下代码片段,可以帮助我在excel文件中编写输出。如果数据集没有那么大(例如,高达100K条记录),这段代码就可以正常工作 但是如果我的数据集相当大,比如1000万条记录,那么这段代码就不能很好地工作 那么,在这种情况下,我怎么能 将数据集拆分为几个较小的数据集,同时将它们全部上载到一个文件中。目标是 在一个文件中获取所有数据用Python编写excel中大型数据集的输出,excel,pandas,Excel,Pandas,我有以下代码片段,可以帮助我在excel文件中编写输出。如果数据集没有那么大(例如,高达100K条记录),这段代码就可以正常工作 但是如果我的数据集相当大,比如1000万条记录,那么这段代码就不能很好地工作 那么,在这种情况下,我怎么能 将数据集拆分为几个较小的数据集,同时将它们全部上载到一个文件中。目标是 在一个文件中获取所有数据 import time class WriteToExcel(object): def generate_report(self, output_da
import time
class WriteToExcel(object):
def generate_report(self, output_data):
timestr = time.strftime("%Y%m%d-%H%M%S")
file_path = '/some/path/'
file_name = 'file' + '_' + timestr + '.xlsx'
try:
output_data.to_excel(file_path+file_name, index=False)
print("File generated named " + file_name + " at the location " + file_path)
except IOError:
print("Opps, I think file path is incorrect.")
## how to invoke the method
nis = WriteToExcel()
nis.generate_report(some_data)
我只是把我在评论中写的解决方案重新写了一遍,作为记录
output_data.to_csv(file_path+file_name, index=False)
作为旁注,如果要在重新读取保存csv的位置时指定每列的dtype
,请在使用pd.read\u csv
时手动设置dtype
参数。下面是一个简短的例子:
import pandas as pd
df = pd.DataFrame().assign(a=range(3), b=list('abc'))
df.a = df.a.astype(str)
df.to_csv(filepath, index=False)
# str --> int conversion happens here, so manually prevent it if you want
df2 = pd.read_csv(filepath, dtype={'a': str})
>>> df2.dtypes
a object
b object
dtype: object
pandas
为未指定的每列推断dtype
,因此,如果需要在所有值从pandas
查看时保持str
格式,则需要在读取时手动设置
希望这能有所帮助。我只是重新编写了我在评论中写的解决方案,作为记录
output_data.to_csv(file_path+file_name, index=False)
作为旁注,如果要在重新读取保存csv的位置时指定每列的dtype
,请在使用pd.read\u csv
时手动设置dtype
参数。下面是一个简短的例子:
import pandas as pd
df = pd.DataFrame().assign(a=range(3), b=list('abc'))
df.a = df.a.astype(str)
df.to_csv(filepath, index=False)
# str --> int conversion happens here, so manually prevent it if you want
df2 = pd.read_csv(filepath, dtype={'a': str})
>>> df2.dtypes
a object
b object
dtype: object
pandas
为未指定的每列推断dtype
,因此,如果需要在所有值从pandas
查看时保持str
格式,则需要在读取时手动设置
希望这有帮助。是否将数据写入单个csv文件?创建一个1000万条记录的Excel文件没有多大用处,除非出于某种原因确实需要该格式。@TimWilliams是的,需要将数据写入一个csv文件中。有任何改进上述代码的建议吗?我不是Python爱好者,但似乎编写CSV文件需要不同的代码?
输出数据。到CSV(文件路径+文件名,索引=False)
?我相信excel的行数限制在100万左右@gyoza非常感谢。这是我一直在寻找的完美解决方案。谢谢。把数据写入一个csv文件?创建一个1000万条记录的Excel文件没有多大用处,除非出于某种原因确实需要该格式。@TimWilliams是的,需要将数据写入一个csv文件中。有任何改进上述代码的建议吗?我不是Python爱好者,但似乎编写CSV文件需要不同的代码?输出数据。到CSV(文件路径+文件名,索引=False)
?我相信excel的行数限制在100万左右@gyoza非常感谢。这是我一直在寻找的完美解决方案。谢谢。