使用python及相关库实现AQI分析与预测

本文通过分析2015年的空气质量数据,探讨了全国城市空气质量情况,发现南部和西部城市空气质量优于北部和东部,且临海城市普遍优于内陆。主要影响因素包括降雨量和维度。通过机器学习建立了预测模型,能根据特征预测城市的空气质量指数。
摘要由CSDN通过智能技术生成

前言

在这里插入图片描述

一、需求背景

AQI(Air Quality Index),即空气质量指数,用来衡量空气清洁或污染的程度。值越小,表示空气质量越好。近年来因为环境问题,空气质量也越来越受到人们重视。
分析旨在通过采集到的国内各城市数据,运用数据分析相关技术,对全国城市空气质量进行研究与分析。

二、提出问题

  • 空气质量较好/较差的城市是哪些?
  • 空气质量在地理位置分布上是否具有一定规律性?
  • 临海城市的空气质量是否有别于内陆城市?
  • 空气质量主要受哪些因素影响?
  • 全国城市空气质量普遍处于何种水平?
  • 怎样预测一个城市的空气质量?

三、数据预览

数据为2015年空气质量质数集,包含国内主要城市的相关数据以及空气质量指数。

列名 含义
City 城市名
AQI 空气质量指数
Precipitation 降雨量
GDP 城市生产总值
Temperature 温度
Longitude 经度
Latitude 维度
Altitude 海拔高度
PopulationDensity 人口密度
Coastal 是否沿海
GreenCoverageRate 绿化覆盖率
Incineration(10,000ton) 焚烧量(万吨)

四、数据清洗

# 导入相关库,进行初始化设置
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings

sns.set(style="darkgrid")
plt.rcParams["font.family"] = "SimHei" # 设置字体样式
plt.rcParams["axes.unicode_minus"] = False # 设置正常显示坐标轴负号
warnings.filterwarnings("ignore") # 忽略警告消息

# 一、读取数据预览
data = pd.read_csv("data.csv")
data.head()

在这里插入图片描述

# 二、数据处理
# 1、首先查看缺失值情况
print(data.isnull().sum())

在这里插入图片描述

# 对于数值类型使用均值或者中位数填充。
# 查看Precipitation列分布偏度
print(data["Precipitation"].skew())
sns.distplot(data["Precipitation"].dropna()) # 函数画图需要去掉空值

在这里插入图片描述

# 稍微右偏,使用中位数填充,查看填充后的缺失值情况
data["Precipitation"].fillna(data["Precipitation"].median(), inplace=True)
print(data.isnull().sum())

在这里插入图片描述

# 2、处理异常值,先查看大致的统计信息
data.describe()

在这里插入图片描述

# 可以看到GDP上三分位和最大值差距巨大,可能存在异常值(其他特征待后续建立模型时处理)
# 查看GDP数据的偏度
print("偏度:", data["GDP"].skew())
sns.distplot(data["GDP"])

在这里插入图片描述

# 可以看出GDP列严重右偏,需要进行正态化
# 根据正态分布特性,对于3σ之外的数据视为异常值
mean, std = data["GDP"].mean(), data["GDP"].std()
lower, upper = mean - 3 * std, mean + 3 * std
print("均值:%s,标准差:%s,下限:%s,上限:%s" % (mean, std, lower, upper))

# 将异常值替换为边界值
data["GDP"][data["GDP"]<lower] = lower
data["GDP"][data["GDP"]>upper] = upper

# 查看处理后的结果
print("偏度:",data["GDP"].skew())
sns.distplot(data["GDP"])

在这里插入图片描述

# 效果不是很明显,直接取对数来处理

# 定义函数取对数
def getLog(x):
    # 对数只能处理真数为正数的值,所以需要单独拿到符号再乘以绝对值的对数
    return np.sign(x) * np.log(np.abs(x)
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
爬取空气质量检测网的部分城市的历年每天质量数据 思路----------------------------------------- 从某城市的空气质量网页获取某市每月的链接,再爬取每个月的表格数据。连云港市:https://www.aqistudy.cn/historydata/daydata.php?city=连云港 连云港2014年5月的空气质量:https://www.aqistudy.cn/historydata/daydata.php?city=连云港&month=2014-05 遇到的问题----------------------------------------- 获取的网页中的表格数据隐藏,尝试requests无法获取。判断可能是动态加载的网页 尝试----------------------------------------- 1. 通过XHR,js查找隐藏数据的加载网页,没有找到。 2. 使用phantomjs.get() result=pd.read_html ,可以获得隐藏的表格数据,但是并不稳定,只是偶尔出现加载的表格数据,无法大规模的获取 解决方法----------------------------------------- 查找资料得知这个网站的表格数据在Console里的items中, 使用selenium的webdriver.firefox(),driver.execute_script("return items") 数据可获得。 仍遇到的问题:----------------------------------------- 爬取一个网页可获得数据,但是连续的获取网页,会出现两个错误。 1.Message: ReferenceError: items is not defined 2.connection refused 解决方法: 1.connection refused问题,可能是网页开太多,使用driver.quit() 2. 如果 execute_script 还是出错,可尝试pd.read_html获取信息。之前用phantomjs获取的时候输出空的表格,可能由于加载不够,用 Waite直到table出现之后再获取网页 Element=wait.until(EC.element_to_be_clickable((By.XPATH,"/html/body/div[3]/div[1]/div[1]/table/tbody"))) 3.之后出现偶尔出现输出为空,使用循环,如果输出表格为空,再重新获取。 if len(result)>1: filename = str(month) + '.xls' result.to_excel('E:\python\案例程序\data\\' + filename) print('成功存入'+filename) driver.quit() else: driver.quit() return getdata(monthhref,month)
空气质量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、付费专栏及课程。

余额充值