【问题标题】:How quantify the reading progress of large CSV files through pd.read_csv and chunks?如何通过 pd.read_csv 和 chunks 量化大 CSV 文件的读取进度?
【发布时间】:2020-10-26 03:14:32
【问题描述】:

类比/例子

假设我有一个列表:

test_list = [2, 5, 3, 6]
number_of_elements = len(test_list)

然后enumerate 可以与number_of_elements 一起使用来跟踪循环的进度,如下所示:

for j, element in enumerate(test_list):
    do something
    print('completed {} out of {}'.format(j, number_of_elements))

问题

大csv文件可以读取如下图(reference answer):

chunksize = 10 ** 6
for chunk in pd.read_csv(filename, chunksize=chunksize):
    process(chunk)

如何跟踪这个循环的进度?

尝试

file_chunks = pd.read_csv(file_name, chunksize=100000)
number_of_chunks = len(file_chunks)
for j, chunk in enumerate(pd.read_csv(file_name, chunksize=100000)):
    print(j, number_of_chunks)

以下是错误:

TypeError: object of type 'TextFileReader' has no len()

【问题讨论】:

    标签: python pandas dataframe csv chunks


    【解决方案1】:

    您几乎拥有它,唯一的问题是len 在阅读之前没有简单的方法知道文件有多大。

    如果你这样做了:

    file_chunks = pd.read_csv(file_name, chunksize=100000)
    
    for i, chunk in enumerate(file_chunks):
        print(i)
    

    这样会行。

    另外,这对于Dask(一个模仿很多大文件的pandas的python库)来说是一个很好的用例

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多