python爬取空气质量数据可视化_数据


这篇分析是来自于《Python科学计算(第二版)》中的一篇实践,也是我在学习利用Python进行数据分析的第一个案例实践,在此分享给大家。

我在重现过程中发现有些代码已经不能够使用,所以我用我能够实现的方法重现了一下。分析的主要过程、思路还是书上的内容。

导入库

直接先导入最常用的几个数据分析库,如果分析过程中需要其他库,再添加。


# 导入数据库
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib as mpl

import matplotlib.pyplot as plt
from IPython.display import display
plt.style.use('fivethirtyeight')
sns.set_style({'font.sans-serif':['simhei','Arial']})
%matplotlib inline


导入数据

导入HDF5格式的数据


# 使用HDFStore打开保存的HDF5数据


python爬取空气质量数据可视化_python中groupby_02


清洗城市名


# 使用value_counts()查看所有的城市名
df_aqi.City.value_counts()


天津 134471
北京 109999
上海 92745
天津市 13
北京市 12
上海市 10
Name: City, dtype: int64

同一个城市有两个名字,清洗城市名使其统一,并转化为分类格式


# 使用str.replace()统一城市名,并将其转化为分类类型


天津 134484
北京 110011
上海 92755
Name: City, dtype: int64

相关性及热力图

AQI列是空气质量的评分,而其他的数值列为各种成分的指标值。下面通过corr()计算这些值的相关性。


# 使用corr()计算相关性


python爬取空气质量数据可视化_python中groupby_03


由上表绘制相关系数热力图,由图可知空气质量指数与PM2.5的相关性最大,而与O3略呈负相关性。


# 绘制相关系数热力图


python爬取空气质量数据可视化_python中groupby_04

空气质量参数之间的相关性

每座城市PM2.5日平均值分布

按照日期、城市分组,并计算平均值,再使用unstack()转换为日期、城市数据的DataFrame对象。


# 使用groupby按照日期、城市分组


python爬取空气质量数据可视化_数据_05


绘制直方统计图和核密度估计分布图,由于使用高斯核,因此图中均值小于0的概率密度不为0。


# 绘制直方统计图


python爬取空气质量数据可视化_python中groupby_06


python爬取空气质量数据可视化_数据_07

每座城市的日平均PM2.5的分布图

# 三座城市PM2.5相关性


python爬取空气质量数据可视化_python中groupby_08


一星期中每天的PM2.5平均值

将数据按照星期几、城市分组,求出PM2.5平均值,绘制柱形图。北京周四、周五、周六的空气质量比其他时候差。


# 统计一星期中每天的PM2.5平均值


python爬取空气质量数据可视化_数据分析_09

一星期中PM2.5的平均值

一天中每小时的PM2.5的平均值

统计一天中每个小时的PM2.5的平均值,并绘制柱形图。

可以看出北京、天津下午的空气质量要好一点。


# 统计每个小时的PM2.5平均值


python爬取空气质量数据可视化_python中groupby_10

一天中不同时段的PM2.5的平均值

北京各个观测点PM2.5平均值

选择北京这个城市,然后逐月、逐地点求PM2.5的平均值,再逐地点求月平均,获得每个观测点的平均值,并排序,绘制柱形图。


# 选择城市为北京的数据


python爬取空气质量数据可视化_数据_11

北京市各个观测点的PM2.5平均值

选择最好和最差的各两个观测点,显示他们每个月的平均值。


# 选择空气质量最好和最差的两个位置,绘图


python爬取空气质量数据可视化_数据_12

北京市个观测点的月平均PM2.5