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

news2024/12/22 1:20:32

目录

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

1.北京市的空气质量

2.广州市的空气质量

【上海市和成都市空气质量情况详见下期】

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

1.北京市的空气质量

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pywaffle import Waffle
#读入文件
bj = pd.read_csv('./Beijing.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 degree
def PM(bj,str3):
    bj_dist_pm = bj.loc[:, [str3]]
    bj_dist1_pm = bj_dist_pm.dropna(axis=0, subset=[str3])
    bj_dist1_pm = np.array(bj_dist1_pm[str3])
    bj_good_count = len(good(bj_dist1_pm))
    bj_moderate_count = len(moderate(bj_dist1_pm))
    bj_lightlyP_count = len(lightlyP(bj_dist1_pm))
    bj_moderatelyP_count = len(moderatelyP(bj_dist1_pm))
    bj_heavilyP_count = len(heavilyP(bj_dist1_pm))
    bj_severelyP_count = len(severelyP(bj_dist1_pm))
    a = {'优':bj_good_count,'良':bj_moderate_count,'轻度污染':bj_lightlyP_count,'中度污染':bj_moderatelyP_count,'重度污染':bj_heavilyP_count,'严重污染':bj_severelyP_count}
    pm = pd.DataFrame(pd.Series(a),columns=['daysum'])
    pm = pm.reset_index().rename(columns={'index':'level'})
    return pm
#北京
#PM_Dongsi列
bj_ds = PM(bj,'PM_Dongsi')
PMday_Dongsi = np.array(bj_ds['daysum'])
#PM_Dongsihuan列
bj_dsh = PM(bj,'PM_Dongsihuan')
PMday_Dongsihuan = np.array(bj_dsh['daysum'])
#PM_Nongzhanguan列
bj_nzg = PM(bj,'PM_Nongzhanguan')
PMday_Nongzhanguan = np.array(bj_nzg['daysum'])
bj_pm_daysum = (PMday_Dongsi+PMday_Dongsihuan+PMday_Nongzhanguan)/3
sum = 0
for i in bj_pm_daysum:
    sum += i
bj_pm_daysum1 = np.array(bj_pm_daysum)

data = {'优':int((bj_pm_daysum[0]/sum)*100), '良':int((bj_pm_daysum[1]/sum)*100), '轻度污染': int(bj_pm_daysum[2]/sum*100),'中度污染':int((bj_pm_daysum[3]/sum)*100),'重度污染':int((bj_pm_daysum[4]/sum)*100),'严重污染':int((bj_pm_daysum[5]/sum)*100)}
total = np.sum(list(data.values()))
plt.figure(
    FigureClass=Waffle,
    rows = 5,   # 列数自动调整
    values = data,
    # 设置title
    title = {
        '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()

北京市总体空气质量差,有约16%的轻度污染,约12%的重度污染和6%的严重污染,中度污染的比例也相对较大,占比约9%。

2.广州市的空气质量

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pywaffle import Waffle
import math
#读入文件
gz = pd.read_csv('./Guangzhou.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 degree

def PM(gz,str3):
    gz_dist_pm = gz.loc[:, [str3]]
    gz_dist1_pm = gz_dist_pm.dropna(axis=0, subset=[str3])
    gz_dist1_pm = np.array(gz_dist1_pm[str3])
    gz_good_count = len(good(gz_dist1_pm))
    gz_moderate_count = len(moderate(gz_dist1_pm))
    gz_lightlyP_count = len(lightlyP(gz_dist1_pm))
    gz_moderatelyP_count = len(moderatelyP(gz_dist1_pm))
    gz_heavilyP_count = len(heavilyP(gz_dist1_pm))
    gz_severelyP_count = len(severelyP(gz_dist1_pm))
    a = {'优':gz_good_count,'良':gz_moderate_count,'轻度污染':gz_lightlyP_count,'中度污染':gz_moderatelyP_count,'重度污染':gz_heavilyP_count,'严重污染':gz_severelyP_count}
    pm = pd.DataFrame(pd.Series(a),columns=['daysum'])
    pm = pm.reset_index().rename(columns={'index':'level'})
    return pm
#广州
#PM_City Station列
gz_cs = PM(gz,'PM_City Station')
PMday_CityStation = np.array(gz_cs['daysum'])
#PM_5th Middle School列
gz_ms = PM(gz,'PM_5th Middle School')
PMday_5thMiddleSchool = np.array(gz_ms['daysum'])
gz_pm_daysum = (PMday_CityStation+PMday_5thMiddleSchool)/2
sum = 0
for i in gz_pm_daysum:
    sum += i
gz_pm_daysum1 = np.array(gz_pm_daysum)

data = {'优':int((gz_pm_daysum[0]/sum)*100), '良':int((gz_pm_daysum[1]/sum)*100), '轻度污染': int(gz_pm_daysum[2]/sum*100),'中度污染':int((gz_pm_daysum[3]/sum)*100),'重度污染':int((gz_pm_daysum[4]/sum)*100),'严重污染':int((gz_pm_daysum[5]/sum)*100)}
total = np.sum(list(data.values()))
plt.figure(
    FigureClass=Waffle,
    rows = 5,   # 列数自动调整
    values = data,
    # 设置title
    title = {
        '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()

广州市总体空气质量优秀,优和良的空气质量占比超过80%,严重污染的天气情况少之甚少,污染天气——轻度污染、中度污染、重度污染和严重污染占比总和不超过20%。

【上海市和成都市空气质量情况详见下期】

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

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

相关文章

108.乐理基础-五线谱-五线谱的拍号、音符与写法

内容参考于&#xff1a;三分钟音乐社 上一个内容&#xff1a;十五度记号-CSDN博客 上一个内容联系的答案&#xff1a; 调号、拍号、速度的性质与内涵跟简谱里一样&#xff0c;所以这里只会写它们在五线谱里造型上有什么改变&#xff0c;该怎样去识别。 拍号&#xff1a;五线…

深度学习入门笔记(七)卷积神经网络CNN

我们先来总结一下人类识别物体的方法: 定位。这一步对于人眼来说是一个很自然的过程,因为当你去识别图标的时候,你就已经把你的目光放在了图标上。虽然这个行为不是很难,但是很重要。看线条。有没有文字,形状是方的圆的,还是长的短的等等。看细节。纹理、颜色、方向等。卷…

聚观早报 | 360 AI搜索App上线;岚图汽车与京东达成合作

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 1月30日消息 360 AI搜索App上线 岚图汽车与京东达成合作 三星电子在硅谷新设实验室 小米平板7系列参数曝光 Spa…

【文本到上下文 #8】NLP中的变形金刚:解码游戏规则改变者

一、说明 欢迎来到我们对不断发展的自然语言处理 &#xff08;NLP&#xff09; 领域的探索的第 8 章。在本期中&#xff0c;我们将重点介绍一项重塑 NLP 格局的突破性创新&#xff1a;Transformers。在我们之前对 seq2seq 模型、编码器-解码器框架和注意力机制的讨论之后&#…

OpenCV+ moviepy + tkinter 视频车道线智能识别项目源码

项目完整源代码&#xff0c;使用 OpenCV 的Hough 直线检测算法&#xff0c;提取出道路车道线并绘制出来。通过tkinter 提供GUI界面展示效果。 1、导入相关模块 import matplotlib.pyplot as plt import numpy as np import cv2 import os import matplotlib.image as mpimg …

第三篇:跨平台QT开发-元对象系统

元对象系统 元对象系统是一个基于 标准 C的扩展 &#xff0c;为 Qt 提供了信号与槽机制、实时类型信息,动态属性系统 元对象系统的三个基本条件&#xff1a;类必须继承自 QObject、类声明 Q_OBJECT 宏&#xff08;默认私有 有&#xff09;、元对象编译器 moc。 class ExamDia…

Golang `crypto/hmac` 实战指南:代码示例与最佳实践

Golang crypto/hmac 实战指南&#xff1a;代码示例与最佳实践 引言HMAC 的基础知识1. HMAC 的工作原理2. HMAC 的应用场景 Golang crypto/hmac 库概览1. 导入和基本用法2. HMAC 的生成和验证3. crypto/hmac 的特性 实战代码示例示例 1: 基本的 HMAC 生成示例 2: 验证消息完整性…

[.NET] 查询当前已安装所有 Win32 与 UWP 应用

为了获取当前设备用户已安装的所有应用程序, 一般来讲有两种方案. 一种是通过查询 “shell:AppsFolder” 目录下所有项, 一种是从开始菜单中获取所有快捷方式, 然后加上查询所有已安装的 UWP 应用, 最后得到总列表. 如需代码参考, 请看 github.com/SlimeNull/WindowsAppsQuery …

拥抱个人成长与社会进步:自我认知与开放心态的相互影响

拥抱个人成长与社会进步&#xff1a;自我认知与开放心态的相互影响 Embracing Personal Growth and Societal Progress: The Interplay of Self-Awareness and Open-mindedness 一、引言 I. Introduction 在当今急速发展的时代&#xff0c;个人成长与社会进步交织在一起&…

必收藏面试题:什么是SQL注入?以及Mybatis中#号和$号之间的区别?

本文大纲&#xff1a; 先分析什么是SQL注入漏洞&#xff1f;再分析#{}和${}之间的区别再基于MybatisPlus做验证再介绍#{}和${}的使用场景 什么是SQL注入&#xff1f; 先看两段代码&#xff0c;假如id的值为字符串"100"&#xff0c;大家可以顺便想想每段代码最后拼…

玩美移动为花西子海外官网打造AR虚拟试妆决方案

全球领先的增强现实&#xff08;AR&#xff09;及人工智能&#xff08;AI&#xff09;美妆科技领导者及玩美系列APP开发商——玩美移动&#xff08;纽交所代码&#xff1a;PERF&#xff09;于近日宣布携手知名美妆品牌花西子&#xff0c;在其线海外官方网页提供多项彩妆虚拟试妆…

链表——C语言——day17

链表 链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。在用数组存放数据时&#xff0c;必须事先定义固定的长度&#xff08;即元素个数&#xff09;。链表则没有这种缺点&#xff0c;它根据需要开辟内存单元。 链表有一个“头指针“变量&#xff0c;图中…

电脑怎么录屏?打造专业级视频内容!

随着科技的进步&#xff0c;电脑已经深入到我们的日常生活和工作中。而在这个数字时代&#xff0c;录制屏幕内容变得日益重要。无论是制作教程、分享游戏技巧&#xff0c;还是记录重要的演示&#xff0c;录屏都是一个不可或缺的功能。可是电脑怎么录屏呢&#xff1f;本文将深入…

ESU毅速丨3D打印随形水路在模具制造中应用越来越多

在模具制造领域&#xff0c;冷却水路的设计和制造至关重要&#xff0c;它直接影响到产品的质量和生产效率。3D打印随形水路在设计和制造上相比传统模具水路有哪些优势&#xff0c;为什么越来越受到企业追捧&#xff1f; 传统模具水路通常是直线或规则形状的通道&#xff0c;设计…

高宇辰:打造“π”型人才 | 提升之路系列(七)

导读 为了发挥清华大学多学科优势&#xff0c;搭建跨学科交叉融合平台&#xff0c;创新跨学科交叉培养模式&#xff0c;培养具有大数据思维和应用创新的“π”型人才&#xff0c;由清华大学研究生院、清华大学大数据研究中心及相关院系共同设计组织的“清华大学大数据能力提升项…

ADAS感知摄像头的分辨率与帧率选择分析

说明&#xff1a;可以作为对智能驾驶爱好者对摄像头参数理解或者从业工程人员对设计硬件选型参考 前言 在当前智能驾驶中&#xff0c;基于摄像头的 ADAS 因其应用、更高的可靠性和对新要求的适应性而被广泛采用。 ADAS 摄像头通常部署在汽车的前部、侧面和后部&#xff0c;提…

计算视图里的projection和aggregation节点区别

Projection 和 Aggregation到底有什么区别&#xff1f; 看名字就能看出来的。 那么在什么场景下用呢&#xff1f; 1. Projection就是投影&#xff0c;也就是说你本来的源里有什么&#xff0c;就直接给你拿出来。 除了这个&#xff0c;它使用的场景就是&#xff1a; 只映射需…

基于JAVA+SpringBoot+Vue的前后端分离的仓库管理系统(进销存)系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 随着全球经济的不断发…

linux 下mongodb7版本怎么连?

概述&#xff1a;linux下的mongodb7版本默认是没有安装客户端的&#xff0c;需要下载shell客户端才能连&#xff0c;下载之后解压&#xff0c;不需要编译&#xff0c;进入bin目录就能自己运行&#xff0c;。 安装&#xff1a; linux 下mongodb7版本没有安装客户端需要当地下载…

vscode实时预览markdown效果

安装插件 Markdown Preview Enhanced 上面是搜索框 启动预览 右键->Open Preview On the Side 效果如下&#xff1a; 目录功能 目录功能还是使用gitee吧 push后使用gitee&#xff0c;gitee上markdown支持侧边生成目录