在数据处理工作中,经常需要从TXT文件中提取数值数据,将其整理到Excel表格中并做基础统计,计算数值的平均值是常见的需求。下面通过Python的标准库和第三方库实现完整的流程。

准备工作和依赖安装
首先需要安装处理Excel的第三方库pandas和openpyxl,pandas用于数据读取、处理和写入,openpyxl是pandas写入Excel的依赖库。执行以下命令安装:
pip install pandas openpyxl
读取TXT文件中的数值
假设TXT文件的每行存储一个数值,数值之间可能包含空行或者无关字符,需要先清洗数据再提取有效数值。下面的代码实现读取TXT文件并提取所有数值的功能:
# 导入所需库
import pandas as pd
def read_txt_numbers(file_path):
numbers = []
# 打开TXT文件,指定编码为utf-8
with open(file_path, 'r', encoding='utf-8') as f:
for line in f:
# 去除行首尾的空白字符
line = line.strip()
# 跳过空行
if not line:
continue
try:
# 尝试将行内容转换为浮点数,再转为整数
num = int(float(line))
numbers.append(num)
except ValueError:
# 如果转换失败,跳过该行
print(f"跳过无效内容:{line}")
return numbers
# 调用函数读取TXT文件,替换为你的TXT文件路径
txt_numbers = read_txt_numbers("data.txt")
print(f"读取到的数值列表:{txt_numbers}")
将数值转换为Excel整数类型并写入Excel
pandas的DataFrame在写入Excel时,整数类型的数据会自动对应Excel的整数格式,只需要把读取到的数值列表转为DataFrame再写入即可:
def write_to_excel(numbers, excel_path):
# 创建DataFrame,列名设置为数值
df = pd.DataFrame({"数值": numbers})
# 写入Excel文件,不保留索引列
df.to_excel(excel_path, index=False)
print(f"数据已成功写入Excel文件:{excel_path}")
# 调用函数写入Excel,替换为你的Excel输出路径
write_to_excel(txt_numbers, "output.xlsx")
计算数值的平均值
计算平均值可以直接使用Python内置的sum函数和len函数,也可以通过pandas的mean方法实现,两种方式的结果一致:
def calculate_average(numbers):
if not numbers:
return 0
# 方式一:使用内置函数计算
avg1 = sum(numbers) / len(numbers)
# 方式二:使用pandas计算
df = pd.DataFrame({"数值": numbers})
avg2 = df["数值"].mean()
print(f"内置函数计算的平均值:{avg1}")
print(f"pandas计算的平均值:{avg2}")
return avg1
# 调用函数计算平均值
average_result = calculate_average(txt_numbers)
完整流程整合
把上述步骤整合到一起,就可以实现从TXT读取数值、转Excel整数、计算平均值的完整功能:
import pandas as pd
def full_process(txt_path, excel_path):
# 步骤1:读取TXT数值
numbers = []
with open(txt_path, 'r', encoding='utf-8') as f:
for line in f:
line = line.strip()
if not line:
continue
try:
num = int(float(line))
numbers.append(num)
except ValueError:
print(f"跳过无效内容:{line}")
if not numbers:
print("未读取到有效数值,流程终止")
return
# 步骤2:写入Excel
df = pd.DataFrame({"数值": numbers})
df.to_excel(excel_path, index=False)
# 步骤3:计算平均值
average = sum(numbers) / len(numbers)
print(f"处理完成,共读取{len(numbers)}个有效数值")
print(f"数值平均值:{average}")
print(f"Excel文件已保存至:{excel_path}")
# 执行完整流程,替换为实际文件路径
full_process("data.txt", "result.xlsx")
注意事项
- TXT文件的编码需要和代码中指定的编码一致,如果读取报错可以尝试把编码改为gbk
- 如果TXT文件中的数值包含小数,转换为整数时会自动截断小数部分,需要保留小数的话可以把int(float(line))改为float(line)
- 写入Excel时需要确保目标路径没有正在被其他程序打开,否则会写入失败