目前有90个CSV文件,现在想筛选每一个文件第90列数据,并计算其平均值,每一个文件第90列数据的数量不一致,每一列的平均值需要导入另一个excel表,并在首行标识每一平均值的文件名,如何用python实现
时间: 2024-04-30 07:23:04 浏览: 90
以下是一个可能的实现,假设所有的CSV文件都在同一个文件夹中,且每个文件的第一行都是列名:
```python
import os
import pandas as pd
# 获取所有CSV文件的路径
folder_path = r"C:\path\to\folder"
csv_paths = [os.path.join(folder_path, f) for f in os.listdir(folder_path) if f.endswith(".csv")]
# 用一个字典来保存每个文件的第90列数据
data_dict = {}
for csv_path in csv_paths:
# 读入CSV文件
df = pd.read_csv(csv_path)
# 获取第90列数据
col_name = df.columns[89] # 注意Python是从0开始计数的,所以这里是89而不是90
col_data = df[col_name]
# 保存到字典中
data_dict[csv_path] = col_data
# 计算每个文件第90列数据的平均值
avg_dict = {}
for csv_path, col_data in data_dict.items():
avg = col_data.mean()
avg_dict[csv_path] = avg
# 把每个平均值写入Excel表格
output_path = r"C:\path\to\output.xlsx"
with pd.ExcelWriter(output_path) as writer:
for i, (csv_path, avg) in enumerate(avg_dict.items()):
filename = os.path.basename(csv_path)
sheet_name = f"Sheet {i+1}"
df = pd.DataFrame({"Average": [avg]})
df.to_excel(writer, sheet_name=sheet_name, startrow=0, startcol=0)
writer.sheets[sheet_name].write(0, 1, filename)
```
这个实现中用到了pandas库来读取CSV文件和写入Excel表格。如果你还没有安装这个库,可以在命令行中运行以下命令来安装:
```
pip install pandas
```
阅读全文