基于Python的简单数据处理

1 前言

来H一个月了,还没有更新过任何博客

碰巧上周帮之前美赛队友做了点 “华为杯”研究生数学建模编程的任务
觉得一直用Matlab做简单的数据处理没有成长,就用Python复现了Matlab程序,也算是接触一点Python简单数据处理的内容。
实际上还是水的一批,感觉没啥成长,总归是比没接触要好一点点。

本文主要是针对“华为杯”研究生数学建模E题:
加拿大某地的1963年——2003年间492月的温度进行拟合

之前已完成仿真,今天特地整理一下相关内容,水一篇博客。

2 读取EXCEL

使用xlrd模块来完成。
xlrd模块在任何平台上都可以从Excel电子表格(.xls和.xlsx)中提取数据

2.1 xlrd模块安装及导入

因为用PyCharm作为编辑器,所以直接在settings中安装。在这里插入图片描述

然后import即可

	import xlrd

注:
也可在cmd窗口使用pip进行安装
pip是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。

	pip install  xlrd

2.2 xlrd模块基本操作

参考链接1中的xlrd模块操作基本函数这一节。
代码自己已经跑过,确定没有问题。

需要注意的地方:

	# SheetObject.row_values(rowx[, start_colx=0, end_colx=None]):
	# 获取sheet中第rowx+1行从start_colx+1列到end_colx列的数据,返回值为列表。
	row_values = sheet1_object.row_values(rowx=2, start_colx=1, end_colx=3)

获取工作表1的第3行,从第2列到第3列的数据,返回值为列表。
这是因为,列表下标从0开始
获取的数据不包含end_colx这一列
该代码等同于

	row_values = sheet1_object.row_values(2, 1, 3)

类似的,SheetObject.col_values( colx[, start_rowx=0, end_rowx=None])表示获取sheet中第colx+1列从start_rowx+1行到end_rowx行的数据,返回值为列表。

3 简单数据处理

3.1变维并求均值

参考链接2
使用numpy.reshape来变维,将492行1列变为12行41列,并按行求均值,得到该地1963年——2003年每年的温度均值,为接下来的图像绘制和函数拟合做准备。

	# list_a:变维后的数据 mean_t:年温度均值
	list_a = np.array(list).reshape(41, 12)
	print(list_a)
	mean_t = np.mean(list_a, axis=1)
	print(mean_t)

注:

axis为0时表示按列求和,为1时表示按行求和

3.2 简单拟合

参考链接3

	# x:年数 f:拟合系数 p:拟合多项式
	x = range(1963, 2004)
	f = np.polyfit(x, mean_t, 1)
	print('f is :\n',f)
	p = np.poly1d(f)
	print(p)
	pv = p(x)

4 绘制图像

这部分的代码主要见参考链接4
今天整理时觉得参考链接5写的也挺细的,一并列出。
至于显示中文,网上说法不一,我用的参考链接6的方法,可以实现,且中文前不需要加u

	# 显示图像
	plt.plot(x, mean_t, label='原温度曲线')
	plt.plot(x, pv, label='拟合曲线')
	# 设置X、Y轴标签
	plt.xlabel("年数")
	plt.ylabel("温度/℃")
	# 设置标注
	plt.text(1987,10.,'y=0.04054x-70.42',fontsize=15, color='red')
	# 设置标题
	plt.title('ABBOTSFORD A 温度拟合')
	# 显示图标
	plt.legend()
	plt.show()
Matlab仿真图

在这里插入图片描述

Python仿真图

在这里插入图片描述

5 结尾

来H一个月了,还没有更新过任何博客,这是在H的第一篇博客, 虽然很水
要不是有“华为杯”这么个比赛,估计更没啥可以写的了。

本文做的工作比较简单,只是下载了几个包,换了种软件实现仿真。
对于读取的EXCEL,默认 已经完成预处理,没有特殊的格式需要更改,拿来用即可。对于时间等格式的数据,并没有介绍,以后用到的话再补充。
有了Matlab的基础,理解起来还是比较快,很多方法和属性都是共通的。

之前还说要一个月两三篇的任务量,实在是打脸!
一是前半学期数学课多,遇上作业多的时候直接做不完
二是没啥可以写的,因为没有学新东西,导师一直没给发文献

发现之前的专栏和分类合并了,不用写够15篇才能开通了,也有自己的专栏了,哈哈哈哈哈哈
还是会尽量写一些稍微专业的内容,写博客还是有很多好处的
这半年具体能写多少,能写啥,后边再定吧

总的来说,在H的第一个月过的漫长也煎熬,也算比较充实吧~(菜鸡的自我安慰罢了

个人水平有限,有问题欢迎各位大神批评指正!

参考链接

  1. python:xlrd模块
    https://www.jianshu.com/p/f2c9dff344c6
  2. numpy.reshape
    https://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html
  3. polyfit及poly1d多项式拟合
    https://blog.csdn.net/castingA3T/article/details/78895479
  4. Python-matplotlib画图(莫烦笔记)
    https://zhuanlan.zhihu.com/p/33270402
  5. NumPy Matplotlib
    https://www.runoob.com/numpy/numpy-matplotlib.html
  6. python中plot图例怎么显示中文名字
    https://zhidao.baidu.com/question/1823331112564564508.html
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值