2006-2010年美国纽约市空气中一氧化碳污染情况分析

一、概述
本次分析所要处理的数据表格是2006-2010 年美国五个著名城市纽约(New York)、华盛顿(Washington)、休斯顿(Houston)、洛杉矶(Los Angeles)、费城(Philadelphia)的空气中一氧化碳(CO)污染情况,主要分析城市纽约的CO污染情况。
CO 污染物有 5 个专栏:CO 单位(CO Unites):测量 CO 的单位;CO 平均值(CO Mean):给定日内 CO 浓度的算术平均值;CO 第一最大值(CO 1st Max Value):给定日期的 CO 浓度的最大值;CO 第一最大值时间:(CO 1st Max Hour):给定日期的 CO 浓度的最大值所处的时间;CO AQI:一天内 CO 计算的空气质量指数。
原始数据在
二、流程图
程序的大致流程图如下:
基本流程
三、流程的具体分析
0.整体结构
首先,整体上设置一个循环结构。以便运行时能够按指令运行代码或退出。整体框架代码如下:

 def main():
    while True:
        menu()
        choice = input("请选择:").strip()
      if choice == '1':
          elif choice == '2':  
        elif choice == '3':
        elif choice == '4':
        else:
     		print("已退出。")
 			break
  if __name__ == '__main__':
    main()

1.设置菜单。
将流程图中需要完成的数据处理任务以字符串形式放入菜单中,定义一个menu()函数,在程序运行之初打印菜单,以供选择需要处理数据的部分和方式。
指令菜单包括:
1.读取数据前五行和后两行 (任务一)
2.数据预处理 (任务一)
3.数据CO Mean导出并可视化 (任务二、三)
4.数据CO AQI导出并可视化 (任务四、五)
5.退出
2.数据查看和预处理。(任务一)
定义main()函数,其中包含菜单的打印。引入pandas库,读取数据文件。按照任务要求进行查看前五行和后两行。

df=pd.read_csv('5.pollution_us_5city_206_2010_co.csv')
print(df.head(5))
print(df. loc[53218:53220])

数据的预处理即除去表格中缺失值,以使数据具有真实性。

df=df.dropna()               #将缺失值丢弃。
print(df)
df.to_csv('pollution_new.csv')   #剩余数据存入新文件。

3.筛选数据,画关于CO Mean折线图。(任务二、三)
读取新文件中的数据后,导出纽约市相关需要分析的数据,命名为新文件。

df2 = df.loc[df['City'] == 'New York']     #导出纽约市数据。
    df3 = df2.drop(['ID','State Code','County Code','Site Num','Address','State','County','CO Units','CO 1st Max Value','CO AQI','Unnamed: 0'],axis=1)
df3.to_csv('pollution_us_NewYork_2006_2010_CO.txt',index=0)   #导出为新文件。

筛选出时长为20对应数据。

df = df.loc[eval("df['CO 1st MaxHour']") == 20]     #筛选出最大时长为20的数据。
df.to_csv('pollution_us_NewYork_2006_2010_CO.scv')   #该段时间的数据存入文件。

引入matplotlib库,设置折线图性质,画出折线图。

import matplotlib.pylab as pl
import matplotlib.pyplot as plt       #引入matplotlib库。
x = df_num['all']
y = df_num['CO Mean']        #x、y的含义。
pl.plot(x,y,label='CO Mean',color='red')pl.xlabel('Year',fontsize=18)pl.ylabel('CO Mean',fontsize=18)plt.xticks(range(0,50,8))     #设置起始和坐标间距。 
pl.title('Change curve of CO Mean with years',fontsize=24)   #标题。        
pl.legend()           #图例。
pl.show()             #绘图。

4.筛选并排序数据,画关于CO AQI的饼状图。(任务四、五)
读取预处理后的文件,筛选出所需数据。

df = df.dropna()              
df.to_csv('pollution_new.csv') 
df =pd.read_csv('pollution_new.csv')
df2 = df.loc[df['City'] == 'New York']    df3 = df2.drop(['ID','State Code','County Code','Site Num','Address','State','County','CO Units','CO 1st Max Value','CO Mean','CO 1st Max Hour','Unnamed: 0'],axis=1)

运用内置函数sort将数据按AQI大小降序排列并输出。

df = df3.sort_values(by='CO AQI',ascending=False)

输出为新的Excel文件,读取文件。将数据按category = [0, 5, 10, 15,20,25,30]和 labels = [‘Good’, ‘Moderate’, ‘SubUnhealthy’, ‘Unhealthy’, ‘VeryUnhealthy’, ‘Hazardous’]将 CO AQI 进行离散化。

df = df['CO AQI']
category = [0,5,10,15,20,25,30]
df_AQI = pd.cut(df,category)
pd.cut(df,category,right=False)
labels = ['Good','Moderate','SubUnhealthy','Unhealthy','VeryUnhealthy','Harzardous']
df_AQI = pd.cut(df,category,right=False,labels=labels)
pd.cut(df,7)
 print("数据已按要求离散化。")

将离散化后的数据进行统计,计算每种标签的占比。

df_series =df_AQI.value_counts(normalize=True)
print(df_series)     
df_series.values.tolist()   

设置饼状图的规格和颜色等性质,将数据按比例化成饼状图。

labels =['Good','Moderate','SubUnhealthy','Unhealthy','VeryUnhealthy','Harzardous']        
colors =('red','blue','yellow','green','pink','purple')      
explode = (0,0,0,0,0,0)      
fig = plt.figure(num=1,figsize=(5,5),dpi=310,facecolor='white')     

ax = fig.gca()       

ax.pie(df_series,explode=explode,labels=labels,colors=colors,pctdistance=0.8,                   autopct='%1.1f%%',shadow=True,startangle=90,radius=4,center=(0,0),counterclock=False)  #设置饼状图规格。      

ax.set_xticks([0,3])      
ax.set_yticks([0,3])      
plt.show()

四、结果分析
1.CO Mean 数据结果分析

该图为执行程序中指令3时所画出的折线图
单看各个年份内,CO平均值的数据波动较大,可见纽约市的空气CO含量随时间推移波动大,但每年内基本持平。整体来看,CO含量的多年均值从0.55左右下降至0.4左右,但每年的峰值基本不变。可见从2006至2010年间,纽约空气中污染物CO含量总体呈下降趋势,空气质量略有转好,但间歇性出现CO含量高。
2.CO AQI 数据结果分析
该图为执行程序中指令4时所画出的饼状图

标签 占比
Good 0.723987
Moderate 0.1309320
SubUnhealthy 0.124759
Unhealthy 0.015949
VeryUnhealthy 0.004116
Harzardous 0.000257

通过查阅百度百科:发现AQI分为六级,值越大,空气质量越差,计算时按照如下方式:各种污染物的AQI值分别算出来后,取数值最大的那个即为最终报告的AQI值。
观察饼状图得CO良好程度污染(Good)的天数占比最大,高达72%,中等程度(Moderate)污染次之,约占13%,其后对应标签天数由大到小的分别是较健康(SubUnhealthy)、不健康(Unhealthy)、非常不健康(VeryUnhealthy)、危险(Harzardous)。可见CO污染程度良好和中等天数的和占到85%以上,所以纽约就CO这一空气观测指标而言,空气质量较好,质量良好的天数占比很高。

所处理原始数据表格如下
https://share.weiyun.com/Vx8XlhF6

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值