
本教程详细介绍了如何使用python从结构化文本文件中高效提取指定列的末尾n个数值,并计算它们的总和与平均值。通过读取文件所有行、利用列表切片获取末尾数据,并结合列表推导式进行数据解析和汇总,本方法提供了一种简洁而有效的解决方案,适用于处理日志或时间序列数据。
在数据分析和处理的日常工作中,我们经常需要从文本文件中提取特定信息。一个常见的场景是,我们需要关注文件中最新记录的数据,例如计算某个指标的最后N个值的总和或平均值。本文将以一个包含日期和数值的文本文件为例,详细讲解如何利用Python实现这一目标。
假设我们有一个名为 lista.txt 的文本文件,其内容如下:
08/12/2023 81.3 09/12/2023 80.8 10/12/2023 80.9 11/12/2023 81.0 12/12/2023 81.1 13/12/2023 81.5 14/12/2023 80.1 15/12/2023 81.0 16/12/2023 80.9 17/12/2023 80.6
文件中每行包含两个由空格分隔的列:日期和数值。我们的目标是计算第二列(数值)的最后7个值的总和与平均值。
要正确地计算文件末尾N个值的总和,我们需要采取以下步骤:
立即学习“Python免费学习笔记(深入)”;
以下是实现上述功能的Python代码:
import os
# 定义文件路径
file_path = '/storage/emulated/0/Python/lista.txt'
# --- 辅助代码:如果文件不存在,则创建一个示例文件以供演示 ---
if not os.path.exists(file_path):
print(f"文件 '{file_path}' 不存在,正在创建示例文件...")
sample_data = """08/12/2023 81.3
09/12/2023 80.8
10/12/2023 80.9
11/12/2023 81.0
12/12/2022 81.1
13/12/2022 81.5
14/12/2022 80.1
15/12/2022 81.0
16/12/2022 80.9
17/12/2022 80.6"""
try:
with open(file_path, 'w') as f:
f.write(sample_data)
print(f"示例文件 '{file_path}' 已创建成功。")
except IOError as e:
print(f"创建示例文件失败: {e}")
exit() # 如果无法创建文件,则退出程序
# --- 辅助代码结束 ---
# 定义需要处理的末尾行数
N = 7
try:
with open(file_path, 'r') as f:
# 读取文件所有行到一个列表中
lines = f.readlines()
# 使用列表切片获取最后N行
# 如果文件总行数小于N,last_lines将包含所有行
last_lines = lines[-N:]
# 检查获取到的行数,确保有足够的行进行计算
if len(last_lines) == 0:
print(f"文件 '{file_path}' 中没有足够的行来计算最后 {N} 个值。")
mysum = 0.0
average = 0.0
else:
# 使用列表推导式和sum函数计算第二列值的总和
# line.split()[1] 获取每行的第二个元素(数值部分)
# float() 将字符串转换为浮点数
mysum = sum(float(line.split()[1]) for line in last_lines)
# 计算平均值
# 确保实际用于计算的行数不为0,避免除零错误
actual_N = len(last_lines)
average = mysum / actual_N if actual_N > 0 else 0.0
print("\n计算结果:")
print(f"文件 '{file_path}' 中最后 {N} 个值的总和为: {mysum}")
print(f"文件 '{file_path}' 中最后 {N} 个值的平均值为: {average}")
except FileNotFoundError:
print(f"错误:文件 '{file_path}' 未找到。")
except IndexError:
print("错误:文件行格式不正确或行数不足。请检查文件内容。")
except ValueError:
print("错误:文件中的数值无法转换为浮点数。请检查数据格式。")
except Exception as e:
print(f"发生未知错误: {e}")
通过本文的讲解,您应该已经掌握了如何使用Python从文本文件中提取指定列的末尾N个数值,并计算它们的总和与平均值。核心在于利用 readlines() 读取所有行,并通过列表切片 [-N:] 高效获取末尾数据,最后结合列表推导式进行数据解析和汇总。这种方法简洁、高效,并具有良好的可读性,是处理类似数据分析任务的有力工具。在实际应用中,别忘了加入适当的错误处理机制,以应对各种可能的文件和数据异常情况。
以上就是Python教程:高效计算文本文件指定列末尾N个值的总和与均值的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号