以下将详细介绍如何使用 Python 的、和三个库从 Excel 中读取数据并绘制直方图(Histogram)。直方图用于展示数据分布,核心是统计不同区间的频数或频率。每个库的代码示例均包含核心类、函数和属性的详细说明。
1. 使用 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")
复制代码 核心类与函数:
- : 柱状图对象,用于模拟直方图。
- : 计算直方图频数和区间(指定区间数量)。
- /: 添加 X/Y 轴数据。
- : 配置标题、坐标轴名称等。
2. 使用 matplotlib 绘制直方图
是基础绘图库,内置函数直接绘制直方图。
代码示例:
- 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()
复制代码
核心函数与参数:
- : 直方图绘制函数。
- : 区间数量或具体边界值(如)。
- /: 填充色和边框颜色。
- : 透明度(0-1)。
- : 是否显示频率(归一化)。
- //: 标题和坐标轴标签。
3. 使用 seaborn 绘制直方图
基于,提供更简洁的语法和统计功能(如核密度估计)。
代码示例:
- 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()
复制代码 核心函数与参数:
- : 直方图绘制函数。
- : 是否显示核密度估计曲线(默认)。
- : 统计类型(频数,频率,百分比)。
- //: 同。
- : 设置主题样式(如、)。
对比总结
库特点适用场景需手动计算频数,生成交互式图表需要网页嵌入或动态交互直接绘制,高度可定制需要精细控制图表细节语法简洁,支持核密度估计快速生成统计图表
注意事项
- 数据预处理:确保 Excel 中的目标列是数值类型(非字符串)。
- 区间划分:调整参数优化数据分布展示(如增加细节)。
- 交互性:适合生成 HTML 文件,而/适合静态图片。
到此这篇关于Python读取Excel绘制直方图的文章就介绍到这了,更多相关Python读取Excel绘制直方图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
来源:https://www.jb51.net/python/34007982g.htm
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
|