十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
本篇文章为大家展示了Python中怎么利用pandas实现一个筛选控件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
成都创新互联公司是创新、创意、研发型一体的综合型网站建设公司,自成立以来公司不断探索创新,始终坚持为客户提供满意周到的服务,在本地打下了良好的口碑,在过去的10年时间我们累计服务了上千家以及全国政企客户,如成都PE包装袋等企业单位,完善的项目管理流程,严格把控项目进度与质量监控加上过硬的技术实力获得客户的一致赞美。
透视表的灵活性
当我们拿到一份数据时,经常需要不断改变条件对数据进行观测,如下一份某水果的销售情况:
一行数据表示,某天(date)在某地区(region)此水果的某个品种(type)的价格(AveragePrice)和销量(Total Volume)
希望看到不同年份总销量前10的地区,以及各个品种的销量信息
由于需求需要汇总,Excel 中使用透视表是最好的方式:
过程不多说,这里值得注意的是,我们能通过最上方选择不同的年份,下方数据表能马上显示此年份总销量 top 10 的地区数据
用 Python 能快速简单做出这种效果吗?
我们将使用 ipywidgets 库,此工具最适合用在 Jupyter Notebook 上,假设你已经安装好 Jupyter Notebook ,打开你的 cmd,执行以下命令:
1pip install ipywidgets && jupyter nbextension enable --py widgetsnbextension
直到看到如下信息:
1Enabling notebook extension jupyter-js-widgets/extension...
2 - Validating: ok
现在重启你的 Jupyter Notebook 即可
注意:
如果你不知道怎么安装 Anaconda 或 Jupyter Notebook 的使用,可以查看我以前的文章
widgets 库用于完成各种小组件,他能生成网页内容,不仅仅在 Jupyter Notebook 使用,但本文只讲解在 Jupyter Notebook 上的使用
本文需要导入的库是这些:
首先使用 pandas 得到透视表的结果,这非常简单:
行3,4:为了突出可以变化的东西,这里定义2个变量
通过修改2个变量,我们能得到对应的结果数据
但是这远远不够,想看不同年份或不同 Top N 的结果,都需要修改代码。
我们稍微加工一下这个过程,定义一个函数:
现在好一些,但是改变条件仍然需要修改代码
简单加上一个装饰器即可:
行1:@wg.interact 是一个装饰器,打到我们的自定义函数上
其中每个命名参数为自定义函数上的参数
x_df=wg.fixed(df) ,表示 x_df 参数使用变量 df,并且这个参数是不需要改变的。因此界面上就没有这个变量的选项
year=[2015,2016,2017,2018] ,年份有4种选择,此时界面上看到一个 year 的下拉框供用户点选
topn=range(1,11) ,topn 有10种选择,界面同样可以看到下拉框
现在,我们只需要简单从下拉框选择条件值,下方的结果会马上刷新,这与 Excel 中的透视表一模一样
不过,大家都知道 Excel 中还能根据透视表制作透视图,这里我们同样可以制作出动态变化的图表:
行13,14:使用 display 方法,输出内容即可
上述内容就是Python中怎么利用pandas实现一个筛选控件,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。