本文最初发布于 Towards Data Science 博客,并经原作者 Jeff Hale 授权,由 InfoQ 中文站翻译并分享。处理大数据可能会遇到不少挑战。没有人喜欢看到“内存不足”的错误提示,也没有人愿意长时间等待代码运行。甚至有些人可能不愿意使用 Python 来处理大数据问题。如果你面临这些问题,请不要气馁!本文将为你提供一些实用技巧,并介绍一些即将推出的库,帮助你更高效地处理大数据。同时,还将为你提供解决方案,解决那些无法适应内存限制的代码问题,所有这一切都会在 Python 中实现。
Python 是最流行的科学和数值计算编程语言。对于数据清洗和探索性数据分析而言,Pandas 是最受欢迎的工具。
利用 Python 和 Pandas,你可以处理比 Microsoft Excel 或 Google Sheets 更多的数据。虽然 SQL 数据库在数据存储方面非常流行,但 Python 生态系统在表达性、测试性、可再现性以及快速执行数据分析、统计和机器学习方面具有更多优势。
然而,如果你在本地工作,Pandas 能够处理的数据量将受到你机器的物理内存限制。而如果你在云端工作,更多的内存需求则意味着更高的成本。无论你的代码在哪里运行,你都希望操作尽可能快,以便高效完成任务。
首先,我们需要一些基础技巧,以确保代码既高效又简洁。以下是三个有助于编写干净、快速代码的良好实践:
applymap、iterrows、itertuples 等可能导致性能下降的方法。优先使用 replace 方法来替换数据,因为它效率更高。这些技巧不仅适用于小规模数据集,也能在大规模数据集中发挥作用。当然,对于非常庞大的数据集,这些技巧可能需要进一步调整。
如果你处理的是数百万行的数据,以下几点可以帮助你更高效地操作数据:
pd.eval 函数,可以显著提高操作速度。对于更大规模的数据集,以下方法可以进一步提升处理效率:
@numba.jit 装饰器,可以显著提高代码运行速度。以下几种方法是截至 2020 年年中较为前沿的技术,尽管可能存在配置和早期 API 的问题,但对于本地 CPU 工作环境来说,它们可能还不太适用。但这些方法值得关注:
在处理大数据时,还有一些额外的技巧可以帮助你优化代码性能和存储:
%time 或 %%timeit 命令来测量代码运行时间,以确保优化效果。希望本文提供的技巧和工具能够帮助你更高效地处理大数据。