2023高教社数学建模国赛C题 - 蔬菜类商品的自动定价与补货决策(数据预处理部分)附详细代码

本文主要是介绍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        

---  ------      --------------   -----        

  1. 销售日期        878503 non-null  datetime64[ns]
  2. 扫码销售时间      878503 non-null  object       
  3. 单品编码        878503 non-null  int64        
  4. 销量(千克)      878503 non-null  float64      
  5. 销售单价(元/千克)  878503 non-null  float64      
  6. 销售类型        878503 non-null  object       
  7. 是否打折销售      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]:

    1. 2020-07-01     102900005115960  0.849 3.2      销售 7           2020-07
    2. 2020-07-01     102900005117056  0.409 7.6      销售 7           2020-07
    3. 2020-07-01     102900005115823  0.421 10.0    销售 7           2020-07
    4. 2020-07-01     102900005115908  0.539 8.0      销售 7           2020-07

                            ...                    ...                                ...                  ...                               ...                ...        ...               ...

  1. 2023-06-30     102900005115250  0.284 24.0    销售 6           2023-06
  2. 2023-06-30     102900011022764  0.669 12.0    销售 6           2023-06
  3. 2023-06-30     102900005115250  0.125 24.0    销售 6           2023-06
  4. 2023-06-30     102900011016701  0.252 5.2      销售 6           2023-06
  5. 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]:

  1. 102900005115960    0.849 7
  2. 102900005117056    0.409 7
  3. 102900005115823    0.421 7
  4. 102900005115908    0.539 7

                            ...                                ...                  ...         ...

  1. 102900005115250     0.284 6
  2. 102900011022764     0.669 6
  3. 102900005115250     0.125 6
  4. 102900011016701     0.252 6
  5. 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]:

  1. 102900005115960    0.849 7         大白菜 花叶类
  2. 102900005117056    0.409 7 泡泡椒(精品) 辣椒类
  3. 102900005115823    0.421 7         上海青 花叶类
  4. 102900005115908    0.539 7         菜心 花叶类

                            ...                                ...                  ...        ...                      ...                ...

  1. 102900005115250     0.284 6 西峡花菇(1) 食用菌
  2. 102900011022764     0.669 6         长线茄         茄类
  3. 102900005115250     0.125 6 西峡花菇(1) 食用菌
  4. 102900011016701     0.252 6 芜湖青椒(1) 辣椒类
  5. 102900011022764     0.803 6         长线茄         茄类
  6. rows × 5 columns

 [164]:

df_1_data1

Out[164]:

sum

                           分类名称 水生根茎类 花叶类 花菜类 茄类                  辣椒类 食用菌

月份

  1. 6092.274 17857.651    4103.958      1799.962      10205.431    9827.299
  2. 4065.083 14572.100    3437.325      1850.245      9684.989      7594.469
  3. 2516.076 13915.576    2579.784      1561.455      8915.800      5732.215
  4. 1395.519 13553.790    2533.346      1828.698      7392.322      4684.421
  5. 887.212   14104.847    2704.914      2477.506      6618.500      4054.720
  6. 1198.471 13297.080    2495.009      2568.890      5944.559      3913.553
  7. 2740.537 17398.938    4471.245      2900.921      6140.154      4514.817
  8. 4507.877 24516.036    4926.903      2736.189      9886.956      5298.255
  9. 3773.185 18738.509    3594.150      1518.448      6760.253      5063.409
  10. 4938.264 19239.292    3911.686      1402.145      7949.724      8547.848
  11. 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

                                   水生根茎类 花叶类 花菜类 茄类                  辣椒类 食用菌

月份

  1. 6092.274        17857.651    4103.958      1799.962      10205.431    9827.299
  2. 4065.083        14572.100    3437.325      1850.245      9684.989      7594.469
  3. 2516.076        13915.576    2579.784      1561.455      8915.800      5732.215
  4. 1395.519        13553.790    2533.346      1828.698      7392.322      4684.421
  5. 887.212           14104.847    2704.914      2477.506      6618.500      4054.720
  6. 1198.471         13297.080    2495.009      2568.890      5944.559      3913.553
  7. 2740.537        17398.938    4471.245      2900.921      6140.154      4514.817
  8. 4507.877        24516.036    4926.903      2736.189      9886.956      5298.255
  9. 3773.185        18738.509    3594.150      1518.448      6760.253      5063.409
  10. 4938.264        19239.292    3911.686      1402.145      7949.724      8547.848
  11. 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

这篇关于2023高教社数学建模国赛C题 - 蔬菜类商品的自动定价与补货决策(数据预处理部分)附详细代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/666209

相关文章

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

Java集合之Iterator迭代器实现代码解析

《Java集合之Iterator迭代器实现代码解析》迭代器Iterator是Java集合框架中的一个核心接口,位于java.util包下,它定义了一种标准的元素访问机制,为各种集合类型提供了一种统一的... 目录一、什么是Iterator二、Iterator的核心方法三、基本使用示例四、Iterator的工

Java 线程池+分布式实现代码

《Java线程池+分布式实现代码》在Java开发中,池通过预先创建并管理一定数量的资源,避免频繁创建和销毁资源带来的性能开销,从而提高系统效率,:本文主要介绍Java线程池+分布式实现代码,需要... 目录1. 线程池1.1 自定义线程池实现1.1.1 线程池核心1.1.2 代码示例1.2 总结流程2. J

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数

Python的pandas库基础知识超详细教程

《Python的pandas库基础知识超详细教程》Pandas是Python数据处理核心库,提供Series和DataFrame结构,支持CSV/Excel/SQL等数据源导入及清洗、合并、统计等功能... 目录一、配置环境二、序列和数据表2.1 初始化2.2  获取数值2.3 获取索引2.4 索引取内容2

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

Vue实现路由守卫的示例代码

《Vue实现路由守卫的示例代码》Vue路由守卫是控制页面导航的钩子函数,主要用于鉴权、数据预加载等场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、概念二、类型三、实战一、概念路由守卫(Navigation Guards)本质上就是 在路

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

JAVA实现Token自动续期机制的示例代码

《JAVA实现Token自动续期机制的示例代码》本文主要介绍了JAVA实现Token自动续期机制的示例代码,通过动态调整会话生命周期平衡安全性与用户体验,解决固定有效期Token带来的风险与不便,感兴... 目录1. 固定有效期Token的内在局限性2. 自动续期机制:兼顾安全与体验的解决方案3. 总结PS

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型