使用python从excel中提取数据的计算

使用python从excel中提取数据的计算,python,excel,pandas,Python,Excel,Pandas,我想计算我从excel文件中提取的成绩的平均分数和GPA。目前,我能够从excel文件中抓取该列,并了解了如何基于手动输入创建列表。但是,我想从excel中获取数字分数列,并将其用作输入(而不是手动输入),以便将其转换为GPA并计算累积GPA。我显然想在没有分数的情况下跳过这些课程。如何在GPA计算中使用excel中提取的数据?我是python新手,使用excel工作,所以一切都有帮助。多谢各位 Course Scores Art II

我想计算我从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
python代码

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)
df3=pd.read\u excel('file.xlsx')
分数=df3[['分数']]
打印(分数)
字母=[]
点数=[]
分数=浮动(输入(“输入:”)
如果(分数<101):
字母。追加('A')
点。附加(4.0)
elif(得分<90分):
字母。追加('B')
点。附加(3.0)
elif(得分<80分):
字母。追加('C')
点。附加(2.0)
elif(得分<70分):
字母。追加('D')
points.append(1.0)
elif(得分<60分):
字母。追加('F')
点。追加(0.0)
印刷品(信件)
打印(点数)
我认为您需要使用
平均值
,因为必须将分类转换为浮动:

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

颠倒存储桶的顺序,从60开始,然后是70,以此类推。目前所有数字都小于101,因此将首先进入该存储桶。从样本数据中预期输出什么?2个新列?您希望如何管理空分数?在这种情况下,预期输出为:3.83@jezraeli想要跳过空分数@carlozancocthis效果很好,但您介意解释前三行吗?我也需要它来做相反的事情(将字母分数转换成分数和GPA),所以我认为它会help@J.Doe-对于第一个问题,
cut
用于将Bin值分成离散区间。对于第二个相反的操作,问题更大,因为例如,
A
91到100,那么预期的输出是什么呢?所以如果我想将字母等级转换为数字和GPA,我不能使用相同的逻辑?例如,A->90-100/4.0,B->89-80/3.0,C=79-70->2.0等等。@J.Doe-我想我的主要问题是GPA
GPA
,不幸的是从来没有使用过它。你能给我一些公式和更多的信息吗?@J.Doe-好的,我想我明白了。我认为在这里最好的方法是使用
map
,类似于
df3['points1']=df3.letters.map({'A':4.0,'B':3.0,'C':2.0,'D':1.0,'F':0.0})
,类似于
分数
类似于
df3['Scores1']=df3.letters.map({'A':'100-90','B':'89-80'})
,添加下一个值。