分析煙花爆竹對空氣的影響力

   上個月我們使用request和pandas爬取了全國空氣質量指數數據並保存到本地。數據拿到後我們可以進一步來做分析。這是我本地保存的一份2019年除夕前後的全國空氣質量的數據,下面我們就以這個數據來進行分析我們過年放的煙花爆竹是怎樣影響空氣質量的。

    如圖所示,是該數據的格式及部分內容顯示。表頭分別爲city,AQI、PM2.5、PM10、SO2、NO2、CO、O3、main_pollution、time代表各種指標,如"CO"代表空氣中一氧化塔含量,main_pollution代表空氣主要污染物。知道了表頭每一列的內容後,接下來我們就使用pandas、matplotlib和pycharts進行分析、畫圖。

     首先引入我們所需要的庫,並進行讀取數據,代碼及效果如圖所示。

   

import pandas as pd  
import numpy as np
import matplotlib.pyplot as plt

data = pd.read_csv('./AQI_Data.csv')  #讀取數據
print(data.head(5))  #讀取前5行數據

  

     由於數據中存在一些重複值和空值,我們在進行數據分析前需要進一步對數據進行清洗操作,代碼及效果如圖所示。

data['time'].unique()  #對時間進行去重操作
data['time'] = pd.to_datetime(data['time'])
data = data[data['time']<=pd.to_datetime('2019-02-11 23:59:59')]  # 選取2月4日——2月12日的數據
data.set_index(data["time"], inplace=True)  #把time列數據設置爲索引,inplace爲True代表新的Dateframe對象
data = data.replace('—', np.nan) #使用“-”代替nan值
for col in ['AQI', 'PM2.5', 'PM10', 'SO2', 'NO2', 'CO', 'O3']:
    data[col] = data[col].astype(float)  #更改每一列的數值類型爲float型
data.head()  #查看前5行數據
data.to_csv('data_clean.csv', index=False) #對清晰的數據進行保存

   

   數據清洗完後,我們便可以進行數據分析。首先我們分析煙花爆竹對空氣是否真的有影響,代碼如下:

å§æºä¸ä¸

from pyecharts import Line

line = Line("全國春節期間空氣質量指數總體趨勢", "2019年除夕到初二", width=800)
line.add("", AQI_total_mean.index, np.round(AQI_total_mean.values,0), is_smooth=True,
         legend_text_size=18,xaxis_label_textsize=14,yaxis_label_textsize=18,
         xaxis_rotate=20, yaxis_min=8, mark_point=["max"])
line.render()

結果:


緊接着再看下煙花爆竹對空氣質量的影響具體體現在哪些指標上:

'''煙花爆竹對空氣質量的影響具體體現在哪些指標上'''
from pyecharts import Line #繪製折線圖
data_total_idx = data[data['time']<=pd.to_datetime('2019-02-06 23:59:59')].groupby(['time']).mean() #選擇時間'2019-02-06 23:59:59'的數據,並以time列進行分組求平均值
line = Line("全國春節期間空氣質量各指標(2019年除夕到初二)", "單位:μg/m3(CO爲mg/m3)", width=800)
for idx in data_total_idx.columns[1:]:
    line.add(idx, data_total_idx.index, np.round(data_total_idx[idx].values,0), is_smooth=True,
             legend_text_size=18,xaxis_label_textsize=14,yaxis_label_textsize=18,
             xaxis_rotate=20, yaxis_min=8, legend_top=30)
line.render()

效果如圖,圖中可以看到煙花爆竹主要影響物是PM10,PM2.5

分析“全國除夕和春節期間空氣質量最高最低比Top10城市”,結果如下:

'''煙花爆竹對空氣質量的污染程度有多大'''
data2 = data[data['time']<=pd.to_datetime('2019-02-05 23:59:59')]
data_AQI_min = data2.groupby('city')['AQI'].min()
#print(data_AQI_min)
data_AQI_max = data2.groupby('city')['AQI'].max()
#print(data_AQI_max)
data_AQI_times = np.round(data_AQI_max/data_AQI_min, 1)
#print(data_AQI_times)
data_AQI_times_top10 = data_AQI_times.nlargest(10)
#print(data_AQI_times_top10)
#
from pyecharts import Bar  #繪製條形圖
bar = Bar("全國除夕和春節期間空氣質量最高最低比Top10城市", "時間:2019年除夕至初一", width=600)
bar.add("", data_AQI_times_top10.index, data_AQI_times_top10.values, is_stack=True,
        is_label_show=True,bar_category_gap='40%', label_color = ['#130f40'], label_text_size=18,
       legend_text_size=18,xaxis_label_textsize=14,yaxis_label_textsize=18, xaxis_rotate=30)
print(bar.render())

哪些區域污染最嚴重:
'''哪些區域污染最嚴重'''

start_time = pd.to_datetime('2019-02-04 20:00:00')
#print(start_time)
end_time = pd.to_datetime('2019-02-05 04:00:00')
#print(end_time)
AQI_by_city = data[(data['time']>=start_time)&(data['time']<=end_time)].groupby('city')['AQI'].mean()
#print(AQI_by_city)
print(AQI_by_city.nlargest(10)) #選取污染嚴重的前10名

從以上數據可知,煙花爆竹還是會影響環境的,但是過年不放炮是不是少了些樂趣呢,啊哈哈!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章