前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >懂Excel轻松入门Python数据分析包pandas(29):轻松做出筛选控件

懂Excel轻松入门Python数据分析包pandas(29):轻松做出筛选控件

作者头像
咋咋
发布2021-09-01 14:49:53
8990
发布2021-09-01 14:49:53
举报
文章被收录于专栏:数据大宇宙数据大宇宙

经常听别人说 Python 在数据领域有多厉害,结果学了很长时间,连数据处理都麻烦得要死。后来才发现,原来不是 Python 数据处理厉害,而是他有数据分析神器—— pandas

前言

本系列介绍了许多类比 Excel 的 pandas 操作,确实他们都能很好对应起来,这是因为 pandas 本身是以行列表作为核心概念,比如说 Excel 中的透视表,在 pandas 中就有一一对应,本系列已经讲解过。

Excel 的操作便利性在于只需要鼠标点击就可以完成操作,这对于查看数据是非常方便。

难道我们用 Python 就不能做到吗?本文将结合一些工具,使得你的 pandas 处理过程变得灵活动态。


透视表的灵活性

当我们拿到一份数据时,经常需要不断改变条件对数据进行观测,如下一份某水果的销售情况:

  • 一行数据表示,某天(date)在某地区(region)此水果的某个品种(type)的价格(AveragePrice)和销量(Total Volume)
  • 希望看到不同年份总销量前10的地区,以及各个品种的销量信息

由于需求需要汇总,Excel 中使用透视表是最好的方式:

  • 过程不多说,这里值得注意的是,我们能通过最上方选择不同的年份,下方数据表能马上显示此年份总销量 top 10 的地区数据

用 Python 能快速简单做出这种效果吗?


小组件

我们将使用 ipywidgets 库,此工具最适合用在 Jupyter Notebook 上,假设你已经安装好 Jupyter Notebook ,打开你的 cmd,执行以下命令:

代码语言:javascript
复制
pip install ipywidgets && jupyter nbextension enable --py widgetsnbextension

直到看到如下信息:

代码语言:javascript
复制
Enabling notebook extension jupyter-js-widgets/extension...
      - Validating: ok

现在重启你的 Jupyter Notebook 即可

注意:

  • 如果你不知道怎么安装 Anaconda 或 Jupyter Notebook 的使用,可以查看我以前的文章
  • widgets 库用于完成各种小组件,他能生成网页内容,不仅仅在 Jupyter Notebook 使用,但本文只讲解在 Jupyter Notebook 上的使用

修饰你的 pandas 处理

本文需要导入的库是这些:

首先使用 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 数据探索和数据可视化方面,能做出很多有趣的事情,敬请关注!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据大宇宙 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 透视表的灵活性
  • 小组件
  • 修饰你的 pandas 处理
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档