利用 Python分析北京雾霾天,发现这么秘密

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/lovenankai/article/details/102735450

640?wx_fmt=png

什么是PM2.5


pm为英文particulate matter的缩写,翻译成中文叫做颗粒物。pm2.5是指大气中直径小于或等于2.5微米的颗粒物,有时也被称作入肺颗粒物。我们日常常见的雾霾天气大 多数情况下就是由pm2.5造成的。虽然pm2.5在大气中的含量极少,但是,由于质量小,携带病毒及有害物质时间长、传输渠道多样、移动距离较远、对人 体和大家环境质量造成的危害较大,pm2.5的确是名符其实的隐型杀手!  

640?wx_fmt=jpeg

但是随着北京的大力治理,比如二氧化硫浓度降幅64.3%、淘汰167万辆老旧机动车、城六区整治千条背街小巷、原生垃圾实现无害化处理等等措施,北京PM2.5下降近四分之一, 我们终将赢得蓝天(来源北京娱乐信报)。

百度指数也给出了我们同样结论。数据从2013年1月到2018年6月,PM2.5指数明显在降低,也可以说是逐年减少。

640?wx_fmt=jpeg

了解了这些以后,我们切换到今天的主题,Python分析北京地区PM2.5。

环境


环境:MAC + Python3.6

数据集获取


    我们首先使用pandas包中read_csv文件读取数据集。该数据集包含2013年以来,美国大使馆和我国给出的每一个月的 PM 值。然后使用pandas包中基本数据方法进行数据预览,主要包括,数据集整体预览、前10行查看、数据文件的基本信息等。具体代码如下:

def collect_data():
    '''
        STEP1: 收集数据
    '''
    data_pd = pd.read_csv(os.path.join('./data/pm/Beijing_PM.csv'))

    return data_pd 


def inspect_data(data_pd):
    '''
        STEP2: 描述数据
    '''
    print('数据文件中一共有{}行,{}列'.format(data_pd.shape[0],data_pd.shape[1]))

    print('数据预览')
    print(data_pd)

    print('数据的前5行')
    print(data_pd.head)

    print('数据文件的的基本信息')
    print(data_pd.info())

    print('数据内容的统计信息')
    print(data_pd.describe())

运行结果截图如下

640?wx_fmt=jpeg

数据集共26280行,7列,占用1.4M内存,数据类型为int or float。

640?wx_fmt=png

每年平均值分析


根据上面的数据集,首先分析的是每年的平均值,查看逐年变化情况。本次分析使用的技术点主要是分组,也就是根据年份(year)进行分组,然后使用柱形图进行可视化结果。从下面的两个图(PM chian mean vs PM us mean)可以看出,无论美国大使馆还是我国给出的PM数据,每年的PM值都在减少,说明我国治理卓有成效,终将获得蓝天。

640?wx_fmt=png

640?wx_fmt=png

为了更方便查看我国和美国使馆检测的每年平均PM2.5值的对比,我们可以使用python中的堆叠柱状图可视化,如下图所示。两个机构给出的数据没有很大的差异。具体的技术点主要是使用pandas包中的plot.bar函数,但是可视化之前需要先分组处理数据。具体代码,可以回复PM2.5获得。

#堆叠柱状图可视化
    filter_mean.plot.bar(stacked=True)
    plt.title('Mean PM 2.5')
    plt.tight_layout()
    plt.savefig(os.path.join(output_path,'filter_mean.png'))
    plt.show()

可视化结果如下

640?wx_fmt=png

640

四季分析


四季分析主要是从四个季度进行对比分析。从下图可以看出,PM最高的季度是第四季,也就是冬天的时候雾霾最为严重。主要使用的技术点是使用箱形图分析。箱形图(Box-plot)又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图。

 #绘制盒形图函数boxplot
    sns.boxplot(x='season',y=var,data = data_df)
    plt.savefig(os.path.join(output_path,'year_'+var+'.png'))
    plt.show

运行效果如下:

640?wx_fmt=png

640

每月以及每小时分析


从每月的分析看出,每年的11月、12月、1月最为严重。在每月里面,早晚高峰的时间更为严重。本次可视化的技术点是使用散点图。

def analyze_dual_variables(data_df,var1,var2):
    '''
        查看双变量的关系,散点图
    '''

    sns.jointplot(x=var1,y=var2,data=data_df)
    plt.savefig(os.path.join(output_path,var1+'_'+var2+'_sandian.png'))
    plt.show()

运行效果图

640?wx_fmt=jpeg

也可以使用透视表可视化每一个月的PM, 具体如下

640?wx_fmt=png

按小时分析

640?wx_fmt=jpeg

640

相关性分析


    相关性分析主要用到的技术点是热点图,以及相关性计算。利用热力图可以看数据表里多个特征两两的相似度,具体代码如下:

def analyze_variable_relationship(data_df):
    '''
        可视化变量关系
        热图
    '''
    #绘制出所有变量直接的关系,形成一个矩阵
    #corr计算相关系数
    corr_df = data_df.corr()
    #热图
    sns.heatmap(corr_df,annot=True)
    plt.savefig(os.path.join(output_path,'heatmap_df.png'))
    plt.show()

效果如下:

640?wx_fmt=jpeg

从上面各个角度分析,我们可以看出北京地区的PM2.5真的在减少,每年都有减少。但是大气污染排放源体系构成复杂、时空变化较快,对有关研究解析工作提出了巨大挑战。有关政府部门应当加大与科研机构合作的力度和广度,进一步全面准确掌控PM2.5的污染源数据,让清洁空气行动获得更为有力的技术支撑,让大气污染防治工作可以聚焦重点污染领域精准发力、持续用力,最终让北京收获更多蓝天(来源人民网)。

零基础学Python,看这里

课程形式:永久可看,已更新完成,共计80多课时间

学习形式:视频教学、永久有效,移动端、PC端都可以学,随时随地打开充电

市场定价:109,目前98

还送福利:  赠送价值 69 元的 Python 实战圈,手把手教学

购买方式:长按扫码购买,最好电脑购买,课程购买链接放在下面的  阅读原文

请相信我们,一个有情怀的平台,小码哥出品,必为精品!

每一个课对我们来讲都是自己的孩子

每一门课对我们来讲都是自己的精华

每一门课对我们来讲都是自己的责任

我们不是韭菜收割机,我们是播种情怀,效果证明一切

640?wx_fmt=jpeg

640?wx_fmt=png

猜你喜欢

转载自blog.csdn.net/lovenankai/article/details/102735450
今日推荐