Python||五城P.M.2.5数据分析与可视化_使用华夫图分析各个城市的情况(下)

目录

沈阳市的空气质量

华夫图

柱状图

总结


五城P.M.2.5数据分析与可视化——北京市、上海市、广州市、沈阳市、成都市,使用华夫图和柱状图分析各个城市的情况

沈阳市的空气质量

华夫图

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pywaffle import Waffle
#读入文件
sy = pd.read_csv('./Shenyang.csv')
fig = plt.figure(dpi=100,figsize=(5,5))def good(pm):#优degree = []for i in pm:if 0 < i <= 35:degree.append(i)return degree
def moderate(pm):#良degree = []for i in pm:if 35 < i <= 75:degree.append(i)return degree
def lightlyP(pm):#轻度污染degree = []for i in pm:if 75 < i <= 115:degree.append(i)return degree
def moderatelyP(pm):#中度污染degree = []for i in pm:if 115 < i <= 150:degree.append(i)return degree
def heavilyP(pm):#重度污染degree = []for i in pm:if 150 < i <= 250:degree.append(i)return degree
def severelyP(pm):#严重污染degree = []for i in pm:if 250 < i:degree.append(i)return degreedef PM(sy,str3):sy_dist_pm = sy.loc[:, [str3]]sy_dist1_pm = sy_dist_pm.dropna(axis=0, subset=[str3])sy_dist1_pm = np.array(sy_dist1_pm[str3])sy_good_count = len(good(sy_dist1_pm))sy_moderate_count = len(moderate(sy_dist1_pm))sy_lightlyP_count = len(lightlyP(sy_dist1_pm))sy_moderatelyP_count = len(moderatelyP(sy_dist1_pm))sy_heavilyP_count = len(heavilyP(sy_dist1_pm))sy_severelyP_count = len(severelyP(sy_dist1_pm))a = {'优':sy_good_count,'良':sy_moderate_count,'轻度污染':sy_lightlyP_count,'中度污染':sy_moderatelyP_count,'重度污染':sy_heavilyP_count,'严重污染':sy_severelyP_count}pm = pd.DataFrame(pd.Series(a),columns=['daysum'])pm = pm.reset_index().rename(columns={'index':'level'})return pm
#沈阳
#PM_Taiyuanjie列
sy_tyj = PM(sy,'PM_Taiyuanjie')
PMday_Taiyuanjie = np.array(sy_tyj['daysum'])
#PM_Xiaoheyan列
sy_xhy = PM(sy,'PM_Xiaoheyan')
PMday_Xiaoheyan = np.array(sy_xhy['daysum'])
sy_pm_daysum = (PMday_Xiaoheyan+PMday_Taiyuanjie)/2
sum = 0
for i in sy_pm_daysum:sum += i
sy_pm_daysum1 = np.array(sy_pm_daysum)
data = {'优':int((sy_pm_daysum[0]/sum)*100), '良':int((sy_pm_daysum[1]/sum)*100), '轻度污染': int(sy_pm_daysum[2]/sum*100),'中度污染':int((sy_pm_daysum[3]/sum)*100),'重度污染':int((sy_pm_daysum[4]/sum)*100),'严重污染':int((sy_pm_daysum[5]/sum)*100)}
total = np.sum(list(data.values()))
plt.figure(FigureClass=Waffle,rows = 5,   # 列数自动调整values = data,# 设置titletitle = {'label': "沈阳市污染情况",'loc': 'center','fontdict':{'fontsize': 13,}},labels = ['{} {:.1f}%'.format(k, (v/total*100)) for k, v in data.items()],# 设置标签图例的样式legend = {'loc': 'lower left','bbox_to_anchor': (0, -0.4),'ncol': len(data),'framealpha': 0,'fontsize': 6},dpi=120
)
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.show()

柱状图

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt#读入文件
sy = pd.read_csv('./Shenyang.csv')
fig = plt.figure(dpi=100,figsize=(5,5))def good(pm):#优degree = []for i in pm:if 0 < i <= 35:degree.append(i)return degree
def moderate(pm):#良degree = []for i in pm:if 35 < i <= 75:degree.append(i)return degree
def lightlyP(pm):#轻度污染degree = []for i in pm:if 75 < i <= 115:degree.append(i)return degree
def moderatelyP(pm):#中度污染degree = []for i in pm:if 115 < i <= 150:degree.append(i)return degree
def heavilyP(pm):#重度污染degree = []for i in pm:if 150 < i <= 250:degree.append(i)return degree
def severelyP(pm):#严重污染degree = []for i in pm:if 250 < i:degree.append(i)return degreedef PM(sy,str3):sy_dist_pm = sy.loc[:, [str3]]sy_dist1_pm = sy_dist_pm.dropna(axis=0, subset=[str3])sy_dist1_pm = np.array(sy_dist1_pm[str3])sy_good_count = len(good(sy_dist1_pm))sy_moderate_count = len(moderate(sy_dist1_pm))sy_lightlyP_count = len(lightlyP(sy_dist1_pm))sy_moderatelyP_count = len(moderatelyP(sy_dist1_pm))sy_heavilyP_count = len(heavilyP(sy_dist1_pm))sy_severelyP_count = len(severelyP(sy_dist1_pm))a = {'优':sy_good_count,'良':sy_moderate_count,'轻度污染':sy_lightlyP_count,'中度污染':sy_moderatelyP_count,'重度污染':sy_heavilyP_count,'严重污染':sy_severelyP_count}pm = pd.DataFrame(pd.Series(a),columns=['daysum'])pm = pm.reset_index().rename(columns={'index':'level'})return pm
#沈阳
#PM_Taiyuanjie列
sy_tyj = PM(sy,'PM_Taiyuanjie')
PMday_Taiyuanjie = np.array(sy_tyj['daysum'])
#PM_Xiaoheyan列
sy_xhy = PM(sy,'PM_Xiaoheyan')
PMday_Xiaoheyan = np.array(sy_xhy['daysum'])
sy_pm_daysum = (PMday_Xiaoheyan+PMday_Taiyuanjie)/2
sum = 0
for i in sy_pm_daysum:sum += i
sy_pm_daysum1 = np.array(sy_pm_daysum)
#图像
bar_width = 0.1
plt.bar(0.2,sy_pm_daysum[0]/sum,width=bar_width,color='aqua',label='优')
plt.bar(0.4,sy_pm_daysum[1]/sum,width=bar_width,color='deepskyblue',label='良')
plt.bar(0.6,sy_pm_daysum[2]/sum,width=bar_width,color='cornflowerblue',label='轻度污染')
plt.bar(0.8,sy_pm_daysum[3]/sum,width=bar_width,color='skyblue',label='中度污染')
plt.bar(1,sy_pm_daysum[4]/sum,width=bar_width,color='lightsteelblue',label='重度污染')
plt.bar(1.2,sy_pm_daysum[5]/sum,width=bar_width,color='silver',label='严重污染')
x = [0.2,0.4,0.6,0.8,1,1.2]
for a,b in zip(x,sy_pm_daysum):plt.text(a, (b/sum) + 0.02,'%.1f'%(b/sum*100)+'%', ha='center', va='bottom', fontsize=10)
plt.xticks([0.2,0.4,0.6,0.8,1,1.2])
plt.xlabel(['优','良','轻度污染','中度污染','重度污染','严重污染'])
plt.yticks([0.2,0.4,0.6,0.8,1])
plt.ylabel(['20%','40%','60%','80%','100%'])
plt.ylabel(u'百分比',fontsize=12,rotation='horizontal',verticalalignment='top',horizontalalignment='left', x=2,y=1.1)
plt.xlabel(u'污染程度',fontsize=12,verticalalignment='top',horizontalalignment='left',x=0.9, y=1.2)
plt.legend()
fig.suptitle('沈阳市污染情况',fontsize=15,x=0.5,y=1)
plt.grid(alpha=0.4)
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.show()

沈阳市总体空气质量较差,空气污染程度占比超过35%——其中轻度污染占比约16%,中度污染占比约7%,重度污染占比约8%,严重污染占比约3%。

总结

总体来讲,广州市的空气质量最好,上海次之;北京市的空气质量最差,严重污染占比远远超过其他四座城市。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/450518.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络安全之漏洞扫描

漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷&#xff0c;从而可以使攻击者能够在未授权的情况下访问或破坏系统。这些缺陷、错误或不合理之处可能被有意或无意地利用&#xff0c;从而对一个组织的资产或运行造成不利影响&#xff0c;如信息系统被攻击或控制…

华为数通方向HCIP-DataCom H12-821题库(单选题:401-420)

第401题 R1的配置如图所示,此时在R1查看FIB表时,关于目的网段192.168.1.0/24的下跳是以下哪一项? A、10.0.23.3 B、10.0.12.2 C、10.0.23.2 D、10.0.12.1 【答案】A 【答案解析】 该题目考查的是路由的递归查询和 RIB 以及 FIB 的关系。在 RIB 中,静态路由写的是什么,下…

2阶段提交_3阶段提交(phase-commit)

1. 2PC&#xff08;两阶段提交) 如上所示是2阶段提交的一个过程&#xff0c;可为什么要进行两阶段提交呢&#xff1f;这里主要来说是将操作事务能力和提交、回滚事务能力分开来做成2阶段&#xff0c;如果不分开会造成什么后果呢&#xff1a; 如果单纯 A 向 B 发送一个请求就以…

AS-V1000 视频监控平台产品介绍:客户端功能介绍(一)

目 录 一、引言 1.1 AS-V1000视频监控平台介绍 1.2平台服务器配置说明 二、软件概述 2.1 客户端软件用途 2.2 客户端功能 三、客户端功能说明 3.1 登陆和主界面 3.1.1登陆界面 3.1.2登陆操作 3.1.3主界面 3.1.4资源树 3.2 视频预览 3.2.1视频预览界面 3.2.…

YGG 为 Axie Infinity: Origins 发布超级任务游戏内训练器,深化对 Ronin 的支持

自 2023 年以来&#xff0c;Ronin 已成为增长最快的游戏区块链。由于 Axie Infinity 和 Pixels 等游戏的持续成功&#xff0c;日活跃用户数量至少增长了 10 倍。在过去的一年里&#xff0c;有超过 120 万个新地址加入&#xff0c;并且&#xff0c;这个数字还在持续增长。 ​Ron…

hbuiderx+uniapp基于Android宠物饲养交流养宠系统 微信小程序3_reqva

3.2 APP需求分析 作为一款宠物饲养管理APP&#xff0c;面向的是大多数学者&#xff0c;软件的界面设计简洁清晰&#xff0c;用户可轻松掌握使用技巧。在调查之后&#xff0c;获得用户以下需求&#xff1a; &#xff08;1&#xff09;用户注册登录后&#xff0c;可进入系统解锁更…

基于SpringBoot+Vue的校园资料分享平台(V2.0)

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

vivado 运行编译

运行合成 运行定义并配置在合成过程中使用的设计方面。一个合成run定义了以下内容&#xff1a; •AMD设备在合成过程中成为目标 •要应用的约束集 •启动单个或多个合成运行的选项 •控制合成引擎结果的选项 要定义RTL源文件和约束的运行&#xff0c;请执行以下操作&…

MySQL 安装配置 windows

一、下载 去官网MySQL :: MySQL Downloads 下载社区版 然后根据自己的系统选择 直接下载。 二、安装 点击安装程序 这边看样子缺少东西。 去这边下载 Latest supported Visual C Redistributable downloads | Microsoft Learn 然后再一次安装mysql 三、配置 安装完成后&a…

Kotlin-集成SpringBoot+MyBatis+代码生成器

目录 一、相关版本 二、Maven因引入相关依赖 三、SpringBoot配置文件 四、代码生成工具 五、实现用户服务模块案例 1、Controller 2、Service 3、Entity 4、Mapper 5、接口测试 一、相关版本 工具版本Idea2022.3.2Springboot2.7.12MyBatis3.5.3.1MySQL8.0.28JDK1.8 …

C# webbrowser控件设置代理IP访问网站

目录 前言 一、WebBrowser控件简介 二、代理IP简介 三、设置WebBrowser控件的代理IP 1. 引入相关命名空间 2. 定义修改代理IP的函数 3. 修改代理IP 4. 取消代理IP设置 四、使用WebBrowser控件访问代理IP 五、完整示例代码 总结 前言 C# WebBrowser控件是一个非常常…

springwebflux高性能服务

场景&#xff1a; 分别使用springwebmvc 使用tomcat &#xff08;tomcat 9&#xff09;和springwebflux 做一个简单的接口 &#xff0c;该接口返回一个随机数 压测环境&#xff1a; 4C 8G ECS 使用tomcat 压测结果 Max 抖动的厉害 保持压测的参数不变 使用webflux 压测结果 …