分析项目-AQI分析与预测

主要结论:
1、空气质量总体分布上来说,南部市优于北部城市,西部城市优于东部城市。
2、临海城市的空气质量整上好于内陆城市。
3、是否临海,降雨量与纬度对空气量指数的影响较大。
4、我国城市平均空气质量数大致在(71.05~80.56〕这个区间内,在该区间的可能性概率为95%。
5、通过历史数,我们可以对空气质量指数进行预测。

一:项目背景

AQl(Air Quality Index),指空气质量指数,用来衡量空气清洁或污染的裎度。值越小,表示空气质量越好。近年来,因为环境问题,空气质量也越来越受到人们的重视。
本文我们将简单对一份与空气质量相关得数据进行分析,得到一些简单结论,并通过次案例更加熟悉数据分全流程。
本文分析目的主要有:

哪些城市的空气质量较好/较差?(描述述性统计分析)
空气质量在地理位置分布上,是否有一定的规律性?(描述性统计分析〕
临海城市的空气质量是否有别于内陆城市?(推断统计分析〕
空气质量主要受哪些因素影响?〔相关系数分析〕
全国城市空气质量普处于何种水平?〔区间估计〕
怎样预测一个城市的空气质量?(统计建模)

二:简单聊分析流程

受《对比excel,轻松学Python》作者张俊红老师的启发。(强烈推荐有兴趣的小伙伴去仔细品读,真的非常简单实用。值得入手。)其实数据分析的过程就类似与做菜的过程。
在这里插入图片描述

三:买菜,数据获取

在这里插入图片描述

四:洗菜,数据清洗

在这里插入图片描述

数据预处理
#读取数据
data = pd.read_csv('./data.csv')
#简单预览 可采取 head() tail()
data.head()

在这里插入图片描述

#大体了解数据
#查看数据条数
print(data.shape)
print(data.info())

在这里插入图片描述

数据清洗
#大体了解数据
#查看数据条数
print(data.shape)
print(data.info())
#也可对isnull 求和(isnull=1)
print(data.isnull().sum(axis=0))

在这里插入图片描述
可见Precipitation 列存在空值。
同时,可以直接查看空值的和

在这里插入代码片

在这里插入图片描述

缺失值

接下来我们需要对缺失值进行分析,决定我们采用何种方式处理。

#缺失值处理 需了解一下确实值列的特点,然后选择处理方法
print(data['Precipitation'].skew())  #计算偏度 偏度>0  右偏
#用核密度图看一下分布
sns.distplot(data['Precipitation'].dropna())

在这里插入图片描述

#对于右偏分布 用中位数填充更加靠谱
data.fillna({
   "Precipitation": data["Precipitation"].median()}, inplace=True)
data.isnull().sum()

为啥右偏取中位数靠谱些?因为均值受极值的影响较大。
看下图: MO 众数 Me 中位数,x ba均值。
在这里插入图片描述

异常值

接下来看一下GDP列的异常值。

#异常值
sns.distplot(data['GDP']) #可以看出是右偏分布
print(data['GDP'].skew())

在这里插入图片描述
非常明显的右偏分布(红框内的长尾巴),我们可以拿出异常值看一下。(3倍标准差之外的数据)

#从上面可以看出,呈严重右偏分布 我们可以获取异常的数据部分
std = data['GDP'].std() 
mean = data['GDP'].mean()
print(std,mean)
lower,upper = mean-3*std,mean+3*std
print(lower,upper)
#筛选出3倍标准差之外的数据
data[(data['GDP']<lower)|(data['GDP']>upper)] #8条异常

在这里插入图片描述
(均值2390,然后异常值都是上万的GDP)
同时我们可以利用箱线图查看异常值。

#利用箱线图图查看异常值
sns.boxplot(data=data['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])

在这里插入图片描述

重复值

对于重复值,我们一般采取删除处理。(保留哪一个根据业务而定。)

#发现重复值  好像要指定单列或者多列 不然会报错 'Series' objects are mutable, thus they cannot be hashed
data['City'].duplicated()
print(data['City'].duplicated().sum()) #2条重复值
#查看重复值
data[data['City'].duplicated(keep=False)]

在这里插入图片描述

#对重复值可族谱删除处理,可以指定保留那条是否替换
data.drop_duplicates('City',inplace=True)
#再次确认是否有重复值
print(data['City'].duplicated().sum()) #0条重复值

五:切菜,数据转换

这一步往往和数据分析步同时进行。主要是做一些排序,筛选,分组聚类等。

六:炒菜,数据分析

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

#思路:根据AQI进行排序 取出前10 后10
TOP10 = data.sort_values('AQI',ascending=False)[["City",'AQI']][0:10]
display(TOP10)
plt.figure(figsize=(18,6))
sns.barplot(x='City',y='AQI',data=TOP10,palette=sns.color_palette('muted',10)) #palette指定调色盘
plt.xticks(rotation=45)
#添加数据标签
x=np.arange(len(TOP10['City']))#因为x轴是汉字,所以默认对应的数值是从0开始的
p = TOP10['AQI'] 

for a,b in zip(x,p):
    plt.text(a+0.1, b+0.02, int(b), ha='center', va= 'bottom',fontsize=12)

plt
  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值