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

相关文章

Django开发时如何避免频繁发送短信验证码(python图文代码)

《Django开发时如何避免频繁发送短信验证码(python图文代码)》Django开发时,为防止频繁发送验证码,后端需用Redis限制请求频率,结合管道技术提升效率,通过生产者消费者模式解耦业务逻辑... 目录避免频繁发送 验证码1. www.chinasem.cn避免频繁发送 验证码逻辑分析2. 避免频繁

批量导入txt数据到的redis过程

《批量导入txt数据到的redis过程》用户通过将Redis命令逐行写入txt文件,利用管道模式运行客户端,成功执行批量删除以Product*匹配的Key操作,提高了数据清理效率... 目录批量导入txt数据到Redisjs把redis命令按一条 一行写到txt中管道命令运行redis客户端成功了批量删除k

精选20个好玩又实用的的Python实战项目(有图文代码)

《精选20个好玩又实用的的Python实战项目(有图文代码)》文章介绍了20个实用Python项目,涵盖游戏开发、工具应用、图像处理、机器学习等,使用Tkinter、PIL、OpenCV、Kivy等库... 目录① 猜字游戏② 闹钟③ 骰子模拟器④ 二维码⑤ 语言检测⑥ 加密和解密⑦ URL缩短⑧ 音乐播放

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Apache Ignite 与 Spring Boot 集成详细指南

《ApacheIgnite与SpringBoot集成详细指南》ApacheIgnite官方指南详解如何通过SpringBootStarter扩展实现自动配置,支持厚/轻客户端模式,简化Ign... 目录 一、背景:为什么需要这个集成? 二、两种集成方式(对应两种客户端模型) 三、方式一:自动配置 Thick

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali