Excel 是产品经理最常用的数据工具之一,我们经常用它来整理需求、汇总数据、生成报告等。然而当 Excel 处理大数据时很容易发生卡顿。或者有时我们需要跨表计算、批量数据处理时,直接使用 Excel 操作往往很繁琐,尤其是要批量处理大量文件时,颇为费时费力。而 Python 能轻松高效处理,避免出错,甚至可实现自动化操作,一键批量完成重复任务。
但是,Python 本身并没有内置的用于直接操作 Excel 文件的标准库。但不用担心,Python 的功能非常强大,除了官方提供的内置库,还可以通过社区开发的第三方库来扩展功能。我们处理 Excel 文件时就经常会使用到: Openpyxl 和 Pandas 这 2 个第三方库。
第三方库是由开发者社区提供,它们虽然功能强大,但它们不是Python 自带的官方库,因此需要单独安装。
在 Python 中,第三方库需要通过 包管理工具 pip (在Mac 中通常用 pip3 来替代)进行安装。
安装方法
1. 打开命令行(Terminal 或 CMD)。
2. 输入以下命令安装库:
- 安装 Openpyxl:
pip install openpyxl - 安装 Pandas::
pip install pandas 3. 检查安装是否成功:
pip show openpyxl pandas 4. 建议定期更新第三方库,升级使用的命令如下:
pip install --upgrade pandas 使用第三方库时要注意:首先你需要在程序代码中通过 import 语句加载第三方库。例如:
import pandas as pd
import openpyxl 安装第三方库时,还要注意兼容性问题。某些库的功能依赖于特定的 Python 版本或其他库,安装前检查库的文档说明。有时,还会遇到网络问题。如果安装速度慢,可以使用国内镜像源。
使用第三方库时,请结合清晰的注释,帮助团队成员理解代码。此外,建议不要滥用第三方库。对于简单任务,优先使用官方库。例如,读取小型 CSV 文件时,csv 模块可能更简单直接。
Openpyxl 库简介
- 主要用于操作 Excel 文件(
xlsx格式)。 - 功能包括创建、读取、写入和格式化 Excel 表格。
- 适合需要对 Excel 进行表格样式处理的场景,如生成带格式的报告。
示例:
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws.title = "数据统计"
ws.append(["用户ID", "反馈"])
ws.append([101, "非常满意"])
wb.save("example.xlsx") Pandas 库简介
- 主要用于数据分析和处理。
- 提供强大的表格数据操作功能,支持 Excel 文件读取和写入。
- 更擅长批量数据处理、统计和分析。
示例:
import pandas as pd
data = {"用户ID": [101, 102], "反馈": ["非常满意", "需要更多自定义选项"]}
df = pd.DataFrame(data)
df.to_excel("example.xlsx", index=False) 现在我们来了解如何运用 Openpyxl 库来完成 Excel 文件的操作。
1、读取和写入 Excel 文件。
示例:读取并修改文件内容。我们可以尝试用提示词让AI生成代码。
参考提示词:
请生成一个 Python 程序,使用 Openpyxl 库完成以下任务:
- 加载名为
feedback.xlsx的 Excel 文件,并激活默认工作表。 - 在工作表的第 1 行第 3 列(即单元格
C1)添加一个新的表头日期。 - 在表格末尾添加一行数据
[103, "性能很好,但偶尔崩溃", "2024-11-19"]。 - 将修改后的文件保存为
feedback_modified.xlsx。
要求代码清晰简洁,适合初学者理解和使用,并注重文件保存的正确性。
程序代码:
from openpyxl import load_workbook
wb = load_workbook("feedback.xlsx")
ws = wb.active
# 修改表格内容
ws["C1"] = "日期"
ws.append([103, "性能很好,但偶尔崩溃", "2024-11-19"])
wb.save("feedback_modified.xlsx")
2、自动创建带格式的 Excel 文件
案例:生成用户反馈报告。你可以使用下列提示词来生成代码:
参考提示词:
请生成一个 Python 程序,使用 Openpyxl 库完成以下任务:
- 创建一个新的 Excel 文件,并将默认工作表命名为
用户反馈报告。 - 在工作表的第 1 行添加表头
用户ID、反馈和日期,并将表头的字体设置为加粗。 - 在表格中添加以下数据:
[101, "非常满意", "2024-11-18"][102, "需要更多自定义选项", "2024-11-18"]
- 将最终的文件保存为
feedback_report.xlsx。
要求代码清晰易读,适合初学者理解,同时展示如何使用 Openpyxl 进行单元格样式设置(如加粗)。
说明:在用户反馈报告中你可能要设置表格中的单元格样式,比如设置字体(Font)、填充颜色(PatternFill)、边框(Border)、对齐方式。我们可以用到 Openpyxl 提供的 styles 模块。其中,Font 是 styles 模块中的一个类,用于定义字体的样式。
程序代码:
from openpyxl import Workbook
from openpyxl.styles import Font
wb = Workbook()
ws = wb.active
ws.title = "用户反馈报告"
# 添加表头并设置加粗
ws.append(["用户ID", "反馈", "日期"])
for cell in ws[1]:
cell.font = Font(bold=True)
# 添加数据
data = [
[101, "非常满意", "2024-11-18"],
[102, "需要更多自定义选项", "2024-11-18"],
]
for row in data:
ws.append(row)
wb.save("feedback_report.xlsx") 接下来我们了解如何使用 Pandas 操作 Excel 文件。
1、快速读取和分析数据
示例:读取反馈数据并统计关键词出现次数,我们可以用提示词让AI生成代码。
参考提示词:
请生成一个 Python 程序,使用 Pandas 库来完成以下任务:
- 读取名为
feedback.xlsx的 Excel 文件。 - 假设文件中有一列名为 “反馈”,程序需要统计其中包含关键词“满意”的条目数量。
- 打印输出统计结果,格式为:
包含‘满意’的反馈数量:<数量>。
要求代码简洁易懂,适合初学者,并确保考虑可能需要处理中文内容的情况。
程序代码:
import pandas as pd
# 读取 Excel 文件
df = pd.read_excel("feedback.xlsx")
# 统计包含 "满意" 的反馈数量
satisfied_count = df["反馈"].str.contains("满意").sum()
print(f"包含‘满意’的反馈数量:{satisfied_count}") 2、批量处理多个文件
案例:合并多个 Excel 文件。在这里我们会用到 glob 模块。 glob 是 Python 内置的文件操作模块,用于查找符合特定文件名模式的路径名。它支持使用通配符(如 * 和 ?)来匹配文件或目录,能够显著简化文件路径获取的代码量,增强程序的灵活性和自动化能力,非常适合需要处理多个文件的场景。你可以用下列提示词来生成代码:
参考提示词:
请生成一个 Python 程序,使用 Pandas 库和 glob 模块来完成以下任务:
- 扫描名为
data的文件夹,查找其中所有扩展名为.xlsx的 Excel 文件。 - 读取这些 Excel 文件的内容,并将它们合并为一个完整的表格数据(忽略索引,重新编号)。
- 将合并后的表格数据保存为一个新文件,文件名为
merged_feedback.xlsx。 - 程序运行完成后,打印消息
文件已成功合并!。
要求代码简洁易懂,适合初学者,能高效处理多个文件的数据合并任务。
程序代码:
import pandas as pd
import glob
# 读取所有 Excel 文件
file_list = glob.glob("data/*.xlsx")
df_list = [pd.read_excel(file) for file in file_list]
# 合并所有文件数据
merged_df = pd.concat(df_list, ignore_index=True)
# 保存合并后的文件
merged_df.to_excel("merged_feedback.xlsx", index=False)
print("文件已成功合并!") 3、数据清理与重命名
案例:清理用户反馈数据。你可以用下列提示词来生成代码:
参考提示词:
请生成一个 Python 程序,使用 Pandas 库来完成以下任务:
- 读取名为
feedback.xlsx的 Excel 文件。 - 对数据进行清理:
- 删除文件中的空值行。
- 删除文件中的重复行。
- 将表格中的列名
用户ID和反馈分别重命名为User ID和Feedback。 - 将清理后的数据保存到一个新文件中,文件名为
cleaned_feedback.xlsx,保存时不需要索引。
要求代码简洁清晰,适合初学者理解和使用。
程序代码:
import pandas as pd
df = pd.read_excel("feedback.xlsx")
# 去除空值和重复数据
df = df.dropna() # 删除空行
df = df.drop_duplicates() # 删除重复行
# 重命名列
df = df.rename(columns={"用户ID": "User ID", "反馈": "Feedback"})
# 保存清理后的文件
df.to_excel("cleaned_feedback.xlsx", index=False) 现在再来看几个产品经理日常工作中的案例。
案例 1:自动生成日报
任务描述:根据当天的用户反馈生成一份带格式的日报,包含用户 ID、反馈内容和统计数据。
提示词如下:
参考提示词:
请为以下任务生成一个 Python 程序,使用 Openpyxl 和 datetime 库完成需求:
任务描述:自动生成日报
- 创建一个新的 Excel 文件,并将默认工作表命名为
用户反馈日报。 - 在工作表的第一行添加表头,包括
用户ID、反馈和日期。 - 使用 Python 的
datetime模块,生成当天的日期。 - 向表格中添加以下用户反馈数据,每条数据附加当天日期:
[101, "非常满意", <当天日期>][102, "需要更多自定义选项", <当天日期>]
- 将生成的日报保存为
daily_report.xlsx。 - 打印消息
日报已生成!提示用户任务完成。
要求代码清晰易懂,适合初学者理解,同时展示如何结合 Openpyxl 和 datetime 进行自动化日报生成。
程序代码:
from openpyxl import Workbook
from datetime import datetime
# 创建 Excel 文件
wb = Workbook()
ws = wb.active
ws.title = "用户反馈日报"
# 添加表头
ws.append(["用户ID", "反馈", "日期"])
feedbacks = [
[101, "非常满意", datetime.now().strftime("%Y-%m-%d")],
[102, "需要更多自定义选项", datetime.now().strftime("%Y-%m-%d")],
]
for row in feedbacks:
ws.append(row)
# 保存文件
wb.save("daily_report.xlsx")
print("日报已生成!") 案例 2:跨部门数据整合
任务描述:合并市场部和运营部的用户数据,清理重复项,生成一份全公司用户清单。
提示词如下:
参考提示词:
请为以下任务生成一个 Python 程序,使用 Pandas 库完成需求:
任务描述:跨部门数据整合
- 从 Excel 文件中分别读取市场部和运营部的用户数据,文件名为
market.xlsx和operations.xlsx。 - 将两个部门的数据合并为一个表格,并清理重复的用户记录。
- 将最终的合并结果保存为一个新文件,文件名为
company_users.xlsx。 - 打印消息
全公司用户清单已生成!提示任务完成。
要求代码简洁易懂,适合初学者,展示如何使用 Pandas 的 read_excel、concat 和 drop_duplicates 方法进行数据整合和清理。
程序代码:
import pandas as pd
# 读取两个部门的数据
market_df = pd.read_excel("market.xlsx")
ops_df = pd.read_excel("operations.xlsx")
# 合并数据并去重
combined_df = pd.concat([market_df, ops_df]).drop_duplicates()
# 保存清单
combined_df.to_excel("company_users.xlsx", index=False)
print("全公司用户清单已生成!") 案例 3:自动化分析用户行为
任务描述:从行为日志中提取用户点击次数,生成行为统计报告。
解决方案:
参考提示词:
请为以下任务生成一个 Python 程序,使用 Pandas 库完成需求:
任务描述:自动化分析用户行为
- 从名为
user_logs.xlsx的 Excel 文件中读取用户行为日志数据,日志文件中包含User ID和Clicks等字段。 - 根据
User ID对点击次数进行分组统计,计算每个用户的总点击次数。 - 将统计结果保存为一个新的 Excel 文件,文件名为
click_report.xlsx。 - 打印消息
行为统计报告已生成!提示任务完成。
要求代码清晰易懂,适合初学者,展示如何使用 Pandas 的 read_excel、groupby 和 to_excel 方法完成数据分组统计和导出任务。
程序代码:
import pandas as pd
# 读取用户行为数据
df = pd.read_excel("user_logs.xlsx")
# 统计每个用户的点击次数
click_stats = df.groupby("User ID")["Clicks"].sum().reset_index()
# 保存统计报告
click_stats.to_excel("click_report.xlsx", index=False)
print("行为统计报告已生成!") 练习:
- 使用 Pandas 读取
feedback.xlsx文件,筛选出所有包含 “but” 的反馈,并保存为新文件。 - 使用 Openpyxl 创建一个带有表头加粗和数据居中的 Excel 文件。
- 合并
2023_Q1.xlsx和2023_Q2.xlsx数据,生成年度统计报告。
你可以自己尝试撰写,也可以设计自己的提示词,让大语言模型帮你完成这3个编程任务。试着比较你们写的内容有什么不同。
AI 助教
提示:您可在此提出学习中遇到的问题。回答由 AI 生成,可能存在错误,请注意甄别。
