使用python从excel中提取数据的计算
我想计算我从excel文件中提取的成绩的平均分数和GPA。目前,我能够从excel文件中抓取该列,并了解了如何基于手动输入创建列表。但是,我想从excel中获取数字分数列,并将其用作输入(而不是手动输入),以便将其转换为GPA并计算累积GPA。我显然想在没有分数的情况下跳过这些课程。如何在GPA计算中使用excel中提取的数据?我是python新手,使用excel工作,所以一切都有帮助。多谢各位使用python从excel中提取数据的计算,python,excel,pandas,Python,Excel,Pandas,我想计算我从excel文件中提取的成绩的平均分数和GPA。目前,我能够从excel文件中抓取该列,并了解了如何基于手动输入创建列表。但是,我想从excel中获取数字分数列,并将其用作输入(而不是手动输入),以便将其转换为GPA并计算累积GPA。我显然想在没有分数的情况下跳过这些课程。如何在GPA计算中使用excel中提取的数据?我是python新手,使用excel工作,所以一切都有帮助。多谢各位 Course Scores Art II
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-我想我的主要问题是GPAGPA
,不幸的是从来没有使用过它。你能给我一些公式和更多的信息吗?@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'})
,添加下一个值。