把上述output_file中列名用正则表达式筛选指定字符串后保存,对每行数据进行直方分布图和累计分布图绘图,图片保存到word文件中
时间: 2024-04-16 22:29:16 浏览: 106
要实现您的需求,您可以使用Python中的pandas和matplotlib库来处理数据和绘制直方分布图和累计分布图。此外,您还可以使用python-docx库将图片保存到Word文件中。下面是一个示例代码,可以帮助您完成这个任务:
```python
import os
import re
import pandas as pd
import matplotlib.pyplot as plt
from docx import Document
from docx.shared import Inches
# 设置文件夹路径和输出文件路径
folder_path = '文件夹路径'
output_file = '输出文件路径.docx'
# 设置要筛选的列名的正则表达式
column_regex = r'指定字符串'
# 获取文件夹中的所有Excel文件
excel_files = [file for file in os.listdir(folder_path) if file.endswith('.xlsx')]
# 创建一个空的DataFrame用于存储结果
result_df = pd.DataFrame()
# 遍历每个Excel文件并筛选指定列名的列
for file in excel_files:
file_path = os.path.join(folder_path, file)
df = pd.read_excel(file_path)
# 筛选指定列名的列
selected_cols = [col for col in df.columns if re.search(column_regex, col)]
extracted_cols = df[selected_cols]
# 将提取的数据添加到结果DataFrame中,并以Excel表格的名称为行标题
extracted_cols.columns = [file[:-5] + '_' + col for col in selected_cols]
result_df = pd.concat([result_df, extracted_cols], axis=1)
# 创建一个Word文档
doc = Document()
# 绘制直方分布图和累计分布图
for col in result_df.columns:
# 创建一个新的图表
fig, ax = plt.subplots()
# 绘制直方分布图
ax.hist(result_df[col], bins=10)
ax.set_title('Histogram of ' + col)
hist_filename = col + '_hist.png'
plt.savefig(hist_filename)
# 将直方分布图添加到Word文档中
doc.add_picture(hist_filename, width=Inches(4))
# 绘制累计分布图
fig, ax = plt.subplots()
ax.hist(result_df[col], bins=10, cumulative=True, density=True)
ax.set_title('Cumulative Distribution of ' + col)
cdf_filename = col + '_cdf.png'
plt.savefig(cdf_filename)
# 将累计分布图添加到Word文档中
doc.add_picture(cdf_filename, width=Inches(4))
# 保存Word文档
doc.save(output_file)
# 删除生成的临时图像文件
for file in os.listdir():
if file.endswith('.png'):
os.remove(file)
```
请将代码中的`文件夹路径`替换为您实际的文件夹路径,将`输出文件路径.docx`替换为您想要保存结果的文件路径。此代码将遍历指定文件夹中的所有Excel文件,筛选出列名符合指定正则表达式的列,然后绘制每列数据的直方分布图和累计分布图,并将这些图像保存到一个Word文件中。
希望这可以帮助到您!如有任何问题,请随时提问。
阅读全文