目前有几十个CSV文件,现在想筛选每一个文件第90列数据,并计算其平均值,每一个文件第90列数据的数量不一致,每一列的平均值需要导入另一个excel表,并在首行标识每一平均值的文件名,如何用python实现
时间: 2024-05-13 11:20:38 浏览: 210
以下是一种可能的Python实现方法:
1. 首先,你需要使用Python内置的csv模块读取CSV文件。使用csv.reader函数打开CSV文件,并使用next函数跳过标题行。
2. 然后,你需要循环遍历文件中的每一行,并使用索引(90)获取第90列的值。将这些值添加到一个列表中。
3. 计算列表中的平均值。
4. 将平均值和文件名添加到另一个列表中。
5. 重复此过程,直到你处理完所有的CSV文件。
6. 将结果写入Excel文件中。
以下是一些可能有用的代码示例:
```python
import csv
import os
import openpyxl
# 将要处理的CSV文件放在一个文件夹中
folder_path = 'path/to/csv/folder'
# 创建一个Excel文件,用于存储平均值
wb = openpyxl.Workbook()
ws = wb.active
# 列出文件夹中的所有CSV文件
csv_files = [f for f in os.listdir(folder_path) if f.endswith('.csv')]
# 循环遍历每个CSV文件
for file_name in csv_files:
# 打开CSV文件
with open(os.path.join(folder_path, file_name)) as csv_file:
reader = csv.reader(csv_file)
# 跳过标题行
next(reader)
# 创建一个列表,用于存储第90列数据
col_90 = []
# 循环遍历每一行
for row in reader:
# 将第90列数据添加到列表中
col_90.append(float(row[89]))
# 计算平均值
avg = sum(col_90) / len(col_90)
# 将平均值和文件名添加到Excel表格中
ws.cell(row=1, column=len(ws[1]) + 1, value=file_name)
ws.cell(row=2, column=len(ws[1]), value=avg)
# 保存Excel文件
wb.save('path/to/output/file.xlsx')
```
这个示例代码假设每个CSV文件都有标题行,并且第90列数据的索引为89。如果你的CSV文件不符合这些假设,你需要相应地修改代码。
阅读全文