日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Python 數據處理,Pandas 使用方式的變局

來源: 責編: 時間:2023-12-12 17:01:31 237觀看
導讀前段時間在公司技術分享會上,同事介紹了目前市面上關于自動生成 pandas 代碼的工具庫。我們也嘗試把這些工具庫引入到工作流程中。經過一段時間的實踐,最終還是覺得不適合,不再使用這些工具庫。今天就來給大家說一下其中

前段時間在公司技術分享會上,同事介紹了目前市面上關于自動生成 pandas 代碼的工具庫。我們也嘗試把這些工具庫引入到工作流程中。經過一段時間的實踐,最終還是覺得不適合,不再使用這些工具庫。JsR28資訊網——每日最新資訊28at.com

今天就來給大家說一下其中的緣由,以及有什么其他可能的解決方案。JsR28資訊網——每日最新資訊28at.com

JsR28資訊網——每日最新資訊28at.com

操作生成代碼

pandas 可以說是辦公自動化的神器,畢竟大部分的任務都需要處理結構化數據。目前python生態中,已經有好幾款能通過操作界面,自動生成 pandas 代碼的工具庫。JsR28資訊網——每日最新資訊28at.com

比如 Mito :JsR28資訊網——每日最新資訊28at.com

JsR28資訊網——每日最新資訊28at.com

比如 pandas gui:JsR28資訊網——每日最新資訊28at.com

JsR28資訊網——每日最新資訊28at.com

比如 dtale :JsR28資訊網——每日最新資訊28at.com

JsR28資訊網——每日最新資訊28at.com

他們可以通過你的手工操作,把操作過程中的代碼生成出來。JsR28資訊網——每日最新資訊28at.com

聽起來很不錯吧。以后就不用自己寫 pandas 就能輕松得到自動化處理腳本。事實卻并非如此。JsR28資訊網——每日最新資訊28at.com

其實,自動生成代碼這件事情,實現并不難。我并不是在說大話,因為以前我也制作過這種工具。但是最終因為發現了工具的瓶頸,而沒有更新下去。當初我發現的那些工具瓶頸,恰恰是我們公司放棄這些工具庫的主要原因。JsR28資訊網——每日最新資訊28at.com

工程化更重要

當初我之所以制作自動化生成pandas工具,主要是因為我會經常到 kaggle 上找一些數據做數據探索。JsR28資訊網——每日最新資訊28at.com

數據探索是一件非常"反代碼"的事情,這是因為在你拿到數據之后,此時你并不知道下一步該怎么處理它。所以通常情況下,我會選擇使用 excel 的透視表完成這項任務。但是往往需要把最終的探索過程自動化。這就迫使我使用pandas做數據探索。JsR28資訊網——每日最新資訊28at.com

我會經常寫出類似下面的代碼結構:JsR28資訊網——每日最新資訊28at.com

JsR28資訊網——每日最新資訊28at.com

其實那時候我已經積累了不少常用的pandas自定義功能模塊。但是,這種模式不方便分享。畢竟數據處理的常用功能其實非常多,套路和技巧如果都制作成模塊,在公司團隊協作上,學習成本很高。JsR28資訊網——每日最新資訊28at.com

那么,有沒有其他的工具可以解決?期間我嘗試過一些 BI 工具的使用。比如 power bi 的數據處理工具 power query。它可以解決一部分的問題,但遠遠沒達到 pandas 的靈活。另一個讓我印象深刻的工具就要數 tabluea 的數據工具 —— prepJsR28資訊網——每日最新資訊28at.com

本質上它與 power query 大同小異,不過它可以讓流程可視化。下面是 prep 的工作界面:JsR28資訊網——每日最新資訊28at.com

JsR28資訊網——每日最新資訊28at.com

每次操作都能生成在流程圖上體現,并且每一個節點都可以查看它的輸入數據和輸出結果。JsR28資訊網——每日最新資訊28at.com

JsR28資訊網——每日最新資訊28at.com

那時候我一下子明白了,為什么不管怎么規范和模塊化pandas代碼,總是感覺很難管理。JsR28資訊網——每日最新資訊28at.com

我們需要的并不是自動生成pandas代碼,而是生成能體現流程的代碼信息。JsR28資訊網——每日最新資訊28at.com

其實這也是我學習pandas的方法論,集中精力學習少數核心的方法,更重要的是學會數據流的思維。比如在我編寫的pandas專欄中,就有一個案例講解如何編排你的pandas代碼:JsR28資訊網——每日最新資訊28at.com

JsR28資訊網——每日最新資訊28at.com

JsR28資訊網——每日最新資訊28at.com

說回現有的一些自動生成代碼的工具庫,它們無一例外只是生成一大串密密麻麻的代碼。你無法從中得知操作意圖。過幾天再看這些代碼,你都無從下手。JsR28資訊網——每日最新資訊28at.com

有人會說,你可以自己定義函數,封裝工具生成出來的代碼。其實我們公司一開始也是這么干,但實際情況是,我們經常因為需求變化,而去改動里面的邏輯。此時因為工具無法再次重現你的操作步驟。你只能默默手工把代碼實現一遍。JsR28資訊網——每日最新資訊28at.com

總的來說,這些工具的缺點是:JsR28資訊網——每日最新資訊28at.com

  • 沒有可視化操作流程節點
  • 生成的代碼沒有函數化
  • 無法自定義功能

由此可以得知它的應用場景是一些非常簡單或無須長期維護代碼的任務。JsR28資訊網——每日最新資訊28at.com

既然上面說的 tableau prep 這么好,為什么不直接用它?因為它是收費的。并且它也無法做到自定義功能。JsR28資訊網——每日最新資訊28at.com

難道就不能破局嗎?其實我從未放棄。JsR28資訊網——每日最新資訊28at.com

一切皆有可能

現在我們來推敲一下,目前有沒有足夠的工具實現"假想"。JsR28資訊網——每日最新資訊28at.com

要做可視化操作工具,首當其沖就是要制作操作界面。目前 python 已經有了許多 web ui 框架,其中本人覺得最靈活最有潛力的就是 nicegui 。我也已經推出了一系列相關的實戰示例視頻,其實我之所以學習 nicegui,正是希望為 pandas 以及 pybi-next 打造各種輔助工具。JsR28資訊網——每日最新資訊28at.com

用 nicegui 做一個大概的功能界面非常容易:JsR28資訊網——每日最新資訊28at.com

JsR28資訊網——每日最新資訊28at.com

該怎么樣設計每一個功能的結構?比如,要實現上圖功能區中的篩選功能,我們可以把每個功能視為一個函數:JsR28資訊網——每日最新資訊28at.com

JsR28資訊網——每日最新資訊28at.com

想辦法讓函數的各個參數映射成一個界面組件:JsR28資訊網——每日最新資訊28at.com

JsR28資訊網——每日最新資訊28at.com

這是一個在 juperter notebook 的一個界面組件庫給到我的啟發。利用裝飾器,函數定義的參數類型等信息,可以自動根據函數創建對應的可視化界面。JsR28資訊網——每日最新資訊28at.com

在導出代碼的時候,我們無須把函數里面的散亂的代碼輸出,而是直接輸出函數定義,以及函數的調用即可。JsR28資訊網——每日最新資訊28at.com

也就是說,假如用戶在界面上操作了兩次篩選功能,生成的代碼是這樣子:JsR28資訊網——每日最新資訊28at.com

JsR28資訊網——每日最新資訊28at.com

這就解決了輸出代碼過于散亂的問題。JsR28資訊網——每日最新資訊28at.com

不僅如此,使用者同樣可以通過這種方式輕易制作自定義的功能。JsR28資訊網——每日最新資訊28at.com

那么,怎么可以制作出類似 tableau prep 的操作流程界面?由于 nicegui 本身的靈活性,我們可以充分利用前端強大的資源,在我之前的文章中,就介紹過關于這方面的實現。JsR28資訊網——每日最新資訊28at.com

JsR28資訊網——每日最新資訊28at.com

JsR28資訊網——每日最新資訊28at.com

只要整體機制能跑通,剩下的只是實現細節而已。接下來,我也會把制作過程涉及到的一些有用的python知識分享出來。JsR28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-43312-0.htmlPython 數據處理,Pandas 使用方式的變局

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Python設計模式:模板方法模式

下一篇: Goland2023年度最值得關注的重大更新,寫代碼更絲滑了

標簽:
  • 熱門焦點
  • K60至尊版剛預熱 一加Ace2 Pro正面硬剛

    Redmi這邊剛如火如荼的宣傳了K60 Ultra的各種技術和硬件配置,作為競品的一加也坐不住了。一加中國區總裁李杰發布了兩條微博,表示在自家的一加Ace2上早就已經采用了和PixelWo
  • 把LangChain跑起來的三個方法

    使用LangChain開發LLM應用時,需要機器進行GLM部署,好多同學第一步就被勸退了,那么如何繞過這個步驟先學習LLM模型的應用,對Langchain進行快速上手?本片講解3個把LangChain跑起來
  • 一篇聊聊Go錯誤封裝機制

    %w 是用于錯誤包裝(Error Wrapping)的格式化動詞。它是用于 fmt.Errorf 和 fmt.Sprintf 函數中的一個特殊格式化動詞,用于將一個錯誤(或其他可打印的值)包裝在一個新的錯誤中。使
  • 從零到英雄:高并發與性能優化的神奇之旅

    作者 | 波哥審校 | 重樓作為公司的架構師或者程序員,你是否曾經為公司的系統在面對高并發和性能瓶頸時感到手足無措或者焦頭爛額呢?筆者在出道那會為此是吃盡了苦頭的,不過也得
  • 本地生活這塊肥肉,拼多多也想吃一口

    出品/壹覽商業 作者/李彥編輯/木魚拼多多也看上本地生活這塊蛋糕了。近期,拼多多在App首頁“充值中心”入口上線了本機生活界面。壹覽商業發現,該界面目前主要
  • 認真聊聊東方甄選:如何告別低垂的果實

    來源:山核桃作者:財經無忌爆火一年后,俞敏洪和他的東方甄選依舊是頗受外界關心的“網紅”。7月5日至9日,為期5天的東方甄選“甘肅行”首次在自有App內直播,
  • 蘋果公司要求三星和LG Display生產「無邊框」OLED iPhone顯示屏

    據 The Elec 報道,蘋果已要求其供應商為未來的 iPhone 型號開發「無邊框」OLED 顯示面板。蘋果顯然已要求三星和 LG Display 開發新的 OLED 顯示面
  • 親歷馬斯克血洗Twitter,硅谷的苦日子在后頭

    文/劉哲銘  編輯/李薇  馬斯克再次揮下裁員大刀。  美國時間11月14日,Twitter約4400名外包員工遭解雇,此次被解雇的員工的主要工作為內容審核等。此前,T
  • 中關村論壇11月25日開幕,15位諾獎級大咖將發表演講

    11月18日,記者從2022中關村論壇新聞發布會上獲悉,中關村論壇將于11月25至30日在京舉行。本屆中關村論壇由科學技術部、國家發展改革委、工業和信息化部、國務
Top 主站蜘蛛池模板: 巴青县| 疏附县| 沈丘县| 肥西县| 红桥区| 交口县| 吉林省| 通河县| 拉萨市| 永丰县| 原阳县| 镇巴县| 宁乡县| 邢台市| 东莞市| 古交市| 泰宁县| 思南县| 永泰县| 崇阳县| 嵩明县| 大埔区| 大化| 台东县| 稷山县| 灵石县| 元阳县| 黔江区| 盐源县| 武隆县| 青州市| 大庆市| 黄山市| 晋中市| 孟津县| 西贡区| 三亚市| 石家庄市| 浏阳市| 诏安县| 临清市|