python 动态加载代码_Python动态交互系列(01),不用改代码,点点按钮就可以完成...

c89e6146-a70b-4f34-8ec1-2e74e868c699

一个专栏让从入门到精通 pandas ,里面还有许多实战数据处理、分析案例:

前言

Python 配合上各式各样的数据相关库,让我们轻松做出各种自动化效果,但是,有时候我们也会羡慕那种界面的操作,毕竟大家都喜欢点点鼠标就能让自动化跑起来。

本系列将重点讲解如何在 Jupyter Notebook 上如何用最小的代码,快速为你的自动化代码加上实用的界面。

我们将从一个加载数据的场景开始我们的学习之旅!

本系列大部分情况下都是基于 ipywidgets 在 Jupyter Notebook 下工作,请确保安装 ipywidgets 库与相应的 jp 插件。

执行如下命令即可完成安装:

pip install ipywidgets && jupyter nbextension enable --py widgetsnbextension

直到看到如下信息:

Enabling notebook extension jupyter-js-widgets/extension...

- Validating: ok

现在重启你的 Jupyter Notebook 即可。

本文用到的包如下:

import pandas as pd

import numpy as np

import ipywidgets as wg

from IPython.display import display

67746065-4202-4a5e-8d29-cb3ee6f13fc8

可以不修改代码吗

如果你经常需要从各种文件加载你的数据,那么下面的代码真的是司空见惯:

19747f65c20d4dafa6f76bb743dcd052

但是,你不可能每天都从同一个文件中加载数据,那么明天该怎么执行这段自动化脚本?

没错!就是修改代码中的文件路径。

这勉强可以接受,但是能有更好的方式吗?

先从简单的来,比如在一个文本框中输入文件名字与工作表名字,点击加载按钮即可运行你的代码:

ea6a3c54bd0642fa80ba6cbb705d6c31

填入文件名字

首先,把我们的执行逻辑定义到一个函数中:

8cccfaebb91e40778b3f99d76550a422

函数非常简单,只是把其中的文件路径和工作表名字提取作为参数

注意2个参数都给了一个默认的空字符串值

然后,为这个函数打上装饰器,并执行:

189f77a39e73402d99fbd3e0a8e89288

行1:@wg.xxxx 是某个 ipywidgets 的装饰器,为什么这里是 @wg ? 这是因为一开始我们的导入语句是 import ipywidgets as wg ,这是我们定义的别名

@wg.interact_manual() ,是手动交互的意思,这情况下,他会根据目标函数的各个参数的默认值类型,判断分别应该使用哪种控件

比如,我们的函数的2个参数都是字符串类型,因此他会自动生成2个文本框

在所有交互控件的下方,会生成一个按钮

此时,我们往2个文本框输入相应的信息,点击最后的按钮即可加载数据:

e120bb82dcd64ee48922aa07bf32884f

如果可以直接让我选择当前目录下的所有文件名,那就太好了!

b3c230c1-1f7d-4ea6-9eec-ef9e4fd32eed

选择一个文件

刚刚说过,ipywidgets 的装饰器能自动根据参数默认值的类型生成适合的交互控件,这次,我们读取当前目录下的所有 excel 文件路径的列表,看看会有啥效果:

2e24ba54ca254a94be12f1746787639d

行1,2:使用 pathlib2 得到当前目录的所有 xlsx 后缀的文件列表

行5:把上一步得到的文件列表,直接赋值给函数的参数 file 的默认值

现在看到,第一个交互控件最右边有一个小下标,很明显,这是一个下拉选择框

ea9489fe0ae3412f84326dc487bf1ea2

点击后,可以选择文件

还有更多

那么,是不是连工作表名字也可以根据选择的文件名字,转为下拉选择框?

5d09c41eefcf4bf2ad59f4f17467a0de

这会有一些难度,本系列之后有详细的讲解

现在只是加载了数据,如果可以输入查询条件,过滤数据,那就太好了!

虽然要求越来越过分,但是也是可以的。

如下是可以选择某个日期,并且加载数据中小于这个日期的记录:

70093ba52d11488dba8f29ff0fb121d2

如果你觉得这还不够好,我们还可以结合 pandas 的 query 方法,现在改变筛选条件,不再需要修改代码了:

40de4e4a67b549fd8597862fcdf6431f

本系列将教会你这些,记得关注噢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值