Python案例—AQI 空气质量指数

"""
    作者:Z_Howe
    版本:1.0
    功能:计算空气质量指数(Air Quality Index)
    日期:2019/1/29
"""


def cal_linear(iaqi_lo, iaqi_hi, bp_lo, bp_hi, cp):
    """
        范围缩放
    """
    iaqi = (iaqi_hi - iaqi_lo) * (cp - bp_lo) / (bp_hi - bp_lo) + iaqi_lo
    return iaqi


def cal_pm_iaqi(pm_val):
    """
        PM2.5的iaqi计算函数
    """
    if 0 <= pm_val < 36:
        iaqi1 = cal_linear(0, 50, 0, 35, pm_val)
    elif 36 <= pm_val < 76:
        iaqi1 = cal_linear(50, 100, 35, 75, pm_val)
    elif 76 <= pm_val < 116:
        iaqi1 = cal_linear(100, 150, 75, 115, pm_val)
    elif 116 <= pm_val < 151:
        iaqi1 = cal_linear(150, 200, 115, 150, pm_val)
    elif 151 <= pm_val < 251:
        iaqi1 = cal_linear(200, 300, 150, 250, pm_val)
    elif 251 <= pm_val < 351:
        iaqi1 = cal_linear(300, 400, 250, 350, pm_val)
    elif 351 <= pm_val < 501:
        iaqi1 = cal_linear(400, 500, 350, 500, pm_val)
    return iaqi1

def cal_co_iaqi(co_val):
    """
        CO的iaqi计算函数
    """
    if 0 <= co_val < 3:
        iaqi2 = cal_linear(0, 50, 0, 2, co_val)
    elif 3 <= co_val < 5:
        iaqi2 = cal_linear(50, 100, 2, 4, co_val)
    elif 5 <= co_val < 15:
        iaqi2 = cal_linear(100, 150, 4, 14, co_val)
    elif 15 <= co_val < 25:
        iaqi2 = cal_linear(150, 200, 14, 24, co_val)
    elif 25 <= co_val < 37:
        iaqi2 = cal_linear(200, 300, 24, 36, co_val)
    elif 37 <= co_val < 49:
        iaqi2 = cal_linear(300, 400, 36, 48, co_val)
    elif 49 <= co_val < 61:
        iaqi2 = cal_linear(400, 500, 48, 60, co_val)
    return iaqi2

def cal_aqi(param_list):
    """
        空气质量指数计算
    """
    pm_value = param_list[0]
    co_value = param_list[1]

    pm_iaqi = cal_pm_iaqi(pm_value)
    co_iaqi = cal_co_iaqi(co_value)
    iaqi_list = []
    iaqi_list.append(pm_iaqi)
    iaqi_list.append(co_iaqi)
    aqi = max(iaqi_list)
    return aqi


def main():
    """
        主函数 
    """
    print('请输入以下信息,用空格分隔')
    input_str = input('(1)PM2.5[501以内] (2)CO[60以内]:')
    str_list = input_str.split(' ')
    param_list = []
    param_list.append(float(str_list[0]))
    param_list.append(float(str_list[1]))

    # 调用AQI计算函数
    aqi_val = cal_aqi(param_list)

    print('空气质量指数为{}'.format(aqi_val))

if __name__ == '__main__':
    main()
"""
    作者:Z_Howe
    版本:2.0
    功能:计算空气质量指数(Air Quality Index)
    新增功能:读取已经获取的JSON数据文件,并将AQI前5的数据输出到文件
    日期:2019/1/29
    文件待收集...
    · JSON(JavaScript Object Notation)是一种轻量级数据交换格式
    · 可以对复杂数据进行表达和存储,易于阅读和理解
    · 规则:
       1.数据保存在键值对中
       2.键值对之间由逗号分隔
       3.花括号用于保存键值对数据组成的对象
       4.方括号用于保存键值对数据组成的数组
    · 采用对象、数组方式组织起来的键值对可以表示任何结构的数据
    · JSON格式是互联网上主要使用的复杂数据格式之一
    · JSON库是处理JSON格式的Python标准库
        ·两个过程:
            · 编码(encoding),将Python数据类型转换成JSON格式的过程
            · 解码(decoding),从JSON格式中解析数据对应到Python数据类型的过程
        dumps()  将Python数据类型转换为JSIN格式(需要两个变量)
        loads()  将JSON格式字符串转换为Python数据类型(需要两个变量)
        dump()   与dumps()功能一致,输出到文件(需要两个变量)
        load()   与loads()功能一致,从文件输入(需要两个变量)
        
        举个JSON格式例子:
            [
                {
                    "aqi":47
                    "area":"北京"
                },
                {
                    "aqi":63
                    "area":"上海"
                }
            ]
"""
import json


def process_json_file(filepath):
    """
        解析json文件
    """
    f = open(filepath, mode='r', encoding='utf-8')
    city_list = json.load(f)
    return city_list


def main():
    """
        主函数 
    """
    file_path = input('请输入json文件路径:')
    city_list = process_json_file(file_path)
    city_list.sort(key=lambda city: city['aqi'])
    top5_list = city_list[:5]

    f = open('top5_aqi.json', mode='w', encoding='utf-8')
    json.dump(top5_list, f, ensure_ascii=False)
    f.close()


if __name__ == '__main__':
    main()
  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
空气质量AQI数据分析与预测可以通过以下几个步骤进行: 1. 首先,可以使用分组计算方法计算不同地区(如沿海和非沿海地区)的空气质量均值。可以使用以下代码实现:\[1\] ```python display(data.groupby('Coastal')\['AQI'\].mean()) ``` 这将显示不同地区的空气质量均值,并使用柱状图进行可视化。 2. 其次,可以找出空气质量最好和最差的城市。可以使用以下代码实现:\[2\] ```python t = data\[\['City', 'AQI'\]\].sort_values('AQI') display(t.iloc\[:5\]) # 最好的5个城市 ``` 这将显示空气质量最好的5个城市,并使用柱状图进行可视化。 3. 此外,可以使用散点图和箱线图或小提琴图来观察不同地区的空气质量分布。可以使用以下代码实现:\[3\] ```python sns.violinplot(x='Coastal', y='AQI', data=data, inner=None) sns.swarmplot(x='Coastal', y='AQI', color='g', data=data) ``` 这将显示不同地区的空气质量分布情况,并将散点图与箱线图或小提琴图组合在一起。 通过以上步骤,可以对空气质量AQI数据进行分析,并根据分析结果进行预测和进一步的研究。 #### 引用[.reference_title] - *1* *2* *3* [python 空气质量AQI数据分析与预测 ---分析(空气质量排名,临海城市空气质量是否优于内陆城市)](https://blog.csdn.net/YmeBtc/article/details/96438896)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值