15.统计指定txt文档里所有数据的mean value

1.要求

1)读取指定txt文档,对里面的所有数据求和并算出平均值mean value;
2)算平均值时,先对txt文档里的数据做处理,只统计数值小于40.0的数据,把过滤出的数据保存为新的txt文档
3) 对新的文档统计文件的行数。

文件结构
在这里插入图片描述
待处理的txt文档内容
在这里插入图片描述

2.实现

import os


"""
@brief: 过滤数据
@param: source_file: 源文件名
@param: target_file: 目标文件名
@return: 无返回值
@note: 过滤掉数据小于40.0的数据

"""
def filter_data(source_file, target_file):

    # 获取当前脚本所在的目录路径
    current_directory = os.path.dirname(os.path.abspath(__file__))
    # 切换到当前目录
    os.chdir(current_directory)

    # 以读模式打开源文件
    with open(source_file, 'r') as file:
        lines = file.readlines()

    # 创建一个列表来保存满足条件的数据
    new_data = []

    for line in lines:
        # 尝试将行数据转换为浮点数
        try:
            data = float(line.strip().split("\n")[0])
            # 如果数据< 40.0,则添加到新数据列表中
            if data < 40:
                # data = data - 1.0
                new_data.append(data)
        except ValueError:
            # 如果不能转换为浮点数,则跳过该行
            continue

    # 以写模式打开目标文件
    with open(target_file, 'w') as file:
        for data in new_data:
            file.write(f'{data}\n')

"""
@brief: 计算平均值和文件长度
@param: target_file: 目标文件名
@return: 平均值和文件长度
@note: 计算文件中数据的平均值和文件长度

"""
def calculate_average(target_file):

    # 以读模式打开目标文件
    with open(target_file, 'r') as file:
        lines = file.readlines()

    # 计算数据的总和
    total = sum(float(line.strip().split("\n")[0]) for line in lines)
    # 计算平均值
    average = total / len(lines)

    # 计算文件长度
    file_length = len(lines)

    return average, file_length

# 调用函数进行数据过滤
source_file_1 = '4K_phone_decoding_quality_15.txt'
target_file_1 = '4K_phone_decoding_quality_15_new.txt'
filter_data(source_file_1, target_file_1)

source_file_2 = '4K_phone_decoding_quality_17.txt'
target_file_2 = '4K_phone_decoding_quality_17_new.txt'
filter_data(source_file_2, target_file_2)

source_file_3 = '4K_phone_decoding_quality_19.txt'
target_file_3 = '4K_phone_decoding_quality_19_new.txt'
filter_data(source_file_3, target_file_3)


# 调用函数计算平均值和文件长度
average_1, length_1 = calculate_average(target_file_1)
print(f'{target_file_1}的平均值为:{average_1},文件长度为:{length_1}')

average_2, length_2 = calculate_average(target_file_2)
print(f'{target_file_2}的平均值为:{average_2},文件长度为:{length_2}')

average_3, length_3 = calculate_average(target_file_3)
print(f'{target_file_3}的平均值为:{average_3},文件长度为:{length_3}')

首先通过filter_data函数对原始文件进行过滤,然后再通过calculate_average函数计算每个过滤后文件的平均值,返回文件的长度。

输出
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值