让【道友老李】来帮你解答,本回答参考通义千问qwen-plus编写,并整理提供,如果还有疑问可以点击头像关注,评论或留言
好的,我将帮助你完成这个任务。我们将使用 `pandas` 库来处理数据,并使用 `openpyxl` 库来创建和保存 Excel 文件。以下是详细的步骤和代码:
步骤
- 读取原始数据:使用
pandas 读取原始数据。 - 分组计算:按照
Targe 分组,并计算 Im、Cl 和 Spend 的总和,以及 Rate。 - 创建 Excel 文件:使用
openpyxl 创建一个新的 Excel 文件,并将结果写入两个不同的 sheet 中。
代码实现
import pandas as pd
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows
# 读取原始数据
data = {
'Date': ['Nov 16, 2024', 'Nov 09, 2024', 'Nov 10, 2024', 'Nov 12, 2024'],
'Currency': ['USD', 'USD', 'USD', 'USD'],
'ADS Name': ['Fog Light', 'Fog Light', 'Fog Light', 'Fog Light'],
'Targe': ['Fog Light red', 'Fog Light red', 'Fog Light yellow', 'Fog Light yellow'],
'Search': ['2 inches fog Light red', 'fog Light red left side', 'Fog Light yellow', 'Fog Light yellow 1994'],
'Im': [11, 1, 3, 6],
'Cl': [1, 1, 1, 1],
'Rate': [9.0909, 100.0000, 33.3333, 16.6667],
'Spend': [0.60, 0.60, 0.60, 0.60]
}
df = pd.DataFrame(data)
# 分组计算
grouped = df.groupby('Targe').agg({'Im': 'sum', 'Cl': 'sum', 'Spend': 'sum'})
grouped['Rate'] = (grouped['Cl'] / grouped['Im']).round(2)
# 重置索引
grouped.reset_index(inplace=True)
# 创建新的 Excel 工作簿
wb = Workbook()
# 创建第一个 sheet 并写入原始数据
ws1 = wb.active
ws1.title = "数据"
for r in dataframe_to_rows(df, index=False, header=True):
ws1.append(r)
# 创建第二个 sheet 并写入分组计算结果
ws2 = wb.create_sheet("计算")
for r in dataframe_to_rows(grouped, index=False, header=True):
ws2.append(r)
# 保存 Excel 文件
file_path = '指定路径/结果.xlsx'
wb.save(file_path)
print(f"Excel 文件已保存到: {file_path}")
说明
- 读取原始数据:我们使用字典创建了一个 DataFrame,模拟了你的原始数据。
- 分组计算:使用
groupby 方法按 Targe 分组,并计算 Im、Cl 和 Spend 的总和,以及 Rate。 - 创建 Excel 文件:使用
openpyxl 创建一个新的 Excel 文件,并将原始数据和分组计算结果分别写入两个不同的 sheet 中。 - 保存文件:将 Excel 文件保存到指定路径。
运行环境
确保你已经安装了 pandas 和 openpyxl 库。如果没有安装,可以使用以下命令进行安装:
pip install pandas openpyxl
希望这段代码能满足你的需求!如果有任何问题,请随时告诉我。