编写一个Python程序,从一个CSV文件中读取数据,并计算每一列的平均值。假设CSV文件data.csv的内容如下:Name,Age,Score Alice,25,85 Bob,30,90 Carol,22,78
编写一个Python程序,从一个CSV文件中读取数据,并计算每一列的平均值。假设CSV文件data.csv的内容如下:
Name,Age,Score
Alice,25,85
Bob,30,90
Carol,22,78
题目解答
答案
解答:
import csv
def calculate_column_average(filename):
with open(filename, 'r', newline='') as csvfile:
reader = csv.reader(csvfile)
header = next(reader)
column_sums = {col: 0 for col in header}
column_counts = {col: 0 for col in header}
for row in reader:
for i, value in enumerate(row):
if value.isdigit():
column_sums[header[i]] += int(value)
column_counts[header[i]] += 1
column_averages = {col: column_sums[col] / column_counts[col] if column_counts[col] > 0 else 0 for col in header}
return column_averages
if __name__ == "__main__":
filename = "data.csv"
averages = calculate_column_average(filename)
for col, avg in averages.items():
print(f"列 '{col}' 的平均值为:{avg}")
代码解释:
导入csv模块: 导入 csv 模块,用于处理 CSV 文件。
定义函数: 定义 calculate_column_average 函数,用于计算 CSV 文件中每一列的平均值。
打开文件并读取数据: 使用 with open 打开 CSV 文件并使用 csv.reader 创建一个读取器。
初始化字典: 初始化两个字典 column_sums 和 column_counts,分别存储各列的总和和计数。
遍历数据并计算: 遍历每一行数据,检查数值是否为数字,如果是数字,则将值转换为整数并添加到对应列的总和和计数中。
计算平均值: 使用字典推导式计算各列的平均值,存储在 column_averages 字典中。
解析
导入csv模块,用于处理CSV文件。
步骤 2:定义函数
定义calculate_column_average函数,用于计算CSV文件中每一列的平均值。
步骤 3:打开文件并读取数据
使用with open打开CSV文件并使用csv.reader创建一个读取器。
步骤 4:初始化字典
初始化两个字典column_sums和column_counts,分别存储各列的总和和计数。
步骤 5:遍历数据并计算
遍历每一行数据,检查数值是否为数字,如果是数字,则将值转换为整数并添加到对应列的总和和计数中。
步骤 6:计算平均值
使用字典推导式计算各列的平均值,存储在column_averages字典中。
步骤 7:输出结果
遍历column_averages字典,输出每一列的平均值。