Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Python编写excel中大型数据集的输出_Excel_Pandas - Fatal编程技术网

用Python编写excel中大型数据集的输出

用Python编写excel中大型数据集的输出,excel,pandas,Excel,Pandas,我有以下代码片段,可以帮助我在excel文件中编写输出。如果数据集没有那么大(例如,高达100K条记录),这段代码就可以正常工作 但是如果我的数据集相当大,比如1000万条记录,那么这段代码就不能很好地工作 那么,在这种情况下,我怎么能 将数据集拆分为几个较小的数据集,同时将它们全部上载到一个文件中。目标是 在一个文件中获取所有数据 import time class WriteToExcel(object): def generate_report(self, output_da

我有以下代码片段,可以帮助我在excel文件中编写输出。如果数据集没有那么大(例如,高达100K条记录),这段代码就可以正常工作

但是如果我的数据集相当大,比如1000万条记录,那么这段代码就不能很好地工作

那么,在这种情况下,我怎么能 将数据集拆分为几个较小的数据集,同时将它们全部上载到一个文件中。目标是 在一个文件中获取所有数据

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非常感谢。这是我一直在寻找的完美解决方案。谢谢。