打工人速存!Python周报自动化秘籍,从此告别加班到秃头

B站影视 电影资讯 2025-06-04 14:01 2

摘要:数据分散:销售、库存、客服等5个部门,分别提交独立Excel文件,字段格式不统一(如销售额有的带单位,有的用千分位逗号);

某电商公司运营小李每周都要面对这些“噩梦”:

1. 数据分散:销售、库存、客服等5个部门,分别提交独立Excel文件,字段格式不统一(如销售额有的带单位,有的用千分位逗号);

2. 手动合并:需将各表“销售额”“订单量”等核心数据复制到总表,常因格式错误反复核对;

3. 效率低下:仅数据整理就要耗费3小时,若遇领导临时修改需求,只能加班重做。

1. 原始数据准备(模拟场景)

假设data文件夹下有3个部门的周报文件(销售部周报.xlsx、市场部周报.xlsx、客服部周报.xlsx),结构如下:

日期 销售额(元) 订单量

2024-01-01 12345 20

2024-01-02 67890 25

2. 代码逐行解析

import pandas as pd # 导入pandas库,用于数据处理

import os # 导入os模块,用于操作文件和目录

# 存储所有数据的列表,初始化为空

all_data =

# 遍历'data'文件夹下的所有文件

for file in os.listdir('data'):

if file.endswith('.xlsx'): # 筛选出Excel文件

file_path = os.path.join('data', file) # 拼接完整文件路径

data = pd.read_excel(file_path) # 读取Excel数据到DataFrame

all_data.append(data) # 将读取的数据添加到列表中

# 使用concat函数垂直合并所有DataFrame,ignore_index重置行索引

result = pd.concat(all_data, ignore_index=True)

# 将合并后的数据保存到'总周报.xlsx',不保存行索引

result.to_excel('总周报.xlsx', index=False)

3. 解决真实问题的细节优化

• 处理格式差异:若某表“销售额”列包含单位(如“12345元”),可在读取后用result['销售额'] = result['销售额'].str.replace('元', '').astype(float)去除单位并转换为数值;

• 自动筛选关键列:若只想保留“日期”和“销售额”,可在合并后添加result = result[['日期', '销售额']];

• 错误处理:为避免文件读取失败,可添加try-except语句:

try:

data = pd.read_excel(file_path)

all_data.append(data)

except Exception as e:

print(f"读取{file}失败:{e}")

场景1:自动发送邮件周报

import smtplib

from email.mime.multipart import MIMEMultipart

from email.mime.application import MIMEApplication

from email.mime.text import MIMEText

msg = MIMEMultipart

msg['Subject'] = "本周销售总报告"

msg['From'] = "your_email@example.com"

msg['To'] = "manager@example.com"

# 附加文件

with open('总周报.xlsx', "rb") as f:

part = MIMEApplication(f.read, Name="总周报.xlsx")

part['Content-Disposition'] = f'attachment; filename="总周报.xlsx"'

msg.attach(part)

# 发送邮件

with smtplib.SMTP("smtp.example.com", 587) as server:

server.starttls

server.login("your_email@example.com", "your_password")

server.sendmail("your_email@example.com", "manager@example.com", msg.as_string)

场景2:批量重命名文件

import os

folder_path = 'data'

for file in os.listdir(folder_path):

if file.endswith('.xlsx'):

new_name = file.replace('周报', '数据汇总') # 替换文件名关键词

old_path = os.path.join(folder_path, file)

new_path = os.path.join(folder_path, new_name)

os.rename(old_path, new_path)

1. 常见错误:

◦ ModuleNotFoundError:确认pandas库已安装,可尝试pip install --upgrade pandas更新;

◦ 文件路径错误:使用绝对路径(如C:/workspace/data/)或os.path.abspath获取当前目录。

2. 学习资源:

◦ 官方文档:Pandas文档、Smtplib文档;

◦ 实战课程:B站搜索“Python办公自动化案例”,或学习《Python数据处理实战30例》电子书。

现在就打开电脑,用10行代码告别重复劳动!

评论区分享你的自动化成果,或提出需求,下期手把手教你用Python自动生成PPT!

来源:绿叶菜

相关推荐