这篇分析是来自于《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数据
清洗城市名
# 使用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()计算相关性
由上表绘制相关系数热力图,由图可知空气质量指数与PM2.5的相关性最大,而与O3略呈负相关性。
# 绘制相关系数热力图
空气质量参数之间的相关性
每座城市PM2.5日平均值分布
按照日期、城市分组,并计算平均值,再使用unstack()转换为日期、城市数据的DataFrame对象。
# 使用groupby按照日期、城市分组
绘制直方统计图和核密度估计分布图,由于使用高斯核,因此图中均值小于0的概率密度不为0。
# 绘制直方统计图
每座城市的日平均PM2.5的分布图
# 三座城市PM2.5相关性
一星期中每天的PM2.5平均值
将数据按照星期几、城市分组,求出PM2.5平均值,绘制柱形图。北京周四、周五、周六的空气质量比其他时候差。
# 统计一星期中每天的PM2.5平均值
一星期中PM2.5的平均值
一天中每小时的PM2.5的平均值
统计一天中每个小时的PM2.5的平均值,并绘制柱形图。
可以看出北京、天津下午的空气质量要好一点。
# 统计每个小时的PM2.5平均值
一天中不同时段的PM2.5的平均值
北京各个观测点PM2.5平均值
选择北京这个城市,然后逐月、逐地点求PM2.5的平均值,再逐地点求月平均,获得每个观测点的平均值,并排序,绘制柱形图。
# 选择城市为北京的数据
北京市各个观测点的PM2.5平均值
选择最好和最差的各两个观测点,显示他们每个月的平均值。
# 选择空气质量最好和最差的两个位置,绘图
北京市个观测点的月平均PM2.5