python数据可视化(5)——绘制饼图
课程学习来源:b站up:【蚂蚁学python】
【课程链接:【【数据可视化】Python数据图表可视化入门到实战】】
【课程资料链接:【链接】】
Python绘制饼图分析北京天气
饼图,是一个划分为几个扇形的圆形统计图表,能够直接以图形的方式直接显示各个组成部分所占比例
目的:查看2019年北京天气数据,使用饼图查看天气、风向、空气质量的数据对比
1.编写函数,创建一个pyecharts饼图对象
from pyecharts import options as opts
from pyecharts.charts import Pie
def create_pie(datas, title) -> Pie:"""创建饼图对象@param datas:数据,形式为[('晴',115), ('多云',78), ('晴转多云',39)]@param title:图表的标题"""pie = Pie()pie.add("", datas)pie.set_global_opts( # 设置全局参数title_opts = opts.TitleOpts(title = title), # 图标标题legend_opts = opts.LegendOpts(pos_right = "right")# 图标标签放在右侧)pie.set_series_opts(label_opts = opts.LabelOpts(formatter = "{b}: {c}: {d}%"))# b:名称# c:数量# d:百分比return pie
2.读取北京2019天气数据
import pandas as pddf = pd.read_csv("../DATA_POOL/PY_DATA/ant-learn-visualization-master/datas/beijing_tianqi/beijing_tianqi_2019.csv")df.head(5)
| ymd | bWendu | yWendu | tianqi | fengxiang | fengli | aqi | aqiInfo | aqiLevel | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 2019-01-01 | 1℃ | -10℃ | 晴~多云 | 西北风 | 1级 | 56 | 良 | 2 |
| 1 | 2019-01-02 | 1℃ | -9℃ | 多云 | 东北风 | 1级 | 60 | 良 | 2 |
| 2 | 2019-01-03 | 2℃ | -7℃ | 霾 | 东北风 | 1级 | 165 | 中度污染 | 4 |
| 3 | 2019-01-04 | 2℃ | -7℃ | 晴 | 西北风 | 2级 | 50 | 优 | 1 |
| 4 | 2019-01-05 | 0℃ | -8℃ | 多云 | 东北风 | 2级 | 29 | 优 | 1 |
3.绘制饼图查看天气类型对比
df_tianqi = df.groupby("tianqi").size().sort_values(ascending = False)
# Flase表示递增为false,即选择递减
# 按照天气进行分组
df_tianqi # series
tianqi
晴 115
多云 78
晴~多云 39
多云~晴 34
小雨~多云 11
多云~雷阵雨 10
霾 8
多云~小雨 7
雷阵雨~多云 7
雷阵雨 7
阴~多云 5
多云~阴 4
小雨 4
雷阵雨~中雨 4
小雪~多云 4
阴~小雨 3
雷阵雨~晴 2
雷阵雨~小雨 2
霾~多云 2
中雨~多云 2
阴 2
中雨~小雨 2
多云~中雨 2
中雨~雷阵雨 2
阴~中雨 1
晴~霾 1
小雪 1
小雨~阴 1
小雨~晴 1
多云~中雪 1
雾~晴 1
霾~晴 1
霾~雾 1
dtype: int64
datas = list(zip(df_tianqi.index.to_list(), df_tianqi.to_list()))
# zip可以拼接两个list,形成一个二元组list
datas
[('晴', 115),('多云', 78),('晴~多云', 39),('多云~晴', 34),('小雨~多云', 11),('多云~雷阵雨', 10),('霾', 8),('多云~小雨', 7),('雷阵雨~多云', 7),('雷阵雨', 7),('阴~多云', 5),('多云~阴', 4),('小雨', 4),('雷阵雨~中雨', 4),('小雪~多云', 4),('阴~小雨', 3),('雷阵雨~晴', 2),('雷阵雨~小雨', 2),('霾~多云', 2),('中雨~多云', 2),('阴', 2),('中雨~小雨', 2),('多云~中雨', 2),('中雨~雷阵雨', 2),('阴~中雨', 1),('晴~霾', 1),('小雪', 1),('小雨~阴', 1),('小雨~晴', 1),('多云~中雪', 1),('雾~晴', 1),('霾~晴', 1),('霾~雾', 1)]
pie = create_pie(datas, "饼图=-天气对比")from IPython.display import HTML# 同上,读取 HTML 文件内容
# bar.render()的值是一个路径,以字符串形式表示
with open(pie.render(), 'r', encoding='utf-8') as file:html_content = file.read()# 直接在 JupyterLab 中渲染 HTML
HTML(html_content)

4.绘制饼图查看风向数据比例对比
df.head()
| ymd | bWendu | yWendu | tianqi | fengxiang | fengli | aqi | aqiInfo | aqiLevel | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 2019-01-01 | 1℃ | -10℃ | 晴~多云 | 西北风 | 1级 | 56 | 良 | 2 |
| 1 | 2019-01-02 | 1℃ | -9℃ | 多云 | 东北风 | 1级 | 60 | 良 | 2 |
| 2 | 2019-01-03 | 2℃ | -7℃ | 霾 | 东北风 | 1级 | 165 | 中度污染 | 4 |
| 3 | 2019-01-04 | 2℃ | -7℃ | 晴 | 西北风 | 2级 | 50 | 优 | 1 |
| 4 | 2019-01-05 | 0℃ | -8℃ | 多云 | 东北风 | 2级 | 29 | 优 | 1 |
df_fengxiang = df.groupby("fengxiang").size().sort_values(ascending = False)
datas = list(zip(df_fengxiang.index.to_list(), df_fengxiang.to_list()))
pie = create_pie(datas, "饼图-风向")from IPython.display import HTML# 同上,读取 HTML 文件内容
# bar.render()的值是一个路径,以字符串形式表示
with open(pie.render(), 'r', encoding='utf-8') as file:html_content = file.read()# 直接在 JupyterLab 中渲染 HTML
HTML(html_content)

5.绘制饼图查看空气质量对比
df.head()
| ymd | bWendu | yWendu | tianqi | fengxiang | fengli | aqi | aqiInfo | aqiLevel | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 2019-01-01 | 1℃ | -10℃ | 晴~多云 | 西北风 | 1级 | 56 | 良 | 2 |
| 1 | 2019-01-02 | 1℃ | -9℃ | 多云 | 东北风 | 1级 | 60 | 良 | 2 |
| 2 | 2019-01-03 | 2℃ | -7℃ | 霾 | 东北风 | 1级 | 165 | 中度污染 | 4 |
| 3 | 2019-01-04 | 2℃ | -7℃ | 晴 | 西北风 | 2级 | 50 | 优 | 1 |
| 4 | 2019-01-05 | 0℃ | -8℃ | 多云 | 东北风 | 2级 | 29 | 优 | 1 |
df_aqiInfo = df.groupby("aqiInfo").size().sort_values(ascending=False)
datas = list(zip(df_aqiInfo.index.to_list(), df_aqiInfo.to_list()))
pie = create_pie(datas, "饼图-空气质量")from IPython.display import HTML# 同上,读取 HTML 文件内容
# bar.render()的值是一个路径,以字符串形式表示
with open(pie.render(), 'r', encoding='utf-8') as file:html_content = file.read()# 直接在 JupyterLab 中渲染 HTML
HTML(html_content)

相关文章:
python数据可视化(5)——绘制饼图
课程学习来源:b站up:【蚂蚁学python】 【课程链接:【【数据可视化】Python数据图表可视化入门到实战】】 【课程资料链接:【链接】】 Python绘制饼图分析北京天气 饼图,是一个划分为几个扇形的圆形统计图表ÿ…...
实习随笔【iviews的Select实现‘与全部互斥’的多选】
在实习中,遇到了如下需求,要求如下: 上面提到了一个需求为,选择全部与选择一个或者多个互斥,我们来看一下如何解决 核心代码 监听value的变化,如果含有‘全部’,且数组长度>1,则删…...
网站架构核心要素
高性能 技术指标:响应时间、吞吐量、并发数 前端优化手段 页面布局:css在前,js在后通信数据量:数据尽量精简缓存:浏览器缓存、cdn异步:ajax 后端优化手段 缓存:反向代理、redis异步&#x…...
XML 解析异常问题解决
问题描述 The parser has encountered more than "64000" entity expansions in this document; this is the limit imposed by the JDK. 在运行 Java 应用程序时,出现了 XML 解析异常。具体表现为: 报错信息显示无法创建 StAX(S…...
C# 匿名方法、Lambda、Linq概念及联系
匿名方法、Lambda表达式与LINQ 匿名方法 概念: 匿名方法是没有名称的方法实现,通常与委托关联使用。它提供了一种在不创建独立命名方法的情况下编写代码块的方式。 语法: delegate void MyDelegate(string message);MyDelegate del dele…...
django ninja get not allowed 能用 put delete
遇到一个奇怪的问题,django-ninja 编写的 get post 方法不能使用 # 获取Material router.get(/material, responseList[MaterialSchemaOut]) paginate(MyPagination) def list_material(request, filters: Filters Query(...)):qs retrieve(request, Material, f…...
服务器操作集合
服务器使用PC作为代理访问外网 1、PC上启动代理,比如nginx 下载nginx:http://nginx.org/en/download.html 修改配置文件,在conf下: http {include mime.types;default_type application/octet-stream;sendfile o…...
论文阅读【时空+大模型】ST-LLM(MDM2024)
论文阅读【时空大模型】ST-LLM(MDM2024) 论文链接:Spatial-Temporal Large Language Model for Traffic Prediction 代码仓库:https://github.com/ChenxiLiu-HNU/ST-LLM 发表于MDM2024(Mobile Data Management…...
【linux基础】linux远程传输三种免交互方式
linux远程传输三种免交互方式 文章目录 linux远程传输三种免交互方式1、使用sshpass工具2、使用expect脚本来输入密码3、SSH 密钥对 1、使用sshpass工具 建立信任关系的做法是最方便和安全的做法,但是在有些场景下(比如远端的authorized_keys是不能随意更改的)&…...
MySQL篇:事务
1.四大特性 首先,事务的四大特性:ACID(原子性,一致性,隔离性,持久性) 在InnoDB引擎中,是怎么来保证这四个特性的呢? 持久性是通过 redo log (重做日志&…...
处理在 electron 中使用开启了懒加载的 el-image 后,窗口最大化或窗口尺寸变化后图片无法显示的问题
文章目录 1、问题描述2、详情动图3、解决思路4、解决方案5、效果展示 1、问题描述 在 electron 中使用 el-image 时,开启了懒加载后,发现只有当窗口滚动后,图片才会显示,即便图片已经处于窗口的可视区域。当拖动窗口使其尺寸变大…...
Electron 进程间通信
文章目录 渲染进程到主进程(单向)渲染进程到主进程(双向)主进程到渲染进程 (单向,可模拟双向) 渲染进程到主进程(单向) send (render 发送)on &a…...
0基础学python-8:if,while,for
目录 前言: 一、选择循环结构 1.if条件语句 2.while 3.for循环 4.break语句 5.continue语句 前言: if、while 和 for 是 Python 中常用的控制流结构,它们分别用于条件判断、循环执行和迭代遍历。这些关键字帮助程序根据条件和数据进行选…...
低空经济持续发热,无人机培训考证就业市场及前景剖析
随着科技的不断进步和社会需求的日益增长,低空经济已成为全球及我国经济增长的新引擎。作为低空经济的重要组成部分,无人机技术因其广泛的应用领域和显著的经济效益,受到了社会各界的广泛关注。为满足市场对无人机人才的需求,无人…...
[IDEA插件] JarEditor 编辑jar包(直接新增、修改、删除jar包内的class文件)
文章目录 1. 安装插件 JarEditor2. 在IDEA中添加外部JAR包3. JarEditor 使用介绍 之前我们需要修改jar内文件的时候需要解压jar包,反编译class,新建java源文件,修改代码,再编译成class,替换jar包内的class文件。 现在…...
JavaScript系列:JS实现复制粘贴文字以及图片
文章目录 一. 基于 Clipboard API 复制文字(推荐)基本概念主要方法使用限制实际应用示例 二、基于 document.execCommand(copy)缺陷实际应用示例说明 三、复制图片功能四、封装 一. 基于 Clipboard API 复制文字(推荐) 基本概念 …...
音视频入门基础:H.264专题(14)——计算视频帧率的公式
一、引言 通过FFmpeg命令可以获取到H.264裸流文件的视频帧率: 在vlc中也可以获取到视频帧率(vlc底层也使用了FFmpeg进行解码): 所以FFmpeg和vlc是怎样获取到H.264编码的视频的帧率呢?它们其实是通过SPS中的VUI parame…...
LeetCode-返回链表倒数第K个节点、链表的回文结构,相交链表
一、返回链表倒数第k个节点 . - 力扣(LeetCode) 本体思路参展寻找中间节点的方法,寻找中间节点是定义快慢指针,快指针每次走两步,慢指针每次走一步,当快指针为空或者快指针的下一个节点是空时,…...
Linux 网络配置与连接
一、网络配置 1.1 ifconfig 网卡配置查询 ifconfig #查看所有启动的网络接口信息 ifconfig 指定的网卡 #查看指定网络接口信息 1.2 修改网络配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33 #ens33网络配置文…...
5. 基于Embedding实现超越elasticsearch高级搜索
Embedding介绍 Embedding是向量的意思,向量可以理解为平面坐标中的一个坐标点(x,y),在编程领域,一个二维向量就是一个大小为float类型的数组。也可以用三维坐标系中的向量表示一个空间中的点。在机器学习中,向量通常用于表示数据的特征。 向量…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权
摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题:安全。文章将详细阐述认证(Authentication) 与授权(Authorization的核心概念,对比传统 Session-Cookie 与现代 JWT(JS…...
