数学建模竞赛常用代码总结-Python&Matlab

数学建模过程中有许多可复用的基础代码,在此对 python 以及 MATLAB 中常用代码进行简单总结,该总结会进行实时更新。

一、文件读取

python (pandas)

文件后缀名(扩展名)并不是必须的,其作用主要一方面是提示系统是用什么软件打开,另一方面提示文件内容格式。如.txt, .csv, .tsv 文件均为纯文本文件,只是 .csv, .tsv 说明了数据的分割方式分别为, 与 \t 。既然都是文本文件,那就都可用 pandas.read_csv 或 pandas.read_table 等进行读取,这里采用 pandas.read_csv 。

.txt 文件

import pandas as pd

tsvfile = pd.read_csv('filename.txt')

tsvfile = pd.read_csv('filename.txt',skiprows=1)#跳过首行

.csv 文件

import pandas as pd

tsvfile = pd.read_csv('filename.csv')

tsvfile = pd.read_csv('filename.csv',skiprows=1)#跳过表头

.tsv 文件

import pandas as pd

tsvfile = pd.read_csv('filename.tsv', sep='\t')

.json 文件

import pandas as pd

jsonfile = pd.read_json('filename.json', orient = 'records')

.csv 文件转.json 文件

import csv

import json

csvfile = open('filename.tsv',r)

jsonfile = open('filename.json',w)

fieldnames = ("key1","key2","key3")

reader = csv.DictReader(csvfile,fieldnames)

for row in reader:

json.dump(row,jsonfile)

jsonfile.write('\\n')

.xlsx 文件

excel 是二进制文件,它保存有关工作簿中所有工作表的信息,也可对数据进行有关操作。

import pandas as pd

读取 Excel 数据,选取 sheet1 工作表

sheet_1 = pd.read_excel('demo.xlsx', sheet_name='Sheet1', na_values='n/a')

打印 sheet 表名

print(pd.ExcelFile('listings.xlsx').sheet_names)

打印数据头部

print(sheet_1.head())

.xlsx 文件转 .csv

import pandas as pd

def xlsx_to_csv_pd():

data_xls = pd.read_excel('demo.xlsx', index_col=0)

data_xls.to_csv('demo.csv', encoding='utf-8')

.csv 文件转 .xlsx

import pandas as pd

def csv_to_xlsx_pd():

csv = pd.read_csv('1.csv', encoding='utf-8')

csv.to_excel('1.xlsx', sheet_name='data')

MATLAB

同样的原因,MATLAB 读取文本文件均可用 textscan 。

.txt 文件

clc;clear;

filename = 'filename.txt';

file = fopen(filename);%打开文件

columns = 's%s%s%s%s%s%';%读几列就有几个's%'

data = textscan(filename,columns,'delimiter', ' ');%以制表符分隔

fclose(file);

.csv 文件

clc;clear;

filename = 'filename.csv';

file = fopen(filename);%打开文件

columns = 's%s%s%s%s%s%';%读几列就有几个's%'

data=textscan(filename,columns,'delimiter', ',');%以 , 分隔

fclose(file);

.tsv 文件

clc;clear;

filename = 'filename.tsv';

file = fopen(filename);%打开文件

columns = 's%s%s%s%s%s%';%读几列就有几个's%'

data=textscan(filename,columns,'delimiter', ' ');%以制表符分隔

fclose(file);

.json 文件

MATLAB 读取 .json 文件需要下载 jsonlab 包。

clc;clear;

addpath('E:\PIR\PIR_V3.0\jsonlab-1.5'); %添加jsonlab包的存放路径

filename = 'filename.json'; %文件名称

jsonData = loadjson(filename);%jsonData是struct结构

data = jsonData.u';

二、绘图

MATLAB

点状图

plot(xi,yi,'>','Color',[x/255 x/255 x/255]);%右三角,颜色为(x,x,x)

%符号可为'o','.','+','>','<'等

xlabel('x/x')

ylabel('y/y')

title('Title')

set(gcf,'unit','normalized','position',[0.2,0.2,0.8,0.6]);%固定大小

折线图

xi= 1: 0.25:76;

yi = interp1(X,Y,xi,'spline');%插值,将步长由1变为0.25

plot(xi,yi,'Color',[x/255 x/255 x/255],'LineWidth',1);%颜色为(x,x,x),线条粗细为1

xlabel('x/x')

ylabel('y/y')

title('Title')

set(gcf,'unit','normalized','position',[0.2,0.2,0.8,0.6]);%固定大小

条形图

y=[1 2 3,1 2 3];%分组条形图

tiledlayout(2,1)%指定纵横比

bar(y);

bar(x,y);

bar(y,'stacked');%与y=[1 2 3,1 2 3]结合,同一个柱形上分层显示

bar(x,y,0.6);%相对宽度控制间隔

bar(y,'FaceColor',[0 .5 .5],'EdgeColor',[0 .9 .9],'LineWidth',1.5);%多参数

y = [10 15 20; 30 35 40; 50 55 62];

b = bar(y);

b(3).FaceColor = [.2 .6 .5];%每组第三列设为绿色

其他功能

%绘制多张

figure(i);

%plot

hold on;

figure(i+1);

%plot

%多线同图

%plot

hold on;

%plot

python

点状图

import matplotlib.pyplot as plt

plt.rcParams['figure.figsize'] = (48.0, 30.0) # 设置figure_size尺寸

plt.plot(X,Y,'.')

plt.xlabel("x-label",fontproperties=zhfont,fontsize='32')

plt.ylabel("y-label",fontproperties=zhfont,fontsize='32')

plt.title("title",fontproperties=zhfont,fontsize='32')

折线图

import matplotlib.pyplot as plt

plt.rcParams['figure.figsize'] = (48.0, 30.0) # 设置figure_size尺寸

plt.plot(X,Y)

plt.xlabel("x-label",fontproperties=zhfont,fontsize='32')

plt.ylabel("y-label",fontproperties=zhfont,fontsize='32')

plt.title("title",fontproperties=zhfont,fontsize='32')

其他常用功能

绘制多张

plt.subplot(221) # 两行两列的第一个

plt.plot(X1,Y1,'.')

plt.subplot(222) # 两行两列的第二个

plt.plot(X2,Y2,'.')

plt.subplot(223) # 两行两列的第三个

plt.plot(X3,Y3,'.')

plt.subplot(224) # 两行两列的第四个

plt.plot(X4,Y4,'.')

多张同图

plt.plot(X1,Y1,'.')

plt.plot(X2,Y2,'.')

设置分辨率

绘制分辨率

plt.rcParams['figure.figsize'] = (24.0, 20.0) # 默认的像素为[6.0,4.0],分辨率为100,图片尺寸为 600&400

plt.rcParams['figure.dpi'] = 300 # 直接设置分辨率,一般使用这两种方式之一

保存分辨率

plt.rcParams['savefig.dpi'] = 300 # 预先设定保存图片像素

plt.savefig('demo.jpg', dpi=200) # 保存时指定分辨率,一般使用这两种方式之一

title 格式

该条(title 格式)参考`开码牛`的博客

plt.title('Interesting Graph',fontsize='large',fontweight='bold') 设置字体大小与格式

plt.title('Interesting Graph',color='blue') 设置字体颜色

plt.title('Interesting Graph',loc ='left') 设置字体位置

plt.title('Interesting Graph',verticalalignment='bottom') 设置垂直对齐方式

plt.title('Interesting Graph',rotation=45) 设置字体旋转角度

plt.title('Interesting',bbox=dict(facecolor='g', edgecolor='blue', alpha=0.65 )) 标题边框

常用配色

|---------|---------|---------|---------|---------|
| #5d7a9a | #ec554a | #ffad60 | #8bc24c | #2d2d2d |
| #bc8420 | #593e1a | #ffeb28 | #996699 | #0fff95 |

---------------------------END---------------------------

题外话

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。


二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、面试宝典

简历模板

👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

若有侵权,请联系删除

相关推荐
Captain823Jack25 分钟前
nlp新词发现——浅析 TF·IDF
人工智能·python·深度学习·神经网络·算法·自然语言处理
沅_Yuan1 小时前
基于GRU门控循环神经网络的多分类预测【MATLAB】
matlab·分类·gru
资源补给站1 小时前
大恒相机开发(2)—Python软触发调用采集图像
开发语言·python·数码相机
Captain823Jack1 小时前
w04_nlp大模型训练·中文分词
人工智能·python·深度学习·神经网络·算法·自然语言处理·中文分词
PieroPc1 小时前
Python 自动化 打开网站 填表登陆 例子
运维·python·自动化
VinciYan2 小时前
基于Jenkins+Docker的自动化部署实践——整合Git与Python脚本实现远程部署
python·ubuntu·docker·自动化·jenkins·.net·运维开发
测试老哥2 小时前
外包干了两年,技术退步明显。。。。
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展
終不似少年遊*2 小时前
美国加州房价数据分析01
人工智能·python·机器学习·数据挖掘·数据分析·回归算法
如若1233 小时前
对文件内的文件名生成目录,方便查阅
java·前端·python
西猫雷婶3 小时前
python学opencv|读取图像(二十一)使用cv2.circle()绘制圆形进阶
开发语言·python·opencv