seaborn可视化

实验项目名称:Seaborn可视化基础

实验目的及要求:

(1)了解scatterplt函数的使用格式。
(2)掌握散点图的绘制方法。
(3)了解stripplot函数的使用格式。
(4)掌握分类散点图的绘制方法。
(5)了解distplot函数的绘制格式。
(6)掌握单变量分布图的绘制方法。
(7)了解regplot函数的使用格式。
(8)掌握线性回归拟合图的绘制方法。
(9)了解heatmap函数的使用格式。
(10)掌握热力图的绘制方法。

实验内容:

实训一 分析各空气质量指数之间的关系及其分布情况

实验步骤

(1)使用pandas库读取芜湖市2020年空气质量指数统计数据。

In [2]:

import numpy as np
import pandas as pd
import seaborn as sns
data=pd.read_csv('./aqi.csv')
data

Out[2]:

日期AQI质量等级PM2.5含量(ppm)PM10含量(ppm)SO2含量(ppm)CO含量(ppm)NO2含量(ppm)O3_8h含量(ppm)
02020/1/179586480.75723
12020/1/2112轻度污染8473101.0717
22020/1/368495170.8493
32020/1/490675771.25318
42020/1/5110轻度污染836571.05146
..............................
2662020/9/2346173370.73392
2672020/9/24602751100.748106
2682020/9/2562214790.743114
2692020/9/2674295390.737128
2702020/9/2760184190.625112

271 rows × 9 columns

(2)解决中文子体的显示问题,设置字体为黑体,并解决保存图像时负号“-”显示为方块的问题。

In [8]:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']='SimHei'#设置字体为黑体
plt.rcParams['axes.unicode_minus']=False#解决保存图像时负号“-”显示为方块的问题

(3)绘制AQI和PM2.5的关系散点图。

In [6]:

###绘制AQI和PM2.5的关系散点图
#########两种方式:
#######################第一种:以PM2.5含量(ppm)为x轴,以AQI为y轴
plt.figure(figsize=(12,12),dpi=80,facecolor='skyblue',edgecolor="skyblue")
plt.title('AQI和PM2.5的关系散点图', fontsize=20,color='purple')
plt.ylabel('AQI', fontsize=15,color='green')
plt.xlabel('PM2.5含量(ppm)', fontsize=15,color='purple')
plt.scatter(data['PM2.5含量(ppm)'],data['AQI'],c='green',marker='.')

Out[6]:

<matplotlib.collections.PathCollection at 0x1de2021a5b0>

In [4]:

##########第二种:以AQI为x轴,以PM2.5含量(ppm)为y轴
import seaborn as sns
#忽略警告
import warnings
warnings.filterwarnings('ignore')
#使用seaborn库绘图
sns.set_style('whitegrid',{'font.sans-serif':['simhei','Arial']})
plt.figure(figsize=(12,12),dpi=80,facecolor='skyblue',edgecolor="skyblue")
plt.title('AQI和PM2.5的关系散点图', fontsize=20,color='purple')
plt.xlabel('AQI', fontsize=15,color='green')
plt.ylabel('PM2.5含量(ppm)', fontsize=15,color='purple')
sns.scatterplot(x=data['AQI'],y=data['PM2.5含量(ppm)'],data=data)
plt.show()

(4)绘制空气质量等级分类散点图

In [10]:

data[data.columns[2]]

Out[10]:

0         良
1      轻度污染
2         良
3         良
4      轻度污染
       ... 
266       优
267       良
268       良
269       良
270       良
Name: 质量等级, Length: 271, dtype: object

In [42]:

# 绘制空气质量等级分类散点图
#########两种方式:
##################第一种:利用质量等级与AQI绘图,以质量等级为x轴,以AQI为y轴
# 设定画布大小
plt.figure(figsize=(12,12),dpi=80,facecolor='skyblue',edgecolor="skyblue")
# 绘制散点图
sns.stripplot(x=data[data.columns[2]], y=data[data.columns[1]], data=data, jitter=True)
# 设定x轴标签和字体大小
plt.xlabel('空气质量等级', fontsize=15,color='purple')
# 设定y轴标签和字体大小
plt.ylabel('AQI', fontsize=15,color='green')
# 设定标题和字体大小
plt.title('芜湖市空气质量等级分类散点图', fontsize=20,color='purple')
# 显示图形
plt.show()

In [43]:

############第二种:利用日期和质量等级绘图,以日期为x轴,以空气质量等级为y轴
plt.figure(figsize=(12,12),dpi=80,facecolor='skyblue',edgecolor="skyblue")
# 设定x轴标签和字体大小
plt.xlabel('日期', fontsize=15,color='purple')
# 设定y轴标签和字体大小
plt.ylabel('空气质量等级', fontsize=15,color='green')
plt.title('芜湖市空气质量等级分类散点图', fontsize=20,color='purple')
# 设定标题和字体大小
markers={'良':'0','轻度污染':'D','优':'S','中度污染':'V','重度污染':'2'}
sns.scatterplot(y=data['质量等级'],x=data['日期'],hue='质量等级',markers=markers,data=data)
plt.show()

(5)绘制空气质量等级单变量分布图。

In [9]:

# 绘制空气质量等级单变量分布
#####两种方式:
##############第一种:调用seaborn库的countplot函数
plt.figure(figsize=(10,10),dpi=80,facecolor='skyblue',edgecolor="skyblue")
# 绘制以第三列为 x 轴,数据来源为 data 的计数图
sns.countplot(x=data.columns[20], data=data)
# 设置标题为“空气质量等级单变量分布图”
plt.title("空气质量等级单变量分布图",fontsize=20,color='purple')
# 设置 x 轴标签为“质量等级”
plt.xlabel("质量等级",fontsize=15,color='purple')
# 设置 y 轴标签为“频数”
plt.ylabel("频数",fontsize=15,color='green')
# 显示图像
plt.show()

In [46]:

############第二种方式:调用seaborn库的displot函数,
sns.displot(data['质量等级'],kde=False,color='red')
# 设置标题为“空气质量等级单变量分布图”
plt.title("空气质量等级单变量分布图",fontsize=20,color='purple')
# 设置 x 轴标签为“质量等级”
plt.xlabel("质量等级",fontsize=15,color='purple')
# 设置 y 轴标签为“频数”
plt.ylabel("频数",fontsize=15,color='green')
plt.show()

(6)绘制PM2.5与AQI的线性回归拟合图。

In [5]:

# 绘制PM2.5与AQI的线性回归拟合图
plt.figure(figsize=(12,12),dpi=80,facecolor='skyblue',edgecolor="skyblue")
# 调用seaborn库的regplot函数,将PM2.5含量(ppm)作为x轴,AQI作为y轴,数据源为aqi
sns.regplot(x='PM2.5含量(ppm)',  y='AQI',  data=data,color='green')
# 设定图表标题为  'PM2.5与AQI的线性回归拟合图'
plt.title('PM2.5与AQI的线性回归拟合图',color='purple',fontsize=20)
# 设定图表x轴标签为'PM2.5含量(ppm)'
plt.xlabel('PM2.5含量(ppm)',color='purple',fontsize=15)
# 设定图表y轴标签为'AQI'
plt.ylabel('AQI',color='green',fontsize=15)
# 显示图表
plt.show()

(7)绘制AQI、PM2含量、PM10含量两两之间的相关性网格图

In [33]:

#####绘制AQI、PM2含量、PM10含量两两之间的相关性网格图
plt.figure(figsize=(14,14))#设置画布大小
###调用seaborn库中的PairGrid函数
g = sns.PairGrid(data, vars=['AQI', 'PM2.5含量(ppm)','PM10含量(ppm)'],hue='质量等级')
g = g.map(plt.scatter)
plt.suptitle('AQI、PM2含量、PM10含量两两之间的相关性网格图', verticalalignment='bottom' , y=1,color='purple',fontsize=20)
plt.show()
<Figure size 1400x1400 with 0 Axes>

实训二 分析各空气质量指数与AQI的相关性

基于实训一的数据绘制热力图,分析各空气质量指数与AQI的相关性

(1)计算相关系数

In [12]:

# 计算相关系数
# 计算相关系数并赋值给变量 corr
corr = data[['AQI', 'PM2.5含量(ppm)', 'PM10含量(ppm)', 'SO2含量(ppm)', 'CO含量(ppm)', 'NO2含量(ppm)', 'O3_8h含量(ppm)']].corr()
print("AQI与其他因素的相关系数如下:\n", corr)
AQI与其他因素的相关系数如下:
                    AQI  PM2.5含量(ppm)  PM10含量(ppm)  SO2含量(ppm)  CO含量(ppm)  \
AQI           1.000000      0.722789     0.753629    0.481377   0.444786   
PM2.5含量(ppm)  0.722789      1.000000     0.760575    0.259824   0.519367   
PM10含量(ppm)   0.753629      0.760575     1.000000    0.623885   0.429214   
SO2含量(ppm)    0.481377      0.259824     0.623885    1.000000   0.391106   
CO含量(ppm)     0.444786      0.519367     0.429214    0.391106   1.000000   
NO2含量(ppm)    0.449114      0.489421     0.656500    0.614224   0.494028   
O3_8h含量(ppm)  0.461272     -0.123367     0.299201    0.472670  -0.065683   

              NO2含量(ppm)  O3_8h含量(ppm)  
AQI             0.449114      0.461272  
PM2.5含量(ppm)    0.489421     -0.123367  
PM10含量(ppm)     0.656500      0.299201  
SO2含量(ppm)      0.614224      0.472670  
CO含量(ppm)       0.494028     -0.065683  
NO2含量(ppm)      1.000000      0.025897  
O3_8h含量(ppm)    0.025897      1.000000  

In [11]:

corr.round(2)

Out[11]:

AQIPM2.5含量(ppm)PM10含量(ppm)SO2含量(ppm)CO含量(ppm)NO2含量(ppm)O3_8h含量(ppm)
AQI1.000.720.750.480.440.450.46
PM2.5含量(ppm)0.721.000.760.260.520.49-0.12
PM10含量(ppm)0.750.761.000.620.430.660.30
SO2含量(ppm)0.480.260.621.000.390.610.47
CO含量(ppm)0.440.520.430.391.000.49-0.07
NO2含量(ppm)0.450.490.660.610.491.000.03
O3_8h含量(ppm)0.46-0.120.300.47-0.070.031.00

(2)绘制特征相关性热力图

In [10]:

# 绘制特征相关性热力图
# 设置画布大小
plt.figure(figsize=(17, 14))
# 计算相关系数并赋值给变量 corr
corr = data[['AQI', 'PM2.5含量(ppm)', 'PM10含量(ppm)', 'SO2含量(ppm)', 'CO含量(ppm)', 'NO2含量(ppm)', 'O3_8h含量(ppm)']].corr()
# 以热图的形式展示相关性,并用蓝红色调表示,同时在每个方格中显示数值,并设置线宽为1
sns.heatmap(corr[::-1], cmap='RdBu_r', annot=True, linewidths=1)
# 设置热图的标题,并设置字体大小为25
plt.title("各污染物之间的特征相关性热力分布图",color='purple',fontsize=20)
# 设置x轴标签字体大小为15
plt.xticks(fontsize=15)
# 设置y轴标签字体大小为15
plt.yticks(fontsize=15)
# 展示画布
plt.show()

(3)以质量等级为类别绘制AQI、PM2.5含量两个变量的回归网格图。

In [8]:

######绘制以质量等级为类别绘制AQI、PM2.5含量两个变量的回归网格图
#####调用seaborn库中lmplot函数,利用col_wrap=2,将图形划分成一行排两个
sns.lmplot(y='AQI',x='PM2.5含量(ppm)',col='质量等级',col_wrap=2,data=data)
plt.show()

实验环境:

硬件:计算机
软件:python+jupyter notebook+Seaborn

实验结果:

(1)PM2.5与空气质量指数的关系?

答:从PM2.5与AQI的线性回归拟合图与AQI、PM2含量、PM10含量两两之间的相关性网格图可以很清楚的看出,
PM2.5与空气质量指数呈线性关系;
其中与AQI呈线性关系尤为明显;并且可以看出基本上呈正相关。

(2)空气质量指数的分类和分布情况?

答:空气质量指数的分类有五种分别是轻度污染、良、优、中度污染、重度污染;
从空气质量等级单变量分布图和空气质量等级分类散点图结合来看:可以看出中度污染和重度污染占比很少(各有一
个);良在140-160(个)之间,
轻度污染在20-40(个)之间,优在80-100(个)之间。其中良占比最高,其次是优。
单从空气质量等级分类散点图来看:空气质量指数良在50-100之间,轻度污染在100-125之间,优在25-50之间,中度
污染在160-175之间,重度污染在200-210之间;即良和优的空气质量质数比较好,而中度污染和重度污染空气质量指数
很差。
说明:空气质量在逐年改善,但仍需要进一步努力,多植树造林,增加绿化面积对改善空气成分有很大帮助,进而可以
改善空气质量

(3)各空气质量指数与AQI的相关性如何?

答:由特征相关性热力图和计算相关系数可知:空气质量特征相关性分析可以为我们提供不同污染物指标之间的相互关
系,有助于识别主要的污染源和
制定特定的环境科学政策。我们可以使用皮尔逊相关系数衡量变量之间的线性关系,取值范围从-1到+1,其中0表示没
有线性关系,-1表示完全负相关,
+1表示完全正相关。
从上图中可以看出,以下数据是相关联的:
PM2.5含量与AQI、PM10含量:相关系数为0.72、0.76,PM2.5含量与AQI、PM10含量呈强正相关。
PM10含量与AQI、SO2含量(ppm)、NO2含量(ppm):相关系数为0.75、0.62、0.66, PM10含量与AQI、SO2含
量(ppm)、NO2含量(ppm)呈强正相关
SO2含量与PM10含量、NO2含量(ppm):相关系数分别为0.62、0.61,SO2含量与PM10含量、NO2含量(ppm)呈
强正相关。
NO2含量与PM10含量(ppm)、SO2含量(ppm):相关系数为0.66、0.61,NO2含量与PM10含量(ppm)、SO2含
量(ppm)呈强正相关。
AQI与SO2含量(ppm)、CO含量(ppm)、NO2含量(ppm)、O3_8h含量(ppm):相关系数为0.48、0.44、
0.45、0.46,AQI与SO2含量(ppm)、CO含量(ppm)、NO2含量(ppm)、O3_8h含量(ppm)呈中等强度正相
关……等等;
关于相关性强度划分:0.8-1.0(极强相关),0.6-0.8(强相关),0.4-0.6(中等强度相关),0.2-0.4(弱相关),0.0-
0.2(极弱相关和无相关)
其中极弱正相关有O3_8h含量(ppm)与PM10含量(ppm)、NO2含量(ppm)
其中极弱负相关有O3_8h含量(ppm)与PM2.5含量(ppm)、CO含量(ppm)
  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值