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

相关文章

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

Spring Boot 3.4.3 基于 Spring WebFlux 实现 SSE 功能(代码示例)

《SpringBoot3.4.3基于SpringWebFlux实现SSE功能(代码示例)》SpringBoot3.4.3结合SpringWebFlux实现SSE功能,为实时数据推送提供... 目录1. SSE 简介1.1 什么是 SSE?1.2 SSE 的优点1.3 适用场景2. Spring WebFlu

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4