我有一个生产报告的Jupyter笔记本。该报告是对大型数据库的给定变量(数以百计的行的数百个变量)的单变量分析。
我的笔记本的结构如下:
report.ipynb
read database
variable_of_interest = 'var1'
plots & html tables for 'var1'
我已经能够通过控制台(而不是笔记本)使用nb convert将笔记本转换为html文件,并隐藏代码单元。
我将有兴趣为我的所有变量:'var1'...'varn'批量生成此报告。我遇到了一些困难,主要是建立一个循环,该循环将更改给定笔记本中的目标变量,然后运行并转换它。 (我的第一种方法是让笔记本在每次执行时都更新变量名,但是我仍然需要某种循环来多次运行它,并且处理特定变量不是很实际)。
更准确地说,我需要:
从控制台或另一个笔记本运行.py脚本来运行这种循环的过程是什么?看起来像什么?
答案 0 :(得分:1)
papermill + nbconvert是必经之路。 Papermill使您可以对笔记本进行参数设置,然后可以使用nbconvert将其转换为HTML。
如果笔记本之间有复杂的依赖关系,建议您使用ploomber(免责声明:我是作者)。它处理任务之间的依赖性,并透明地使用papermill和nbconvert来执行和转换笔记本。
示例:
dag = DAG()
get_data = PythonCallable(_get_data,
product=File('raw.parquet'),
dag=dag)
clean_data = PythonCallable(_clean_data,
product=File('clean.parquet'),
dag=dag)
# execute notebook and convert to HTML
report = NotebookRunner(report,
product=File('report.html'),
dag=dag,
kernelspec_name='python3',
ext_in='py')
# run get_data, then clean_data, then generate report
get_data >> clean_data >> report
dag.build()