数学建模常用代码总结-Python&MATLAB

数学建模常用代码总结-Python&MATLAB

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

一、文件读取

  • python (pandas)

    文件后缀名(扩展名)并不是必须的,其作用主要一方面是提示系统是用什么软件打开,另一方面提示文件内容格式。如.txt, .csv, .tsv 文件均为纯文本文件,只是 .csv, .tsv 说明了数据的分割方式分别为,\t 。既然都是文本文件,那就都可用 pandas.read_csvpandas.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

    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]);%固定大小
    

    条形图

    MATLAB bar

    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

你可能感兴趣的:(数学建模,matlab,线性代数,图论)