题目要求
为了知道消费者季节性消费习惯,阿珍想要统计一月份卖得最好的明星产品,可是一个一个商品统计实在是很麻烦,这该怎么办呢?
聪明的阿珍想要的好办法,可以通过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获取名为“销售订单数据”的工作表对象,并赋值给变量orderSheet
orderSheet = 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}元")
关注点赞收藏不迷路,私信共享学习资料,共同学习,共同进步。
文章来源于互联网,整理者:万财小编,侵权请联系我们删除,如若转载,请注明出处:https://www.wancaicc.com/15085.html