任务说明

期望能够运用数据分析的相关技术,对全国城市空气质量进行研究与分析,希望能够解决如下疑问:

哪些城市的空气质量较好/较差?【描述性统计分析】

空气质量在地理位置上,是否具有一定的规律?【描述性统计分析】

临海城市的空气质量是否有别于内陆城市?【推断统计分析】

空气质量主要受哪些因素影响?【相关系数分析】

全国城市空气质量普遍处于何种水平?【区间估计】

怎样预测一个城市的空气质量?【统计建模】

数据集描述

我们获取了2015年空气质量数据集,该数据集包含全国主要城市的相关数据以及空气质量指数。

读取数据

导入需要的库,同时进行一些初始化的设置

#导入相关库

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')

加载数据集

#加载之后可以使用head/tail/sample等方法查看数据的大致情况

data = pd.read_csv('data.csv')

data.head()

数据清洗

缺失值

1 缺失值探索

我们可以使用如下方法查看缺失值:

info

isnull

data.info()

data.isnull().sum(axis=0) #按列查找空值,并将空值累加

如上两种方式都可以看出,Precipitation列中有四个空值

2 缺失值处理

对于缺失值,我们可以使用如下方式处理:

删除缺失值

仅适用于缺失数量很少的情况

填充缺失值

1 数值变量

▷均值填充

▷中位数填充

2 类别变量

▷众数填充

▷单独作为一个类别

3 额外处理说明

▷缺失值小于20%,直接填充

▷缺失值在20%-80%,填充变量后,同时增加一列,标记该列是否缺失,方便参与后续建模

▷缺失值大于80%,不使用原始列,而是增加一列,标记该列是否缺失,方便参与后续建模

#查看数据分布情况

print(data['Precipitation'].skew()) #查看偏度值,确认左偏或右偏

偏度值大于0,轻微右偏

sns.distplot(data['Precipitation'].dropna())

#distplot中不允许有空值,故使用dropna函数将空值去除

根据偏度值及图像可知,数据呈右偏分布,故使用中位数填充,代码如下:

data['Precipitation'].fillna(data[].median(), inplace=True)

异常值

1 异常值探索

我们可以使用如下方式,发现异常值:

通过describe查看数值信息

3σ方式

使用箱线图辅助

相关异常检测算法

describe方法

调用DataFrame对象的describe方法,可以显示数据的统计信息,不过此种方法仅能作为一种简单的异常探索方式。

data.describe()

3σ方法

根据正态分布的特性,我们可以将3σ之外的数据,视为异常值。我们以GDP为例,首先绘制GDP的分布。

sns.distplot(data['GDP'])

print(data['GDP'].skew()) #偏度值

可以看出此列呈严重的右偏分布,也就是存在部分极大的异常值,可以获取这些异常值。

mean, std = data['GDP'].mean(), data['GDP'].std()

lower, upper = mean-3*std, mean+3*std

print('均值:',mean)

print('标准差:',std)

print('下限:',lower)

print('上限:',upper)

data[(data['GDP']upper)] #获取全部异常信息

箱线图

箱线图是一种常见的异常检测方式。

sns.boxplot(data=data['GDP'])

2 异常值处理

对于异常值,我们可以采用如下的方式处理:

删除异常值

视为缺失值处理

对数转换

使用临界值填充

使用分箱法离散化处理

对数转换

如果数据中存在较大的异常值,我们可以通过取对数来进行转换,这样可以得到一定的缓解。例如,GDP变量呈现右偏分布,我们可以进行取对数转换。

fig, ax = plt.subplots(1, 2)

fig.set_size_inches(15, 5)

sns.distplot(data['GDP'], ax=ax[0])

sns.distplot(np.log(data['GDP']), ax=ax[1])

取对数的方式比较简单,不过也存在一些局限:

取对数只能针对正数操作,不过我们可以通过如下的方式进行转换:

np.sign(X) * np.log(np.abs(X)+1)

适合于右偏分布,不适合左偏分布

使用边界值替换

我们可以对异常值进行“截断”处理,即使用临界值替换异常值。例如:在3σ与箱线图中,就可以这样处理。

分箱离散化

有时候,特征对目标值存在一定的影响,但是这种影响可能未必是线性的增加,此时我们就可以使用分箱方式,对特征进行离散化处理。

重复值

1 重复值探索

使用duplicate检查重复值,可配合keep参数进行调整。

#发现重复值

print(data.duplicated().sum())

#查看哪些记录出现了重复值

data[data.duplicated(keep=False)] #显示所有重复值

2 重复值处理

重复值对数据分析通常没用,直接删除即可。

data.drop_duplicates(inplace=True) #删除重复值

data.duplicated().sum() #检验重复值是否成功删除

python空气质量分析与预测_AQI(空气质量指数)分析与预测(一)相关推荐

  1. python 空气质量AQI数据分析与预测 ---分析(空气质量排名,临海城市空气质量是否优于内陆城市)

    #每天一点点# python 空气质量AQI数据分析与预测 点击可以查看 分析:用到的库,数据集,数据清洗 点击可以查看 分析:相关系数矩阵 #四:数据分析 #1:空气质量最好/最差的5个城市 #最好 ...

  2. python爬取空气质量_python爬取全国空气质量信息

    主要模块 requests模块.使用requests模块来获取http响应 gevent模块.使用gevent开启多个协程,加快爬取速度 re模块或beautifulsoup模块.正则表达式解析与be ...

  3. python空气质量分析与预测_python 空气质量AQI数据分析与预测 ---分析,相关系数矩阵...

    版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/YmeBtc/article/details ...

  4. 基于Python的空气质量网络数据爬虫,构建面向深度学习数据预测的空气质量数据集

    目录 1.目标 2. 思路 3.算法 3.1 算法流程 3.2 开发环境 4 核心代码 4.1 Header伪装 4.2 get_html_soup函数 4.3 get_city_link_list函 ...

  5. AQI空气质量分析与预测

    AQI分析与预测 背景信息 AQI全称是Air Quality Index,指空气质量指数,用来衡量空气清洁或者污染的程度,值越小,表示空气质量越好. 本文的分析目标 一.描述性统计 哪些城市的空气质 ...

  6. 城市空气质量分析与预测

    城市空气质量分析与预测 一.AQI分析与预测 1.背景信息 2.任务说明 3.数据集描述 二.数据分析流程 基本流程 三.读取数据 1.导入相关的库 2.加载数据集 四.数据清洗 1.缺失值 1.1. ...

  7. Python数据分析系列(2)——美国纽约皇后区空气质量分析

    感谢关注天善智能,走好数据之路↑↑↑ 欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答.求职一站式搞定! 天善智能社区地址:https://www. ...

  8. 基于Python的2013-2018全国城市空气质量分析

    基于Python的2013-2018全国城市空气质量分析 项目摘要 本项目使用pandas/numpy工具包对557424条空气质量数据进行导入及清洗,并使用matplotlib/seaborn/py ...

  9. AQI(空气质量指数)分析与预测(二)

    AQI(空气质量指数)分析与预测(一) 数据分析 哪些城市的空气质量较好/较差 #空气质量最好的几个城市 t = data['Ciyt','AQI'].sort_values('AQI') #根据AQ ...

最新文章

  1. 复旦教授:在一般院校里,我可能连当副教授都不够格
  2. 用notepad++怎样批量添加引号
  3. 限制IP 访问 Oracle 的方法
  4. Windows启动文件的详细介绍
  5. monkey测试===ios-monkey测试工具
  6. python绘制函数怎么去掉原点_python – 更改绘图的原点
  7. Eclipse创建JavaWeb工程
  8. 牛刀小试:使用Reactive Extensions(Rx),对短时间内多次发生的事件限流
  9. 浏览器内存泄漏问题的跟踪与解决(转)
  10. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_07-freemarker基础-if指令
  11. SDK环境变量配置 adb配置
  12. Serializer和ModelSerializer
  13. android平板生产力工具,重塑应用生态,让安卓平板成为生产力工具:华为MatePad Pro体验...
  14. Word 2016使用技巧
  15. 微信小程序 获取formId
  16. Linux那些事儿之我是U盘(4)想到达明天,现在就要启程
  17. Form表单校验_座机号、电话号码
  18. nuvoton uboo2013引导流程 2 - spl
  19. [CTF] SQL注入的一些经验总结(未完待续)【更新:2022.11.25】
  20. 最新小程序授权+php后端(附demo源码)

热门文章

  1. 攻击与脆弱性之间的关系
  2. gradle-5.4.1-all gradle-6.1.1.all.zip下载包
  3. C语言 十六进制与ascii码互转
  4. 2021-06-20问题整理
  5. 前行、生活、少年、爱情
  6. 人人权限系统本地部署
  7. dz plugin.php,DZ支付积分充值插件 Discuz码支付免签约即时到账插件 Discuz手机支付插件...
  8. 有力度、有速度更有温度,亚马逊献上史上最长黑五狂欢季
  9. 国科大学习资料--最优化计算方法(王晓)--期末考试试卷历年题按题型汇总
  10. python泰坦尼克号生存预测论文_用Python预测泰坦尼克号生存情况