返回
在 Pandas 中添加进度指示器以跟踪拆分-应用-合并操作
python
2024-03-03 04:22:33
在 Pandas 中使用进度指示器跟踪拆分-应用-合并操作
简介
当使用 Pandas 对海量数据集执行拆分-应用-合并操作时,了解操作的进度至关重要。在本文中,我们将探索如何在 Pandas 中添加进度指示器,以清晰了解操作的进展。
使用 tqdm 库
tqdm 库提供了一个易于使用的进度条,可与 Pandas 的 apply
函数结合使用。它在每个数据帧子集上显示一个进度条。
from tqdm import tqdm
df_users.groupby(['userID', 'requestDate']).progress_apply(feature_rollup)
使用 concurrent.futures 库
concurrent.futures 库支持并发执行任务。它允许并行化拆分-应用-合并操作,并使用 tqdm 库跟踪每个任务的进度。
import concurrent.futures
from tqdm import tqdm
def feature_rollup_wrapper(df):
return feature_rollup(df)
with concurrent.futures.ThreadPoolExecutor() as executor:
results = list(tqdm(executor.map(feature_rollup_wrapper, df_users.groupby(['userID', 'requestDate']))))
编写自定义进度指示器
如果你需要更高的灵活性,可以编写自己的进度指示器。实现一个自定义进度条类,并使用 Pandas 的 progress_apply
方法跟踪进度。
class MyProgressBar:
def __init__(self, total):
self.total = total
self.progress = 0
def update(self, progress):
self.progress = progress
print(f'{self.progress / self.total * 100:.2f}% complete')
df_users.groupby(['userID', 'requestDate']).progress_apply(feature_rollup, progress_bar=MyProgressBar(len(df_users)))
结论
通过使用上述方法之一,你可以轻松地在 Pandas 中添加进度指示器。这可以提高对操作进度的可视性,并在处理大型数据集时帮助调试问题。
常见问题解答
-
为什么要使用进度指示器?
答:进度指示器提供操作的实时反馈,帮助评估进度并识别瓶颈。 -
哪种方法最适合我?
答:tqdm 库是最简单的选择,而 concurrent.futures 库支持并发处理,对于大型数据集更有优势。自定义进度指示器提供最大的灵活性,但需要更多编码。 -
我可以同时使用多个进度指示器吗?
答:可以使用 tqdm 的嵌套进度条来跟踪多个操作。 -
如何自定义进度指示器的外观?
答:tqdm 库提供了各种选项来自定义进度条的外观,包括进度条样式、长度和颜色。 -
进度指示器会影响性能吗?
答:轻量级的进度指示器对性能的影响很小。但是,复杂的自定义进度指示器可能会增加开销。