• 2023高教社杯全国大学生数学建模竞赛E题代码解析


    2023高教社杯全国大学生数学建模竞赛E题 黄河水沙监测数据分析 代码解析

    因为一些不可抗力,下面仅展示部分python代码(第一问的部分),其余代码看文末

    首先导入包:

    1. import numpy as np
    2. import pandas as pd
    3. import matplotlib.pyplot as plt
    4. import statsmodels.api as sm
    5. import pmdarima as pm
    6. from sklearn.linear_model import LinearRegression
    7. import seaborn as sns

    然后需要移除table的数据,因为重复了:

    1. table = pd.read_excel(r"./data/附件1.xlsx")
    2. for i in range(2017, 2017+5):
    3. # 移除table最后一条数据(重复了)
    4. # print(table.iloc[len(table)-1])
    5. table.drop((len(table)-1),inplace=True)
    6. i = str(i)
    7. temp = pd.read_excel(r"./data/附件1.xlsx",sheet_name = i)
    8. table = pd.concat([table, temp])
    9. table = table.reset_index(drop=True)
    10. table

    如下为部分数据预处理代码:

    1. # 数据预处理
    2. time_list = []
    3. for i in range(len(table)):
    4. m, d, h = str(int(table.iloc[i,1])), str(int(table.iloc[i,2])),str(table.iloc[i,3])
    5. if(int(table.iloc[i,1])<10):
    6. m = "0" + str(int(table.iloc[i,1]))
    7. if(int(table.iloc[i,2])<10):
    8. d = "0" + str(int(table.iloc[i,2]))
    9. # print(m,d)
    10. time = str(int(table.iloc[i,0]))+"-"+ m+"-"+ d +" "+ h
    11. # print(time)
    12. time_list.append(time)
    13. temp = pd.DataFrame(time_list, columns=["时刻"])
    14. temp["时刻"]= pd.to_datetime(temp["时刻"])
    15. # temp.to_csv('example3.csv', index=False)
    16. # temp

    第一问的可视化图部分代码:

    1. # 创建子图
    2. fig, axes = plt.subplots(nrows=3, ncols=1, figsize=(10, 10))
    3. # 绘制水位数据
    4. axes[0].plot(data.index, data['水位(m)'], label='Water Level', color='blue')
    5. axes[0].set_ylabel('Water Level (m)')
    6. axes[0].set_title('Water Level Over Time')
    7. # 绘制水流量数据
    8. axes[1].plot(data.index, data['流量(m3/s)'], label='Flow Rate', color='green')
    9. axes[1].set_ylabel('Flow Rate (m^3/s)')
    10. axes[1].set_title('Flow Rate Over Time')
    11. # 绘制含沙量数据
    12. axes[2].plot(data.index, data['含沙量(kg/m3) '], label='Sediment Content', color='red')
    13. axes[2].set_xlabel('Time')
    14. axes[2].set_ylabel('Sediment Content')
    15. axes[2].set_title('Sediment Content Over Time')

    得到:

    有关思路、相关代码、讲解视频、参考文献等相关内容可以点击下方群名片哦!

  • 相关阅读:
    1004 Counting Leaves
    Go学习值reflect反射篇
    FTX的前世今生:崛起、辉煌与崩塌
    【分享】集简云新功能:集简云浏览器机器人,将任意网站页面转换为API连接器
    【校招VIP】前端计算机网络之webSocket相关
    ubuntu 22.04 安装ros2 iron
    递归神经网络(RNN)在AI去衣技术中的深度应用
    logback+MQ+Logstash 日志收集
    高等院校教师资格证考试怎么考,要什么条件?
    【PB续命01】Microsoft.XMLHttp的属性和方法的简介及使用
  • 原文地址:https://blog.csdn.net/weixin_43345535/article/details/132751751