案例:通过空气质量指数AQI学习统计分析并进行预测(上)

申明:文章内容是作者自己的学习笔记,教学来源是开课吧讲师梁勇老师。
不要杠,开心学习!
讲师介绍:梁老师 《细说Java》与《Java深入解析》图书作者。一线互联网资深数据分析专家,超过十年软件开发与培训经验。精通Python与Java开发,擅长网络爬虫,数据分析与可视化,机器学习,自然语言处理等技术。曾参与阿里云大学数据分析,机器学习,自然语言处理等课程开发与认证设计,担任阿里云学院导师。

进入正文:

本篇博客会带你学习:

  1. 数据分析流程
  2. 特征工程
  3. 缺失值、异常值、重复值的处理
  4. 箱线图怎么判断异常值
  5. 观察散点图、箱型图、箱线图等进行分析
  6. 两独立样本T检验

用到的库:numpy 、pandas、 matplotlib、 seaborn

让我们开始吧!!!
在这里插入图片描述

1、AQI 分析与预测

1.1 背景信息

AQI(空气质量指数),用来衡量空气清洁或者污染的程度。值越小,表示空气质量越好。近年来,因为环境问题,空气质量也越来越受到人们的重视。
在这里插入图片描述

1.2 学习任务说明

我们期望能够运用数据分析的相关技术,对全国城市空气质量进行研究和分析,希望能够解决以下疑问:
在这里插入图片描述

这里整合用到了之前的一些统计学习相关的内容。
需要回顾学习的可以点击以下内容:
描述性统计分析。
推断统计分析包括参数估计假设检验两块内容。
线性回归。

1.3 数据集描述

数据集:获取2015年空气质量指数集。该数据集包括全国主要城市的相关数据以及空气质量指数。
数据集百度云链接,提取码:j63l
数据集中字段(列名)详情:

在这里插入图片描述

2、数据分析流程

在进行分析前我们先来了解下数据分析的流程:
在这里插入图片描述
什么是特征工程?

有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。那特征工程到底是什么呢?顾名思义,其本质是一项工程活动,目的是最大限度地从原始数据中提取特征以供算法和模型使用。通俗的说就是数据预处理的方式,从源数据当中提取相关数据可以放到模型当中。

通过总结和归纳,目前认为特征工程包括以下方面:
在这里插入图片描述
什么是超参数调整?

模型参数通常是有数据来驱动调整。
超参数不需要数据来驱动,而是在训练前或者训练中人为的进行调整的参数。

3、读取数据

3.1 导入相关的库

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

import numpy as np
import pandas as pd 
import matplotlib.pylab 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")

warnings.filterwarnings("ignore") python通过调用warnings模块中定义的warn()函数来发出警告。我们可以通过警告过滤器进行控制是否发出警告消息。
“ignore”表示忽略匹配的警告。

3.2 加载数据集
data = pd.read_csv("data.csv")
print(data.shape)

结果:(325, 12)(325行12列的形式)
加载之后,可以使用head / tail / sample等方法查看数据的大致情况。

data.head()

结果:
在这里插入图片描述
数据集我们大致查看后,现在要来对数据进行清洗的操作:

4、数据清洗

4.1 缺失值
4.1.1 缺失值探索

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

  • info
  • isnull
data.info()

结果:
在这里插入图片描述

data.isnull().sum(axis=0)
# 用sum 统计每一列有多少个缺失值

结果:
在这里插入图片描述
通过查看发现降雨量Precipitation 有4个缺失值。

4.1.2 缺失值处理

对于缺失值,我们可以使用如下的方式处理:
在这里插入图片描述
均值填充:

如果是正态分布用均值填充也可以,但是如果是右偏分布就不可以用均值填充了,因为会受到极值的影响。

中值填充:

中位数不太受异常值或者极值的影响。 类别变量中,单独作为一个类别这种方法用的比较多些。

4.1.2.1 数据分布
print(data["Precipitation"].skew())
# skew 查看下偏度信息
sns.distplot(data["Precipitation"].dropna())

skew() 查看下偏度信息
注意:
seaborn不支持空值绘制图形,所以需要使用dropna()将空值剔除掉。

结果:
在这里插入图片描述
从图中可以看到,分布多少有些右偏,所以我们可以使用中值对其进行一个填充。

4.1.2.2 填充数据
data.fillna({
   "Precipitation":data["Precipita
  • 15
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值