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.mzph.cn/news/665725.shtml

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

相关文章

Servlet(java web基础篇)

Servlet&#xff08;java web基础篇&#xff09; Servlet是Java提供的一门动态web资源开发技术,不同的用户访问看到的效果不一样。Servlet是lavaEE规范之一&#xff0c;其实就是一个接口&#xff0c;将来我们需要定义Servlet类实现Servlet:接口&#xff0c;并由web服务器运行S…

TorchVision的使用方法、更改默认路径

TorchVision的使用 1. 转换和增强图像 torchvision.transforms.v2 参数作用Resize将输入调整为给定大小RandomShortestSize随机调整输入的大小RandomResize随机调整输入的大小RandomCrop在随机位置裁剪输入RandomResizedCrop裁剪输入的随机部分并将其调整为给定大小RandomIoU…

Java生成微信小程序二维码的方式有哪些?

大家好我是咕噜美乐蒂&#xff0c;很高兴又见面啦&#xff01;今天我们来谈一下如何使用Java生成微信小程序二维码&#xff0c;有哪些方式方法呢&#xff1f; 生成微信小程序二维码是开发微信小程序时的常见需求之一。在Java中&#xff0c;我们可以使用多种方式来生成微信小程…

《最新出炉》系列初窥篇-Python+Playwright自动化测试-11-playwright操作iframe-上篇

1.简介 原估计宏哥这里就不对iframe这个知识点做介绍和讲解了&#xff0c;因为前边的窗口切换就为这种网页处理提供了思路&#xff0c;另一个原因就是虽然iframe很强大&#xff0c;但是现在很少有网站用它了。但是还是有小伙伴或者童鞋们私下问这个问题&#xff0c;那么宏哥就…

【后端开发】正向代理与反向代理

正向代理 正向代理&#xff08;forward proxy&#xff09;&#xff1a;是一个位于客户端和目标服务器之间的服务器(代理服务器)&#xff0c;为了从目标服务器取得内容&#xff0c;客户端向代理服务器发送一个请求并指定目标&#xff0c;然后代理服务器向目标服务器转交请求并将…

【日志记录】——主MCU 通过私有协议更新从MCU程序固件

一&#xff1a;需求分析 在一些系统较为复杂的嵌入式设备中&#xff0c;往往不止一片MCU或者处理模块&#xff0c;通常为一片主MCU负责应用逻辑处理和对外网络通信&#xff0c;其他从MCU负责实时采集处理高频数据&#xff0c;在设备运营过程中&#xff0c;往往伴随新需求或者bu…

动态内容推荐系统PHP代码

这个系统旨在根据用户行为和偏好&#xff0c;动态地向用户推荐内容。这样的系统可以应用于新闻网站、社交媒体平台、电子商务网站等多种场景&#xff0c;以提升用户体验和参与度。 ### 功能概述 系统将基于用户的浏览历史、点击行为和时间花费等数据来评估用户的兴趣点&#…

BUUCTF-Real-[ThinkPHP]2-Rce1

任意代码执行漏洞 ThinkPHP 2.x版本中&#xff0c;使用preg_replace的/e模式匹配路由&#xff1a; $res preg_replace((\w).$depr.([^.$depr.\/])e, $var[\\\1\]"\\2";, implode($depr,$paths)); 导致用户的输入参数被插入双引号中执行&#xff0c;造成任意代码执行…

Open CASCADE学习|拓扑变换

目录 平移变换 旋转变换 组合变换 通用变换 平移变换 TopoDS_Shape out;gp_Trsf theTransformation;gp_Vec theVectorOfTranslation(0., 0.125 / 2, 0.);theTransformation.SetTranslation(theVectorOfTranslation);BRepBuilderAPI_Transform myBRepTransformation(out, th…

go 中的范型

泛型是随着Go 1.18版本发布的。它基本上意味着参数化的类型&#xff0c;也就是说&#xff0c;它允许程序员在写代码时&#xff0c;类型可以稍后指定&#xff0c;因为类型在当时并不相关。换句话说&#xff0c;在编写一些代码时&#xff0c;你不提供数值的类型。这些类型的值会在…

Leetcode刷题笔记题解(C++):36. 有效的数独

思路一&#xff1a;暴力破解&#xff0c;两个二维数组记录行、列对应的数字出现的次数&#xff0c;比如rows[i][index]表示的数字index在i行出现的次数&#xff0c;三维数组记录每个块中对应数字出现的次数&#xff0c;比如boxes[i/3][j/3][index]表示的数字index在[i/3][j/3]个…

校园墙表白墙系统uniapp微信小程序

配置文件 (自动编号、配置参数名称、配置参数值)&#xff1b; 前端开发:vue 语言&#xff1a;javapythonnodejsphp均支持 运行软件:idea/eclipse/vscode/pycharm/wamp均支持 框架支持:Ssm/django/flask/thinkphp/springboot/springcloud均支持 数据库 mysql 数据库工具&#x…

定时器 Timer(超详细模拟实现)

目录 一、定时器 1.定时器概述 2.Java标准库提供的定时器类 3.定时器代码样例 二、实现 1.实现思路 2.代码实现 2.1纯享版 2.2注释版 3.代码解析(超详细) 3.1描述类MyTimerTask ①构造&#xff1a;MyTimerTask&#xff08;Runnable runnable, long delay&#xff…

如何使用本地私有NuGet服务器

写在前面 上一篇介绍了如何在本地搭建一个NuGet服务器&#xff0c; 本文将介绍如何使用本地私有NuGet服务器。 操作步骤 1.新建一个.Net类库项目 2.打包类库 操作后会生成一个.nupkg文件&#xff0c;当然也可以用dotnet pack命令来执行打包。 3.推送至本地NuGet服务器 打开命…

vue3 封装WebSocket(直接复制)

创建文件WebSocket.js 只有基本的功能 import { ref } from vue; import store from "/store";export default function useWebSocket(url) {const messagesData ref([]);// 创建WebSocket连接和相关方法const socket new WebSocket(url);socket.onopen () >…

《计算机网络简易速速上手小册》第6章:网络性能优化(2024 最新版)

文章目录 6.1 带宽管理与 QoS - 让你的网络不再拥堵6.1.1 基础知识6.1.2 重点案例&#xff1a;提高远程办公的视频会议质量实现步骤环境准备Python 脚本示例注意事项 6.1.3 拓展案例1&#xff1a;智能家居系统的网络优化实现思路Python 脚本示例 6.1.4 拓展案例2&#xff1a;提…

计算机网络_1.5 计算机网络的性能指标

1.5 计算机网络的性能指标 一、总览二、常用的八个计算机网络性能指标1、速率&#xff08;1&#xff09;数据量&#xff08;2&#xff09;速率&#xff08;3&#xff09;数据量与速率中K、M、G、T的数值辨析&#xff08;4&#xff09;【练习1】计算发送数据块的所需时间 2、带宽…

Unity引擎学习笔记之【角色动画器操作】

角色动画Character Animation 一、使用方法 1. 添加一个静态的角色模型&#xff0c;并确保这个角色模型绑定了Avatar 2. 创建一个动画器控制器 Animator Controller 3. 将动画器控制器拖动添加到Player的Animator控制器上 4. 双击即可打开控制器 5. 将带有动画的预设&#xf…

docker下nacos(1.2.0)的持久化

一、创建数据库 运行以下代码自动创建数据库和表 CREATE DATABASE IF NOT EXISTS nacos_config /*!40100 DEFAULT CHARACTER SET utf8 */; USE nacos_config;SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ---------------------------- -- Table structure for config_…

[Python] 如何在控制台进行输入输出

可莉今天带你来学习Python基础中在控制台的输入输出~ 接下来跟着可莉来学习吧~ 可莉将这篇博客收录在了&#xff1a;《Python》 可莉推荐的博主主页&#xff1a;Keven ’ s blog 目录 通过控制台输出 格式化输出 通过控制台输入 总结 通过控制台输出 我们通过print函数可以…