使用Python从Excel中提取数据进行计算

J. *_*Doe 3 python excel pandas

我想计算从 Excel 文件中提取的成绩的平均分和 GPA。目前,我能够从 Excel 文件中获取该列,并且我弄清楚了如何根据手动输入创建列表。但是,我想从 Excel 中获取数字成绩列,并将其用作输入(而不是手动输入),以便将它们转换为 GPA 并计算累积 GPA。我显然想在没有分数的情况下跳过课程。如何在 GPA 计算中使用从 Excel 中提取的数据?我是Python新手,并且使用Excel,所以任何事情都有帮助。谢谢

Course                      Scores
Art II                        93
Spanish II                   100
Algebra II Trig Honors        96
Christian Scriptures          99
Chemistry   
American History Honors       87
Phys Ed
Chemistry II                  92
Run Code Online (Sandbox Code Playgroud)

蟒蛇代码

df3 = pd.read_excel('file.xlsx')
scores = df3[['Scores']]
print(scores)

letters = []
points = []
score = float(input("enter: "))
if(score < 101):
    letters.append('A')
    points.append(4.0)
elif(score < 90):
    letters.append('B')
    points.append(3.0)
elif(score < 80):
    letters.append('C')
    points.append(2.0)
elif(score < 70):
    letters.append('D')
    points.append(1.0)
elif(score < 60):
    letters.append('F')
    points.append(0.0)

print(letters)
print(points)
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 5

我相信您需要cutwith mean,因为必须将分类转换为浮点数:

bins = [0,60,70,80,90,101]
df3['letters'] = pd.cut(df3['Scores'], bins=bins, labels=list('FDCBA'))
df3['points'] = pd.cut(df3['Scores'], bins=bins, labels=[0.0,1.0,2.0,3.0,4.0])

mean = df3['points'].astype(float).mean()
print (mean)
3.8333333333333335

print (df3)
                    Course  Scores letters points
0                   Art II    93.0       A    4.0
1               Spanish II   100.0       A    4.0
2   Algebra II Trig Honors    96.0       A    4.0
3     Christian Scriptures    99.0       A    4.0
4                Chemistry     NaN     NaN    NaN
5  American History Honors    87.0       B    3.0
6                  Phys Ed     NaN     NaN    NaN
7             Chemistry II    92.0       A    4.0
Run Code Online (Sandbox Code Playgroud)

  • @J.Doe - 好吧,我想我明白了。我认为这里最好的方法是通过字典使用“map”,例如“df3['points1'] = df3.letters.map({'A':4.0, 'B':3.0, 'C':2.0, 'D': 1.0, 'F':0.0})`,与 `Scores` 类似,如 `df3['Scores1'] = df3.letters.map({'A':'100-90', 'B':'89- 80'})`,添加下一个值。 (3认同)