CSV文件处理Python和计算值



我正在学习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}')

注意:

如果文件为空或不符合原始问题

中显示的示例,则此操作将失败

相关内容

  • 没有找到相关文章

最新更新