Python读取Excel绘制直方图的方法

2025-04-22日常编程120777

这篇文章主要介绍了Python读取Excel绘制直方图,以下将详细介绍如何使用 Python 的 pyecharts、matplotlib 和 seaborn 三个库从 Excel 中读取数据并绘制直方图(Histogram),需要的朋友可以参考下

目录
  • 1. 使用 pyecharts 绘制直方图
    • 代码示例:
    • 核心类与函数:
  • 2. 使用 matplotlib 绘制直方图
    • 代码示例:
    • 核心函数与参数:
  • 3. 使用 seaborn 绘制直方图
    • 代码示例:
    • 核心函数与参数:
  • 对比总结
    • 注意事项

      以下将详细介绍如何使用 Python 的 pyechartsmatplotlib 和 seaborn 三个库从 Excel 中读取数据并绘制直方图(Histogram)。直方图用于展示数据分布,核心是统计不同区间的频数或频率。每个库的代码示例均包含核心类、函数和属性的详细说明。

      1. 使用 pyecharts 绘制直方图

      pyecharts 是基于 ECharts 的交互式可视化库,但需手动计算直方图的频数分布(因无内置直方图函数)。

      代码示例:

      import pandas as pd
      import numpy as np
      from pyecharts.charts import Bar
      from pyecharts import options as opts
      # 读取Excel数据
      df = pd.read_excel("data.xlsx")
      data = df["数值列"].tolist()  # 假设数据列名为"数值列"
      # 计算直方图的区间和频数
      counts, bins = np.histogram(data, bins=10)  # 分10个区间
      x_labels = [f"{bins[i]:.1f}-{bins[i+1]:.1f}" for i in range(len(bins)-1)]
      # 创建柱状图(模拟直方图)
      bar = Bar()
      bar.add_xaxis(x_labels)
      bar.add_yaxis("频数", counts.tolist())
      # 配置全局选项
      bar.set_global_opts(
          title_opts=opts.TitleOpts(title="数值分布直方图"),
          xaxis_opts=opts.AxisOpts(name="区间"),
          yaxis_opts=opts.AxisOpts(name="频数"),
          toolbox_opts=opts.ToolboxOpts()
      )
      # 渲染为HTML文件
      bar.render("pyecharts_histogram.html")

      核心类与函数:

      • Bar(): 柱状图对象,用于模拟直方图。
      • np.histogram(): 计算直方图频数和区间(bins 指定区间数量)。
      • add_xaxis()/add_yaxis(): 添加 X/Y 轴数据。
      • set_global_opts(): 配置标题、坐标轴名称等。

      2. 使用 matplotlib 绘制直方图

      matplotlib 是基础绘图库,内置 hist() 函数直接绘制直方图。

      代码示例:

      import pandas as pd
      import matplotlib.pyplot as plt
      # 读取Excel数据
      df = pd.read_excel("data.xlsx")
      data = df["数值列"]
      # 创建画布和坐标系
      fig, ax = plt.subplots(figsize=(10, 6))
      # 绘制直方图
      ax.hist(
          data, 
          bins=10,              # 区间数量
          color="skyblue",      # 颜色
          edgecolor="black",    # 边框颜色
          alpha=0.7,            # 透明度
          density=False         # False显示频数,True显示频率
      )
      # 添加标题和标签
      ax.set_title("数值分布直方图", fontsize=14)
      ax.set_xlabel("数值范围", fontsize=12)
      ax.set_ylabel("频数", fontsize=12)
      ax.grid(axis="y", linestyle="--")  # 显示横向网格线
      # 显示图表
      plt.tight_layout()
      plt.savefig("matplotlib_histogram.png")
      plt.show()

      核心函数与参数:

      • ax.hist(): 直方图绘制函数。
        • bins: 区间数量或具体边界值(如 bins=[0, 10, 20])。
        • color/edgecolor: 填充色和边框颜色。
        • alpha: 透明度(0-1)。
        • density: 是否显示频率(归一化)。
      • ax.set_title()/ax.set_xlabel()/ax.set_ylabel(): 标题和坐标轴标签。

      3. 使用 seaborn 绘制直方图

      seaborn 基于 matplotlib,提供更简洁的语法和统计功能(如核密度估计)。

      代码示例:

      import pandas as pd
      import seaborn as sns
      import matplotlib.pyplot as plt
      # 读取Excel数据
      df = pd.read_excel("data.xlsx")
      data = df["数值列"]
      # 设置主题
      sns.set_theme(style="whitegrid", font="SimHei")  # 中文需指定字体
      # 创建直方图
      plt.figure(figsize=(10, 6))
      ax = sns.histplot(
          data,
          bins=10,                # 区间数量
          kde=True,               # 显示核密度曲线
          color="skyblue",        # 颜色
          edgecolor="black",      # 边框颜色
          stat="count"            # 统计类型(默认count,可选"density")
      )
      # 添加标题和标签
      ax.set_title("数值分布直方图(带核密度估计)", fontsize=14)
      ax.set_xlabel("数值范围", fontsize=12)
      ax.set_ylabel("频数", fontsize=12)
      # 显示图表
      plt.tight_layout()
      plt.savefig("seaborn_histogram.png")
      plt.show()

      核心函数与参数:

      • sns.histplot(): 直方图绘制函数。
        • kde: 是否显示核密度估计曲线(默认 False)。
        • stat: 统计类型("count" 频数,"density" 频率,"percent" 百分比)。
        • bins/color/edgecolor: 同 matplotlib
      • sns.set_theme(): 设置主题样式(如 whitegriddarkgrid)。

      对比总结

      特点 适用场景
      pyecharts 需手动计算频数,生成交互式图表 需要网页嵌入或动态交互
      matplotlib 直接绘制,高度可定制 需要精细控制图表细节
      seaborn 语法简洁,支持核密度估计 快速生成统计图表

      注意事项

      • 数据预处理:确保 Excel 中的目标列是数值类型(非字符串)。
      • 区间划分:调整 bins 参数优化数据分布展示(如 bins=20 增加细节)。
      • 交互性pyecharts 适合生成 HTML 文件,而 matplotlib/seaborn 适合静态图片。

      到此这篇关于Python读取Excel绘制直方图的文章就介绍到这了,更多相关Python读取Excel绘制直方图内容请搜索北冥有鱼以前的文章或继续浏览下面的相关文章希望大家以后多多支持北冥有鱼!

      您可能感兴趣的文章:

      • Python获取excel的数据并绘制箱型图和直方图的方法实例
      • Python实现多条件筛选Excel数据并批量绘制直方图
      • Python中读取Excel最快的几种常见方法
      • python使用openpyxl打开及读取excel表格过程
      • Python读取和写入txt、Excel文件和JSON文件的方法
      • 使用Python读取Excel数据并写入到CSV、XML和文本
      • 使用Python第三方库xlrd读取Excel中的数据的流程步骤
      本文地址:https://www.ufcn.cn/tutorials/3398524.html

      如非特殊说明,本站内容均来自于网友自主分享,概不代表本站观点,如有任何问题我们都将在收到反馈后的第一时间进行处理!