国产精品夜色视频一级区_hh99m福利毛片_国产一区二区成人久久免费影院_伊人久久大香线蕉综合影院75_国产精品久久果冻传媒

您的位置:首頁 >聚焦 >

Pandas小技巧,給Excel添加一列,處理成績數字的等級

2023-01-06 20:53:05    來源:程序員客棧

給大家分享一個Pandas處理Excel的非常小的技巧知識點。

怎樣給一個Excel添加一列,這一列是根據其它列的數字計算出來的。


(相關資料圖)

問題定義

問題是這樣的一個輸入的excel文件:

學號姓名性別成績101王小麗女69102王寶勤男85103楊玉萍女49104田東會女90105陳雪蛟女73106楊建豐男42107黎梅佳女79108張興男91109馬進春女48110魏改娟女100111王冰研男64

其中成績是一列數字,那么怎樣給成績劃分等級?如下是劃分等級的計算規(guī)則:

60分以下為E級60~69分為D級70~79分為C級80~89分為B級90分以上為A級

如下進行處理,簡單起見,我挨個進行解釋:

1. 導入pandas模塊,讀取excel文件

importpandasaspddf=pd.read_excel("成績表.xlsx",sheet_name=0)

第一句導入了pandas模塊,這是python的數據處理和統(tǒng)計分析的重要模塊。

pd.read_excel可以讀取excel的文件,sheet_name=0意思是讀取第一個sheet表格的數據。

這個df非常重要,表達的就是一個表格數據。

2. 編寫自己的根據成績劃分等級的函數

defgrade_to_level(grade):"""grade是成績把這個Excel中的成績,劃分為A- E這五個分數區(qū)間。60分以下為E級、60~69分為D級、 70~79分為C級、80~89分為B級、90分以上為A級。"""ifgrade>=90:return"A"elifgrade>=80:return"B"elifgrade>=70:return"C"elifgrade>=60:return"D"else:return"E"

這個函數有個特點,輸入的參數是grade,其實就是一個數字,而這個數字,是excel表格的“數字”這一列的每個值。

而這個函數的返回,就是這個數字劃分后的等級,是5個字符串,A~E

注意,這個函數的輸入是單個數字,輸出是單個字符串。這個字符串將成為excel新列的每個值。

3. 給pandas的數據表df添加一個新列

df["等級"]=df["成績"].apply(grade_to_level)

其中df["成績"]意思是訪問了當前excel的“成績”這一列,這是一列數據,里面有很多數字。

df["成績"].apply是在這個成績列上調用的函數,而這個函數很神奇,會調用我們第2步驟自己寫的 grade_to_level 函數。

這行代碼執(zhí)行的邏輯,是取出成績列的每個成績數字,傳給grade_to_level函數的每個grade參數,得到結果是等級字符串。

而這些等級字符串串聯(lián)在一起,形成了一個新的列。

這個新列和成績列的行數一模一樣相等,同時每個等級和每個成績是一一對應的關系。

而等式左側的df["等級"]則接收了這個結果的列。

最終這行代碼實現(xiàn)了,成績列被grade_to_level一一轉換成了等級列。

4. 輸出成結果excel文件

df.to_excel("成績表分類后.xlsx",index=False)

這一列,將新的處理后的df,輸出成一個excel文件,名字是 成績表分類后.xlsx

如果不加index=False這個參數,那么輸出的結果表格中,會多一列,里面是從0開始到1到一直遞增的數字,無意義。所以一般都加上這個參數。

5. 最后的效果

輸入文件截圖:

輸出文件結果:

6. 數據和代碼地址

代碼地址,自己粘貼到瀏覽器訪問:

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

關鍵詞: 就是一個 非常重要 就是這個

相關閱讀