2019年华中杯数学建模B题数据处理代码

在5月一号晚上,我参加了华中杯数学建模。对于数据处理,我用到了下面代码,希望能帮助到大家。

myDivision.py文件,用于对附件一的数据进行划分:

import pandas as pd #分析excel表格
import matplotlib.pyplot as plt # matplotlib中有很多可用的模块,我们使用pyplot模块
from numpy import *#读取excel表格并返回日期
def readExcel():df = pd.read_excel('附件1.xlsx',sheet_name='销量数据')return set(df['货号'])    #按货号分#return set(df['日期'])  # 按日期分#按货号进行分开
def changeGoods(x):df2 = pd.read_excel('附件1.xlsx',sheet_name='销量数据')#按货号分for i in range(len(x)):k = df2[df2['货号'] == x[i]]k.to_csv('huowu//{name}.csv'.format(name = x[i]), sep=',', header=True, index=True)#按日期进行分开
def changeDay(x):df2 = pd.read_excel('附件1.xlsx',sheet_name='销量数据')#按日期分for i in range(len(x)):k = df2[df2['日期'] == x[i]]# my_data = x[i][0:4] + x[i][5:7] + x[i][8:10]k.to_csv('data//{name}.csv'.format(name = x[i]), sep=',', header=True, index=True)#把每个日期和货物总量算出来
def summaryAll(x):sum = 0df = pd.read_csv(x)for m in range(len(df['销售件数'])):sum += df['销售件数'][m]return sum#创建表格
def createExcel(day,data):my_day = []for i in range(len(day)):# my_day.append(day[i][0:4] + '/' + day[i][4:6] + '/' +day[i][6:8])my_day.append(day[i][0:4] + day[i][4:6] + day[i][6:8])df1 = pd.DataFrame({'日期': my_day ,'总销量': data})df1.to_excel('每个日期的总销量二.xlsx', sheet_name='每天的总销量', startcol=0, index=False)def main():this = readExcel()  #读取excel表格并返回日期my_list = list(this)#changeDay(my_list) #按日期进行分开changeGoods(my_list)  # 按货号进行分开my_data = []for i in range(len(my_list)) :my_data.append(str(my_list[i][0:4]+my_list[i][5:7]+my_list[i][8:10]))my_data.sort()my_data_sum = []for j in range(len(my_data)):a = summaryAll('day/{my_day}.csv'.format(my_day = my_data[j]))my_data_sum.append(a)print(my_data)print(my_data_sum)data = []for k in range(len(my_data)):data.append(k)my_data_sum2 = []for n in range(len(my_data_sum)):my_data_sum2.append(math.log(my_data_sum[n]))print(my_data_sum2)createExcel(my_data, my_data_sum)if __name__ == '__main__':main()

myDivision2.py用于对每月的货号总销量进行汇总:

import pandas as pd #分析excel表格#读取excel表格并返回产品
def readExcelProdect():# df = pd.read_excel('附件一.xlsx',sheet_name='销量数据')df = pd.read_excel('附件1.xlsx', sheet_name='销量数据')return set(df['货号'])    #按货物分#读取excel表格并返回日期
def readExcelDay():# df = pd.read_excel('附件一.xlsx',sheet_name='销量数据')df = pd.read_excel('附件1.xlsx', sheet_name='销量数据')return set(df['日期'])  # 按日期分#生成汇总表
def createExcel(x,y):dict = {}dict[x[0]] = yfor i in range(1,len(x)):w = []for j in range(0,len(y)):w.append('')dict[x[i]] = wdf = pd.DataFrame(dict)df.to_excel('汇总.xlsx')#处理每一种货物的表格
def createData(x,day,goods):every_month = []for i in range(0,len(x['月份'])):every_month.append(str(x['月份'][i]))month = list(set(every_month))month.sort()all_num = []for i in range(len(month)):sum = 0my = x[x['月份'] == int(month[i])]n = list(my['销售件数'])for j in range(len(n)):sum += n[j]all_num.append(sum)# print(month)# print(all_num)#进行补零all_month = dayall_xiao_shou = []#print(day)n1 = 0for m in range(len(day)):if day[m] == month[0]:n1 = m       #每个货物的月份开始日期n2 = n1 + len(month) - 1     #每个货物的二月份结束日期for n in range(len(day)):if n < n1  or n > n2 :all_xiao_shou.append(0)else:all_xiao_shou.append(all_num[n-n1])# print(day)print(all_xiao_shou)def main():this1 = readExcelProdect()  # 读取excel表格并返回货号my_goods = list(this1)my_goods_new = []for i in range(len(my_goods)):my_goods_new.append(my_goods[i][2:7])my_goods_new.sort()this_goods = []for j in range(len(my_goods_new)):this_goods.append('SS'+my_goods_new[j])#print(this_goods)#print(len(this_goods))this2 = readExcelDay()  # 读取excel表格并返回日期my_day = list(this2)my_day_new = []for i in range(len(my_day)):this_day = str(my_day[i])my_day_new.append(this_day[0:6])my_day_new = list(set(my_day_new))my_day_new.sort()# print(my_day_new)# createExcel(my_day_new, this_goods)df = pd.read_csv('huowu/SS61146.csv')createData(df, my_day_new, this_goods)for j in range(len(this_goods)):df = pd.read_csv('huowu/{n}.csv'.format(n = this_goods[j]))# print(this_goods[j])createData(df,my_day_new,this_goods)if __name__ == '__main__':main()

处理延期比数据并生成频率直方图,并把每个区间赋值为1-10以内数据,自动生成txt文件,方便matlib处理:
yanQiBi1.py
import pandas as pd
# 柱形图-折线图
from pyecharts import Bar, Line, Overlap
import numpy as np
import matplotlib.pyplot as plt#读取按季度分的表格并统计每个区间的个数
def readExcel(x):yy = []a1 = [];a11 = [];a12 = [];a13 = []a2 = [];a3 = [];a4 = [];a5 = [];a6 = []for i in range(len(x['延期比'])):# if x['延期比'][i] >= 0 and x['延期比'][i] < 0.01:#     a1.append(x['延期比'][i])#0-0.01# if x['延期比'][i] == 0:#     # a11.append(x['延期比'][i])#     a11.append(1)if x['延期比'][i] > 0 and x['延期比'][i] < 0.001:# a12.append(x['延期比'][i])a12.append(1)elif x['延期比'][i] >= 0.001 and x['延期比'][i] < 0.01:# a13.append(x['延期比'][i])a13.append(2)elif x['延期比'][i] >= 0.01 and x['延期比'][i] < 0.02:# a2.append(x['延期比'][i])a2.append(3)elif x['延期比'][i] >= 0.02 and x['延期比'][i] < 0.1:# a3.append(x['延期比'][i])a3.append(4)elif x['延期比'][i] >= 0.1 and x['延期比'][i] < 0.2:# a4.append(x['延期比'][i])a4.append(5)elif x['延期比'][i] >= 0.2 and x['延期比'][i] < 0.35:# a5.append(x['延期比'][i])a5.append(6)elif x['延期比'][i] >= 0.35 and x['延期比'][i] <= 0.5:# a6.append(x['延期比'][i])a6.append(7)# yy.append(len(a11))yy.append(len(a12))yy.append(len(a13))yy.append(len(a2))yy.append(len(a3))yy.append(len(a4))yy.append(len(a5))yy.append(len(a6))return yy#生成matlab需要数据
def createMatl(myData):print(myData)my_list = []for i in range(myData[0]):my_list.append(1)for i in range(myData[1]):my_list.append(2)for i in range(myData[2]):my_list.append(3)for i in range(myData[3]):my_list.append(4)for i in range(myData[4]):my_list.append(5)for i in range(myData[5]):my_list.append(6)for i in range(myData[6]):my_list.append(7)print(my_list)return my_list# with open('all_data.txt','w') as f:#     f.write(str(my_list))def createChart(my_list):xx = [1,2,3,4,5,6,7]bar = Bar("柱形图-折线图")bar.add('bar', xx, my_list)line = Line()line.add('line', xx, my_list)overlap = Overlap()overlap.add(bar)overlap.add(line)overlap.show_config()overlap.render(path='第二题延期比.html')def main():df = pd.read_excel('附件二.xlsx',sheet_name='汇总')list = readExcel(df)#createChart(list)#createMatl(list)list = createMatl(list)# 求均值arr_mean = np.mean(list)# 求方差arr_var = np.var(list)# 求标准差arr_std = np.std(list)print(arr_mean)print(arr_var)print(arr_std)# plt.style.use('seaborn-white')# # 最基本的频次直方图命令# plt.hist(list)# plt.show()if __name__ == '__main__':main()

yanQiBi2.py
import pandas as pd
# 柱形图-折线图
from pyecharts import Bar, Line, Overlap#读取按季度分的表格并统计每个区间的个数
def readExcel(x):yy = []a1 = [];a2 = [];a3 = [];a4 = [];a5 = []a6 = [];a7 = [];a8 = [];a9 = [];a10 = []for i in range(len(x['延期比'])):if x['延期比'][i] >= 0 and x['延期比'][i] < 0.1:# a1.append(x['延期比'][i])a1.append(1)elif x['延期比'][i] >= 0.1 and x['延期比'][i] < 0.2:# a2.append(x['延期比'][i])a2.append(2)elif x['延期比'][i] >= 0.2 and x['延期比'][i] < 0.3:#a3.append(x['延期比'][i])a3.append(3)elif x['延期比'][i] >= 0.3 and x['延期比'][i] < 0.4:# a4.append(x['延期比'][i])a4.append(4)elif x['延期比'][i] >= 0.4 and x['延期比'][i] < 0.5:# a5.append(x['延期比'][i])a5.append(5)elif x['延期比'][i] >= 0.5 and x['延期比'][i] < 0.6:# a6.append(x['延期比'][i])a6.append(6)elif x['延期比'][i] >= 0.6 and x['延期比'][i] < 0.7:# a7.append(x['延期比'][i])elif x['延期比'][i] >= 0.7 and x['延期比'][i] < 0.8:a8.append(x['延期比'][i])elif x['延期比'][i] >= 0.8 and x['延期比'][i] < 0.9:a9.append(x['延期比'][i])elif x['延期比'][i] >= 0.9 and x['延期比'][i] <= 1:a10.append(x['延期比'][i])yy.append(len(a1))yy.append(len(a2))yy.append(len(a3))yy.append(len(a4))yy.append(len(a5))yy.append(len(a6))yy.append(len(a7))yy.append(len(a8))yy.append(len(a9))yy.append(len(a10))print(yy)return yydef createChart(my_list):xx = ['0-0.01','0.1-0.2','0.2-0.3','0.3-0.4','0.4-0.5','0.5-0.6','0.6-0.7','0.7-0.8','0.8-0.9','0.9-1']bar = Bar("柱形图-折线图")bar.add('bar', xx, my_list)line = Line()line.add('line', xx, my_list)overlap = Overlap()overlap.add(bar)overlap.add(line)overlap.show_config()overlap.render(path='第三季度.html')def main():df = pd.read_excel('按季度分.xlsx',sheet_name='第三季度')list = readExcel(df)createChart(list)if __name__ == '__main__':main()

还有上新量的值类似:

import pandas as pd
# 柱形图-折线图
from pyecharts import Bar, Line, Overlap
import numpy as np
import matplotlib.pyplot as plt#统计每个区间的个数
def readExcel(x):shang_xin = []for i in range(len(x['上新日销量'])):shang_xin.append(x['上新日销量'][i])shang_xin.sort()jian_ge = (max(shang_xin) - min(shang_xin))/10yy = []a1 = [];a2 = [];a3 = [];a4 = []a5 = [];a6 = [];a7 = [];a8 = []for i in range(len(x['上新日销量'])):if x['上新日销量'][i] >= shang_xin[0] and x['上新日销量'][i] < shang_xin[0] + jian_ge/5:a1.append(x['上新日销量'][i])elif x['上新日销量'][i] >= shang_xin[0] + jian_ge/5 and x['上新日销量'][i] < shang_xin[0] + jian_ge/5*2:a2.append(x['上新日销量'][i])elif x['上新日销量'][i] >= shang_xin[0] + jian_ge/5*2 and x['上新日销量'][i] < shang_xin[0] + jian_ge/5*3:a3.append(x['上新日销量'][i])elif x['上新日销量'][i] >= shang_xin[0] + jian_ge/5*3 and x['上新日销量'][i] < shang_xin[0] + jian_ge:a4.append(x['上新日销量'][i])elif x['上新日销量'][i] >= shang_xin[0] + jian_ge and x['上新日销量'][i] < shang_xin[0] + jian_ge*2/3*2:a5.append(x['上新日销量'][i])elif x['上新日销量'][i] >= shang_xin[0] + jian_ge*2/3*2 and x['上新日销量'][i] < shang_xin[0] + jian_ge*2:a6.append(x['上新日销量'][i])elif x['上新日销量'][i] >= shang_xin[0] + jian_ge*2 and x['上新日销量'][i] < shang_xin[0] + jian_ge*3:a7.append(x['上新日销量'][i])elif x['上新日销量'][i] >= shang_xin[0] + jian_ge*3 and x['上新日销量'][i] <= shang_xin[0] + jian_ge*10:a8.append(x['上新日销量'][i])yy.append(len(a1))yy.append(len(a2))yy.append(len(a3))yy.append(len(a4))yy.append(len(a5))yy.append(len(a6))yy.append(len(a7))yy.append(len(a8))return yy#生成matlab需要数据
def createMatl(myData):print(myData)my_list = []for i in range(myData[0]):my_list.append(1)for i in range(myData[1]):my_list.append(2)for i in range(myData[2]):my_list.append(3)for i in range(myData[3]):my_list.append(4)for i in range(myData[4]):my_list.append(5)for i in range(myData[5]):my_list.append(6)for i in range(myData[6]):my_list.append(7)for i in range(myData[7]):my_list.append(8)#print(my_list)with open('第二题上新量.txt','w') as f:f.write(str(my_list))return my_list#生成图表
def createChart(my_list):xx = ['294-806','806-1319','1319-1832','1832-2857','2857-3712','3712-5421','5421-7984','7984-25930']bar = Bar("柱形图-折线图")bar.add('bar', xx, my_list)line = Line()line.add('line', xx, my_list)overlap = Overlap()overlap.add(bar)overlap.add(line)overlap.show_config()overlap.render(path='第二题上新量未赋值区间.html')def main():df = pd.read_excel('附件二.xlsx',sheet_name='汇总')list = readExcel(df)    #统计每个区间的个数#createChart(list)  #生成图表#createMatl(list)list = createMatl(list)# 求均值arr_mean = np.mean(list)# 求方差arr_var = np.var(list)# 求标准差arr_std = np.std(list)print(arr_mean)print(arr_var)print(arr_std)# plt.style.use('seaborn-white')# # 最基本的频次直方图命令# plt.hist(list)# plt.show()if __name__ == '__main__':main()

一些效果如下:
在这里插入图片描述
在这里插入图片描述

其他的数据类似,祝福大家有参加建模的同学能够马到成功,如果有需求的话,请联系qq:1657264184。题目的话,在建模完后会上传到资源下载区,有想研究的可以下载,地址为:https://download.csdn.net/download/itxiaoangzai/11158744

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/22761.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2021 年第十一届 MathorCup 高校数学建模挑战赛A题分析

2021 年第十一届 MathorCup 高校数学建模挑战赛A题分析 题目&#xff1a;自动驾驶中的车辆调头问题问题分析前言综述问题一分析问题二分析问题三分析问题四分析问题五分析问题六分析 题目&#xff1a;自动驾驶中的车辆调头问题 自动驾驶是近年人工智能应用的热门研究领域之一&…

【数学建模】2018年数学建模国赛C题解答 基于RFMT 模型的百货商场会员画像描绘

文章目录 问题一问题二求出RFM数据评分K- Means聚类 问题三问题四问题五参考文献 问题一 利用该大型百货商场提供的附件一中的会员信息以及附件三中的会员消费明细&#xff0c;完善该商场的会员画像。本文从购买力、购买时间偏好两个维度分析会员的消费特征。以会员消费总金额…

2022年华中杯数学建模挑战赛B题量化投资问题求解全过程文档及程序

2022年华中杯数学建模 B题 量化投资问题 原题再现&#xff1a; 量化投资是指通过数量化方式及计算机程序化发出买卖指令&#xff0c;以获取稳定收益为目的的交易方式。投资者通过数据分析探索市场运行规律&#xff0c;并预测市场走势&#xff0c;从而进行决策交易。随着大数据…

【数模国赛参赛情况浅析】

今天给大家带来近几年的国赛参赛以及国奖评阅等情况。由于19年开始国赛才新增C题&#xff08;据说是鼓励数学学得较浅的文商科等专业学生参加&#xff09;&#xff0c;因此我们从19年开始对19-21年的参赛数据进行浅析。 •参赛规模 19-20&#xff1a; 21&#xff1a; 2021数模…

2022年第三届MathorCup高校数学建模挑战赛——大数据竞赛

&#xff08;1&#xff09;2022年11月1日-12月20日 报名阶段 &#xff08;2&#xff09;2022年12月20日18:00至2023年1月19日20:00&#xff0c;初赛阶段 &#xff08;3&#xff09;2023年3月6日18:00-2023年3月13日20:00&#xff0c;复赛阶段 关注我&#xff0c;后续分享数学…

2022MathorCup高校数模挑战赛D题思路

D 题 移动通信网络站址规划和区域聚类问题 目录背景阐述问题 1描述解题思路 问题 2描述解题思路 问题 3描述解题思路 结语 今年D题应该选择的人比较多&#xff0c;是典型的目标优化类题目。这道题难度简单一点&#xff0c;估计很多同学都会选这道题&#xff0c;当然拿奖也会难一…

数模比赛经验分享(美赛分享)

目录 队员寻找 队员任务分配 赛前准备 知识准备 模拟赛 相互监督 每个阶段的主要任务 学习阶段 论文研读阶段 实践阶段 改进阶段 比赛注意事项 有用的资源分享 数模学习 数据网站 画图工具 祝愿 队员寻找 对于队员的要求&#xff0c;我认为只要一个特点就行…

2020年MathorCup高校数学建模挑战赛—大数据竞赛A题移动通信基站流量预测求解全过程文档及程序

2020年MathorCup高校数学建模挑战赛—大数据竞赛 A题 移动通信基站流量预测 原题再现&#xff1a; 随着移动通信技术的发展&#xff0c;4G、5G 给人们带来了极大便利。移动互联网的飞速发展&#xff0c;使得移动流量呈现爆炸式增长&#xff0c;从而基站的流量负荷问题变得越来…

数模美赛分享(时间安排+获奖技巧+比赛思路)

数模美赛分享&#xff08;时间安排获奖技巧比赛思路数模分工&#xff09; 本贴所有内容全部干货&#xff0c;时间有限&#xff0c;先简单分享一下&#xff0c;深入学习&#xff0c;请见附录b站视频 一、 时间安排 二、获奖技巧 三、 比赛思路 四、 数模分工 三个人分工如下&…

2023年MathorCup数模A题赛题

A 题 量子计算机在信用评分卡组合优化中的应用 在银行信用卡或相关的贷款等业务中&#xff0c;对客户授信之前&#xff0c;需要先通过 各种审核规则对客户的信用等级进行评定&#xff0c;通过评定后的客户才能获得信 用或贷款资格。规则审核过程实际是经过一重或者多重组合规则…

2022 年 MathorCup 高校数学建模挑战赛——大数据竞赛(北京移动用户体验影响因素研究全套代码)

赛道 B&#xff1a;北京移动用户体验影响因素研究 移动通信技术飞速发展&#xff0c;给人们带来了极大便利&#xff0c;人们也越来越离不开移动通信技术带来的各种便捷。随着网络不断的建设&#xff0c;网络覆盖越来越完善。各个移动运营商&#xff0c;越来越重视客户的网络使…

2023年MathorCup数模C题赛题

C 题 电商物流网络包裹应急调运与结构优化问题 问题C&#xff0c;题目的设置就是本科生专科生选题&#xff0c;因此在题目难度上应该会和AB&#xff0c;有明显的区别。整个问题的设置还是很符合妈杯的风格设置&#xff0c;下面我们简要的看一下各个题目设置。 问题 1&#xff1…

【数模研赛】“华为杯”第十九届中国研究生数学建模竞赛C题分享——(四)问题二模型建立

写在前面&#xff1a; 第十九届数模研赛在22年10月6-10日开展&#xff0c;我和我的两名队友肝了5天&#xff0c;整出来一篇论文。因为不确定自己做的好不好&#xff0c;所以一直没写博客。前两天结果出来了&#xff0c;我们队拿了国二&#xff0c;在C题里排名88/1134&#xff0…

8月的数模比赛,适合小白为国赛热热身,可以报名了!

​经常有同学在交流群问&#xff1a;小白怎么入门&#xff1f;该从什么学起&#xff1f; 在入门指导的文章中曾讲过&#xff1a;实战是最好的学习。直接参赛&#xff0c;遇到不会的就去搜、去翻书&#xff0c;现学现用&#xff0c;多做几次比赛就入门了。 现在8月份的华数杯已…

2019-12-02 校内数模新手赛

调查地铁站的路径选择问题 摘要 对于一二线城市&#xff0c;地铁已成为民众不可或缺的出行方式&#xff0c;为了减少在上班上学路上消耗的时间&#xff0c;人们也可谓绞尽脑汁。这次&#xff0c;我们要帮助p同学&#xff0c;在他解决地铁"最佳门"问题时提供耗时最短…

2021年MathorCup高校数学建模挑战赛——大数据竞赛赛道A -思路分享

4.8号公布了复赛获奖名单&#xff0c;比赛正式告一段落&#xff0c;为什么现在才开始写呢&#xff1f;其实一是最近一直很忙&#xff0c;二是感觉自己做的不咋地&#xff0c;趁今天有空就写写吧&#xff0c;时间一长就又不想写了。 好了胡扯到此结束&#xff0c;言归正传&#…

第五届“传智杯”全国大学生计算机大赛(练习赛)传智杯 #5 练习赛] 平等的交易

[传智杯 #5 练习赛] 平等的交易 题目描述 你有 n n n 件道具可以买&#xff0c;其中第 i i i 件的价格为 a i a_i ai​。 你有 w w w 元钱。你仅能用钱购买其中的一件商道具。当然&#xff0c;你可以拿你手中的道具换取其他的道具&#xff0c;只是这些商道具的价值之和&…

数学建模相关比赛汇总(含各赛事官方网站链接)

前言 官网可以进行资料下载&#xff0c;历年的建模题等可在官网下载&#xff1b; 注册、报名、缴费、选题、显示论文收到与否、最新Summary论文模板的下载、查询获奖结果。 按含金量笔者分为四个梯队&#xff0c;如有不妥&#xff0c;请发私信联系楼主。 第一梯队&#xff1a;…

MathorCup高校数学建模挑战赛——大数据竞赛 赛道A 移动通信基站流量预测baseline

文章目录 前言一、简单分析二、具体程序1.引入库2.读入数据3.数据处理4.模型训练和预测5.结果文件输出 总结 前言 本文给出2020年MathorCup高校数学建模挑战赛——大数据竞赛中的赛道A移动通信基站流量预测的baseline&#xff0c;这个题目的具体描述和数据集请见链接。 整个程…

2022年第三届MathorCup高校数学建模挑战赛——大数据竞赛 赛道B 北京移动用户体验影响因素研究 问题一建模方案及代码实现详解

【BetterBench原创】2022年第三届MathorCup高校数学建模挑战赛——大数据竞赛 赛道B 北京移动用户体验影响因素研究 建模方案及代码实现&#xff08;更新中&#xff09; 更新进展 2022年12月21日 12:20 发布问题一、二思路及问题一的python代码实现 2022年12月22日 15:00 发…