自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Python 數(shù)據(jù)處理,Pandas 使用方式的變局

開發(fā) 前端
目前 Python 生態(tài)中,已經(jīng)有好幾款能通過(guò)操作界面,自動(dòng)生成 pandas 代碼的工具庫(kù)。

前段時(shí)間在公司技術(shù)分享會(huì)上,同事介紹了目前市面上關(guān)于自動(dòng)生成 pandas 代碼的工具庫(kù)。我們也嘗試把這些工具庫(kù)引入到工作流程中。經(jīng)過(guò)一段時(shí)間的實(shí)踐,最終還是覺得不適合,不再使用這些工具庫(kù)。

今天就來(lái)給大家說(shuō)一下其中的緣由,以及有什么其他可能的解決方案。

操作生成代碼

pandas 可以說(shuō)是辦公自動(dòng)化的神器,畢竟大部分的任務(wù)都需要處理結(jié)構(gòu)化數(shù)據(jù)。目前python生態(tài)中,已經(jīng)有好幾款能通過(guò)操作界面,自動(dòng)生成 pandas 代碼的工具庫(kù)。

比如 Mito :

比如 pandas gui:

比如 dtale :

他們可以通過(guò)你的手工操作,把操作過(guò)程中的代碼生成出來(lái)。

聽起來(lái)很不錯(cuò)吧。以后就不用自己寫 pandas 就能輕松得到自動(dòng)化處理腳本。事實(shí)卻并非如此。

其實(shí),自動(dòng)生成代碼這件事情,實(shí)現(xiàn)并不難。我并不是在說(shuō)大話,因?yàn)橐郧拔乙仓谱鬟^(guò)這種工具。但是最終因?yàn)榘l(fā)現(xiàn)了工具的瓶頸,而沒(méi)有更新下去。當(dāng)初我發(fā)現(xiàn)的那些工具瓶頸,恰恰是我們公司放棄這些工具庫(kù)的主要原因。

工程化更重要

當(dāng)初我之所以制作自動(dòng)化生成pandas工具,主要是因?yàn)槲視?huì)經(jīng)常到 kaggle 上找一些數(shù)據(jù)做數(shù)據(jù)探索。

數(shù)據(jù)探索是一件非常"反代碼"的事情,這是因?yàn)樵谀隳玫綌?shù)據(jù)之后,此時(shí)你并不知道下一步該怎么處理它。所以通常情況下,我會(huì)選擇使用 excel 的透視表完成這項(xiàng)任務(wù)。但是往往需要把最終的探索過(guò)程自動(dòng)化。這就迫使我使用pandas做數(shù)據(jù)探索。

我會(huì)經(jīng)常寫出類似下面的代碼結(jié)構(gòu):

其實(shí)那時(shí)候我已經(jīng)積累了不少常用的pandas自定義功能模塊。但是,這種模式不方便分享。畢竟數(shù)據(jù)處理的常用功能其實(shí)非常多,套路和技巧如果都制作成模塊,在公司團(tuán)隊(duì)協(xié)作上,學(xué)習(xí)成本很高。

那么,有沒(méi)有其他的工具可以解決?期間我嘗試過(guò)一些 BI 工具的使用。比如 power bi 的數(shù)據(jù)處理工具 power query。它可以解決一部分的問(wèn)題,但遠(yuǎn)遠(yuǎn)沒(méi)達(dá)到 pandas 的靈活。另一個(gè)讓我印象深刻的工具就要數(shù) tabluea 的數(shù)據(jù)工具 —— prep

本質(zhì)上它與 power query 大同小異,不過(guò)它可以讓流程可視化。下面是 prep 的工作界面:

每次操作都能生成在流程圖上體現(xiàn),并且每一個(gè)節(jié)點(diǎn)都可以查看它的輸入數(shù)據(jù)和輸出結(jié)果。

那時(shí)候我一下子明白了,為什么不管怎么規(guī)范和模塊化pandas代碼,總是感覺很難管理。

我們需要的并不是自動(dòng)生成pandas代碼,而是生成能體現(xiàn)流程的代碼信息。

其實(shí)這也是我學(xué)習(xí)pandas的方法論,集中精力學(xué)習(xí)少數(shù)核心的方法,更重要的是學(xué)會(huì)數(shù)據(jù)流的思維。比如在我編寫的pandas專欄中,就有一個(gè)案例講解如何編排你的pandas代碼:

說(shuō)回現(xiàn)有的一些自動(dòng)生成代碼的工具庫(kù),它們無(wú)一例外只是生成一大串密密麻麻的代碼。你無(wú)法從中得知操作意圖。過(guò)幾天再看這些代碼,你都無(wú)從下手。

有人會(huì)說(shuō),你可以自己定義函數(shù),封裝工具生成出來(lái)的代碼。其實(shí)我們公司一開始也是這么干,但實(shí)際情況是,我們經(jīng)常因?yàn)樾枨笞兓?,而去改?dòng)里面的邏輯。此時(shí)因?yàn)楣ぞ邿o(wú)法再次重現(xiàn)你的操作步驟。你只能默默手工把代碼實(shí)現(xiàn)一遍。

總的來(lái)說(shuō),這些工具的缺點(diǎn)是:

  • 沒(méi)有可視化操作流程節(jié)點(diǎn)
  • 生成的代碼沒(méi)有函數(shù)化
  • 無(wú)法自定義功能

由此可以得知它的應(yīng)用場(chǎng)景是一些非常簡(jiǎn)單或無(wú)須長(zhǎng)期維護(hù)代碼的任務(wù)。

既然上面說(shuō)的 tableau prep 這么好,為什么不直接用它?因?yàn)樗鞘召M(fèi)的。并且它也無(wú)法做到自定義功能。

難道就不能破局嗎?其實(shí)我從未放棄。

一切皆有可能

現(xiàn)在我們來(lái)推敲一下,目前有沒(méi)有足夠的工具實(shí)現(xiàn)"假想"。

要做可視化操作工具,首當(dāng)其沖就是要制作操作界面。目前 python 已經(jīng)有了許多 web ui 框架,其中本人覺得最靈活最有潛力的就是 nicegui 。我也已經(jīng)推出了一系列相關(guān)的實(shí)戰(zhàn)示例視頻,其實(shí)我之所以學(xué)習(xí) nicegui,正是希望為 pandas 以及 pybi-next 打造各種輔助工具。

用 nicegui 做一個(gè)大概的功能界面非常容易:

該怎么樣設(shè)計(jì)每一個(gè)功能的結(jié)構(gòu)?比如,要實(shí)現(xiàn)上圖功能區(qū)中的篩選功能,我們可以把每個(gè)功能視為一個(gè)函數(shù):

想辦法讓函數(shù)的各個(gè)參數(shù)映射成一個(gè)界面組件:

這是一個(gè)在 juperter notebook 的一個(gè)界面組件庫(kù)給到我的啟發(fā)。利用裝飾器,函數(shù)定義的參數(shù)類型等信息,可以自動(dòng)根據(jù)函數(shù)創(chuàng)建對(duì)應(yīng)的可視化界面。

在導(dǎo)出代碼的時(shí)候,我們無(wú)須把函數(shù)里面的散亂的代碼輸出,而是直接輸出函數(shù)定義,以及函數(shù)的調(diào)用即可。

也就是說(shuō),假如用戶在界面上操作了兩次篩選功能,生成的代碼是這樣子:

這就解決了輸出代碼過(guò)于散亂的問(wèn)題。

不僅如此,使用者同樣可以通過(guò)這種方式輕易制作自定義的功能。

那么,怎么可以制作出類似 tableau prep 的操作流程界面?由于 nicegui 本身的靈活性,我們可以充分利用前端強(qiáng)大的資源,在我之前的文章中,就介紹過(guò)關(guān)于這方面的實(shí)現(xiàn)。

只要整體機(jī)制能跑通,剩下的只是實(shí)現(xiàn)細(xì)節(jié)而已。接下來(lái),我也會(huì)把制作過(guò)程涉及到的一些有用的python知識(shí)分享出來(lái)。

責(zé)任編輯:趙寧寧 來(lái)源: 數(shù)據(jù)大宇宙
相關(guān)推薦

2023-09-25 13:19:41

pandasPython

2024-05-08 14:05:03

時(shí)間序列數(shù)據(jù)

2022-11-17 11:52:35

pandasPySpark大數(shù)據(jù)

2023-12-18 10:36:46

數(shù)據(jù)處理PandasPython

2023-03-24 16:41:36

Pandas技巧數(shù)據(jù)處理

2025-01-27 12:19:51

2019-06-12 16:21:52

時(shí)間序列PythonPandas

2023-11-21 09:11:31

2020-06-24 11:59:31

PythonPandas數(shù)據(jù)處理

2017-11-02 13:20:08

數(shù)據(jù)處理PythonNumpy

2022-07-07 10:46:51

數(shù)據(jù)處理

2019-08-27 17:32:10

數(shù)據(jù)處理PandasPython

2023-12-05 08:47:30

Pandas數(shù)據(jù)處理

2023-12-13 13:23:21

GPUPandas

2020-10-29 06:02:44

PythonPandasExcel

2017-07-21 14:22:17

大數(shù)據(jù)大數(shù)據(jù)平臺(tái)數(shù)據(jù)處理

2021-07-08 09:51:18

MaxCompute SQL數(shù)據(jù)處理

2022-01-26 09:00:00

數(shù)據(jù)庫(kù)SnowparkSQL

2023-07-31 08:21:22

語(yǔ)法校對(duì)器Pick

2013-12-16 17:17:01

OpenMp數(shù)據(jù)處理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)