Python數據可視化實戰:從基礎圖表到高級分析


Python數據可視化實戰:從基礎圖表到高級分析

數據可視化是數據分析的重要環節,通過直觀的圖表可以快速洞察數據規律。本文將通過5個實際案例,手把手教你使用Python的Matplotlib庫完成各類數據可視化任務,涵蓋條形圖、堆積面積圖、餅圖、直方圖等常見圖表類型,并包含誤差分析、顏色映射等高級技巧。


案例1:商品網購替代率分析

數據背景

分析不同商品種類的網購替代率(線上消費對線下的替代比例),數據來源:國家統計局北京調查總隊抽樣調查。

實現代碼

# 01_online_substitution_rate.py
import matplotlib.pyplot as plt
import numpy as np# 中文顯示設置
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False# 數據準備
categories = ["家政服務", "交通票務", "家具", "手機配件", "計算機產品", "汽車用品", "充值服務", "個護用品","書報音像", "餐飲旅游", "家用電器", "食品飲料","日用品", "保險票務", "服裝家紡", "數碼產品","其他商品", "工藝品"]
substitution_rates = [0.959, 0.951, 0.935, 0.924, 0.893,0.892, 0.865, 0.863, 0.860, 0.856,0.854, 0.835, 0.826, 0.816, 0.798,0.765, 0.763, 0.671]# 可視化
plt.figure(figsize=(10, 8))
bars = plt.barh(categories, substitution_rates, color=plt.cm.viridis(np.linspace(0,1,len(categories))),height=0.7)# 添加數據標簽
for bar in bars:width = bar.get_width()plt.text(width+0.01, bar.get_y()+0.3,f'{width*100:.1f}%',va='center')plt.title("各商品品類網購替代率分析", pad=20)
plt.xlabel("替代率")
plt.xlim(0.6, 1.0)
plt.grid(axis='x', alpha=0.3)
plt.tight_layout()![請添加圖片描述](https://i-blog.csdnimg.cn/direct/b58d60ae0fcb4e5da2802684ccfdfca5.png)plt.show()

可視化解讀

在這里插入圖片描述

  • 使用水平條形圖清晰展示長文本標簽
  • 漸變色映射替代率高低(深色表示高替代率)
  • 右側數據標簽輔助精確讀數

案例2:物流公司費用對比

數據背景

比較A/B/C三家物流公司全年費用分布,數據來源:企業年度財報。

實現代碼

# 02_logistics_cost.py
months = np.arange(1,13)
cost_a = [198,215,245,222,200,236,201,253,236,200,266,290]
cost_b = [203,236,200,236,269,216,298,333,301,349,360,368]
cost_c = [185,205,226,199,238,200,250,209,246,219,253,288]plt.figure(figsize=(12,6))
plt.stackplot(months, cost_a, cost_b, cost_c,colors=['#1f77b4','#ff7f0e','#2ca02c'],alpha=0.8,labels=['A公司','B公司','C公司'])# 添加趨勢線
total = np.array(cost_a) + np.array(cost_b) + np.array(cost_c)
plt.plot(months, total, color='#d62728', marker='o', linestyle=':', label='總費用')plt.title("物流公司月度費用對比", pad=20)
plt.xlabel("月份")
plt.ylabel("費用(萬元)")
plt.xticks(months)
plt.legend(loc='upper left')
plt.grid(axis='y', linestyle='--')
plt.show()

可視化解讀

在這里插入圖片描述

  • 堆積面積圖展示費用構成
  • 紅色趨勢線反映總費用變化
  • 半透明效果增強層次感

案例3:支付寶消費分析

數據背景

解析用戶月度消費結構,數據來源:支付寶賬單導出。

實現代碼

# 03_alipay_bills.py
labels = ['購物','人情','餐飲','通信','日用','交通','娛樂','其他']
sizes = [800,100,1000,200,300,200,200,200]
colors = ['#4B9CD3','#FF6F61','#2E5339','#9467bd','#8c564b','#e377c2','#7f7f7f','#bcbd22']plt.figure(figsize=(10,8))
wedges, texts, autotexts = plt.pie(sizes, labels=labels,colors=colors,autopct='%1.1f%%',startangle=90,wedgeprops={'width':0.4})  # 環形圖# 添加中心注釋
plt.text(0, 0, "總支出\n3000元", ha='center', va='center',fontsize=14)plt.title("支付寶月度消費結構", pad=20)
plt.axis('equal')  # 正圓形
plt.show()

可視化解讀

在這里插入圖片描述

  • 環形餅圖增強現代感
  • 中心區域突出總金額
  • 協調配色提升可讀性

案例4:正態分布可視化

數據背景

展示隨機數的分布規律,驗證中心極限定理。

實現代碼

# 04_normal_distribution.py
data = np.random.normal(loc=0, scale=1, size=1000)plt.figure(figsize=(10,6))
plt.hist(data, bins=20, density=True, alpha=0.6, color='#1f77b4')# 添加理論曲線
x = np.linspace(-4,4,100)
plt.plot(x, 1/(1*np.sqrt(2*np.pi)) * np.exp(-0.5*(x/1)**2),linewidth=2, color='#d62728')plt.title("正態分布驗證", pad=20)
plt.xlabel("數值")
plt.ylabel("概率密度")
plt.grid(alpha=0.3)
plt.show()

可視化解讀

在這里插入圖片描述

  • 直方圖展示實際分布
  • 紅色曲線表示理論分布
  • 半透明處理避免視覺壓迫

案例5:班級身高分析

數據背景

模擬生成班級身高數據,分析分布特征。

實現代碼

# 05_class_height.py
heights = np.random.normal(loc=170, scale=5, size=40)plt.figure(figsize=(10,6))
n, bins, patches = plt.hist(heights, bins=6, color='#4B9CD3',edgecolor='white')# 添加統計信息
plt.axvline(heights.mean(), color='red', linestyle='--')
plt.text(0.7, 0.8, f'μ={heights.mean():.1f}cm\nσ={heights.std():.1f}cm',transform=plt.gca().transAxes)plt.title("班級身高分布", pad=20)
plt.xlabel("身高(cm)")
plt.ylabel("人數")
plt.show()

可視化解讀

在這里插入圖片描述

  • 藍色柱形展示各區間人數
  • 紅色虛線標注平均身高
  • 右上角顯示統計參數

總結

本文通過5個典型案例演示了:

  • 條形圖:對比類數據展示
  • 堆積圖:構成分析
  • 餅圖:比例呈現
  • 直方圖:分布規律
  • 綜合應用:數據模擬+統計分析

完整代碼已托管至GitHub倉庫,建議讀者克隆代碼庫后結合實際數據修改參數練習。掌握這些可視化方法后,你可以:

  1. 制作專業的分析報告
  2. 優化數據呈現方式
  3. 快速發現數據異常
  4. 提升數據分析效率

擴展建議

  • 嘗試使用Seaborn庫簡化復雜圖表
  • 學習Plotly制作交互式可視化
  • 探索D3.js實現高級動態效果

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/72837.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/72837.shtml
英文地址,請注明出處:http://en.pswp.cn/web/72837.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【機器學習-分類算法】

比如將一張圖片按尺寸識別分類為橫向或者縱向兩類就是二分類問題 設x軸為圖像的寬、y軸為圖像的高,那么把訓練數據展現在圖上就是這樣的: 若增加更多的數據集有: 如果只用一條線將圖中白色的點和黑色的點分開,那么: 分類的目的就是找到這條線,就可以根據點在線…

Compose Indication:點擊效果設置

Compose Indication:打造獨特點擊效果的秘密武器 在Compose開發中,大家可能都碰到過Indication,不少人第一次接觸它,是在想去掉Material默認的點擊水波紋效果的時候。要是在AI工具里搜“怎么去掉水波紋效果”,會得到這…

Docker build 會在本地產生巨大的文件

Docker build 會在本地產生巨大的文件, 比如 用 這個命令列出本地鏡像 docker images 可見size都是很大的, 到docker目錄下,看到ext4.vhdx的大小 80多G 那只能用這個命令把不用的鏡像刪掉了: (rmi后面是鏡像id&a…

臺式機電腦組裝---電腦機箱與主板接線

臺式機電腦組裝—電腦機箱與主板接線 1、機箱連接主板的跳線一般主要有USB 2.0、USB 3.0、前置音頻接口(HD_AUDIO)以及POWER SW、RESET SW、POWER LED、HDD LED四個主板跳線,這些跳線分別的含義如下。 RESET SW:機箱重啟按鍵;注&#xff1a…

【虛幻引擎UE5】SpawnActor生成Character實例不執行AI Move To,未初始化AIController的原因和解決方法

虛幻引擎版本:5.5.4 問題描述 剛創建的Third Person項目里,定義一個BP_Enemy藍圖,拖拽到場景中產生的實例會追隨玩家,但SpawnActor產生的實例會固定不動。BP_Enemy藍圖具體設計如下: BP_Enemy的Event Graph ?? 又定義…

跨平臺RTSP高性能實時播放器實現思路

跨平臺RTSP高性能實時播放器實現思路 目標:局域網100ms以內超低延遲 一、引言 現有播放器(如VLC)在RTSP實時播放場景中面臨高延遲(通常數秒)和資源占用大的問題。本文提出一種跨平臺解決方案,通過網絡層…

HTTP 失敗重試(重發)方案

在 Qt 網絡開發中,使用 QNetworkAccessManager 進行 HTTP 請求時,可能會遇到網絡超時、服務器錯誤等情況。為了提高請求的可靠性,可以實現 HTTP 失敗重試(重發) 機制。下面介紹幾種常見的 失敗重發方案: 單…

大白話詳細解讀React框架的diffing算法

1. Diffing 算法是什么? Diffing 算法是 React 用來比較虛擬 DOM(Virtual DOM)樹的一種算法。它的作用是找出前后兩次渲染之間的差異(diff),然后只更新這些差異部分,而不是重新渲染整個頁面。 …

【Linux內核系列】:動靜態庫詳解

🔥 本文專欄:Linux 🌸作者主頁:努力努力再努力wz 💪 今日博客勵志語錄: 有些鳥兒是注定是關不住的,因為它們的每一片羽翼都沾滿了自由的光輝 ★★★ 本文前置知識: 編譯與鏈接的過程…

深度解讀DeepSeek部署使用安全(48頁PPT)(文末有下載方式)

深度解讀DeepSeek:部署、使用與安全 詳細資料請看本解讀文章的最后內容。 引言 DeepSeek作為一款先進的人工智能模型,其部署、使用與安全性是用戶最為關注的三大核心問題。本文將從本地化部署、使用方法與技巧、以及安全性三個方面,對Deep…

【詳細解決】pycharm 終端出現報錯:“Failed : 無法將“Failed”項識別為 cmdlet、函數、腳本文件或可運行程序的名稱。

昨天在終端一頓操作后突然打開pycharm時就開始報錯: 無法將“Failed”項識別為 cmdlet、函數、腳本文件或可運行程序的名稱。請檢查名稱的拼寫,如果包括路徑,請確保路徑正確,然后再試一次。 所在位置 行:1 字符: 1 Failed to act…

【電路筆記】-D型觸發器

D型觸發器 文章目錄 D型觸發器1、概述2、主從D觸發器3、使用D型觸發器進行分頻4、D觸發器作為數據鎖存器5、透明數據鎖存器6、總結D型觸發器是一種改進的置位-復位觸發器,通過增加一個反相器來防止S和R輸入處于相同的邏輯電平。 1、概述 D型觸發器克服了基本SR NAND門雙穩態電…

智慧共享桿:城市智能化管理的 “多面手”

智慧共享桿:城市智能化管理的 “多面手” 在智慧城市建設的進程中,智慧共享桿憑借其多功能與集約化的特性,逐漸成為城市基礎設施建設領域的重點關注對象。它不僅革新了傳統路燈桿的固有模式,更為城市的高效管理與便捷服務開創了全…

【Tips】pip臨時換源

pip換源網站 用法: pip install xxx庫 -i https://pypi.tuna.tsinghua.edu.cn/simple https://pypi.tuna.tsinghua.edu.cn/simplehttps://mirrors.aliyun.com/pypi/simplehttps://pypi.douban.com/simplehttps://pypi.mirrors.ustc.edu.cn/simplehttps://mirrors.…

AcWing 838:堆排序 ← 數組模擬

【題目來源】 https://www.acwing.com/problem/content/840/ 【題目描述】 輸入一個長度為 n 的整數數列,從小到大輸出前 m 小的數。 【輸入格式】 第一行包含整數 n 和 m。 第二行包含 n 個整數,表示整數數列。 【輸出格式】 共一行,包含…

Microchip AN1477中關于LLC數字補償器的疑問

最近在學習Microchip的AN1477關于LLC的功率級傳遞函數推導及數字補償器設計,對其中的2P2Z數字補償器的系數有一些困惑。我在MATLAB中運行了源程序提供的VMC_LLC.m文件,發現有些地方和AN1477中的結果不一致。現在把相關有疑問的地方列舉出來,也…

【原創】使用ElasticSearch存儲向量實現大模型RAG

一、概述 檢索增強生成(Retrieval-Augmented Generation,RAG)已成為大型語言模型(LLM)應用的重要架構,通過結合外部知識庫來增強模型的回答能力,特別是在處理專業領域知識、最新信息或企業私有數…

分享下web3j 常見用法

轉賬 fun sendEthTransaction(privateKey: String,toAddress: String,amount: BigDecimal) {//chainIdval chainId:Long 1//url 可以從https://chainlist.org/里面獲取可用節點//eth轉賬,bnb同理,但需發送到bnb對應節點val url "https://xxx"…

《真·滕王閣序》

《滕工閣序》 西二旗故地,后廠新府。 星分百度網易,地接騰訊阿里。 襟PRD而帶OKR,控需求以引撕逼。 物華天寶,龍光射工卡芯片;人杰地靈,徐孺坐產品經理之榻。 工位霧列,碼農星馳。 臺積電…

云盤搭建筆記

報錯問題: No input file specified. 偽靜態 location / {if (!-e $request_filename) { rewrite ^(.*)$ /index.php/$1 last;break;} } location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php/$1 last; break; } } 設…