Amateur Hour

Jupyter Notebook 的 Pandas 进度条

2019-05-19

在 Jupyter Notebook 里,经常会遇到数据集很大,某一步处理需要很久的情况。在这种情况下,有时很难区分 notebook 是挂了还是 hanging,或是还在正常运行。

我也被这个问题困扰了很久,最近找到了一个小工具很好的解决了这个问题,这个工具就是 tqdm。它其实是一个 python 通用的进度条工具,但最近对 pandas 做了专门的适配。下面举个栗子来看下怎么用,其实也非常简单。

假设现有一个巨大的数据集 df,数据集有个特征是时间特征,但目前是字符串而非 pandas 的 datetime 类型,我需要用 apply 方法处理。如果不需要进度条,那很简单:

1
2
3
4
5
6
# convert function
def convert_to_datetime(t):
return pd.to_datetime(t, format='%Y%m%d')

# deploy convert
df.Date.apply(convert_to_datetime)

现在通过引入 tqdm 包的方式,就可以看到进度条:

1
2
3
4
5
6
7
8
9
from tqdm import tqdm
tqdm.pandas()

# convert function
def convert_to_datetime(t):
return pd.to_datetime(t, format='%Y%m%d')

# deploy convert
df.Date.progress_apply(convert_to_datetime)

可以看到就是把 apply 方法改成了 profress_apply 而已,这样就可以看到如下的进度条效果了:

progress_bar

如果想要更好看的进度条,可以把引入 tqdm 包的代码改成 from tqdm.auto import tqdm

以上。

Tags: pandas