〇、数学建模竞赛及赛题

赛题源文件下载
本次我们队伍选择的是 C 题(蔬菜类商品的自动定价与补货决策),常规的数据分析处理题。

注意:因为本人负责使用 Python 根据数学模型清洗、处理数据及生成结果处理结果图,所以本文注重的是对本人在比赛过程中使用的代码进行分析总结

一、处理大数据

这次的 C 题总共有四个附件,除了附件 2 其它的附件数据量基本都很小,所以在代码调试过程中影响并不大。但是附件 2 确有 878,504 条数据,每次光使用 Python 读取该文件内容就会耗去很漫长的时间,这在比赛过程中是一笔巨大的时间开销。所以,使用适当的方法加快数据的读取过程是一个很重要的问题。

我的思路是:先把附件文件的数据读取一次,并把该数据存储在对应的变量中,然后将这个变量存储成二进制文件形式。需要使用某个附件文件的数据时,就直接加载对应的二进制变量文件就可以了。这样在比赛过程中就可以极大的提高程序调试的时间周期了!下面是具体的代码:

保存变量
1
2
3
data1 = pd.read_excel('DATA/DATA1.xlsx')        # 读取 xlsx 文件
with open('VALUE/data1.pickle', 'wb') as f: # 将变量 data1 存储到文件 data1.pickle 中
pickle.dump(data1, f)
加载变量
1
2
with open('VALUE/data1.pickle', 'rb') as f:     # 从文件中读取变量 
s_daily_sales = pickle.load(f)

二、好看的图标配色方案

有几个不错的配色方案:

配色方案一
1
color0 = ["#95a2ff", "#fa8080", "#ffc076", "#fae768", "#87e885", "#3cb9fc", "#73abf5", "#cb9bff", "#434348", "#90ed7d", "#f7a35c", "#8085e9"]

图2.1 配色方案一

配色方案二
1
color1= ["#3682be", "#45a776", "#f05326", "#eed777", "#334f65", "#b3974e", "#38cb7d", "#ddae33", "#844bb3", "#93c555", "#5f6694", "#df3881"]

图2.2 配色方案二

三、Colormap 的使用方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import matplotlib.pyplot as plt
import numpy as np

# DATA
x = np.linspace(0, 20, 20)
h = 5

fig=plt.figure(figsize=(10, 10))
# 创建 colormap 对象,颜色列表长度和柱子的数量相同
cmap = plt.cm.get_cmap('Oranges', len(x))
# 从调色板中获取颜色列表
colors = cmap(np.linspace(0, 1, len(x)))
plt.bar(x, height = h, color = colors)
plt.axis('off')
plt.savefig('D:\\SeaYJ\\Desktop\\1.JPG')

get_cmap 中的第一个参数就是调色板的名称,在 Matlibplot 中有很多内置的调色板可以使用,简单列举几个:PlasmaOrangesSummerSpectralSet1Rainbow