Python脚本:从CSV文件提取数据并写入Excel
import pandas as pd
import os
import re
from openpyxl import Workbook
# 读取指定路径下的CSV文件
folder_path = './自动验单数据/自动验单发生率/四月'
file_format = r'\自动验单发生率统计详情\d{8}\.csv'
output_folder = 'F:/自动验单数据/4.5-5.5验本数据/'
output_file = None
for filename in os.listdir(folder_path):
if re.match(file_format,filename):
date_str = filename[11:19]
file_path = os.path.join(folder_path,filename)
yb_data = pd.read_csv(file_path,dtype = object,usecols=['发验机构','验达机构','验单上一环节地市','验单上一环节机构类型','上下行','发验时间','邮件条码'])
data = yb_data[((yb_data['发验机构'] == '苏州') & (yb_data['发验机构'] == yb_data['验达机构']) & (yb_data['验单上一环节机构类型'] == '揽投部') & (
yb_data['验单上一环节地市'] == '苏州市') &(yb_data['上下行'] == '上行'))]
file_name = '4.5-5.5验本数据.xlsx'
if output_file is None:
output_file = os.path.join(output_folder, file_name)
data.to_excel(output_file, index=False)
else:
with pd.ExcelWriter(output_file, mode='a', engine='openpyxl') as writer:
writer.book = writer.book
writer.sheets = {ws.title: ws for ws in writer.book.worksheets}
data.to_excel(writer, index=False, header=False, startrow=writer.sheets['Sheet1'].max_row)
writer.save()
print(date_str + '匹配完成!')
# data.to_excel('F:/自动验单数据/验本数据/'+ file_name, index=False)
else:
print('全部匹配完成!')
脚本功能:
- 读取指定路径下的所有CSV文件。
- 使用正则表达式匹配文件名,提取日期信息。
- 使用pandas读取CSV文件,并根据特定条件筛选数据。
- 使用openpyxl将数据写入Excel文件。
代码解释:
folder_path:指定CSV文件所在的文件夹路径。file_format:正则表达式,用于匹配CSV文件的文件名。output_folder:指定输出Excel文件的文件夹路径。output_file:输出Excel文件名。yb_data:读取CSV文件的数据。data:根据条件筛选后的数据。pd.ExcelWriter:用于将数据写入Excel文件。
使用方法:
- 确保已经安装了pandas和openpyxl库。
- 修改脚本中的文件夹路径、文件名和输出路径。
- 运行脚本。
注意:
- 脚本中使用了
mode='a'参数,表示将数据追加到现有Excel文件。 - 如果不存在目标Excel文件,脚本会自动创建。
- 脚本使用了
header=False参数,表示不写入Excel文件标题行。 - 脚本使用了
startrow=writer.sheets['Sheet1'].max_row参数,表示将数据写入Excel文件的最后一行。
改进建议:
- 可以将脚本中的条件筛选逻辑封装成函数,提高代码可读性和可维护性。
- 可以添加错误处理机制,防止程序异常退出。
- 可以添加日志记录功能,方便跟踪脚本运行情况。
- 可以根据实际需求添加其他功能,例如将数据进行统计分析或可视化展示。
原文地址: https://www.cveoy.top/t/topic/pZL4 著作权归作者所有。请勿转载和采集!