2021研究生建模B题解题(更新中)

十八届研究生建模B题

第一题

问题1. 使用附件1中的数据,按照附录中的方法计算监测点A从2020年8月25日到8月28日每天实测的AQI和首要污染物,将结果按照附录“AQI计算结果表”的格式放在正文中。

一道基本题,直接上代码:

import numpy as np
import pandas as pd
pd.set_option('display.max_columns', 100)  # 设置显示数据的最大列数,防止出现省略号…,导致数据显示不全
pd.set_option('expand_frame_repr', False)  # 当列太多时不自动换行
df1=pd.read_excel("2021年B题(原始数据)/附件1 监测点A空气质量预报基础数据.xlsx",sheet_name="监测点A逐日污染物浓度实测数据")
df1.set_index(["监测日期"], inplace=True)
df1=df1.loc['2020-08-25':'2020-08-28']
print(df1)
df2=pd.read_excel("2021年B题(原始数据)/附件1 监测点A空气质量预报基础数据.xlsx",sheet_name="空气质量分指数(IAQI)及对应的污染物项目浓度限值")
# print(df2.iloc[2,2])
# print(df1.iloc[0,1])
print(df2)
i=0
j=1
k=1
lst_aqi=[]
# lst_aqi.append(1)
# print(lst_aqi)
while i<4:
    j=1
    lst_aqi=[]
    while j<7:
        c=df1.iloc[i,j]
        while k<9:
            if df2.iloc[j,k]<c and df2.iloc[j,k+1]>c:
                bphi=df2.iloc[j,k+1]
                bplo=df2.iloc[j,k]
                iaqihi=df2.iloc[0,k+1]
                iaqilo=df2.iloc[0,k]
                break
            else:
                k=k+1
        iaqip=(iaqihi-iaqilo)/(bphi-bplo)*(c-bplo)+iaqilo
        lst_aqi.append(iaqip)
        j=j+1
        k=1
    aqi=max(lst_aqi)
    aqi_index=lst_aqi.index(aqi)
    pp=df2.iloc[aqi_index+1,0]
    if aqi<=50:
        pp="无"
    print(df1.index[i],":","aqi:",aqi,"首要污染物:",pp,lst_aqi)
    i=i+1


结果:

2020-08-25 00:00:00 : aqi: 60.0 首要污染物: O3 [8.0, 15.0, 27.0, 15.714285714285715, 60.0, 12.5]
2020-08-26 00:00:00 : aqi: 46.0 首要污染物:[7.0, 20.0, 24.0, 14.285714285714286, 46.0, 12.5]
2020-08-27 00:00:00 : aqi: 108.18181818181819 首要污染物: O3 [7.0, 38.75, 37.0, 32.85714285714286, 108.18181818181819, 15.0]
2020-08-28 00:00:00 : aqi: 137.27272727272728 首要污染物: O3 [8.0, 37.5, 47.0, 47.142857142857146, 137.27272727272728, 17.5]

简易实现

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值