溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中怎么利用pandas實現一個篩選控件

發(fā)布時間:2021-07-05 15:58:03 來源:億速云 閱讀:180 作者:Leah 欄目:大數據

本篇文章為大家展示了Python中怎么利用pandas實現一個篩選控件,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

透視表的靈活性

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

Python中怎么利用pandas實現一個篩選控件

  • 一行數據表示,某天(date)在某地區(qū)(region)此水果的某個品種(type)的價格(AveragePrice)和銷量(Total Volume)

  • 希望看到不同年份總銷量前10的地區(qū),以及各個品種的銷量信息

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

Python中怎么利用pandas實現一個篩選控件

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

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


 

小組件

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

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 處理

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

Python中怎么利用pandas實現一個篩選控件

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

Python中怎么利用pandas實現一個篩選控件

  • 行3,4:為了突出可以變化的東西,這里定義2個變量

  • 通過修改2個變量,我們能得到對應的結果數據

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

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

Python中怎么利用pandas實現一個篩選控件

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

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

Python中怎么利用pandas實現一個篩選控件


  • 行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 中還能根據透視表制作透視圖,這里我們同樣可以制作出動態(tài)變化的圖表:

Python中怎么利用pandas實現一個篩選控件

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


Python中怎么利用pandas實現一個篩選控件



上述內容就是Python中怎么利用pandas實現一個篩選控件,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI