【问题标题】:Reading a CSV file in Python for Data Science - Optimization在 Python 中为数据科学读取 CSV 文件 - 优化
【发布时间】:2018-01-12 02:22:57
【问题描述】:

我是 python 和数据科学的新手,我想知道处理我的 csv 文件的最佳方法是什么。 我有一个 50.000 行和 2.000 列的 csv - 30.000Kb。 到目前为止,我的 python 程序并没有花很长时间阅读它;但我担心消耗这么多内存并使我的程序变慢。

目前我正在使用 pandas 读取文件:

pd.read_csv( tf.gfile.Open(pathA), sep=None, skipinitialspace=True,  engine="python")

我的问题是:

  1. 我应该实施优化技术还是我的 csv 不是那么大?
  2. 我应该使用什么样的技术?

    • 我读到我可以像这样分批阅读:with open(filename, 'rb') as f ...
    • 我应该批量读取并将数据保存在内存中还是
    • 我是否应该始终从文件中读取而不将数据保存在内存中

感谢您的回答 =)

【问题讨论】:

  • 问题有点模糊...这取决于您的需求,文件的尺寸等...
  • 您可能需要查看dask framework。我经常阅读超过 100 mb 的 csv 文件(虽然列数更少。这没有任何问题。一般来说:内存是可以使用的,所以如果你没有遇到任何问题,请使用该内存;)跨度>

标签: python pandas csv tensorflow data-science


【解决方案1】:

如果读取时间对您来说没问题,那么我不会担心过早的优化。

您可以在 read_csv 方法中尝试一些内置参数:chunksizeiteratorlowmemory

但我个人认为文件大小不会过大。我已经使用 2015 款 MacBook 读取了数十万行的文件。

【讨论】:

  • 谢谢,非常有用的信息 =) 我只是想了解更多关于 python 的最佳实践并提高我的应用程序的整体性能。阅读不是问题(目前);但是当我开始训练我的模型时,它变得很慢;但这当然可能取决于许多其他参数...
  • @DavidVela 这是一个非常有道理的担忧。如果训练你的模型是让它变慢的原因,那可能是一个更好的开始寻找的地方。如果可以在 Python 中给出任何一般性建议,那就是使用高效的底层 C 代码而不是 Python 代码。 IE。尝试在 pandas DataFrame 中进行尽可能多的计算,或者使用 numpys 矩阵/向量代数,而不是在慢速 Python 代码中使用大循环。
【解决方案2】:

添加到@phil-sheard 的答案。使用 Python 代码分块读取会使代码更加依赖慢速 Python 代码,而 read_csv 是用 C 代码实现的,速度更快。

如果您确实想优化它,可能需要在 Pandas read_csv 的设置中进行优化,这已经比您在周围的 Python 代码中构建的要高效得多。

如果没有必要也不要优化,您似乎正在处理一个非常小的表。这里没有理由进行微优化。

【讨论】:

  • 谢谢 =) 非常好的补充,很高兴知道我已经在使用高效的通话。
猜你喜欢
  • 2016-02-19
  • 1970-01-01
  • 1970-01-01
  • 2021-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-25
相关资源
最近更新 更多