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 pd

df = 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)

在这里插入图片描述

Awesome-pyecharts

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)

在这里插入图片描述

Awesome-pyecharts

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)

在这里插入图片描述

Awesome-pyecharts

相关推荐

  1. ECharts 数据的重要工具

    2024-07-16 04:52:04       32 阅读
  2. Python数据绘制折线图

    2024-07-16 04:52:04       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 04:52:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 04:52:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 04:52:04       58 阅读
  4. Python语言-面向对象

    2024-07-16 04:52:04       69 阅读

热门阅读

  1. Linux命令更新-sort 和 uniq 命令

    2024-07-16 04:52:04       29 阅读
  2. 中介子方程五十九

    2024-07-16 04:52:04       25 阅读
  3. linux查找/搜索命令

    2024-07-16 04:52:04       27 阅读
  4. Django REST Framework(八)GenericAPIView5个视图扩展类

    2024-07-16 04:52:04       21 阅读
  5. 目标检测算法:原理、挑战与应用

    2024-07-16 04:52:04       26 阅读
  6. Deep Layer Aggregation【方法部分解读】

    2024-07-16 04:52:04       26 阅读
  7. Chrome调试工具

    2024-07-16 04:52:04       22 阅读
  8. 探索Mojo编程语言:AI开发者的新宠儿

    2024-07-16 04:52:04       26 阅读