CSV 数据处理与 Word/Excel 中的表格格式调整教程 📖

在这个教程中,我们将深入探讨 CSV 文件的处理、合并以及格式调整,以及如何在 Word 和 Excel 中进行表格格式的调整。


1。CSV 文件的合并与处理

1.1 初始的 copy_metrics_files 函数

这个函数的主要目的是从多个子目录中复制 metrics.csv 文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import os
import shutil

def copy_metrics_files(src_dir, dst_dir):
os.makedirs(dst_dir, exist_ok=True)
for dirpath, dirnames, filenames in os.walk(src_dir):
if './data' in dirpath or './metrics' in dirpath:
continue
for filename in filenames:
if filename == 'metrics.csv':
file_path = os.path.join(dirpath, filename)
subdir_name = os.path.basename(dirpath)
dst_file_path = os.path.join(dst_dir, f"{subdir_name}_{filename}")
shutil.copy(file_path, dst_file_path)

1.2 合并多个 metrics.csv 文件为一个文件

使用 pd.merge 函数,我们可以按照特定的顺序来合并多个 CSV 文件。

1.2.1 使用 pd.merge 按顺序合并

合并 metrics.csv 文件的核心代码如下:

1
2
3
4
5
6
7
8
9
10
11
import pandas as pd

all_metrics = pd.DataFrame()
csv_files = [f for f in os.listdir(src_dir) if f.endswith('metrics.csv')]
csv_files.sort()

for csv_file in csv_files:
df = pd.read_csv(os.path.join(src_dir, csv_file))
all_metrics = all_metrics.merge(df, on='Metrics', how='outer')

all_metrics.to_csv("merged_metrics.csv", index=False)
1.2.2 文件名替换

对于文件名从 water_0water_8 的情况,我们可以替换为具体的水厂名:

1
2
3
4
5
plant_names = ["中心水厂", "义亭水厂", "佛堂水厂", "后宅水厂", "大陈水厂", "江东水厂", "稠江水厂", "苏溪水厂", "赤岸水厂"]

for i, csv_file in enumerate(csv_files):
df = pd.read_csv(os.path.join(src_dir, csv_file))
df.rename(columns={'Values': plant_names[i]}, inplace=True)

1.3 CSV 到 Word 的插入

为了将 CSV 文件的数据插入到 Word 中,我们首先需要将其转化为 Word 支持的表格格式。

1.3.1 将 CSV 转为 Word 中的表格

这需要一个外部工具或库,比如 python-docx。但具体的步骤可能会非常复杂,需要先将 CSV 数据转换为 Python 数据结构,然后使用库函数插入到 Word 文件中。

1.3.2 直接将表格插入到 Word 文档中

这可以通过 Word 的内置功能实现:
1。打开 Word。
2。选择 “插入” 标签。
3。选择 “表格”。
4。选择 “Excel 电子表格”。

1.4 CSV 到 Excel 的转换

为了将 CSV 文件转换为 Excel 格式,我们可以使用 pandas 库:

1
2
3
4
import pandas as pd

df = pd.read_csv("your_file.csv")
df.to_excel("your_file.xlsx", index=False)

1.5 Excel 表格格式调整

1.5.1 如何在 Word 中将 Excel 表格横向插入
  1. 在 Word 中打开你的文档。
  2. 选择要插入表格的位置。
  3. 点击 “插入” > “对象”。
  4. 选择 “Microsoft Excel 工作表”。
  5. 在弹出的 Excel 窗口中粘贴或编辑你的数据。
  6. 完成后关闭 Excel 窗口。
  7. 在 Word 中选择表格,点击 “格式” > “文本方向” > 选择 “逆时针方向”。

1.6 提高 merge_metrics_files 函数的适用性

1.6.1 处理带有和没有 header 的 CSV 文件

对于不带 header 的 CSV 文件,我们需要添加默认的 header:

1
2
header = ["Metrics", "Values"]
df = pd.read_csv(file_path, names=header)
1.6.2 报错处理

当合并数据时出现 “KeyError:‘Metrics’” 错误,通常是由于某些 CSV 文件没有正确的 header 引起的。确保每个文件都有正确的 header,或使用上面的方法为其添加默认 header。

1.7 创建一个新的合并函数

这个函数的目标是对 3 个模型在 9 个

case 上的 6 个指标进行合并,得到一个 18x9 的表格。

考虑到回复长度限制,具体的代码和更多的内容细节可能需要在下一部分中继续介绍。请告知是否需要继续。

1.7 创建一个新的合并函数 (续)

为了处理 3 个模型,9 个案例,并为每个模型在每个案例上有 6 个指标,我们需要一个结构化的方式来进行合并。以下是如何设计此过程:

1.7.1 数据结构准备

首先,你的目录结构和文件命名应该反映模型、案例和指标的关系。一个可能的命名约定是:

1
2
3
4
5
6
model1_case1_metrics.csv
model1_case2_metrics.csv
...
model2_case1_metrics.csv
...
model3_case9_metrics.csv

每个 CSV 文件中,你有 6 个评价指标,类似:

1
2
3
4
Metrics,Values
MAE,1234.56
MSE,7890.12
...

1.7.2 合并过程

我们首先需要识别模型、案例和指标,然后进行合并。以下是一个合并函数的步骤:

  1. 为模型、案例和指标创建容器。
  2. 从文件名解析模型和案例。
  3. 合并数据。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import pandas as pd
import os

def merge_models_cases(src_dir, dst_filename):
# 1. Create containers
all_data = pd.DataFrame()

# 2. Parse models and cases from filenames
csv_files = [f for f in os.listdir(src_dir) if f.endswith('metrics.csv')]
for csv_file in csv_files:
model, case, _ = csv_file.split('_')
file_path = os.path.join(src_dir, csv_file)

# Ensure headers exist
header = ["Metrics", "Values"]
df = pd.read_csv(file_path, names=header)

# Rename 'Values' column to model_case (e.g., model1_case1)
col_name = f"{model}_{case}"
df.rename(columns={'Values': col_name}, inplace=True)

# 3. Merge data
if all_data.empty:
all_data = df
else:
all_data = pd.merge(all_data, df, on='Metrics', how='outer')

all_data.to_csv(dst_filename, index=False)

这个函数的前提是你已经按照之前描述的约定命名了你的文件。它将为每个模型和案例创建一个新的列,并在结果 CSV 文件中将所有这些列合并在一起。

1.7.3 使用函数

为了使用上面的函数,首先确保你的 python 环境中已经安装了 pandas 库,然后将所有 metrics.csv 文件放在一个目录下,并调用函数:

1
2
3
src_directory = "path_to_your_csv_files_directory"
destination_filename = "merged_data.csv"
merge_models_cases(src_directory, destination_filename)

以上步骤应该会为你创建一个名为 merged_data.csv 的文件,其中包含了所有模型、案例和指标的合并数据。

1.8 总结 📚

在此教程中,我们讨论了如何处理、合并和调整 CSV 数据,以及如何在 Word 和 Excel 中调整表格格式。我们从基础的文件操作开始,深入到使用 pandas 库进行数据处理,最后详细介绍了如何为多个模型和案例创建一个合并函数。希望这些信息能帮助你更有效地处理你的数据!🎉

如有任何其他问题或需要进一步的澄清,请告知!