Pandas小技巧,給Excel添加一列,處理成績(jī)數(shù)字的等級(jí)
給大家分享一個(gè)Pandas處理Excel的非常小的技巧知識(shí)點(diǎn)。
怎樣給一個(gè)Excel添加一列,這一列是根據(jù)其它列的數(shù)字計(jì)算出來的。
(相關(guān)資料圖)
問題是這樣的一個(gè)輸入的excel文件:
學(xué)號(hào)姓名性別成績(jī)101王小麗女69102王寶勤男85103楊玉萍女49104田東會(huì)女90105陳雪蛟女73106楊建豐男42107黎梅佳女79108張興男91109馬進(jìn)春女48110魏改娟女100111王冰研男64
其中成績(jī)是一列數(shù)字,那么怎樣給成績(jī)劃分等級(jí)?如下是劃分等級(jí)的計(jì)算規(guī)則:
60分以下為E級(jí)60~69分為D級(jí)70~79分為C級(jí)80~89分為B級(jí)90分以上為A級(jí)
如下進(jìn)行處理,簡(jiǎn)單起見,我挨個(gè)進(jìn)行解釋:
1. 導(dǎo)入pandas模塊,讀取excel文件importpandasaspddf=pd.read_excel("成績(jī)表.xlsx",sheet_name=0)
第一句導(dǎo)入了pandas模塊,這是python的數(shù)據(jù)處理和統(tǒng)計(jì)分析的重要模塊。
pd.read_excel可以讀取excel的文件,sheet_name=0意思是讀取第一個(gè)sheet表格的數(shù)據(jù)。
這個(gè)df非常重要,表達(dá)的就是一個(gè)表格數(shù)據(jù)。
2. 編寫自己的根據(jù)成績(jī)劃分等級(jí)的函數(shù)defgrade_to_level(grade):"""grade是成績(jī)把這個(gè)Excel中的成績(jī),劃分為A- E這五個(gè)分?jǐn)?shù)區(qū)間。60分以下為E級(jí)、60~69分為D級(jí)、 70~79分為C級(jí)、80~89分為B級(jí)、90分以上為A級(jí)。"""ifgrade>=90:return"A"elifgrade>=80:return"B"elifgrade>=70:return"C"elifgrade>=60:return"D"else:return"E"
這個(gè)函數(shù)有個(gè)特點(diǎn),輸入的參數(shù)是grade,其實(shí)就是一個(gè)數(shù)字,而這個(gè)數(shù)字,是excel表格的“數(shù)字”這一列的每個(gè)值。
而這個(gè)函數(shù)的返回,就是這個(gè)數(shù)字劃分后的等級(jí),是5個(gè)字符串,A~E
注意,這個(gè)函數(shù)的輸入是單個(gè)數(shù)字,輸出是單個(gè)字符串。這個(gè)字符串將成為excel新列的每個(gè)值。
3. 給pandas的數(shù)據(jù)表df添加一個(gè)新列df["等級(jí)"]=df["成績(jī)"].apply(grade_to_level)
其中df["成績(jī)"]意思是訪問了當(dāng)前excel的“成績(jī)”這一列,這是一列數(shù)據(jù),里面有很多數(shù)字。
df["成績(jī)"].apply是在這個(gè)成績(jī)列上調(diào)用的函數(shù),而這個(gè)函數(shù)很神奇,會(huì)調(diào)用我們第2步驟自己寫的 grade_to_level 函數(shù)。
這行代碼執(zhí)行的邏輯,是取出成績(jī)列的每個(gè)成績(jī)數(shù)字,傳給grade_to_level函數(shù)的每個(gè)grade參數(shù),得到結(jié)果是等級(jí)字符串。
而這些等級(jí)字符串串聯(lián)在一起,形成了一個(gè)新的列。
這個(gè)新列和成績(jī)列的行數(shù)一模一樣相等,同時(shí)每個(gè)等級(jí)和每個(gè)成績(jī)是一一對(duì)應(yīng)的關(guān)系。
而等式左側(cè)的df["等級(jí)"]則接收了這個(gè)結(jié)果的列。
最終這行代碼實(shí)現(xiàn)了,成績(jī)列被grade_to_level一一轉(zhuǎn)換成了等級(jí)列。
4. 輸出成結(jié)果excel文件df.to_excel("成績(jī)表分類后.xlsx",index=False)
這一列,將新的處理后的df,輸出成一個(gè)excel文件,名字是 成績(jī)表分類后.xlsx
如果不加index=False這個(gè)參數(shù),那么輸出的結(jié)果表格中,會(huì)多一列,里面是從0開始到1到一直遞增的數(shù)字,無意義。所以一般都加上這個(gè)參數(shù)。
5. 最后的效果輸入文件截圖:
輸出文件結(jié)果:
6. 數(shù)據(jù)和代碼地址代碼地址,自己粘貼到瀏覽器訪問:
https://gitee.com/antpython/ant-codes-publish/tree/master/01pandas/01pandas%E7%BB%99%E6%88%90%E7%BB%A9%E5%88%86%E7%BA%A7%E5%88%AB
相關(guān)閱讀
-
Pandas小技巧,給Excel添加一列,處理成...
給大家分享一個(gè)Pandas處理Excel的非常小的技巧知識(shí)點(diǎn)。怎樣給一個(gè)Ex... -
全球?qū)崟r(shí):2022年終總結(jié):不再用“拼命...
作者|磊哥來源|Java中文社群(ID:javacn666)轉(zhuǎn)載請(qǐng)聯(lián)系授權(quán)(微信... -
Python 五分鐘繪制漂亮的系統(tǒng)架構(gòu)圖:全...
Diagrams是一個(gè)基于Python繪制云系統(tǒng)架構(gòu)的模塊,它能夠通過非常簡(jiǎn)... -
使用Python批量篩選上千個(gè)Excel文件中的...
點(diǎn)擊上方“Python爬蟲與數(shù)據(jù)挖掘”,進(jìn)行關(guān)注回復(fù)“書籍”即可獲贈(zèng)P... -
面試時(shí),最可怕的就是背調(diào)?_世界最資訊
按理說,如實(shí)的寫自己過去的經(jīng)歷,沒啥可怕的,但許多打工人對(duì)背調(diào)... -
國內(nèi)互卷的電商巨頭們,又要在海外交手...
最近刮起一陣電商出海潮,各大電商巨頭們?cè)诤M鈩?dòng)作頻頻。阿里重新...