• 【matplotlib 实战】--饼图


    饼图,或称饼状图,是一个划分为几个扇形的圆形统计图表。
    在饼图中,每个扇形的弧长(以及圆心角和面积)大小,表示该种类占总体的比例,且这些扇形合在一起刚好是一个完全的圆形。

    饼图最显著的功能在于表现“占比”。
    习惯上,人们通过比较饼图扇形的大小来获得对数据的认知。

    使用饼图时,须确认各个扇形的数据加起来等于100%;
    且避免扇区超过5个,扇形的排布顺序,一般情况下,将最大的扇形放在12点钟方向。

    1. 主要元素

    饼图的主要元素包括:

    1. 饼片(扇形):饼图由多个饼片组成,每个饼片的大小代表了对应部分在总体中的比例关系。
    2. 标签:饼图中的每个饼片通常都会有一个标签,用于表示对应部分的具体名称或者数值。
    3. 图例:图例是饼图的一部分,用于解释每个饼片所代表的含义,帮助观察者理解图表。
    4. 百分比:饼图通常会显示每个饼片所占的百分比,以便更直观地展示比例关系。

    图片来自 antv 官网

    2. 适用的场景

    饼图适用的场景包括:

    • 比例展示:展示一个总体中各个部分的比例关系,例如市场份额、人口比例等。
    • 分类数据:展示分类数据的比例关系,例如某个产品的销售额占比、不同地区的人口分布等。
    • 简单数据分析:简单的数据分析,帮助观察者快速了解数据的分布情况和相对大小。
    • 强调重点:突出某个部分的重要性,引起观察者的注意,例如某个产品的关键特点或者某个地区的重要经济指标。

    3. 不适用的场景

    饼图不适用的场景包括:

    • 多个分类变量:当数据包含多个分类变量时,饼图可能会变得复杂和难以理解,不适合展示复杂的关系。
    • 数据过于细分:当数据被分成过多的小块时,饼图可能会变得拥挤和难以辨认,不适合展示细分数据。
    • 数据差异较小:当各个部分的差异较小,比例接近时,饼图可能无法清晰地展示差异,不适合展示相似的数据。
    • 需要精确数值比较:饼图通常只能展示相对比例关系,无法提供精确的数值比较,不适合需要准确数值的场景。

    4. 分析实战

    本次用饼图统计展示 不同人口规模的城市数量 的统计情况。

    4.1. 数据来源

    数据来自国家统计局公开的城市概况数据,可从下面的网址下载:
    https://databook.top/nation/A0B

    使用其中的 A0B01.csv 文件(分机构类型法人单位数)

    fp = "d:/share/A0B01.csv"
    
    df = pd.read_csv(fp)
    df
    

    image.png

    4.2. 数据清理

    最新的2022年数据缺失较多,所以选取2021年的数据进行分析。

    data = df[df["sj"] == 2021]
    data
    

    image.png

    第一条数据全部城市情况,统计需要去除,另外,指标的名称太长,统计前也可以调整下。
    接着上面过滤后的数据继续数据清洗:

    data = data.reset_index() # 重置索引
    data = data.iloc[1:]  # 忽略第一条合计的数据
    
    #调整指标名称,删除多余的文字
    data["zbCN"] = data["zbCN"].str.replace("城市市辖区年末总", "")
    data["zbCN"] = data["zbCN"].str.replace("地级及以上", "")
    
    data
    

    image.png

    最后得到的数据有6条饼图一般来说数据不要超过5个6个也还行,再多就影响显示效果了。

    4.3. 分析结果可视化

    with plt.style.context("seaborn-v0_8"):
        fig = plt.figure()
        ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
    
        ax.pie(data["value"], autopct="%1.1f%%")
        ax.legend(
            data["zbCN"].tolist(),
            loc="center",
            bbox_to_anchor=(1, 0, 0.5, 1),
        )
    

    image.png

    从分析结果可看出,50万~200万人口的城市超过一半,是大多数的城市规模。
    两端的情况(人口20万以下,或者400万以上)的城市占比最小。

  • 相关阅读:
    使用argparse进行调参
    阿里巴巴店铺的所有商品API接口(item_search_shop-获得店铺的所有商品接口),阿里巴巴API接口
    【SQL应知应会】索引 • Oracle版:B-树索引;位图索引;函数索引;单列与复合索引;分区索引
    《吐血整理》高级系列教程-吃透Fiddler抓包教程(34)-Fiddler如何抓取微信小程序的包-上篇
    (附源码)计算机毕业设计 图书管理系统
    java面试题
    17.2 实现无管道正向CMD
    Http请求参数类型及servlet获取方式
    算法总结-最短距离和问题
    Springboot项目中打印SQL语句日志
  • 原文地址:https://www.cnblogs.com/wang_yb/p/17764303.html