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题 - 蔬菜类商品的自动定价与补货决策(数据预处理部分)附详细代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/weixin_72074975/article/details/132766443
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/666209

相关文章

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Python包管理工具核心指令uvx举例详细解析

《Python包管理工具核心指令uvx举例详细解析》:本文主要介绍Python包管理工具核心指令uvx的相关资料,uvx是uv工具链中用于临时运行Python命令行工具的高效执行器,依托Rust实... 目录一、uvx 的定位与核心功能二、uvx 的典型应用场景三、uvx 与传统工具对比四、uvx 的技术实

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

Java中Map.Entry()含义及方法使用代码

《Java中Map.Entry()含义及方法使用代码》:本文主要介绍Java中Map.Entry()含义及方法使用的相关资料,Map.Entry是Java中Map的静态内部接口,用于表示键值对,其... 目录前言 Map.Entry作用核心方法常见使用场景1. 遍历 Map 的所有键值对2. 直接修改 Ma

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

使用SpringBoot整合Sharding Sphere实现数据脱敏的示例

《使用SpringBoot整合ShardingSphere实现数据脱敏的示例》ApacheShardingSphere数据脱敏模块,通过SQL拦截与改写实现敏感信息加密存储,解决手动处理繁琐及系统改... 目录痛点一:痛点二:脱敏配置Quick Start——Spring 显示配置:1.引入依赖2.创建脱敏

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)

《MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)》掌握多表联查(INNERJOIN,LEFTJOIN,RIGHTJOIN,FULLJOIN)和子查询(标量、列、行、表子查询、相关/非相关、... 目录第一部分:多表联查 (JOIN Operations)1. 连接的类型 (JOIN Types)