本文主要是介绍2023高教社数学建模国赛C题 - 蔬菜类商品的自动定价与补货决策(数据预处理部分)附详细代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
C题用到了vlookup函数将所有数据同类项进行合并,公式如下:
单品类:=VLOOKUP(C2,[附件1.xlsx]Sheet1!A$2:D$252,2,FALSE)
大类: =VLOOKUP(C2,[附件1.xlsx]Sheet1!A$2:D$252,4,FALSE)
批发价格: =VLOOKUP(C2,[附件3.xlsx]Sheet1!B$2:C$55983,2,FALSE)
单品损耗率: =VLOOKUP(H2,[附件4.xlsx]Sheet1!B$2:CS252,2,FALSE)
价格=单位成本*(1+加成率)
单位成本=(固定成本总额+变动成本总额)
加成率=(固定成本总额+变动成本总额)销售量×(1+售价-进价进价)
所以带入到excel中的计算公式如下:
=((J2*D2+K2/100*D2)/D2)*(1+(E2-J2)/J2)
我们得到表格如下图所示:

附件 1 6 个蔬菜品类的商品信息 (数据无异常) 附件 2 销售流水明细数据附件 3 蔬菜类商品的批发价格附件 4 蔬菜类商品的近期损耗率注 (1) 附件 1 中,部分单品名称包含的数字编号表示不同的供应来源。
(2) 附件 4 中的损耗率反映了近期商品的损耗情况,通过近期盘点周期的数据计算得到。
相关库导入
| In |
| [122]: |
| i |
| m |
| p |
| o |
| r |
| t |
| |
| pandas |
| |
| a |
| s |
| |
| pd |
| i |
| m |
| p |
| o |
| r |
| t |
| |
| numpy |
| |
| a |
| s |
| |
| np |
| i |
| m |
| p |
| o |
| r |
| t |
| |
| matplotlib |
| . |
| pyplot |
| |
| a |
| s |
| |
| plt |
| i |
| m |
| p |
| o |
| r |
| t |
| |
| matplotlib |
| i |
| m |
| p |
| o |
| r |
| t |
| |
| seaborn |
| |
| a |
| s |
| |
| sns |
| i |
| m |
| p |
| o |
| r |
| t |
| |
| warnings |
| |
| warnings |
| . |
| filterwarnings |
| ( |
| "ignore" |
| ) |
|
|
| #忽略警告信息 |
| plt |
| . |
| rcParams |
| [ |
| 'font.sans-serif' |
| ] |
| |
| = |
| |
| [ |
| 'SimHei' |
| ] |
| myfont |
| |
| = |
| |
| matplotlib |
| . |
| font_manager |
| . |
| FontProperties |
| ( |
| fname |
| = |
| r"simhei.ttf" |
| ) |
导入数据集
| In |
| [4]: |
| In |
| [5]: |
| In |
| [6]: |
| In |
| [7]: |
| df1 |
| = |
| pd |
| . |
| read_excel |
| ( |
| r"附件1.xlsx" |
| ) |
| df2 |
| = |
| pd |
| . |
| read_excel |
| ( |
| r"附件2.xlsx" |
| ) |
| df3 |
| = |
| pd |
| . |
| read_excel |
| ( |
| r"附件3.xlsx" |
| ) |
| df4 |
| = |
| pd |
| . |
| read_excel |
| ( |
| r"附件4.xlsx" |
| ) |
数据查看
| In |
| [9]: |
| 单品编码 |
| 单品名称 |
| 分类编码 |
| 分类名称 |
| df1 |
| . |
| head |
| ( |
| ) |
Out[9]:
| 0 102900005115168 牛首生菜 1011010101 | 花叶类 |
| 1 102900005115199 四川红香椿 1011010101 | 花叶类 |
| 2 102900005115625 本地小毛白菜 1011010101 | 花叶类 |
| 3 102900005115748 白菜苔 1011010101 | 花叶类 |
| 4 102900005115762 苋菜 1011010101 | 花叶类 |
| [11]: |
| Out[11]: |
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 销售日期 |
| 2020-07-01 00:00:00 |
| 2020-07-01 00:00:00 |
| 2020-07-01 00:00:00 |
| 2020-07-01 00:00:00 |
| 2020-07-01 00:00:00 |
| df2 |
| . |
| head |
| (). |
| T |
| 扫码销售时间 | 09:15:07.924 | 09:17:27.295 | 09:17:33.905 | 09:19:45.450 | 09:20:23.686 |
| 单品编码 | 102900005117056 | 102900005115960 | 102900005117056 | 102900005115823 | 102900005115908 |
| 销量(千克) | 0.396 | 0.849 | 0.409 | 0.421 | 0.539 |
| 销售单价(元/千克) | 7.6 | 3.2 | 7.6 | 10.0 | 8.0 |
| 销售类型 | 销售 | 销售 | 销售 | 销售 | 销售 |
| In |
| [12]: |
| 是否打折销售 |
| 否 |
| 否 |
| 否 |
| 否 |
| 否 |
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 日期 |
| 2020-07-01 00:00:00 |
| 2020-07-01 00:00:00 |
| 2020-07-01 00:00:00 |
| 2020-07-01 00:00:00 |
| 2020-07-01 00:00:00 |
| df3 |
| . |
| head |
| (). |
| T |
Out[12]:
单品编码 102900005115762 102900005115779 102900005115786 102900005115793 102900005115823
| In |
| [13]: |
| 批发价格 |
| ( |
| 元 |
| / |
| 千克 |
| ) |
| 3.88 |
| 6.72 |
| 3.19 |
| 9.24 |
| 7.03 |
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 小分类编码 |
| 101 |
| 1010201 |
| 101 |
| 1010402 |
| 101 |
| 1010101 |
| 101 |
| 1010801 |
| 101 |
| 1010504 |
| df4 |
| . |
| head |
| (). |
| T |
Out[13]:
小分类名称 花菜类 水生根茎类 花叶类 食用菌 辣椒类
平均损耗率(%)_小分类编码_不同值 15.51 13.65 12.83 9.45 9.24
问题1 蔬菜类商品不同品类或不同单品之间可能存在一定的关联关系,请分析蔬菜各品类及单品销售量的分布规律及相互关系。
| In |
| [68]: |
| < |
| class 'pandas.core.frame.DataFrame' |
| > |
| RangeIndex: 878503 entries, 0 to 878502 |
| 解题思路:提取蔬菜各类销售数据,对蔬菜品类各品类(/单品),进行描述性统计or可视化绘制散点、柱状图等, |
| |
| 检验正态性,正态使用皮尔逊,不是正态就使用斯皮尔曼。 |
| df2 |
| . |
| info |
| ( |
| ) |
Data columns (total 7 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
- 销售日期 878503 non-null datetime64[ns]
- 扫码销售时间 878503 non-null object
- 单品编码 878503 non-null int64
- 销量(千克) 878503 non-null float64
- 销售单价(元/千克) 878503 non-null float64
- 销售类型 878503 non-null object
- 是否打折销售 878503 non-null object dtypes: datetime64[ns](1), float64(2), int64(1), object(3)
| In |
| [82]: |
| In |
| [137]: |
| memory usage: 46.9+ MB |
| #蔬菜单销量(按月份统计) |
| df_1 |
| = |
| df2 |
| . |
| iloc |
| [ |
| : |
| , |
| [ |
| 0 |
| , |
| 2 |
| , |
| 3 |
| , |
| 4 |
| , |
| 5 |
| ] |
| ] |
| df_1 |
| = |
| df_1 |
| [ |
| df_1 |
| [ |
| '销售类型' |
| ] |
| ! |
| = |
| '退货' |
| ] |
| #销售量,所以退货不考虑 |
| # (每年每月销售量) |
| df_1 |
| [ |
| '月份' |
| ] |
| |
| = |
| |
| df_1 |
| [ |
| '销售日期' |
| ]. |
| dt |
| . |
| month |
| |
| df_1 |
| [ |
| '年月' |
| ] |
| |
| = |
| df_1 |
| [ |
| '销售日期' |
| ]. |
| dt |
| . |
| strftime |
| ( |
| '%Y-%m' |
| ) |
| 销售日期 |
| 单品编码 |
| 销量 |
| ( |
| 千克 |
| ) |
| 销售单价 |
| ( |
| 元 |
| / |
| 千克 |
| ) |
| 销售类型 |
| 月份 |
| 年月 |
| 0 |
| 2020-07-01 |
| 1029000051 |
| 17056 |
| 0.396 |
| 7.6 |
| 销售 |
| 7 |
| 2020-07 |
[138]: df_1 Out[138]:
-
- 2020-07-01 102900005115960 0.849 3.2 销售 7 2020-07
- 2020-07-01 102900005117056 0.409 7.6 销售 7 2020-07
- 2020-07-01 102900005115823 0.421 10.0 销售 7 2020-07
- 2020-07-01 102900005115908 0.539 8.0 销售 7 2020-07
... ... ... ... ... ... ... ...
- 2023-06-30 102900005115250 0.284 24.0 销售 6 2023-06
- 2023-06-30 102900011022764 0.669 12.0 销售 6 2023-06
- 2023-06-30 102900005115250 0.125 24.0 销售 6 2023-06
- 2023-06-30 102900011016701 0.252 5.2 销售 6 2023-06
- 2023-06-30 102900011022764 0.803 12.0 销售 6 2023-06
878042 rows × 7 columns
| 单品编码 |
| 单品名称 |
| 分类名称 |
| #品类表 |
| df1_data |
| = |
| df1 |
| . |
| iloc |
| [: |
| , |
| [ |
| 0 |
| , |
| 1 |
| , |
| 3 |
| ]] |
| df1_data |
In [159]: Out[159]:
| 0 | 102900005115168 | 牛首生菜 | 花叶类 |
| 1 | 102900005115199 | 四川红香椿 | 花叶类 |
| 2 | 102900005115625 | 本地小毛白菜 | 花叶类 |
| 3 | 102900005115748 | 白菜苔 | 花叶类 |
| 4 | 102900005115762 | 苋菜 | 花叶类 |
| ... | ... | ... | ... |
| 246 | 106958851400125 | 海鲜菇(袋)(4) | 食用菌 |
| 247 | 106971533450003 | 海鲜菇(包) | 食用菌 |
| 248 | 106971533455008 | 海鲜菇(袋)(3) | 食用菌 |
| 249 | 106973223300667 | 虫草花(盒)(2) | 食用菌 |
| 250 | 106973990980123 | 和丰阳光海鲜菇(包) | 食用菌 |
| 251 rows × 3 columns | |||
| In |
| [160]: |
| 单品编码 |
| 销量 |
| ( |
| 千克 |
| ) |
| 月份 |
| 0 |
| 1029000051 |
| 17056 |
| 0.396 |
| 7 |
| df_1 |
| . |
| iloc |
| [ |
| : |
| , |
| [ |
| 1 |
| , |
| 2 |
| , |
| 5 |
| ] |
| ] |
Out[160]:
- 102900005115960 0.849 7
- 102900005117056 0.409 7
- 102900005115823 0.421 7
- 102900005115908 0.539 7
... ... ... ...
- 102900005115250 0.284 6
- 102900011022764 0.669 6
- 102900005115250 0.125 6
- 102900011016701 0.252 6
- 102900011022764 0.803 6
878042 rows × 3 columns
| [161]: |
| In |
| [158]: |
| Out[158]: |
| 单品编码 |
| 分类名称 |
| #表合并(添加品类信息) |
| data |
| |
| = |
| |
| pd |
| . |
| merge |
| ( |
| df_1 |
| . |
| iloc |
| [: |
| [ |
| , |
| 1 |
| , |
| 2 |
| , |
| 5 |
| , |
| ]] |
| df1_data |
| , |
| on |
| = |
| "单品编码" |
| , |
| how |
| = |
| "left" |
| ) |
| df1_data |
| # df_1 |
| 0 | 102900005115168 | 花叶类 |
| 1 | 102900005115199 | 花叶类 |
| 2 | 102900005115625 | 花叶类 |
| 3 | 102900005115748 | 花叶类 |
| 4 | 102900005115762 | 花叶类 |
| ... | ... | ... |
| 246 | 106958851400125 | 食用菌 |
| 247 | 106971533450003 | 食用菌 |
| 248 | 106971533455008 | 食用菌 |
| 249 | 106973223300667 | 食用菌 |
| 250 | 106973990980123 | 食用菌 |
251 rows × 2 columns
| 探究蔬菜各品类 |
| In |
| [162]: |
| 单品编码 |
| 销量 |
| ( |
| 千克 |
| ) |
| 月份 |
| 单品名称 |
| 分类名称 |
| 0 |
| 1029000051 |
| 17056 |
| 0.396 |
| 7 |
| 泡泡椒 |
| ( |
| 精品 |
| ) |
| 辣椒类 |
| df_1_data1 |
| |
| = |
| |
| data |
| . |
| pivot_table |
| ( |
| index |
| = |
| "月份" |
| , |
| columns |
| = |
| "分类名称" |
| , |
| values |
| = |
| "销量(千克)" |
| , |
| aggfunc |
| = |
| [ |
| np |
| . |
| sum |
| , |
| ] |
| fill_value |
| = |
| 0 |
| ) |
In [163]: data Out[163]:
- 102900005115960 0.849 7 大白菜 花叶类
- 102900005117056 0.409 7 泡泡椒(精品) 辣椒类
- 102900005115823 0.421 7 上海青 花叶类
- 102900005115908 0.539 7 菜心 花叶类
... ... ... ... ... ...
- 102900005115250 0.284 6 西峡花菇(1) 食用菌
- 102900011022764 0.669 6 长线茄 茄类
- 102900005115250 0.125 6 西峡花菇(1) 食用菌
- 102900011016701 0.252 6 芜湖青椒(1) 辣椒类
- 102900011022764 0.803 6 长线茄 茄类
- rows × 5 columns
| [164]: |
| df_1_data1 |
Out[164]:
sum
分类名称 水生根茎类 花叶类 花菜类 茄类 辣椒类 食用菌
月份
- 6092.274 17857.651 4103.958 1799.962 10205.431 9827.299
- 4065.083 14572.100 3437.325 1850.245 9684.989 7594.469
- 2516.076 13915.576 2579.784 1561.455 8915.800 5732.215
- 1395.519 13553.790 2533.346 1828.698 7392.322 4684.421
- 887.212 14104.847 2704.914 2477.506 6618.500 4054.720
- 1198.471 13297.080 2495.009 2568.890 5944.559 3913.553
- 2740.537 17398.938 4471.245 2900.921 6140.154 4514.817
- 4507.877 24516.036 4926.903 2736.189 9886.956 5298.255
- 3773.185 18738.509 3594.150 1518.448 6760.253 5063.409
- 4938.264 19239.292 3911.686 1402.145 7949.724 8547.848
- 3592.062 14944.403 3884.538 937.199 6162.623 8159.765 12 4900.992 16521.331 3146.919 860.461 5983.801 8740.955
| In |
| [112]: |
| In |
| [116]: |
| Out[116]: |
| col |
| = |
| [] |
| f |
| o |
| r |
| |
| i |
| |
| i |
| n |
| |
| df_1_data1 |
| . |
| columns |
| : |
| |
|
|
| i |
| = |
| i |
| [ |
| 1 |
| ] |
|
|
| i |
| = |
| str |
| ( |
| i |
| ) |
|
|
| col |
| . |
| append |
| ( |
| '' |
| . |
| join |
| ( |
| i |
| )) |
| df_1_data1 |
| . |
| columns |
| = |
| col |
| # df_1_data1.reset_index() |
| df_1_data1 |
水生根茎类 花叶类 花菜类 茄类 辣椒类 食用菌
月份
- 6092.274 17857.651 4103.958 1799.962 10205.431 9827.299
- 4065.083 14572.100 3437.325 1850.245 9684.989 7594.469
- 2516.076 13915.576 2579.784 1561.455 8915.800 5732.215
- 1395.519 13553.790 2533.346 1828.698 7392.322 4684.421
- 887.212 14104.847 2704.914 2477.506 6618.500 4054.720
- 1198.471 13297.080 2495.009 2568.890 5944.559 3913.553
- 2740.537 17398.938 4471.245 2900.921 6140.154 4514.817
- 4507.877 24516.036 4926.903 2736.189 9886.956 5298.255
- 3773.185 18738.509 3594.150 1518.448 6760.253 5063.409
- 4938.264 19239.292 3911.686 1402.145 7949.724 8547.848
- 3592.062 14944.403 3884.538 937.199 6162.623 8159.765
- 4900.992 16521.331 3146.919 860.461 5983.801 8740.955
这篇关于2023高教社数学建模国赛C题 - 蔬菜类商品的自动定价与补货决策(数据预处理部分)附详细代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!