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.rhkb.cn/news/37110.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

修改原生的<input type=“datetime-local“>样式

效果 基础样式 <input type"datetime-local" class"custom-datetime">input[type"datetime-local"] {/* 重置默认样式 */-webkit-appearance: none;-moz-appearance: none;appearance: none; // 禁用浏览器默认样式/* 自定义基础样式 */w…

scrapy入门(深入)

Scrapy框架简介 Scrapy是:由Python语言开发的一个快速、高层次的屏幕抓取和web抓取框架&#xff0c;用于抓取web站点并从页面中提取结构化的数据&#xff0c;只需要实现少量的代码&#xff0c;就能够快速的抓取。 新建项目 (scrapy startproject xxx)&#xff1a;新建一个新的…

fetch,ajax,axios的区别以及使用

fetch,ajax,axios这些都是发起前端请求的工具&#xff0c;除了这些外还有jquery的$.ajax。ajax和$.ajax都是基于XMLHttpRequest。 介绍下XMLHttpRequest XMLHttpRequest是一种在浏览器中用于与服务器进行异步通信的对象&#xff0c;它是实现 AJAX&#xff08;Asynchronous Ja…

微信小程序的业务域名配置(通过ingress网关的注解)

一、背景 微信小程序的业务域名配置&#xff08;通过kong网关的pre-function配置&#xff09;是依靠kong实现&#xff0c;本文将通过ingress网关实现。 而我们的服务是部署于阿里云K8S容器&#xff0c;当然内核与ingress无异。 找到k8s–>网络–>路由 二、ingress注解 …

LiteratureReading:[2016] Enriching Word Vectors with Subword Information

文章目录 一、文献简明&#xff08;zero&#xff09;二、快速预览&#xff08;first&#xff09;1、标题分析2、作者介绍3、引用数4、摘要分析&#xff08;1&#xff09;翻译&#xff08;2&#xff09;分析 5、总结分析&#xff08;1&#xff09;翻译&#xff08;2&#xff09;…

前后端联调解决跨域问题的方案

引言 在前后端分离的开发模式中&#xff0c;前端和后端通常在不同的服务器或端口运行&#xff0c;这样就会面临跨域问题。跨域问题是指浏览器因安全限制阻止前端代码访问与当前网页源不同的域、协议或端口的资源。对于 Java 后端应用&#xff0c;我们可以通过配置 CORS&#x…

开源软件许可证冲突的原因和解决方法

1、什么是开源许可证以及许可证冲突产生的问题 开源软件许可证是一种法律文件&#xff0c;它规定了软件用户、分发者和修改者使用、复制、修改和分发开源软件的权利和义务。开源许可证是由软件的版权所有者&#xff08;通常是开发者或开发团队&#xff09;发布的&#xff0c;它…

python爬虫笔记(一)

文章目录 html基础标签和下划线无序列表和有序列表表格加边框 html的属性a标签&#xff08;网站&#xff09;target属性换行线和水平分割线 图片设置宽高width&#xff0c;height html区块——块元素与行内元素块元素与行内元素块元素举例行内元素举例 表单from标签type属性pla…

电脑节电模式怎么退出 分享5种解决方法

在使用电脑的过程中&#xff0c;许多用户为了节省电力&#xff0c;通常会选择开启电脑的节能模式。然而&#xff0c;在需要更高性能或进行图形密集型任务时&#xff0c;节能模式可能会限制系统的性能表现。这时&#xff0c;了解如何正确地关闭或调整节能设置就显得尤为重要了。…

AI学习——卷积神经网络(CNN)入门

作为人类&#xff0c;我们天生擅长“看”东西&#xff1a;一眼就能认出猫狗、分辨红绿灯、读懂朋友的表情……但计算机的“眼睛”最初是一片空白。直到卷积神经网络&#xff08;CNN&#xff09;​的出现&#xff0c;计算机才真正开始理解图像。今天&#xff0c;我们就用最通俗的…

2025年渗透测试面试题总结- shopee-安全工程师(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 shopee-安全工程师 信息安全相关Response头详解 1. 关键安全头及防御场景 Linux与Docker核心命令速查…

IntelliJ IDEA 中 Maven 的 `pom.xml` 变灰带横线?一文详解解决方法

前言 在使用 IntelliJ IDEA 进行 Java 开发时&#xff0c;如果你发现项目的 pom.xml 文件突然变成灰色并带有删除线&#xff0c;这可能是 Maven 的配置或项目结构出现了问题。 一、问题现象与原因分析 现象描述 文件变灰&#xff1a;pom.xml 在项目资源管理器中显示为灰色。…

Spring MVC 接口数据

访问路径设置 RequestMapping("springmvc/hello") 就是用来向handlerMapping中注册的方法注解! 秘书中设置路径和方法的对应关系&#xff0c;即RequestMapping("/springmvc/hello")&#xff0c;设置的是对外的访问地址&#xff0c; 路径设置 精准路径匹…

技术分享 | MySQL内存使用率高问题排查

本文为墨天轮数据库管理服务团队第51期技术分享&#xff0c;内容原创&#xff0c;如需转载请联系小墨&#xff08;VX&#xff1a;modb666&#xff09;并注明来源。 一、问题现象 问题实例mysql进程实际内存使用率过高 二、问题排查 2.1 参数检查 mysql版本 &#xff1a;8.0.…

【redis】什么是持久化之 RDB

什么是持久化 MySQL 的事务&#xff0c;有四个比较核心的特性&#xff1a; 原子性一致性持久性>持久化&#xff08;说的一回事&#xff09; 把数据存储在硬盘上>持久把数据存在内存上>不持久重启进程/重启主机之后&#xff0c;数据是否还存在 隔离性 Redis 是一个内存…

Python、MATLAB和PPT完成数学建模竞赛中的地图绘制

参加数学建模比赛时&#xff0c;很多题目——诸如统计类、数据挖掘类、环保类、建议类的题目总会涉及到地理相关的情景&#xff0c;往往要求我们制作与地图相关的可视化内容。如下图&#xff0c;这是21年亚太赛的那道塞罕坝的题目&#xff0c;期间涉及到温度、降水和森林覆盖率…

Python(冒泡排序、选择排序、插入法排序、快速排序,算法稳定性)

算法的稳定性 冒泡排序 # 冒泡排序 # 1 思想: 相邻位置两个元素比较, 前面的元素比后面的元素大则交换, 把最大的数给找到 # 经过一轮一轮的比较最终把序列给排序 # 2 关键点1: 两层for循环 外层循环控制多少轮 内层for循环控制比较次数 # 3 关键点2: 若遍历一遍没有数字…

【自用】NLP算法面经(5)

一、L1、L2正则化 正则化是机器学习中用于防止过拟合并提高模型泛化能力的技术。当模型过拟合时&#xff0c;它已经很好地学习了训练数据&#xff0c;甚至是训练数据中的噪声&#xff0c;所以可能无法在新的、未见过的数据上表现良好。 比如&#xff1a; 其中&#xff0c;x1和…

PyCharm安装redis,python安装redis,PyCharm使用失败问题

报错信息 Usage: D:\wb2\wbrj_pys\venv\Scripts\python.exe -m pip install [options] [package-index-options] … D:\wb2\wbrj_pys\venv\Scripts\python.exe -m pip install [options] -r [package-index-options] … D:\wb2\wbrj_pys\venv\Scripts\python.exe -m pip instal…

学习笔记|arduino uno r3|DS1307时钟芯片|Atmega328P| 设置时间|读取时间|无源晶振:DS1307时钟芯片实验

目录 芯片pinout&#xff1a; 实验器件&#xff1a; 实验连线 解决AVR 架构不支持 printf() 方法 使用GetTimeAndDate.ino设置时间&#xff1a; 使用SetTimeAndDate.ino设置时间&#xff1a; 芯片pinout&#xff1a; DS1307 是美国 DALLAS 公司推出的 I 总线接口实时时钟芯…