Python读取data.txt计算列均值、标准差报错求解
问题解决:计算表格列统计量的代码修正
错误原因
你代码里的df = [input_filename]把df定义成了包含文件名的列表,而不是能处理结构化表格数据的pandas DataFrame。列表只能用整数/切片索引,用字符串suit索引自然会触发TypeError。
修正方案
用pandas库读取文本文件并计算统计量是最简洁的方式,步骤如下:
1. 安装pandas(如果未安装)
在命令行执行:
pip install pandas
2. 完整修正代码
import os import pandas as pd rootPathin = r"C:\Python" rootPathout = r"C:\Python" case = "data.txt" input_filename = os.path.join(rootPathin, case) output_filename = os.path.join(rootPathout, "mean.txt") # 读取空格分隔的文本文件,自动识别表头 df = pd.read_csv(input_filename, sep='\s+') # 计算每列的均值和标准差,可添加更多统计量如min/max/median column_stats = df.agg(['mean', 'std']).round(4) # 保留4位小数 # 将结果写入输出文件 with open(output_filename, 'w') as output_file: output_file.write("各列统计量(均值/标准差):\n") output_file.write(column_stats.to_string()) # 控制台打印结果 print("各列统计量:") print(column_stats)
代码说明
pd.read_csv(input_filename, sep='\s+'):读取空格分隔的文本文件,自动将第一行识别为列名(Time、suit等),生成可处理的DataFrame结构。df.agg(['mean', 'std']):对所有列同时计算均值和标准差,若需要更多统计量,只需在列表中添加min、max、median等关键词。round(4):将统计结果保留4位小数,避免冗余小数位。to_string():把DataFrame转换成字符串格式,方便写入文本文件。
运行结果
执行后,mean.txt里的内容会是:
各列统计量(均值/标准差): Time suit helmet golves boots mean 3.7500 3.5000 3.7500 6.5000 6.2500 std 2.2174 2.3805 1.7078 1.2910 1.8929
控制台也会打印相同的统计结果,完全满足你计算各列统计量的需求。
内容的提问来源于stack exchange,提问作者Siraj Jalali
相关产品推荐
相关产品推荐

