小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Python替代Excel Vba系列(二):pandas分組統(tǒng)計與操作Excel

 網(wǎng)摘文苑 2022-04-24

系列列表

 


前言

在本系列的上一章已經(jīng)介紹了如何讀寫 excel 數(shù)據(jù),并快速進行匯總處理。但有些小伙伴看完之后有些疑惑:

今天,我就沿用上一章的數(shù)據(jù),把需求升級一下,以解決上述疑點。

本文要點:

注意:雖然本文是'Python替代Excel Vba'系列,但希望各位讀者明白,工具都是各有所長,適合才是最好。

案例

數(shù)據(jù)與上一節(jié)一樣,就一個學生的數(shù)據(jù)表。

不過這次我們需要把每個班級成績好的同學給揪出來好好表揚,因此條件如下:

導(dǎo)入包

本文所需的包,安裝命令如下:

腳本中導(dǎo)入

本文只說重點細節(jié),至于如何從 excel 中讀取數(shù)據(jù),上一節(jié)已經(jīng)有詳細介紹。

排名

首先需要解決的是怎么得到班級 top 3? 首要任務(wù)是得到排名,如下:

  1. 參數(shù) ascending=False ,表明需要以 [總分] 倒序做排名。

  2. 參數(shù) method='min' , 表明如果有多個人有相同的總分,那么全部的人都用所有名次中最小的排名值。后面會看到數(shù)據(jù)。

  1. 參數(shù) inplace=True ,表示直接在原有數(shù)據(jù)上操作,如果不設(shè)置這個參數(shù),那么就需要寫 df=df.sort_values(['班級','排名'])

來看看結(jié)果。

找出低水平學生

現(xiàn)在找出低于所在班級平均分的同學吧。 先按班級計算平均分,然后把平均分填到每一行上。

看看數(shù)據(jù)

對于這里的 transform 方法可能有些小伙伴會不太理解。可以查看本號的相關(guān)文章,關(guān)注我噢。

萬事俱備

看到這里,你可能會覺得很復(fù)雜,但注意,我們只是寫了2句代碼即可做到了比較復(fù)雜的分組匯總。

首先把 top 3的同學挑出來

接著把低于平均分的也挑出來

但是,需求是需要我們在原表格上標記顏色。怎么可以用目前的結(jié)果數(shù)據(jù)關(guān)聯(lián)到原數(shù)據(jù)上。

我們注意看得到的結(jié)果中的 index。就是最左邊的那一列數(shù)字

每個 DataFrame 都會有這樣的 index,不管你怎么操作他,這個 index 都不會改變。因此我們可以利用 index 定位 excel 的單元格,然后通過 xlwings 標記底色就好了。

給表格加點顏色

首先定義一個設(shè)置顏色的方法

如果你對 excel 不熟悉,可能你會問,你怎么知道設(shè)置顏色是這些代碼? 其實我是通過錄制宏來得到。如下:

完整代碼

以下是完整的代碼:

本節(jié)就不再上 vba 代碼了(沒人愿意寫~~)。

使用 pandas 到底好處是什么

目前為止,你可以看到 Python 處理 excel 數(shù)據(jù)的基本套路是

  1. 從 excel 中讀取數(shù)據(jù)到 pandas 的數(shù)據(jù)結(jié)構(gòu)中

  2. 使用 pandas 做各種處理

  3. 把結(jié)果回寫到 excel 上

如果你熟悉 vba ,那么 pandas 就像一個數(shù)組+ sql 的多功能工具。

總結(jié)

通過本文應(yīng)該可以解答之前的一些疑惑。像本次需求中的數(shù)據(jù)處理任務(wù),即使你用透視表來解決也是不容易的,更不用說用 vba 了。 使用 python 不僅代碼簡潔易懂,并且整個過程都可以重復(fù)執(zhí)行。

[源碼地址](
https://github.com/CrystalWindSnake/Creative/tree/master/python/excel_pandas/2)

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多