pandas - 使用 jupyterlab 在 Jupiter notebook 中使用 read_csv 时如何使用 tqdm 显示进度条
问题描述
我想使用 read_csv 和 pandas 读取一个巨大的 csv,并且我想显示一个进度条,因为它花费的时间太长。有没有办法做到这一点?我刚刚看到了带有循环的示例。
解决方案
是的。您可以滥用任何接受可调用的参数并在每一行调用它:
from tqdm.auto import tqdm
with tqdm() as bar:
# do not skip any of the rows, but update the progress bar instead
pd.read_csv('data.csv', skiprows=lambda x: bar.update(1) and False)
如果你使用Linux,你可以获得总行数以获得更有意义的进度条:
from tqdm.auto import tqdm
lines_number = !cat 'data.csv' | wc -l
with tqdm(total=int(lines_number[0])) as bar:
pd.read_csv('data.csv', skiprows=lambda x: bar.update(1) and False)
但是如果你不喜欢 for 循环,你也可能不喜欢上下文管理器。你可以逃脱:
def none_but_please_show_progress_bar(*args, **kwargs):
bar = tqdm(*args, **kwargs)
def checker(x):
bar.update(1)
return False
return checker
pd.read_csv('data.csv', skiprows=none_but_please_show_progress_bar())
但我发现它不太稳定 - 我建议使用基于上下文管理器的方法。
推荐阅读
- reactjs - ReactJS - 警告:组件正在更改要控制的文本类型的不受控制的输入 - 编辑功能
- command-line - 将灰度图像转换为具有可定义阈值的 1 位黑/白,保持透明度?
- computer-vision - 是否有任何方法可以在个人单类数据集上注释或标记多个人的图像。对于 YOLOv3?
- html - 如何在查找 id 的同时等待网页
- python - TypeError:'bool' 对象没有回文的属性 '__getitem__'
- powershell - 使用 Powershell 获取 DHCP 客户端信息
- c# - 在邮递员中上传像表单数据这样的文件
- push-notification - Web 通知如何知道将通知发送到的正确设备
- c - 为什么我在 c 中收到“来自 abort(3) (SIGABRT) 的中止信号”运行时错误?
- jquery - 让 jQuery UI 可选择作为网格和表格中的列表