Python读取Excel并绘制饼图的两种方法详解

python的两种数据作图方案

  • matplotlib简单方便,适合数据作图或科学作图(论文发表)
  • pyecharts流程略复杂,但功能强大,图形具有交互式,适合项目开发或商业分析报告,但是它是一个非常新的库,开发不稳定
  • 本文介绍用pandas库读取Excel (csv)数据,分别用matplotlib库pyecharts库绘制饼图。

    注:

    1. 实例是在Jupyter Notebook中运行的,可以实时看到运行效果。在pycharm中也能运行,但要保存成图片查看。
    2. 实例所用的数据非常简单,包含两列(id,label),共有49858行数据,我们这里分析label列数据(为0或1,其中0有37536条,1有12322条)。

    用matplotlib绘制饼图

    # 1.导入数据并格式化
    import pandas as pd
    import numpy as np
    # 导入数据
    df = pd.read_csv("test.csv")
    # 根据label列分组并计数
    df_label = df.groupby("label").size()
    # 转化为作图所需要的array格式,如:([[    0, 37536],[    1, 12322]])
    datas = list(zip(df_label.index.to_list(), df_label.to_list()))
    datas = np.array(datas)
    
    # 2.绘制饼图
    import matplotlib.pyplot as plt
    # 设置字体和编码格式
    plt.rcParams['font.sans-serif'] = 'simhei'
    plt.rcParams['axes.unicode_minus'] = False
    # 添加数据,标签,比例
    plt.pie(datas[:, 1], labels=datas[:, 0], autopct="%.1ff%%") 
    # 在左上方添加图例
    plt.legend(datas[:, 0], loc="upper left")
    # 添加标题
    plt.title("饼图-label分析") 
    # 展示饼图
    plt.show()
    

    用pyecharts绘制饼图

    from pyecharts import options as opts
    from pyecharts.charts import Pie
    # 1.定义绘图函数,参数:(数据,标题)
    def create_pie(datas, title) -> Pie:
        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}%"))
        return pie
    
    # 2.导入数据并格式化
    import pandas as pd
    # 导入数据
    df = pd.read_csv("test.csv")
    # 根据label列分组并计数
    df_label = df.groupby("label").size()
    # 转化为作图所需要的list格式,如:[(0, 37536), (1, 12322)]
    datas = list(zip(df_label.index.to_list(), df_label.to_list()))
    
    # 3.调用绘图函数
    pie = create_pie(datas, "饼图-label分析")
    pie.render_notebook()
    

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python读取Excel并绘制饼图的两种方法详解

    发表评论