文章目录
一、AQI分析与预测
1.1 背景信息
AQI(Air Quality Index)是指空气质量指数,用来衡量空气清洁或者污染的程度,值越小,表示空气质量越好。空气污染指数划分为0-50、51-100、101-150、151-200、201-300和大于300六档,对应于空气质量的六个等级,指数越大,级别越高,就说明污染越严重,对人体健康的影响也越大。(近段时间,空气质量愈发倍受关注,因此在此作一个专题分析)
1.2 分析目标/任务
期望通过运用数据分析的相关分析,对全国城市质量进行研究和分析,希望解决下面这些问题:
- 哪些城市的空气质量较好/较差【描述性统计分析】
- 空气质量在地理位置分布上,是否具有一定分布规律【描述性统计】
- 临海城市的空气质量是否有别于内陆城市【推断性统计分析】
- 空气质量受那些因素的影响【相关系数分析】
- 全国空气质量普遍处于何种水平【区间估计】
- 怎样预测一个城市的空气质量【统计建模】
1.3 数据集概览
获取了2015年的空气质量指数集,该数据集包含全国主要城市的相关数据以及空气质量指数。
二、数据分析流程
2.1基本流程
在进行数据分析之前,需要清除数据分析的基本流程:
- 宏观明确需求与目的,将目标拆解
- 数据采集:
——内部数据
——购买数据
——爬取数据
——调查问卷
——其他收集 - 数据预处理:
——数据整合:
————横向整合
————纵向整合
——数据清洗:
————缺失值
————异常值
————重复值
——数据转换: - 数据分析:
——描述分析
——推断分析
——数据建模:
————特征工程
————超参数调整
——数据可视化 - 编写报告
2.2理解流程
可以把这个过程形象化成做菜。
三、读取数据
3.1导入相关的库
导入需要的库,进行一些初始化设置。
#1、数据读取
#导入相关库
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")
3.2加载数据集
#2、加载数据集
data=pd.read_csv("data-Copy1.csv")
print(data.shape)
#概览数据大致情况
data.head()
输出:(325, 12)
四、数据清洗
4.1缺失值
(1)如何查看缺失值呢——info、isnull
1、使用info()
#数据清洗之缺失值查看
data.info()
输出:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 325 entries, 0 to 324
Data columns (total 12 columns):
City 325 non-null object
AQI 325 non-null int64
Precipitation 321 non-null float64
GDP 325 non-null float64
Temperature 325 non-null float64
Longitude 325 non-null float64
Latitude 325 non-null float64
Altitude 325 non-null float64
PopulationDensity 325 non-null int64
Coastal 325 non-null object
GreenCoverageRate 325 non-null float64
Incineration(10,000ton) 325 non-null float64
dtypes: float64(8), int64(2), object(2)
memory usage: 30.5+ KB
2、使用isnull
#数据清洗之缺失值查看
data.isnull().sum(axis=0)
输出:
City 0
AQI 0
Precipitation 4
GDP 0
Temperature 0
Longitude 0
Latitude 0
Altitude 0
PopulationDensity 0
Coastal 0
GreenCoverageRate 0
Incineration(10,000ton) 0
dtype: int64
从两种方法中我们都能发现,在Percipitation(降雨量)这个变量上有缺失值。因此我们需要对此进行处理。
(2)缺失值处理
-
删除缺失值(适用于缺失数量很少的情况)
-
填充缺失值:
——数值变量:采用均值填充、中数填充
——类别变量:采用众数填充,或者单独作为一个类别; -
额外的数据处理说明
——缺失值小于20%,直接填充。
——缺失值在20-80%,填充变量之后,同时增加一列来标记该列是否缺失,参与后续建模。
——缺失值大于80%,不适用原始列,而是增加一列,标记该列缺失,参与后续建模。
我们可以看一下数据分布状况:
#数据分布
print(data["Precipitation"].skew())
sns.distplot(data["Precipitation"].dropna())
输出:偏度——0.28491574964838473
填充数据:
#数据填充
data.fillna({
"Pre