当前位置: 首页 > news >正文

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)
ymdbWenduyWendutianqifengxiangfengliaqiaqiInfoaqiLevel
02019-01-011℃-10℃晴~多云西北风1级562
12019-01-021℃-9℃多云东北风1级602
22019-01-032℃-7℃东北风1级165中度污染4
32019-01-042℃-7℃西北风2级501
42019-01-050℃-8℃多云东北风2级291

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)

在这里插入图片描述

Awesome-pyecharts

4.绘制饼图查看风向数据比例对比

df.head()
ymdbWenduyWendutianqifengxiangfengliaqiaqiInfoaqiLevel
02019-01-011℃-10℃晴~多云西北风1级562
12019-01-021℃-9℃多云东北风1级602
22019-01-032℃-7℃东北风1级165中度污染4
32019-01-042℃-7℃西北风2级501
42019-01-050℃-8℃多云东北风2级291
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)

在这里插入图片描述

Awesome-pyecharts

5.绘制饼图查看空气质量对比

df.head()
ymdbWenduyWendutianqifengxiangfengliaqiaqiInfoaqiLevel
02019-01-011℃-10℃晴~多云西北风1级562
12019-01-021℃-9℃多云东北风1级602
22019-01-032℃-7℃东北风1级165中度污染4
32019-01-042℃-7℃西北风2级501
42019-01-050℃-8℃多云东北风2级291
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)

在这里插入图片描述

Awesome-pyecharts
http://www.lryc.cn/news/400660.html

相关文章:

  • 实习随笔【iviews的Select实现‘与全部互斥’的多选】
  • 网站架构核心要素
  • XML 解析异常问题解决
  • C# 匿名方法、Lambda、Linq概念及联系
  • django ninja get not allowed 能用 put delete
  • 服务器操作集合
  • 论文阅读【时空+大模型】ST-LLM(MDM2024)
  • 【linux基础】linux远程传输三种免交互方式
  • MySQL篇:事务
  • 处理在 electron 中使用开启了懒加载的 el-image 后,窗口最大化或窗口尺寸变化后图片无法显示的问题
  • Electron 进程间通信
  • 0基础学python-8:if,while,for
  • 低空经济持续发热,无人机培训考证就业市场及前景剖析
  • [IDEA插件] JarEditor 编辑jar包(直接新增、修改、删除jar包内的class文件)
  • JavaScript系列:JS实现复制粘贴文字以及图片
  • 音视频入门基础:H.264专题(14)——计算视频帧率的公式
  • LeetCode-返回链表倒数第K个节点、链表的回文结构,相交链表
  • Linux 网络配置与连接
  • 5. 基于Embedding实现超越elasticsearch高级搜索
  • 探索Docker网络配置和管理
  • 【数据库】 mysql数据库管理工具 Navicat平替工具 免费开源数据库管理工具
  • 信息系统项目管理师(高项)—学习笔记二
  • 【Vue】 style中的scoped
  • maven项目容器化运行之2-maven中使用docker插件调用远程docker构建服务并在1Panel中运行
  • 电影购票小程序论文(设计)开题报告
  • IP风险画像 金融行业的安全盾牌
  • 探索老年综合评估实训室的功能与价值
  • 视频剪辑软件如何选?FCPX和PR更适合新手呢
  • 解决第三方模块ts声明文件编译错误问题
  • 数据结构小测试:排序算法