懂Excel輕鬆入門Python數據分析包pandas(29):輕鬆做出篩選控件


懂Excel輕鬆入門Python數據分析包pandas(29):輕鬆做出篩選控件



此係列文章收錄在公眾號中:數據大宇宙 > 數據處理 > E-pd

轉發本文並私信我"python",即可獲得Python資料以及更多系列文章(持續更新的)

經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。後來才發現,原來不是 Python 數據處理厲害,而是他有數據分析神器—— pandas

前言

本系列介紹了許多類比 Excel 的 pandas 操作,確實他們都能很好對應起來,這是因為 pandas 本身是以行列表作為核心概念,比如說 Excel 中的透視表,在 pandas 中就有一一對應,本系列已經講解過。

Excel 的操作便利性在於只需要鼠標點擊就可以完成操作,這對於查看數據是非常方便。

難道我們用 Python 就不能做到嗎?本文將結合一些工具,使得你的 pandas 處理過程變得靈活動態。


透視表的靈活性

當我們拿到一份數據時,經常需要不斷改變條件對數據進行觀測,如下一份某水果的銷售情況:

懂Excel輕鬆入門Python數據分析包pandas(29):輕鬆做出篩選控件

  • 一行數據表示,某天(date)在某地區(region)此水果的某個品種(type)的價格(AveragePrice)和銷量(Total Volume)
  • 希望看到不同年份總銷量前10的地區,以及各個品種的銷量信息

由於需求需要彙總,Excel 中使用透視表是最好的方式:

懂Excel輕鬆入門Python數據分析包pandas(29):輕鬆做出篩選控件

  • 過程不多說,這裡值得注意的是,我們能通過最上方選擇不同的年份,下方數據表能馬上顯示此年份總銷量 top 10 的地區數據

用 Python 能快速簡單做出這種效果嗎?


小組件

我們將使用 ipywidgets 庫,此工具最適合用在 Jupyter Notebook 上,假設你已經安裝好 Jupyter Notebook ,打開你的 cmd,執行以下命令:

<code>pip install ipywidgets && jupyter nbextension enable --py widgetsnbextension
/<code>

直到看到如下信息:

<code>Enabling notebook extension jupyter-js-widgets/extension...
- Validating: ok
/<code>

現在重啟你的 Jupyter Notebook 即可

注意:

  • 如果你不知道怎麼安裝 Anaconda 或 Jupyter Notebook 的使用,可以查看我以前的文章
  • widgets 庫用於完成各種小組件,他能生成網頁內容,不僅僅在 Jupyter Notebook 使用,但本文只講解在 Jupyter Notebook 上的使用


懂Excel輕鬆入門Python數據分析包pandas(29):輕鬆做出篩選控件


修飾你的 pandas 處理

本文需要導入的庫是這些:

懂Excel輕鬆入門Python數據分析包pandas(29):輕鬆做出篩選控件

首先使用 pandas 得到透視表的結果,這非常簡單:

懂Excel輕鬆入門Python數據分析包pandas(29):輕鬆做出篩選控件

  • 行3,4:為了突出可以變化的東西,這裡定義2個變量
  • 通過修改2個變量,我們能得到對應的結果數據

寫不出來這些 pandas 代碼?看看我的 pandas 專欄,入門到高級到數據分析案例應用:



但是這遠遠不夠,想看不同年份或不同 Top N 的結果,都需要修改代碼。

我們稍微加工一下這個過程,定義一個函數:

懂Excel輕鬆入門Python數據分析包pandas(29):輕鬆做出篩選控件

  • 現在好一些,但是改變條件仍然需要修改代碼

簡單加上一個裝飾器即可:

懂Excel輕鬆入門Python數據分析包pandas(29):輕鬆做出篩選控件

  • 行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 中還能根據透視表製作透視圖,這裡我們同樣可以製作出動態變化的圖表

懂Excel輕鬆入門Python數據分析包pandas(29):輕鬆做出篩選控件

懂Excel輕鬆入門Python數據分析包pandas(29):輕鬆做出篩選控件

  • 行13,14:使用 display 方法,輸出內容即可


懂Excel輕鬆入門Python數據分析包pandas(29):輕鬆做出篩選控件


總結

接下來,我將會講解關於小組件的應用系列,他在 Python 數據探索和數據可視化方面,能做出很多有趣的事情,敬請關注!

需要源碼的小夥伴請轉發本文並私信我"python"


如果希望從零開始學習 pandas ,那麼可以看看我的 pandas 專欄。


分享到:


相關文章: