【问题标题】:How to manipulate huge csv in python and know the execute time of a function before executing it?如何在python中操作巨大的csv并在执行之前知道函数的执行时间?
【发布时间】:2021-01-21 04:49:54
【问题描述】:

我需要操作超过 16 次的巨大 csv,我什至无法读取它,带有块参数。

所以我尝试了 1 go 和 300 个 Mo 样本,但循环时间太长了。

我在 300 MO 上试过这个:我通过 df["ID"] = ""

创建了一个新列
j = 0
for i in range(len(df["T"]) :
    if (df["N"][i+1] ==  df_base["N"][i]) and  (df["C"][i+1] ==  df["C"][i]) and  (df["S"][i+1] ==  df["S"][i]) and  (df["SL"][i+1] ==  df_base["SL"][i]) :
        df["ID"][i] = j
    else :
        df["ID"][i] = j
        j += 1

我这样做是为了得到 1 列来识别独特的事物,而不是 4 列来识别它。

但是太长了,我收到了警告:

"试图在数据帧的切片副本上设置一个值

请参阅文档中的注意事项: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy df_["ID"][i] = j"

我不介意这个错误,但2小时内的算法从未完成,所以我放弃了,因为我在工作,我不会停留2小时无所事事......

-那么如何知道函数在执行之前/不执行时的执行时间? - 我需要什么电脑来做这个......

这是一台带 8 go RAM 的笔记本电脑(7.88 go 可以使用,但由于其他应用程序对社会来说是强制性的),速度 2667 MHz,处理器 intel core i5-8365U CPU @ 1.60 GHz 有还有 Intel UHD Graphics 620,但我不知道这对您是否有用。 我使用 Jupyter Notebook,我尝试了 pycharm,但由于安全限制,我不能。

我的主要问题是加速这些进程,内存,处理器更重要的是什么?可以做什么?谢谢

谢谢。

【问题讨论】:

    标签: python pandas csv time


    【解决方案1】:

    如果您的文件重 16GO,最重要的是 RAM 您无法在笔记本电脑上升级处理器,但您可以添加 8Go 的 RAM

    在您的功能持续时间内,您可以使用:

    import time
    start = time.time()
    ...
    end = time.time()
    print(f"total execution time : {end - start}")
    

    【讨论】:

    • 嘿,谢谢,但我要求计算时间而不必运行该函数,这是要知道估计需要多长时间。最终更换计算机,但我认为不仅需要更多 RAM,还需要更多“速度计算能力”,但我不知道需要什么
    【解决方案2】:

    要测量经过的时间,最好使用timeit default_timer:

    from timeit import default_timer
    
    start = default_timer()
    # ... YOUR CODE
    end = default_timer()
    print(end - start) # Time in seconds
    

    您将需要更多内存来加载一个 16GB 的巨大 csv 文件。

    【讨论】:

    • 嘿,谢谢,但我要求计算时间而不必运行该函数,这是要知道估计需要多长时间。最终更换计算机,但我认为不仅需要更多 RAM,还需要更多“速度计算能力”,但我不知道需要什么——
    猜你喜欢
    • 2013-11-05
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    • 2014-03-15
    • 1970-01-01
    • 2014-12-20
    • 2017-08-28
    • 1970-01-01
    相关资源
    最近更新 更多