明星python零基础自学Python自
题目要求为了知道消费者季节性消费习惯,阿珍想要统计一月份卖得最好的明星产品,可是一个一个商品统计实在是很麻烦,这该怎么办呢?
聪明的阿珍想要的好办法,可以通过Python读取“2019年1月销售订单.xlsx”工作薄,获取“销售订单数据”工作表,计算得出工作表内每个商品当月的销售额
接着从所有商品销售额中,找到当月销售额最高的商品,最后输出销售额最高商品品和销售额。
例如:明星产品是:XXX,一月总共销售出XXX元
思路:1、 导入openpyxl模块
2、使用openpyxl.load_workbook()函数读取"2019年1月销售订单.xlsx"工作簿并赋值给变量wb
记得添加data_only=True参数打开工作簿,获取公式计算后的值
3、通过工作簿对象wb获取名为“销售订单数据”的工作表对象,并赋值给变量orderSheet,再定义一个空字典用来存储商品和其对应的销售额
4、遍历订单数据每一行,取出第3列的商品名并赋值给productName,判断获取到的productName是"商品名"时使用continue跳过本行
5、获取订单总价I列的索引,根据索引获取本行订单总价并赋值给变量price,判断当商品名还不在结果字典sellData中时给这个商品在sellData中设置初始值为0,将本行总价加到结果字典sellData对应商品名的销售额中
6、定义一个初始值为0的变量maxSold, 表示销售的最大值,定义一个空字符串变量maxName, 表示最大值的商品名
7、遍历结果字典sellData的键,也就是商品名,取出商品名对应的销售额赋值给变量productSold,判断当前商品销售额大于记录的最大销售额maxSold时将maxSold替换成新的最大销售额将maxName替换成新的最大销售额对应的商品名
8、按格式输出结果: 明星产品是:{商品名},一月总共销售出{最大销售额}元
提示:字典(dict)
为了方便统计,在这里我们使用一个字典(dict)来存储每个商品的销售总额。
存储的结构如下图所示,商品名作为键,销售额作为值来进行存储。
解析:Step.1导入openpyxl模块
# TODO 导入openpyxl模块
import openpyxl
Step.2使用openpyxl.load_workbook()函数读取"2019年1月销售订单.xlsx"工作簿并赋值给变量wb
记得添加data_only=True参数打开工作簿,获取公式计算后的值
# TODO 使用openpyxl.load_workbook()函数读取"2019年1月销售订单.xlsx"工作簿并赋值给变量wb
# TODO 记得添加data_only=True参数打开工作簿,获取公式计算后的值
wb = openpyxl.load_workbook("2019年1月销售订单.xlsx",data_only=True)
Step.3通过工作簿对象wb获取名为“销售订单数据”的工作表对象,并赋值给变量orderSheet,再定义一个空字典用来存储商品和其对应的销售额
# TODO 通过工作簿对象wb获取名为“销售订单数据”的工作表对象,并赋值给变量orderSheet
orderSheet = wb["销售订单数据"]
# TODO 定义一个空字典用来存储商品和其对应的销售额
sellData = {}
Step.4遍历订单数据每一行,取出第3列的商品名并赋值给productName,判断获取到的productName是"商品名"时使用continue跳过本行
# TODO 遍历订单数据每一行
for rowData in orderSheet.rows:
# TODO 取出第3列的商品名并赋值给productName
productName = rowData[2].value
# TODO 判断获取到的productName是"商品名"时
if productName == "商品名":
# TODO 使用continue跳过本行
continue
Step.5获取订单总价I列的索引,根据索引获取本行订单总价并赋值给变量price,判断当商品名还不在结果字典sellData中时给这个商品在sellData中设置初始值为0,将本行总价加到结果字典sellData对应商品名的销售额中
# TODO 获取订单总价I列的索引
priceIndex = openpyxl.utils.cell.column_index_from_string("I") - 1
# TODO 根据索引获取本行订单总价并赋值给变量price
price = rowData[priceIndex].value
# TODO 判断当商品名还不在结果字典sellData中时
if productName not in sellData.keys():
# TODO 给这个商品在sellData中设置初始值为0
sellData[productName] = 0
# TODO 将本行总价加到结果字典sellData对应商品名的销售额中
sellData[productName] = sellData[productName] + price
Step.6定义一个初始值为0的变量maxSold, 表示销售的最大值,定义一个空字符串变量maxName, 表示最大值的商品名
# TODO 定义一个初始值为0的变量maxSold, 表示销售的最大值
maxSold = 0
# TODO 定义一个空字符串变量maxName, 表示最大值的商品名
maxName = ""
Step.7遍历结果字典sellData的键,也就是商品名,取出商品名对应的销售额赋值给变量productSold,判断当前商品销售额大于记录的最大销售额maxSold时将maxSold替换成新的最大销售额将maxName替换成新的最大销售额对应的商品名
# TODO 遍历结果字典sellData的键,也就是商品名
for productName in sellData.keys():
# TODO 取出商品名对应的销售额赋值给变量productSold
productSold = sellData[productName]
# TODO 判断当前商品销售额大于记录的最大销售额maxSold时
if productSold > maxSold:
# TODO 将maxSold替换成新的最大销售额
maxSold = productSold
# TODO 将maxName替换成新的最大销售额对应的商品名
maxName = productName
Step.8按格式输出结果: 明星产品是:{商品名},一月总共销售出{最大销售额}元
# TODO 按格式输出结果: 明星产品是:{商品名},一月总共销售出{最大销售额}元
print(f"明星产品是:{maxName},一月总共销售出{maxSold}元")
完整代码:# TODO 导入openpyxl模块import openpyxl# TODO 使用openpyxl.load_workbook()函数读取"2019年1月销售订单.xlsx"工作簿并赋值给变量wb # TODO 记得添加data_only=True参数打开工作簿,获取公式计算后的值wb = openpyxl.load_workbook("2019年1月销售订单.xlsx",data_only=True)# TODO 通过工作簿对象wb获取名为“销售订单数据”的工作表对象,并赋值给变量orderSheetorderSheet = wb["销售订单数据"]# TODO 定义一个空字典用来存储商品和其对应的销售额sellData = {}# TODO 遍历订单数据每一行for rowData in orderSheet.rows: # TODO 取出第3列的商品名并赋值给productName productName = rowData[2].value # TODO 判断获取到的productName是"商品名"时 if productName == "商品名": # TODO 使用continue跳过本行 continue # TODO 获取订单总价I列的索引 priceIndex = openpyxl.utils.cell.column_index_from_string("I") - 1 # TODO 根据索引获取本行订单总价并赋值给变量price price = rowData[priceIndex].value # TODO 判断当商品名还不在结果字典sellData中时 if productName not in sellData.keys(): # TODO 给这个商品在sellData中设置初始值为0 sellData[productName] = 0 # TODO 将本行总价加到结果字典sellData对应商品名的销售额中 sellData[productName] = sellData[productName] + price# TODO 定义一个初始值为0的变量maxSold, 表示销售的最大值maxSold = 0 # TODO 定义一个空字符串变量maxName, 表示最大值的商品名maxName = ""# TODO 遍历结果字典sellData的键,也就是商品名for productName in sellData.keys(): # TODO 取出商品名对应的销售额赋值给变量productSold productSold = sellData[productName] # TODO 判断当前商品销售额大于记录的最大销售额maxSold时 if productSold > maxSold: # TODO 将maxSold替换成新的最大销售额 maxSold = productSold # TODO 将maxName替换成新的最大销售额对应的商品名 maxName = productName# TODO 按格式输出结果: 明星产品是:{商品名},一月总共销售出{最大销售额}元print(f"明星产品是:{maxName},一月总共销售出{maxSold}元")
关注点赞收藏不迷路,私信共享学习资料,共同学习,共同进步。
- 2025-05-13河南哪个地方养狗好养些平顶山市新华区光明
- 2025-05-13求领养猫武汉武汉同城家养小猫咪求爱心爱心
- 2025-05-13不爱狗如何养狗爱狗和不爱狗的都应该理性讨
- 2025-05-13联发熙园可以养多少狗2月天津哪里的房子有
- 2025-05-13家里养猫会干嘛盘点养猫的6大好处再也不用
- 2025-05-13蚂蚁庄园故宫养猫蚂蚁庄园故宫养猫原因揭秘
- 2025-05-13蔡家装修怎么样北碚蔡家优质楼盘总结
- 2025-05-13茶陵舒适家装修设计案例茶陵让广大城乡居民
- 2025-05-13藏式家装修最新藏式风格的房子装修很难施工
- 2025-05-06hailey家装修设计师居所极具异域风情