<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 2464字,需瀏覽 5分鐘

           ·

          2023-01-06 20:29

          給大家分享一個(gè)Pandas處理Excel的非常小的技巧知識點(diǎn)。

          怎樣給一個(gè)Excel添加一列,這一列是根據(jù)其它列的數(shù)字計(jì)算出來的。

          問題定義

          問題是這樣的一個(gè)輸入的excel文件:

          學(xué)號 姓名 性別 成績
          101 王小麗 女 69
          102 王寶勤 男 85
          103 楊玉萍 女 49
          104 田東會 女 90
          105 陳雪蛟 女 73
          106 楊建豐 男 42
          107 黎梅佳 女 79
          108 張興 男 91
          109 馬進(jìn)春 女 48
          110 魏改娟 女 100
          111 王冰研 男 64

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

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

          如下進(jìn)行處理,簡單起見,我挨個(gè)進(jìn)行解釋:

          1. 導(dǎo)入pandas模塊,讀取excel文件

          import pandas as pd

          df = pd.read_excel("成績表.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ù)成績劃分等級的函數(shù)

          def grade_to_level(grade):
              """
              grade是成績
              把這個(gè)Excel中的成績,劃分為A- E這五個(gè)分?jǐn)?shù)區(qū)間。
              60分以下為E級、60~69分為D級、
              70~79分為C級、80~89分為B級、90分以上為A級。
              """

              if grade >= 90:
                  return 'A'
              elif grade >= 80:
                  return 'B'
              elif grade >= 70:
                  return 'C'
              elif grade >= 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ù)字劃分后的等級,是5個(gè)字符串,A~E

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

          3. 給pandas的數(shù)據(jù)表df添加一個(gè)新列

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

          其中df['成績']意思是訪問了當(dāng)前excel的“成績”這一列,這是一列數(shù)據(jù),里面有很多數(shù)字。

          df['成績'].apply是在這個(gè)成績列上調(diào)用的函數(shù),而這個(gè)函數(shù)很神奇,會調(diào)用我們第2步驟自己寫的 grade_to_level 函數(shù)。

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

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

          這個(gè)新列和成績列的行數(shù)一模一樣相等,同時(shí)每個(gè)等級和每個(gè)成績是一一對應(yīng)的關(guān)系。

          而等式左側(cè)的df['等級']則接收了這個(gè)結(jié)果的列。

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

          4. 輸出成結(jié)果excel文件

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

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

          如果不加index=False這個(gè)參數(shù),那么輸出的結(jié)果表格中,會多一列,里面是從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


          瀏覽 217
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  视频精品一区二区三区 | 亚洲男人天堂av 亚洲视频无码在线 | 亚洲日韩在线第一 | 日韩黄色小电影 | 无码国产精品一区二区高潮 |