我正在开发一个需要处理大量数据(数百万行)的项目。我使用 Pandas 和 NumPy 库进行数据分析,但遇到了性能问题。我想从社区了解:
- 有哪些方法和技术可以优化 Pandas 中大型 DataFrame 的使用?
- 如何有效使用NumPy来加速数组运算?
- 是否存在可能对性能产生负面影响的常见错误?如何避免这些错误?
- 您建议使用哪些替代工具或库来在 Python 3.x 中处理大数据?
我正在开发一个需要处理大量数据(数百万行)的项目。我使用 Pandas 和 NumPy 库进行数据分析,但遇到了性能问题。我想从社区了解:
无需寻找方法和技术——就可以使用
Dask。Dask 数据框只是许多 pandas 数据框的集合。但您不需要了解详细信息;您可以像使用单个 pandas 数据框一样使用 Dask 数据框。
与 pandas 相同的 API。
大尺寸:在计算机上以 100 GiB 运行,或在集群上以 100 TiB 运行。
易于使用:纯Python,通过
pip或进行安装conda。dask.array用于处理巨大的numpy.array.请参阅距达斯克 10 分钟路程。
为了优化,你首先需要充分理解这个过程:你到底在做什么。如果没有对您正在做的事情的各个阶段进行描述,实际上并不清楚要优化什么。
Pandas- 这不是速度的问题,而是便利的问题。对于处理大数据来说,所有这些便利只是一个缺点。索引、在列中包含混合或复杂数据的能力等等 - 所有这些都会减慢处理速度。如果你想要快速,请使用干净的Numpy,那里没有任何多余的东西,只有相同类型数据的数组尽快处理。有替代方案
Pandas,但它们不应被视为解决问题的简单方法。您仍然需要能够正确使用所有这些,并为此拥有足够的资源。例子:Polars,Vaex,PySpark, 在另一个答案中已经提到过Dask。从简单开始。这种优化并不
Kaggle流行。您确定列中的范围和数据类型,并为此列选择该列适合的最“窄”数据类型,而不是默认使用的数据类型。例如,uint8。对于非常大的数据,保存列的数据类型可以显着节省内存使用量和处理时间。在某些情况下,它可以提供帮助
Numba,但您还需要知道如何使用它。在某些情况下,由于并行性和各种计算优化,它可以将速度提高一个数量级。