参数化并运行jupyter和interact笔记本

papermill的Python项目详细描述


Travis Build StatusAzure Build StatusimageDocumentation StatusbadgebadgeCode style: black

paperpill是一个用于参数化、执行和分析的工具 Jupyter笔记本。

Paperpill允许您:

  • 参数化笔记本
  • 执行笔记本

这为笔记本的使用开辟了新的机会。为了 示例:

  • 也许你有一份财务报告,你想和它一起运行 在一个月的第一天或最后一天或 年初或年末,使用参数执行此任务 更容易的。
  • 是否要运行笔记本,并根据其结果选择 下一个要运行的特定笔记本?现在可以通过编程方式 执行工作流而不必从 手动从笔记本到笔记本。

安装

从命令行:

pip install papermill

对于所有可选的IO依赖项,可以指定单个捆绑包 比如s3,或者azure——或者使用all

pip install papermill[all]

python版本支持

这个库将支持Python2.7和3.5+,直到2020年Python2的生命周期结束。在这之后,Python2支持将停止,并且只维护3.x版本。

用法

参数化笔记本

要参数化您的笔记本,请使用标记parameters指定一个单元格。

enable parameters in Jupyter

paperpill查找parameters单元格,并将此单元格视为执行时传入的参数的默认值。paperpill将添加一个新的带有输入参数的标记为injected-parameters的单元格,以便覆盖parameters中的值。如果没有用parameters标记细胞,则注入的细胞将被插入笔记本的顶部。

另外,如果通过papermill重新运行笔记本,它将重用先前运行的injected-parameters单元格。在这种情况下,paperpill将用新运行的输入替换旧的injected-parameters单元。

image

执行笔记本

使用参数执行笔记本的两种方法是:(1)到 python api和(2)通过命令行接口。

通过python api执行
import papermill as pm

pm.execute_notebook(
   'path/to/input.ipynb',
   'path/to/output.ipynb',
   parameters = dict(alpha=0.6, ratio=0.1)
)

通过cli执行

下面是一个本地笔记本被执行并输出到 亚马逊S3账户:

$ papermill local/input.ipynb s3://bkt/output.ipynb -p alpha 0.6 -p l1_ratio 0.1

注意: 如果使用多个aws帐户,并且有properly configured your AWS credentials,那么可以通过在命令行设置AWS_PROFILE环境变量来指定要使用的帐户。例如:

$ AWS_PROFILE=dev_account papermill local/input.ipynb s3://bkt/output.ipynb -p alpha 0.6 -p l1_ratio 0.1

在上面的例子中,设置了两个参数:使用-p设置alphal1_ratio(也可以使用--parameters)。看起来像布尔值或数字的参数值将被解释为布尔值或数字。以下是用户设置参数的不同方式:

$ papermill local/input.ipynb s3://bkt/output.ipynb -r version 1.0

使用-r--parameters_raw,用户可以逐个设置参数。但是,与-p不同的是,该参数将保持字符串,即使它可能被解释为数字或布尔值。

$ papermill local/input.ipynb s3://bkt/output.ipynb -f parameters.yaml

使用-f--parameters_file,用户可以提供一个yaml文件,从中读取参数值。

$ papermill local/input.ipynb s3://bkt/output.ipynb -y "
alpha: 0.6
l1_ratio: 0.1"

使用-y--parameters_yaml,用户可以直接提供包含参数值的yaml字符串。

$ papermill local/input.ipynb s3://bkt/output.ipynb -b YWxwaGE6IDAuNgpsMV9yYXRpbzogMC4xCg==

使用-b--parameters_base64,用户可以提供包含参数值的base64编码的yaml字符串。

当使用yaml通过-y-b-f传递参数时,参数值可以是数组或字典:

$ papermill local/input.ipynb s3://bkt/output.ipynb -y "
x:
    - 0.0
    - 1.0
    - 2.0
    - 3.0
linear_function:
    slope: 3.0
    intercept: 1.0"

支持的名称处理程序

paperpill在执行期间支持以下输入和输出路径的名称处理程序:

开发指南

读取CONTRIBUTING.mdf或者关于如何设置本地开发环境并将代码更改回papermill的指南。

有关开发指南,请查看DEVELOPMENT_GUIDE.md文件。这将告诉您如何对代码基进行特定的添加。

文档

我们主办Papermill documentation 准备好了。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
与ReentrantLock相比,java ReentrantReadWriteLock的性能非常差   java如何使用Maven Android Studio正确导入?   安卓将ADB添加到我的Java PC应用程序   反射Java getDeclaredConstructor失败,来自JUnit的NoSuchMethodException   JSP上siteedit标记库的java替代   JavaSpring环境概要文件和JPA   java中是否有一个类似于StringBuilder的类,唯一的区别是它具有固定的长度?   JavaMathContext。小数点32 vs MathContext。小数点64,使用哪一个,为什么?   java使用spring在Ibm Websphere MQ中实现重试逻辑   java调用SpriteBatch。开始()和结束()   java有一种从文本中读取文本的方法。文件,并将其设置为pom中的maven属性。xml专家?   java让sitemesh使用struts2   Java Swing:在现有窗口上定位对话框   使用带有MemSql的JPA本机查询的java Select json列