提前感谢那些帮助我的人
我正在学习Python入门课程,目前正在学习如何使用Python处理文件。我有一个CSV文件,其中有几个学生的名字,他们的专业和gpa
我正试图处理python上的文件来计算和打印gpa的平均值
这是CSV文件的一个片段:
Ahmed Yousry,2.99,Accounting
Amina Hamdy,2.45,Marketing
Hala Hossam,3.85,BIS
Dina Gamal,3.96,BIS
Amr Nabil,3.6,Finance
,这是我想写的代码:
import csv
f1 = open("myText.csv")
rowlist = csv.reader(f1)
sum = 0
for row in rowlist:
sum += row[1]
avg = sum / 5
f1.close()
print("Average GPA is", avg)
然而,我一直得到一个错误,总和无法计算,因为它正在读取GPA值作为字符串而不是整数值,我不知道如何转换它们
这里是错误消息说:
Traceback (most recent call last):
File "C:UsersuserPycharmProjectspracticefilesprogram12.py", line 6, in <module>
sum += row[1]
TypeError: unsupported operand type(s) for +=: 'int' and 'str'
谁能告诉我我哪里错了?我试过将值转换为int,但它仍然不起作用,我不知道还能做什么提前感谢那些帮助我的人
使用float()
函数将字符串转换为float类型
试题:
import csv
f1 = open("myText.csv")
rowlist = csv.reader(f1)
sum = 0
for row in rowlist:
sum += float(row[1])
avg = sum / 5
f1.close()
print("Average GPA is", avg)
您还可以使用pandas库导入数据,然后使用mean()函数计算平均值。一旦数据在数据帧中,您可以使用pandas对它做很多事情。
import pandas as pd
df = pd.read_csv("myText.csv", names=['name', 'GPA', 'Major'])
print("Average GPA is", df["GPA"].mean())
输出:
Average GPA is 3.37
一种更简洁、更python化的方法是:
import csv
with open('myText.csv') as csv_:
gpas = [float(gpa) for _, gpa, _ in csv.reader(csv_)]
print(f'Average GPA is {sum(gpas)/len(gpas):.2f}')
注意:
如果文件为空或不符合原始问题
中显示的示例,则此操作将失败