当前位置:首页 > 未命名

5分钟学会用Python自动化处理Excel表格——零基础实战教程

5分钟学会用Python自动化处理Excel表格——零基础实战教程

每天重复处理Excel表格?数据清洗、格式调整、报表生成占用大量时间?本文教你用Python自动化处理Excel,只需5分钟就能学会基础操作,让你从繁琐的表格工作中解放出来。无需编程基础,跟着步骤操作即可!

一、为什么要用Python处理Excel?

很多朋友可能会问:"我Excel用得挺好的,为什么要学Python?"这里有几个让人无法拒绝的理由:

  • 效率提升:处理100个表格,手动需要2小时,Python只需2分钟
  • 避免错误:人工操作容易出错,程序执行100%准确
  • 批量处理:一个脚本处理成百上千个文件
  • 定时执行:设置定时任务,每天自动生成报表
  • 数据处理能力强:Excel处理10万行数据就卡顿,Python轻松处理百万行

真实案例:我有个朋友在公司负责销售数据统计,每天要从20个分公司的Excel文件中提取数据,合并成一个总表,然后生成各种图表。手动操作需要2-3小时。用了Python后,整个过程只需点击一下,5分钟出结果。她用省下的时间学习了更多数据分析技能,半年后升职加薪。

二、准备工作:安装Python和库

步骤1:安装Python

如果您的电脑还没有Python,请按以下步骤安装:

  1. 访问 https://www.python.org/downloads/ 下载最新版Python(推荐Python 3.10或更高版本)
  2. 运行安装程序,务必勾选"Add Python to PATH"(非常重要!)
  3. 点击"Install Now",等待安装完成
  4. 验证安装:打开命令行(Windows按Win+R,输入cmd),输入 python --version,如果显示版本号说明安装成功

步骤2:安装必要的库

Python处理Excel主要使用两个库:pandas(数据处理)和openpyxl(Excel文件操作)。

在命令行中输入以下命令:

pip install pandas openpyxl

如果安装速度慢,可以使用国内镜像:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas openpyxl

三、基础操作:5个最常用的脚本

3.1 读取Excel文件

先从最简单的开始:读取Excel文件并打印内容。

代码示例:

import pandas as pd

# 读取Excel文件
df = pd.read_excel('销售数据.xlsx')

# 打印前5行数据
print(df.head())

# 打印基本信息
print(df.info())

代码解释:

  • import pandas as pd:导入pandas库,简写为pd(行业惯例)
  • pd.read_excel():读取Excel文件,参数是文件路径
  • df.head():显示前5行数据,快速查看数据内容
  • df.info():显示数据基本信息(列名、数据类型、非空值数量)

运行结果示例:

   日期      销售额  销售员
0  2026-01-01  5000  张三
1  2026-01-02  6000  李四
2  2026-01-03  4500  王五
3  2026-01-04  7000  张三
4  2026-01-05  5500  李四

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 100 entries, 0 to 99
Data columns (total 3 columns):
 #   Column  Non-Null Count  Dtype
---  ------  --------------  -----
 0   日期     100 non-null    datetime64[ns]
 1   销售额    100 non-null    int64
 2   销售员    100 non-null    object
dtypes: datetime64[ns](1), int64(1), object(1)
memory usage: 2.5+ KB

3.2 数据清洗:处理缺失值和重复值

真实数据往往不完美,需要处理缺失值、重复值、异常值等。

代码示例:

# 检查缺失值
print(df.isnull().sum())

# 删除包含缺失值的行
df_clean = df.dropna()

# 或者用默认值填充缺失值
df_filled = df.fillna({'销售额': 0, '销售员': '未知'})

# 删除重复行
df_no_duplicates = df.drop_duplicates()

# 重置索引(删除行后索引会不连续,需要重置)
df_reset = df_no_duplicates.reset_index(drop=True)

常用数据清洗操作:

操作 代码 说明
删除缺失值 df.dropna() 删除任何包含NaN的行
填充缺失值 df.fillna(0) 用0填充所有缺失值
删除重复行 df.drop_duplicates() 删除完全重复的行
重命名列 df.rename(columns={'旧名':'新名'}) 修改列名
修改数据类型 df['列名'] = df['列名'].astype('类型') 如转为int、str等

3.3 数据筛选和排序

根据条件筛选数据,或者按某列排序。

代码示例:

# 筛选销售额大于5000的记录
high_sales = df[df['销售额'] > 5000]

# 多条件筛选:销售额>5000且销售员是'张三'
condition = (df['销售额'] > 5000) & (df['销售员'] == '张三')
result = df[condition]

# 排序:按销售额降序
df_sorted = df.sort_values('销售额', ascending=False)

# 多列排序:先按销售员,再按销售额降序
df_sorted2 = df.sort_values(['销售员', '销售额'], ascending=[True, False])

小贴士:

  • 多条件筛选时,每个条件要用括号括起来
  • & 表示"且",| 表示"或",~ 表示"非"
  • ascending=True 是升序,False 是降序

3.4 数据分组和聚合

这是数据分析中最强大的功能之一,类似于Excel的数据透视表。

代码示例:

# 按销售员分组,计算销售额总和
sales_by_person = df.groupby('销售员')['销售额'].sum()

# 多个聚合操作:总和、平均值、最大值、最小值
summary = df.groupby('销售员').agg({
    '销售额': ['sum', 'mean', 'max', 'min'],
    '日期': 'count'  # 统计每个销售员的记录数
})

# 重置索引(groupby后销售员变成索引,重置后变回列)
summary_reset = summary.reset_index()

运行结果示例:

销售员
张三    22500
李四    21000
王五    19500
Name: 销售额, dtype: int64

3.5 保存到Excel

处理完数据后,当然要保存结果。

代码示例:

# 保存到新的Excel文件
df.to_excel('处理后的数据.xlsx', index=False)

# 保存到多个sheet
with pd.ExcelWriter('汇总报告.xlsx') as writer:
    df.to_excel(writer, sheet_name='原始数据', index=False)
    summary_reset.to_excel(writer, sheet_name='汇总统计', index=False)
    high_sales.to_excel(writer, sheet_name='高销售额', index=False)

参数说明:

  • index=False:不保存行索引(通常我们不需要)
  • pd.ExcelWriter:可以写入多个sheet到一个Excel文件

四、实战案例:自动化生成销售报表

现在,让我们用一个完整的案例把前面学的知识串起来。

场景:你每天收到一个销售数据Excel文件,需要:

  1. 清洗数据(删除缺失值和重复值)
  2. 按销售员统计销售额
  3. 找出销售额前10的记录
  4. 生成图表
  5. 保存为新的Excel文件(包含多个sheet)

完整代码:

import pandas as pd
import matplotlib.pyplot as plt

# 1. 读取数据
df = pd.read_excel('每日销售数据.xlsx')

# 2. 数据清洗
df_clean = df.dropna().drop_duplicates()

# 3. 按销售员统计
sales_summary = df_clean.groupby('销售员')['销售额'].agg(['sum', 'mean', 'count']).reset_index()
sales_summary.columns = ['销售员', '总销售额', '平均销售额', '订单数']

# 4. 找出销售额前10的记录
top10 = df_clean.sort_values('销售额', ascending=False).head(10)

# 5. 生成图表
plt.figure(figsize=(10, 6))
plt.bar(sales_summary['销售员'], sales_summary['总销售额'])
plt.title('各销售员总销售额')
plt.xlabel('销售员')
plt.ylabel('总销售额')
plt.xticks(rotation=45)
plt.tight_layout()
plt.savefig('销售额柱状图.png')

# 6. 保存到Excel
with pd.ExcelWriter('销售报表_' + pd.Timestamp.now().strftime('%Y%m%d') + '.xlsx') as writer:
    df_clean.to_excel(writer, sheet_name='清洗后数据', index=False)
    sales_summary.to_excel(writer, sheet_name='销售汇总', index=False)
    top10.to_excel(writer, sheet_name='销售额TOP10', index=False)

print('报表生成完成!')

代码解释:

  • pd.Timestamp.now().strftime('%Y%m%d'):获取当前日期,格式化为YYYYMMDD,用于文件名
  • plt.savefig():保存图表为图片
  • 整个脚本只需运行一次,就能完成所有工作

五、进阶技巧:让脚本更强大

5.1 批量处理多个Excel文件

如果有成百上千个Excel文件需要处理,可以用以下方法:

import os

# 获取文件夹中所有Excel文件
folder_path = './销售数据/'
excel_files = [f for f in os.listdir(folder_path) if f.endswith('.xlsx')]

# 批量读取和处理
all_data = []
for file in excel_files:
    df = pd.read_excel(folder_path + file)
    all_data.APPend(df)

# 合并所有数据
combined_df = pd.concat(all_data, ignore_index=True)

# 后续处理...

5.2 自动发送邮件

处理完数据后,自动发送邮件给相关人员:

import smtplib
from emAIl.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication

def send_email(receiver, subject, body, attachment_path):
    # 邮件设置(以QQ邮箱为例)
    sender = '你的邮箱@qq.com'
    passWOrd = '邮箱授权码'  # 不是邮箱密码,是授权码
    
    # 创建邮件
    msg = MIMEMultipart()
    msg['From'] = sender
    msg['To'] = receiver
    msg['Subject'] = subject
    
    # 邮件正文
    msg.attach(MIMEText(body, 'plain', 'utf-8'))
    
    # 添加附件
    with open(attachment_path, 'rb') as f:
        attachment = MIMEApplication(f.read())
        attachment.add_header('Content-Disposition', 'attachment', filename=os.path.basename(attachment_path))
        msg.attach(attachment)
    
    # 发送邮件
    server = smtplib.SMTP('smtp.qq.com', 587)
    server.starttls()
    server.login(sender, password)
    server.send_message(msg)
    server.quit()

# 使用示例
send_email(
    receiver='boss@company.com',
    subject='每日销售报表',
    body='请查收附件中的销售报表,如有问题请及时反馈。',
    attachment_path='销售报表_20260128.xlsx'
)

5.3 设置定时任务

让脚本每天自动运行:

Windows设置方法:

  1. 打开"任务计划程序"(搜索taskschd.msc)
  2. 点击"创建基本任务"
  3. 设置触发器(如"每天上午9点")
  4. 操作选择"启动程序"
  5. 程序或脚本:C:\Python\python.exe
  6. 参数:C:\脚本\自动处理Excel.py
  7. 完成设置

Linux/Mac设置方法:

使用Crontab:

# 编辑crontab
crontab -e

# 添加以下行(每天上午9点运行)
0 9 * * * /usr/bin/python3 /home/user/脚本/自动处理Excel.py

六、常见问题解答

Q1:读取Excel时报错"FileNotFoundError"怎么办?

原因:文件路径不正确。

解决方法:

  • 使用绝对路径:pd.read_excel('C:/用户/文档/数据.xlsx')
  • 或者将Python脚本和Excel文件放在同一个文件夹
  • 注意Windows路径要用斜杠/或双反斜杠\\

Q2:中文显示乱码怎么办?

读取时指定编码:

df = pd.read_excel('数据.xlsx', encoding='utf-8')

保存时指定编码:

df.to_excel('输出.xlsx', index=False, encoding='utf-8')

Q3:如何处理大型Excel文件(超过100MB)?

方法1:分块读取

chunk_size = 10000
for chunk in pd.read_excel('大文件.xlsx', chunksize=chunk_size):
    # 处理每个chunk
    process(chunk)

方法2:使用openpyxl的read_only模式

from openpyxl import load_workbook

wb = load_workbook('大文件.xlsx', read_only=True)
ws = wb.active

for row in ws.iter_rows(values_only=True):
    # 处理每一行
    print(row)

Q4:Excel中的公式如何处理?

pandas读取的是公式计算后的值,如果需要保留公式,使用openpyxl:

from openpyxl import load_workbook

wb = load_workbook('带公式的表格.xlsx')
ws = wb.active

# 读取公式
print(ws['A1'].value)  # 可能输出:'=SUM(B1:B10)'

# 修改公式
ws['A1'] = '=AVERAGE(B1:B10)'

wb.save('修改后的表格.xlsx')

七、学习资源推荐

想要更深入地学习Python数据处理,推荐以下资源:

在线教程:

  • pandas官方文档:https://pandas.pydata.org/docs/ - 最权威的参考资料
  • 菜鸟教程:https://www.runoob.com/pandas/pandas-tutorial.html - 中文入门教程
  • 莫烦Python:https://mofanpy.com/ - 视频+文字教程

书籍推荐:

  • 《利用Python进行数据分析》(第2版)—— pandas作者写的,必读经典
  • 《Python数据科学手册》—— 全面介绍Python数据科学生态
  • 《Excel Python编程快速上手》—— 专门针对Excel自动化

实战练习:

  • Kaggle:https://www.kaggle.com/ - 数据科学竞赛平台,有大量真实数据集
  • 天池:https://tianchi.aliyun.com/ - 阿里云的数据竞赛平台

八、总结:从手动到自动的跨越

通过本文,你已经学会了:

  • ✅ 用Python读取和写入Excel文件
  • ✅ 数据清洗的基本操作
  • ✅ 数据筛选、排序、分组和聚合
  • ✅ 批量处理多个文件
  • ✅ 自动生成报表和图表
  • ✅ 设置定时任务,实现完全自动化

下一步行动:

  1. 下载本文的示例代码,自己运行一遍
  2. 用自己的Excel文件试试这些操作
  3. 想一个你日常工作中可以自动化的Excel任务
  4. 尝试写出脚本,遇到问题就查文档或搜索

记住:编程不是计算机专业人员的专利,而是每个现代职场人都应该掌握的基本技能。就像20年前大家都要学用Excel一样,现在和将来,Python会成为职场必备技能。

从一个简单的Excel自动化脚本开始,你就在"AI时代保持竞争力"的道路上迈出了坚实的一步。

关注格熊,持续分享最新免费资源!如果你在实践过程中遇到任何问题,欢迎在评论区留言,我会尽力解答。也欢迎分享你的自动化案例,让更多人受益。下期我们将介绍"用Python自动处理Word文档",敬请期待!

  • 随机文章
  • 热门文章
  • 热评文章

扫描二维码推送至手机访问。

版权声明:本文由格熊发布,如需转载请注明出处。

免责声明:本站收集的内容,都来自网络,版权争议与本站无关。

本文链接:https://www.gexiong.com/%E6%9C%AA%E5%91%BD%E5%90%8D/410.html

分享给朋友:

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。