我有一些 Pandas 数据框,每个数据框有几百万行。数据帧包含包含 JSON 对象的列,每个列有 100 多个字段。我有一组 24 个函数,它们在数据帧上按顺序运行、处理 JSON(例如,计算 JSON 中两个字段之间的一些字符串距离)并返回添加了一些新字段的 JSON。执行完所有 24 个函数后,我得到一个最终的 JSON,然后它就可以用于我的目的。
我想知道加快该数据集性能的最佳方法是什么。我考虑并阅读了一些事情:
您正在寻求建议,这不是提供一般建议的最佳网站,但尽管如此,我会尝试指出一些事情。
您已经考虑过的想法不会有帮助 - Cython、Numba 和线程都无法解决主要问题 - 数据格式不利于数据操作的性能。
我建议您首先“解压”存储在数据帧的列中的 JSON。优选地,JSON 的每个字段(强制或可选 - 在此阶段处理空值)最终成为数据帧的一列。如果存在嵌套字典,您可能需要考虑拆分数据帧(特别是如果 24 个函数在单独的嵌套 JSON 字典中单独工作)。或者,您应该努力扁平化 JSON。
转换为可为您提供最佳性能的数据格式。 JSON 以“文本”格式存储所有数据。数字最好以二进制格式使用。您可以使用 df['col'].astype(...)
对您怀疑应该转换的列逐列执行此操作(
也适用于整个数据框)。