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}')
注:
如果文件为空或不符合原问题中显示的示例,这将失败
我正在 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}')
注:
如果文件为空或不符合原问题中显示的示例,这将失败