当前位置: 首页 > news >正文

Python深度挖掘:openpyxl与pandas高效数据处理实战

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
持续学习,不断总结,共同进步,为了踏实,做好当下事儿~
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

在这里插入图片描述

💖The Start💖点点关注,收藏不迷路💖

📒文章目录

    • 1. openpyxl基础与核心操作
      • 1.1 openpyxl简介与应用场景
      • 1.2 工作簿与工作表操作
      • 1.3 高级格式与样式控制
    • 2. pandas数据处理实战
      • 2.1 pandas核心数据结构
      • 2.2 数据清洗与转换
      • 2.3 高效数据分析技巧
    • 3. openpyxl与pandas协同工作
      • 3.1 数据流转最佳实践
      • 3.2 自动化报表生成案例
    • 4. 性能优化与常见问题
      • 4.1 处理大型Excel文件
      • 4.2 典型错误排查
    • 5. 总结


在数据处理和分析领域,Python凭借其强大的库支持成为开发者的首选工具。openpyxl和pandas作为Python生态中处理Excel和数据操作的核心库,能够高效完成从数据提取到分析的完整流程。本文将深入探讨这两个库的使用技巧,帮助读者提升数据处理效率。


1. openpyxl基础与核心操作

1.1 openpyxl简介与应用场景

Excel文件操作是日常工作中的常见需求,从简单的数据记录到复杂的报表生成都离不开它。openpyxl是一个专门用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库,相比传统的xlrd/xlwt库,它具有以下优势:

  • 支持最新的Excel文件格式
  • 既能读取也能修改Excel文件
  • 支持Excel公式、图表、样式等高级功能

安装非常简单:

pip install openpyxl

1.2 工作簿与工作表操作

基本工作簿操作示例:

from openpyxl import Workbook# 创建新工作簿
wb = Workbook()
ws = wb.active  # 获取活动工作表
ws.title = "数据表"  # 重命名工作表# 写入数据
ws['A1'] = "姓名"
ws['B1'] = "年龄"
ws['A2'] = "张三"
ws['B2'] = 25# 保存文件
wb.save("example.xlsx")

加载已有文件:

from openpyxl import load_workbookwb = load_workbook("example.xlsx")
print(wb.sheetnames)  # 打印所有工作表名称

1.3 高级格式与样式控制

设置单元格样式:

from openpyxl.styles import Font, Alignment, Border, Side# 设置字体
ws['A1'].font = Font(name='微软雅黑', size=12, bold=True, color="FF0000")# 设置对齐方式
ws['A1'].alignment = Alignment(horizontal="center", vertical="center")# 设置边框
border = Border(left=Side(style='thin'), right=Side(style='thin'),top=Side(style='thin'), bottom=Side(style='thin'))
ws['A1'].border = border

合并单元格和公式:

ws.merge_cells('A1:B1')  # 合并单元格
ws['C2'] = "=SUM(B2:B10)"  # 插入公式

2. pandas数据处理实战

2.1 pandas核心数据结构

pandas的两种核心数据结构:

  • Series:一维数组,带索引
  • DataFrame:二维表格,类似Excel工作表

从openpyxl导入数据:

import pandas as pddata = []
for row in ws.iter_rows(values_only=True):data.append(row)df = pd.DataFrame(data[1:], columns=data[0])

2.2 数据清洗与转换

常见数据清洗操作:

# 处理缺失值
df.fillna(0, inplace=True)  # 填充为0
df.dropna(inplace=True)  # 删除含缺失值的行# 数据去重
df.drop_duplicates(inplace=True)# 类型转换
df['年龄'] = df['年龄'].astype(int)

2.3 高效数据分析技巧

分组统计示例:

# 按部门统计平均薪资
df.groupby('部门')['薪资'].mean()# 创建透视表
pd.pivot_table(df, values='销售额', index='地区', columns='季度', aggfunc=sum)

3. openpyxl与pandas协同工作

3.1 数据流转最佳实践

将DataFrame导出到Excel:

df.to_excel("output.xlsx", index=False, sheet_name="结果")

保留格式的导出方案:

from openpyxl.utils.dataframe import dataframe_to_rowsfor r in dataframe_to_rows(df, index=False, header=True):ws.append(r)

3.2 自动化报表生成案例

动态生成报表模板:

from openpyxl.chart import BarChart, Reference# 创建图表
chart = BarChart()
chart.title = "销售统计"
chart.x_axis.title = "季度"
chart.y_axis.title = "销售额"data = Reference(ws, min_col=2, max_col=5, min_row=1, max_row=10)
chart.add_data(data, titles_from_data=True)
ws.add_chart(chart, "E1")

4. 性能优化与常见问题

4.1 处理大型Excel文件

内存优化技巧:

# 只读模式
wb = load_workbook(filename="large_file.xlsx", read_only=True)# 分批写入
for chunk in pd.read_csv("large_data.csv", chunksize=10000):process(chunk)

4.2 典型错误排查

常见问题解决方案:

  1. 编码问题:指定engine=‘openpyxl’
  2. 公式不更新:wb.save()后重新打开文件
  3. 版本兼容:确保使用最新版库

5. 总结

openpyxl与pandas能力对比:

  • openpyxl:适合精细控制Excel格式和样式
  • pandas:适合大规模数据分析和处理

场景选择建议:

  • 简单数据读写 → pandas
  • 复杂报表生成 → openpyxl
  • 大数据分析 → pandas

延伸学习资源:

  • pandas官方文档:https://pandas.pydata.org/docs/
  • openpyxl官方文档:https://openpyxl.readthedocs.io/
  • 实战案例库:https://github.com/pandas-dev/pandas/tree/master/doc/cheatsheet

🔥🔥🔥道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

💖The Start💖点点关注,收藏不迷路💖

http://www.xdnf.cn/news/684307.html

相关文章:

  • 洛谷P1165—— 日志分析
  • java中的定时期
  • Linux换源yum和安装nginx,mysql
  • 做好测试用例设计工作的关键是什么?
  • 直角坐标方程、参数坐标方程、极坐标方程
  • 【数据结构与算法】模拟
  • C52-二级指针
  • proteus8.4 安装包下载地址与安装教程
  • 开源项目asp本地编译安装教程(ubuntu操作系统)
  • 为什么MCP可以适配不同LLM
  • 《CF525E Anya 和立方体》
  • 人工智能文科能学吗?
  • java每日精进 5.27【分布式锁】
  • 经典排序算法合集(下)
  • 【调试】【原理理解】ldm 和 diffusers 库的区别
  • 自动驾驶中的博弈式交互规划:从理论到实践
  • droidcam ivcam 电脑访问不到地址解决办法 把网线从猫插到路由上
  • 1. 编程语言进化史与JavaScript
  • 数据结构期末模拟试卷
  • app获取相册权限是否意味着所有相片都可随时读取?
  • 智能防护实战:从攻击成本看企业安全降本增效
  • Jpa 删除之@Version注解的实体类无法删除的问题
  • 远程办公如何实现零监控?深度拆解“吱吱”不会被监控的通讯办公软件
  • 在RK3588上实现YOLOv8n高效推理:从模型优化到GPU加速后处理全解析
  • 电机控制杂谈(26)——电机驱动系统的编码器的测速噪声
  • RK3568DAYU开发板-驱动平台驱动案例--PWM
  • 【Linux】(1)—进程概念-①冯诺依曼体系结构
  • 想查看或修改 MinIO 桶的匿名访问权限(public/private/custom)
  • java基础学习(十八)
  • 大模型微调(面经总结)