【Python实战】用Pandas轻松实现Excel数据清洗与可视化

一、前言:告别手动处理Excel的烦恼

在日常工作中,Excel数据处理是许多开发者、数据分析师的"必修课"。但面对重复性的数据清洗、格式转换和报表生成,手动操作不仅效率低下,还容易出错。本文将通过Python的Pandas库,教你3行代码批量处理Excel文件,并利用Matplotlib自动生成可视化图表。


二、环境准备

1. 安装必备库

python

复制代码
pip install pandas openpyxl matplotlib
  • pandas:数据处理核心库

  • openpyxl:支持Excel 2010+文件格式

  • matplotlib:数据可视化工具

2. 示例数据(sales_data.xlsx)

订单ID 日期 销售额 地区
1001 2023-01-05 1500 北京
1002 2023-01-12 NaN 上海
... ... ... ...

三、实战步骤

1. 快速读取与合并Excel文件

复制代码
import pandas as pd

# 读取单个文件
df = pd.read_excel("sales_data.xlsx", sheet_name="Sheet1")

# 批量合并文件夹下所有Excel
import os
all_files = [f for f in os.listdir("./data") if f.endswith(".xlsx")]
combined_df = pd.concat([pd.read_excel(f) for f in all_files])

2. 数据清洗四步法

复制代码
# 处理缺失值
df['销售额'].fillna(df['销售额'].mean(), inplace=True)

# 删除重复行
df.drop_duplicates(subset=['订单ID'], keep='first', inplace=True)

# 类型转换
df['日期'] = pd.to_datetime(df['日期'])

# 异常值过滤
df = df[(df['销售额'] > 0) & (df['销售额'] < 100000)]

3. 高级操作:数据透视与分组统计

复制代码
# 按地区统计月销售额
pivot_table = df.pivot_table(
    index=df['日期'].dt.month,
    columns='地区',
    values='销售额',
    aggfunc='sum'
)

# 输出结果
print(pivot_table.to_markdown())  # 转为Markdown格式方便博客插入

4. 自动化可视化(Matplotlib集成)

复制代码
import matplotlib.pyplot as plt

# 绘制各地区销售额趋势
df.groupby(['地区', df['日期'].dt.month])['销售额'].sum().unstack().plot(
    kind='line',
    marker='o',
    figsize=(10,6)
)

plt.title('2023年度各地区月度销售趋势')
plt.xlabel('月份')
plt.ylabel('销售额(万元)')
plt.grid(True)
plt.savefig('sales_trend.png')  # 保存图表

四、效率对比

操作项 传统手动处理 Python自动化
10个文件合并 30分钟 5秒
数据清洗 易出错 精准处理
生成月报图表 1小时 10秒

五、避坑指南

  1. 编码问题 :遇到中文乱码时添加engine='openpyxl'

  2. 内存优化 :大数据集使用chunksize参数分块读取

  3. 样式保留 :需要保留原格式时推荐xlwings库


六、完整代码获取

👉 关注博主,私信回复【Excel自动化】获取本文完整代码+测试数据集!


七、结语

通过本文,我们见证了Python在数据处理中的强大威力。掌握Pandas不仅能提升工作效率,更能将重复劳动转化为创造性工作。你的下一个Excel插件,何必是VBA?

拓展学习:


标签 :Python 数据分析 办公自动化 Pandas Excel技巧

相关推荐
橙橙笔记2 小时前
具身智能的学习 - 完成一个机械臂 第1节
python·学习·机械臂·具身智能
小小张说故事2 小时前
Python 的 class 语句到底执行了什么?拆开 __prepare__、metaclass.__new__ 和那个被讲反的 __set_name__ 顺序
python
天天被压力4 小时前
【A股分钟级高频数据完全手册 #07】北交所历史分钟K线接口:京市Pro版分时批量
java·人工智能·python
天天被压力5 小时前
【A股分钟级高频数据完全手册 #08】股票日、分时数据接口对比:普通分时与Pro版差异实测
java·人工智能·python
特立独行的猫A5 小时前
AI 时代,我为什么推荐用 cj-tauri 开发桌面应用
java·后端·python
小lo想吃棒棒糖5 小时前
把机器人训练从 GPU 搬到昇腾 NPU:启元 Q1 起身动作 PPO 训练全记录
python·机器人·昇腾·启元机器人
Thanks_ks5 小时前
【第 006 讲】搭建 PyCharm 开发环境:PyCharm 的下载与安装 | 初始设置与常用配置
ide·python·pycharm·开发工具·jetbrains·开发环境·集成开发环境
青少儿编程课堂6 小时前
蓝桥杯青少组图形化省考报名倒计时·全国青少年信息素养大赛·电子学会图形化考级:校园黑白棋人机对战解析
c++·python·算法·bfs·信息学竞赛
tellmewhoisi7 小时前
nlp:知识库检索和dify知识库创建
python·自然语言处理
2601_968793147 小时前
Python Requests 轻量自动化:无需浏览器,实现真人级账号浏览模拟
开发语言·python·自动化