【问题标题】:Python: how to read .csv file in an efficient way?Python:如何以有效的方式读取 .csv 文件?
【发布时间】:2016-03-23 15:33:22
【问题描述】:

我必须阅读一些.csv 文件并进行一些操作。特别是我必须阅读.csv,其中数据存储在不同的列中。特别是数据具有以下格式:

myfile_0.csv

Time InfD  Com ComN
  0   3     4   0
  1   2     5   1

该文件包含许多条目,我必须为不同的parameters 这样做,这个过程真的很慢。以下是我必须完成的任务

for i in parameters:
    f = folder+'myfile_%d.csv'%i
    df = pd.read_csv(f)
    D  = df.InfD / V
    C =  (df.Com/df.ComN)  
    size = TC - len(C)
    if len(C) < TC:
        CC = np.lib.pad(C, (0,size), 'constant', constant_values=(1))
        DD = np.lib.pad(D, (0,size), 'constant', constant_values=(0))
        cf = CC*(1-DD)
    else:
        C = C[0:TC]
        D = D[0:TC]
        cf = C*(1-D)

我想知道是否有更有效的方法来解决同样的问题。

【问题讨论】:

  • 您将不得不为parameters 中的每个值读取整个文件。没有办法解决这个问题。
  • 尝试使用line_profiler 来识别瓶颈,然后优化这些行。另外,您现在的问题是是/否问题,答案是“是的,可能”。
  • 我在考虑使用 import csv 而不是 pandas 数据框
  • 如果您能提供更多信息,会更容易为您提供帮助。如果您有多个 TC 行,是否要对数据框进行切片?为什么?你为什么要填充CC 和DD?如果您将提供一个小的输入数据集(5-7 行),您希望如何处理数据的算法和预期的输出。我们可以尝试找到一种更快/更优化的方法来做到这一点。
  • 另一个问题:每个参数都有一个 CSV 文件 - 是否要在处理后合并它们?

标签: python csv pandas


【解决方案1】:

试试pythoncsv library

import csv
with open('myfile_0.csv', 'rb') as csvfile:
    reader = csv.reader(csvfile, delimiter=' ', quotechar='|')
    for row in reader:
        print ', '.join(row)

# output:
# Time, InfD, Com, ComN
# 0, 3, 4, 0
# 1, 2, 5, 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    • 1970-01-01
    • 2012-03-02
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    • 2017-06-29
    相关资源
    最近更新 更多