Python讀取Excel繪制直方圖的方法
以下將詳細(xì)介紹如何使用 Python 的 pyecharts
、matplotlib
和 seaborn
三個(gè)庫從 Excel 中讀取數(shù)據(jù)并繪制直方圖(Histogram)。直方圖用于展示數(shù)據(jù)分布,核心是統(tǒng)計(jì)不同區(qū)間的頻數(shù)或頻率。每個(gè)庫的代碼示例均包含核心類、函數(shù)和屬性的詳細(xì)說明。
1. 使用 pyecharts 繪制直方圖
pyecharts
是基于 ECharts 的交互式可視化庫,但需手動(dòng)計(jì)算直方圖的頻數(shù)分布(因無內(nèi)置直方圖函數(shù))。
代碼示例:
import pandas as pd import numpy as np from pyecharts.charts import Bar from pyecharts import options as opts # 讀取Excel數(shù)據(jù) df = pd.read_excel("data.xlsx") data = df["數(shù)值列"].tolist() # 假設(shè)數(shù)據(jù)列名為"數(shù)值列" # 計(jì)算直方圖的區(qū)間和頻數(shù) counts, bins = np.histogram(data, bins=10) # 分10個(gè)區(qū)間 x_labels = [f"{bins[i]:.1f}-{bins[i+1]:.1f}" for i in range(len(bins)-1)] # 創(chuàng)建柱狀圖(模擬直方圖) bar = Bar() bar.add_xaxis(x_labels) bar.add_yaxis("頻數(shù)", counts.tolist()) # 配置全局選項(xiàng) bar.set_global_opts( title_opts=opts.TitleOpts(title="數(shù)值分布直方圖"), xaxis_opts=opts.AxisOpts(name="區(qū)間"), yaxis_opts=opts.AxisOpts(name="頻數(shù)"), toolbox_opts=opts.ToolboxOpts() ) # 渲染為HTML文件 bar.render("pyecharts_histogram.html")
核心類與函數(shù):
Bar()
: 柱狀圖對(duì)象,用于模擬直方圖。np.histogram()
: 計(jì)算直方圖頻數(shù)和區(qū)間(bins
指定區(qū)間數(shù)量)。add_xaxis()
/add_yaxis()
: 添加 X/Y 軸數(shù)據(jù)。set_global_opts()
: 配置標(biāo)題、坐標(biāo)軸名稱等。
2. 使用 matplotlib 繪制直方圖
matplotlib
是基礎(chǔ)繪圖庫,內(nèi)置 hist()
函數(shù)直接繪制直方圖。
代碼示例:
import pandas as pd import matplotlib.pyplot as plt # 讀取Excel數(shù)據(jù) df = pd.read_excel("data.xlsx") data = df["數(shù)值列"] # 創(chuàng)建畫布和坐標(biāo)系 fig, ax = plt.subplots(figsize=(10, 6)) # 繪制直方圖 ax.hist( data, bins=10, # 區(qū)間數(shù)量 color="skyblue", # 顏色 edgecolor="black", # 邊框顏色 alpha=0.7, # 透明度 density=False # False顯示頻數(shù),True顯示頻率 ) # 添加標(biāo)題和標(biāo)簽 ax.set_title("數(shù)值分布直方圖", fontsize=14) ax.set_xlabel("數(shù)值范圍", fontsize=12) ax.set_ylabel("頻數(shù)", fontsize=12) ax.grid(axis="y", linestyle="--") # 顯示橫向網(wǎng)格線 # 顯示圖表 plt.tight_layout() plt.savefig("matplotlib_histogram.png") plt.show()
核心函數(shù)與參數(shù):
ax.hist()
: 直方圖繪制函數(shù)。bins
: 區(qū)間數(shù)量或具體邊界值(如bins=[0, 10, 20]
)。color
/edgecolor
: 填充色和邊框顏色。alpha
: 透明度(0-1)。density
: 是否顯示頻率(歸一化)。
ax.set_title()
/ax.set_xlabel()
/ax.set_ylabel()
: 標(biāo)題和坐標(biāo)軸標(biāo)簽。
3. 使用 seaborn 繪制直方圖
seaborn
基于 matplotlib
,提供更簡潔的語法和統(tǒng)計(jì)功能(如核密度估計(jì))。
代碼示例:
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # 讀取Excel數(shù)據(jù) df = pd.read_excel("data.xlsx") data = df["數(shù)值列"] # 設(shè)置主題 sns.set_theme(style="whitegrid", font="SimHei") # 中文需指定字體 # 創(chuàng)建直方圖 plt.figure(figsize=(10, 6)) ax = sns.histplot( data, bins=10, # 區(qū)間數(shù)量 kde=True, # 顯示核密度曲線 color="skyblue", # 顏色 edgecolor="black", # 邊框顏色 stat="count" # 統(tǒng)計(jì)類型(默認(rèn)count,可選"density") ) # 添加標(biāo)題和標(biāo)簽 ax.set_title("數(shù)值分布直方圖(帶核密度估計(jì))", fontsize=14) ax.set_xlabel("數(shù)值范圍", fontsize=12) ax.set_ylabel("頻數(shù)", fontsize=12) # 顯示圖表 plt.tight_layout() plt.savefig("seaborn_histogram.png") plt.show()
核心函數(shù)與參數(shù):
sns.histplot()
: 直方圖繪制函數(shù)。kde
: 是否顯示核密度估計(jì)曲線(默認(rèn)False
)。stat
: 統(tǒng)計(jì)類型("count"
頻數(shù),"density"
頻率,"percent"
百分比)。bins
/color
/edgecolor
: 同matplotlib
。
sns.set_theme()
: 設(shè)置主題樣式(如whitegrid
、darkgrid
)。
對(duì)比總結(jié)
庫 | 特點(diǎn) | 適用場(chǎng)景 |
---|---|---|
pyecharts | 需手動(dòng)計(jì)算頻數(shù),生成交互式圖表 | 需要網(wǎng)頁嵌入或動(dòng)態(tài)交互 |
matplotlib | 直接繪制,高度可定制 | 需要精細(xì)控制圖表細(xì)節(jié) |
seaborn | 語法簡潔,支持核密度估計(jì) | 快速生成統(tǒng)計(jì)圖表 |
注意事項(xiàng)
- 數(shù)據(jù)預(yù)處理:確保 Excel 中的目標(biāo)列是數(shù)值類型(非字符串)。
- 區(qū)間劃分:調(diào)整
bins
參數(shù)優(yōu)化數(shù)據(jù)分布展示(如bins=20
增加細(xì)節(jié))。 - 交互性:
pyecharts
適合生成 HTML 文件,而matplotlib
/seaborn
適合靜態(tài)圖片。
到此這篇關(guān)于Python讀取Excel繪制直方圖的文章就介紹到這了,更多相關(guān)Python讀取Excel繪制直方圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)現(xiàn)動(dòng)態(tài)規(guī)劃算法的示例代碼
本文主要介紹了python實(shí)現(xiàn)動(dòng)態(tài)規(guī)劃算法的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02wxpython 最小化到托盤與歡迎圖片的實(shí)現(xiàn)方法
這篇文章主要分享一個(gè)python實(shí)例代碼,使用wxpython實(shí)現(xiàn)最小化到托盤與歡迎圖片,需要的朋友可以參考下2014-06-06爬蟲訓(xùn)練前端基礎(chǔ)Bootstrap5排版表格圖像
這篇文章主要為大家介紹了爬蟲訓(xùn)練前端基礎(chǔ)Bootstrap5排版表格圖像,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02pytorch中Transformer進(jìn)行中英文翻譯訓(xùn)練的實(shí)現(xiàn)
本文主要介紹了pytorch中Transformer進(jìn)行中英文翻譯訓(xùn)練的實(shí)現(xiàn),詳細(xì)闡述了使用PyTorch實(shí)現(xiàn)Transformer模型的代碼實(shí)現(xiàn)和訓(xùn)練過程,具有一定參考價(jià)值,感興趣的可以了解一下2023-08-08python利用ddddocr包ocr識(shí)別圖片碼的實(shí)現(xiàn)
ddddocr是一個(gè)輕量級(jí)的OCR庫,用于識(shí)別圖片中的文字和驗(yàn)證碼,本文主要介紹了python利用ddddocr包ocr識(shí)別圖片碼的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2025-01-01Python中不同進(jìn)制的語法及轉(zhuǎn)換方法分析
這篇文章主要介紹了Python中不同進(jìn)制的語法及轉(zhuǎn)換方法,結(jié)合實(shí)例形式分析了Python不同進(jìn)制的表示方法及相互轉(zhuǎn)換方法,需要的朋友可以參考下2016-07-07