Python 中的 CSV 文件处理和计算值

CSV File Handling in Python and calculating values

我正在 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:\Users\user\PycharmProjects\practicefiles\program12.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

更简洁且可以说更 Pythonic 的方法可能是:

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}')

注:

如果文件为空或不符合原问题中显示的示例,这将失败