杰瑞科技汇

Python处理Excel教程实例有哪些实用技巧?

我们将使用 Python 中最流行、最强大的两个库来处理 Excel:

Python处理Excel教程实例有哪些实用技巧?-图1
(图片来源网络,侵删)
  1. openpyxl: 主要用于处理 .xlsx 格式的 Excel 文件(2007及以上版本),它既可以读取也可以写入数据,功能全面,适合复杂的表格操作。
  2. pandas: 数据分析领域的“瑞士军刀”,它非常适合读取 Excel 数据到 DataFrame(类似表格的数据结构),进行数据清洗、转换、分析和计算,然后再将结果导出回 Excel,处理大数据时效率极高。

环境准备

在开始之前,请确保你已经安装了这两个库,如果尚未安装,请在终端或命令行中运行:

# 安装 openpyxl
pip install openpyxl
# 安装 pandas (它会自动安装依赖的 openpyxl 或 xlrd)
pip install pandas

教程大纲

  1. 入门实例: 使用 openpyxl 创建、写入和读取一个简单的 Excel 文件。
  2. 进阶实例 (1): 使用 pandas 读取、处理数据并导出到 Excel。
  3. 进阶实例 (2): 结合 openpyxlpandas,用 pandas 分析数据,用 openpyxl 美化 Excel 报表。
  4. 实用技巧汇总: 包括修改样式、合并单元格、处理图表等。

实例1:使用 openpyxl 创建和修改 Excel (入门)

这个例子将教你如何从零开始创建一个 Excel 文件,写入数据,然后读取并修改它。

1 创建新 Excel 并写入数据

# 1. 导入 openpyxl 库
from openpyxl import Workbook
from openpyxl.styles import Font, Alignment
# 2. 创建一个新的工作簿对象
wb = Workbook()
# 3. 获取默认的活动工作表
ws = wb.active= "销售数据" # 修改工作表名称
# 4. 写入表头
ws['A1'] = '产品名称'
ws['B1'] = '第一季度'
ws['C1'] = '第二季度'
ws['D1'] = '总销售额'
# 5. 为表头设置加粗和居中样式
header_font = Font(bold=True)
header_alignment = Alignment(horizontal='center')
for cell in ws[1]:
    cell.font = header_font
    cell.alignment = header_alignment
# 6. 写入具体数据 (使用 append 方法更方便)
sales_data = [
    ['笔记本电脑', 120, 150],
    ['智能手机', 200, 220],
    ['平板电脑', 80, 90]
]
for row in sales_data:
    ws.append(row)
# 7. 计算总销售额 (使用公式)
# 从第2行开始,计算每一行的 C 列 = B 列 + C 列
for row in range(2, len(sales_data) + 2):
    ws[f'D{row}'] = f'=B{row}+C{row}'
# 8. 保存工作簿
# 'sales_report.xlsx' 是你希望保存的文件名
wb.save('sales_report.xlsx')
print("Excel 文件 'sales_report.xlsx' 已成功创建!")

运行后,你会得到一个 sales_report.xlsx 文件,内容如下:

产品名称 第一季度 第二季度 总销售额
笔记本电脑 120 150 =B2+C2 (结果为 270)
智能手机 200 220 =B3+C3 (结果为 420)
平板电脑 80 90 =B4+C4 (结果为 170)

2 读取现有 Excel 并修改

我们读取刚刚创建的文件,并添加一些新信息。

Python处理Excel教程实例有哪些实用技巧?-图2
(图片来源网络,侵删)
from openpyxl import load_workbook
from openpyxl.styles import PatternFill
# 1. 加载已存在的 Excel 文件
# 注意:数据_only=True 会将公式单元格计算出的值读入,而不是公式本身
wb = load_workbook(filename='sales_report.xlsx', data_only=True)
ws = wb["销售数据"]
# 2. 在表格末尾追加新数据
ws.append(['智能手表', 100, 110])
# 重新计算新行的总销售额
ws['D6'] = '=B6+C6'
# 3. 修改特定单元格的值
ws['B2'] = 130 # 将笔记本电脑的第一季度销量从120改为130
# 4. 为总销售额大于 300 的单元格添加背景色
highlight_fill = PatternFill(start_color='FFFF00', end_color='FFFF00', fill_type='solid')
for row in range(2, ws.max_row + 1):
    cell_value = ws[f'D{row}'].value
    if isinstance(cell_value, (int, float)) and cell_value > 300:
        ws[f'D{row}'].fill = highlight_fill
# 5. 保存修改 (可以直接覆盖原文件,或另存为新文件)
wb.save('sales_report_modified.xlsx')
print("Excel 文件 'sales_report_modified.xlsx' 已成功修改并保存!")

运行后,sales_report_modified.xlsx 文件会包含新添加的“智能手表”行,智能手机”和“智能手表”的总销售额单元格会被高亮显示。


实例2:使用 pandas 处理 Excel (数据分析)

这个例子展示如何用 pandas 读取数据,进行计算和分析,然后导出结果。

1 读取 Excel 并进行数据分析

假设我们有一个 employee_data.xlsx 文件,内容如下:

姓名 部门 薪资
张三 技术部 15000
李四 市场部 12000
王五 技术部 18000
赵六 人事部 10000
孙七 市场部 13000
import pandas as pd
# 1. 使用 pandas 读取 Excel 文件
# 注意:需要指定 sheet_name,如果只有一个 sheet 可以不写
df = pd.read_excel('employee_data.xlsx', sheet_name='Sheet1')
# 2. 查看数据的基本信息
print("原始数据:")
print(df)
print("\n数据描述:")
print(df.describe()) # 显示每列的计数、平均值、标准差等
# 3. 数据处理和分析
# a) 计算每个人的年终奖 (假设是年薪的 15%)
df['年终奖'] = df['薪资'] * 12 * 0.15
# b) 按部门分组,计算平均薪资
avg_salary_by_dept = df.groupby('部门')['薪资'].mean().reset_index()
avg_salary_by_dept.rename(columns={'薪资': '部门平均薪资'}, inplace=True)
print("\n计算了年终奖的数据:")
print(df)
print("\n各部门平均薪资:")
print(avg_salary_by_dept)
# 4. 将处理后的数据导出到新的 Excel 文件
# 使用 ExcelWriter 可以将多个 DataFrame 写入同一个 Excel 的不同 sheet
with pd.ExcelWriter('employee_analysis_report.xlsx', engine='openpyxl') as writer:
    df.to_excel(writer, sheet_name='员工详情', index=False)
    avg_salary_by_dept.to_excel(writer, sheet_name='部门平均薪资', index=False)
print("\n分析报告 'employee_analysis_report.xlsx' 已生成!")

运行后,employee_analysis_report.xlsx 将包含两个工作表:

Python处理Excel教程实例有哪些实用技巧?-图3
(图片来源网络,侵删)
  • 员工详情: 包含原始数据、计算出的年终奖。
  • 部门平均薪资: 包含各部门的平均薪资汇总。

实例3:强强联合 - pandas 分析 + openpyxl 美化 (最佳实践)

这是最常用的工作流:用 pandas 高效处理数据和计算,用 openpyxl 进行精细的格式化、添加图表等操作,生成专业的报表。

我们继续使用上面的 employee_analysis_report.xlsx,现在用 openpyxl 来美化它。

from openpyxl import load_workbook
from openpyxl.styles import Font, Alignment, PatternFill
from openpyxl.chart import BarChart, Reference
# 1. 加载由 pandas 生成的 Excel 文件
wb = load_workbook('employee_analysis_report.xlsx')
# 2. 美化 "员工详情" 工作表
ws_detail = wb['员工详情']
# 设置表头样式
header_font = Font(name='微软雅黑', bold=True, color='FFFFFF')
header_fill = PatternFill(start_color='366092', end_color='366092', fill_type='solid')
header_alignment = Alignment(horizontal='center', vertical='center')
for cell in ws_detail[1]:
    cell
分享:
扫描分享到社交APP
上一篇
下一篇