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

 更新时间:2025年04月22日 08:46:58   投稿:mrr  
这篇文章主要介绍了Python读取Excel绘制直方图,以下将详细介绍如何使用 Python 的 pyecharts、matplotlib 和 seaborn 三个库从 Excel 中读取数据并绘制直方图(Histogram),需要的朋友可以参考下

以下将详细介绍如何使用 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绘制CDF图的示例代码

    利用python绘制CDF图的示例代码

    这篇文章主要为大家详细介绍了如何利用python实现绘制CDF图,文中的示例代码简洁易懂,具有一定的借鉴价值,感兴趣的小伙伴可以学习一下
    2023-08-08
  • Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例

    Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例

    这篇文章主要介绍了Python2.7基于笛卡尔积算法实现N个数组的排列组合运算,涉及Python笛卡尔积算法及排列组合操作相关实现技巧,需要的朋友可以参考下
    2017-11-11
  • python动态监控日志内容的示例

    python动态监控日志内容的示例

    本文介绍如何使用Python动态监控程序日志的内容,这里的动态指的是日志文件不断的追加新的日志内容,动态监控是指监控日志新追加的日志内容
    2014-02-02
  • 超详细注释之OpenCV制作图像Mask

    超详细注释之OpenCV制作图像Mask

    这篇文章主要介绍了OpenCV制作图像Mask,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • 灵活运用Python 枚举类来实现设计状态码信息

    灵活运用Python 枚举类来实现设计状态码信息

    在python中枚举是一种类(Enum,IntEnum),存放在enum模块中。枚举类型可以给一组标签赋予一组特定的值,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • Python实现Word文档样式批量处理

    Python实现Word文档样式批量处理

    这篇文章主要为大家详细介绍了如何利用Python中的python-docx非标准库实现word文档样式批量处理,文中示例代码讲解详细,感兴趣的可以了解一下
    2022-05-05
  • Python实现图像手绘效果的方法详解

    Python实现图像手绘效果的方法详解

    这篇文章主要为大家详细介绍了如何利用Python语言实现图像手绘效果,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
    2022-09-09
  • python双向链表实例详解

    python双向链表实例详解

    这篇文章主要为大家详细介绍了python双向链表实例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • Numpy广播域的理解

    Numpy广播域的理解

    本文主要介绍了Numpy广播域的理解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Python实战基础之Pandas统计某个数据列的空值个数

    Python实战基础之Pandas统计某个数据列的空值个数

    我们在处理数据的时候,经常需要检查数据的质量,也需要知道出问题的数据在哪个位置,下面这篇文章主要给大家介绍了关于Python实战基础之利用Pandas统计某个数据列空值个数的相关资料,需要的朋友可以参考下
    2022-08-08

最新评论