当前位置: 首页 > article >正文

Pandas 可视化集成:数据科学家的高效绘图指南

为什么选择 Pandas 进行数据可视化?

在数据科学和分析领域,可视化是理解数据、发现模式和传达见解的关键步骤。Python 生态系统提供了多种可视化工具,如 Matplotlib、Seaborn、Plotly 等,但 Pandas 内置的可视化功能因其与数据结构的无缝集成而独树一帜。

Pandas 可视化集成的核心优势在于:

  • 语法简洁:直接通过 DataFrame 或 Series 调用 plot 方法

  • 零配置起步:默认参数已经过优化,适合快速探索

  • 与数据处理流程无缝衔接:无需在数据结构间转换

  • Matplotlib 兼容:可轻松扩展为更复杂的可视化

本文将全面介绍 Pandas 的可视化功能,从基础图表到高级技巧,帮助您高效地将数据转化为见解。

一、Pandas 可视化基础

1.1 绘图架构

Pandas 的绘图功能构建在 Matplotlib 之上,通过 plot() 方法提供高层抽象。当您调用 df.plot() 时,Pandas 实际上是在后台使用 Matplotlib 生成图表。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt# 创建示例数据
np.random.seed(42)
df = pd.DataFrame({'A': np.random.randn(1000),'B': np.random.randn(1000),'C': np.random.rand(1000) * 100
})

1.2 基本绘图语法

所有 Pandas 绘图的核心是 plot() 方法:

# 基本线图
df['A'].plot()  # Series 绘图
df.plot()       # DataFrame 绘图(每列一条线)
plt.show()

1.3 图表类型概览

Pandas 支持的主要图表类型通过 kind 参数指定:

类型kind 参数描述
线图'line'默认类型,显示数据趋势
柱状图'bar'/'barh'垂直/水平比较类别数据
直方图'hist'展示数据分布
箱线图'box'展示数据统计特征
面积图'area'强调数量随时间的变化
散点图'scatter'展示两个变量的关系
饼图'pie'展示比例构成

二、基础图表详解

2.1 线图:追踪数据趋势

线图是 Pandas 的默认图表类型,特别适合展示时间序列数据:

# 创建时间序列数据
date_rng = pd.date_range(start='2023-01-01', end='2023-12-31', freq='D')
ts = pd.DataFrame({'Value': np.sin(np.linspace(0, 10*np.pi, len(date_rng))) + np.random.normal(0, 0.1, len(date_rng))
}, index=date_rng)# 绘制带样式的线图
ts.plot(figsize=(12, 4),style='-',          # 实线color='darkblue',   # 颜色linewidth=1,        # 线宽alpha=0.8,          # 透明度title='时间序列示例')
plt.xlabel('日期')
plt.ylabel('数值')
plt.grid(True, linestyle='--', alpha=0.5)
plt.show()

2.2 柱状图:类别比较

柱状图适合比较不同类别的数值:

# 创建分类数据
categories = ['电子产品', '服装', '食品', '家居']
sales = pd.DataFrame({'第一季度': [120, 85, 90, 70],'第二季度': [150, 78, 95, 80]
}, index=categories)# 绘制分组柱状图
ax = sales.plot(kind='bar',figsize=(10, 6),rot=0,         # 旋转x轴标签width=0.8,     # 柱宽alpha=0.9,edgecolor='black')# 添加数据标签
for p in ax.patches:ax.annotate(f"{p.get_height():.0f}", (p.get_x() + p.get_width() / 2., p.get_height()),ha='center', va='center', xytext=(0, 5),textcoords='offset points')plt.title('季度销售对比')
plt.ylabel('销售额(万元)')
plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left')
plt.tight_layout()
plt.show()

2.3 直方图与核密度估计:理解数据分布

# 绘制直方图与KDE
fig, axes = plt.subplots(1, 2, figsize=(12, 5))df['A'].plot(kind='hist',bins=30,density=True,  # 归一化ax=axes[0],title='直方图',edgecolor='white')df['A'].plot(kind='kde',ax=axes[1],title='核密度估计')plt.suptitle('数据分布分析')
plt.tight_layout()
plt.show()

三、高级可视化技巧

3.1 多子图展示

Pandas 可以轻松创建多子图布局:

# 创建多子图
axes = df.plot(kind='box',subplots=True,layout=(1, 3),figsize=(15, 5),vert=False,patch_artist=True)  # 填充颜色# 自定义样式
colors = ['lightblue', 'lightgreen', 'salmon']
for ax, color in zip(axes[0], colors):for box in ax.artists:box.set_facecolor(color)plt.suptitle('各变量箱线图比较')
plt.tight_layout()
plt.show()

3.2 双坐标轴处理

# 创建双坐标轴图表
ax = df['A'].plot(label='变量A', color='blue')
ax2 = ax.twinx()
df['C'].plot(ax=ax2, label='变量C', color='red')# 合并图例
lines, labels = ax.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
ax.legend(lines + lines2, labels + labels2, loc='upper left')plt.title('双坐标轴示例')
plt.show()

3.3 滚动平均可视化

# 计算滚动平均并绘图
rolling_mean = ts.rolling(window=30).mean()ax = ts.plot(figsize=(12, 5),alpha=0.3,style='-',label='原始数据')
rolling_mean.plot(ax=ax,style='-',linewidth=2,label='30天滚动平均')plt.title('时间序列与滚动平均')
plt.legend()
plt.show()

四、专业级可视化扩展

4.1 散点矩阵图

from pandas.plotting import scatter_matrixscatter_matrix(df,alpha=0.5,figsize=(10, 10),diagonal='kde',marker='o',edgecolor='black')plt.suptitle('散点矩阵图', y=1.02)
plt.tight_layout()
plt.show()

4.2 自相关与偏自相关图

from pandas.plotting import autocorrelation_plotplt.figure(figsize=(12, 5))
autocorrelation_plot(ts['Value'])
plt.title('自相关图')
plt.show()

4.3 滞后分析图

from pandas.plotting import lag_plotplt.figure(figsize=(8, 8))
lag_plot(ts['Value'], lag=7)  # 7天滞后
plt.title('7天滞后图')
plt.show()

五、样式与输出定制

5.1 使用样式表

plt.style.use('seaborn-darkgrid')df.plot(figsize=(10, 5))
plt.title('使用seaborn-darkgrid样式')
plt.show()

5.2 输出高质量图像

fig = df.plot(figsize=(10, 5)).get_figure()
fig.savefig('output.png',dpi=300,bbox_inches='tight',facecolor='white',edgecolor='none')

六、与Seaborn协同工作

虽然Pandas提供了基础可视化功能,但结合Seaborn可以获得更专业的统计图表:

import seaborn as sns# 转换为长格式
df_melt = df.melt(var_name='Variable', value_name='Value')# 使用Seaborn绘制增强箱线图
plt.figure(figsize=(10, 6))
sns.boxplot(x='Variable', y='Value', data=df_melt,palette='Set2',showmeans=True,meanprops={"marker":"o","markerfacecolor":"white", "markeredgecolor":"black","markersize":"8"})plt.title('Seaborn增强箱线图')
plt.show()

结语:Pandas可视化的最佳实践

通过本文的全面介绍,您应该已经掌握了Pandas可视化的核心功能。以下是几个最佳实践建议:

  1. 从简单开始:先用默认参数快速查看数据,再逐步调整

  2. 选择合适的图表类型:根据分析目的选择最能表达信息的图表

  3. 适度美化:在保证清晰度的前提下进行视觉优化

  4. 分层构建:先用Pandas快速原型,再用Matplotlib/Seaborn精细调整

  5. 保持一致性:同一报告中的图表应保持统一风格

Pandas可视化是数据探索的利器,虽然它可能无法替代专业可视化库的所有功能,但在大多数日常数据分析场景中,它提供了效率与灵活性的完美平衡。

 

相关文章:

Pandas 可视化集成:数据科学家的高效绘图指南

为什么选择 Pandas 进行数据可视化? 在数据科学和分析领域,可视化是理解数据、发现模式和传达见解的关键步骤。Python 生态系统提供了多种可视化工具,如 Matplotlib、Seaborn、Plotly 等,但 Pandas 内置的可视化功能因其与数据结…...

新版NANO下载烧录过程

一、序言 搭建 Jetson 系列产品烧录系统的环境需要在电脑主机上安装 Ubuntu 系统。此处使用 18.04 LTS。 二、环境搭建 1、安装库 $ sudo apt-get install qemu-user-static$ sudo apt-get install python 搭建环境的过程需要这个应用库来将某些 NVIDIA 软件组件安装到 Je…...

Vue 实例的数据对象详解

Vue 实例的数据对象详解 在 Vue 中,数据对象是响应式系统的核心,也是组件状态的载体。理解数据对象的原理和使用方式是成为 Vue 专家的关键一步。我将从多个维度深入剖析 Vue 实例的数据对象。 一、数据对象的定义方式 1. Options API 中的定义 在 Options API 中,使用 …...

Axure Rp 11 安装、汉化、授权

Axure Rp 11 安装、汉化、授权 1、前言2、汉化2.1、汉化文件下载2.2、windows汉化流程2.3、 macOs汉化流程 3、授权 1、前言 Axure Rp 11官方下载链接:https://www.axure.com/downloadthanks 2、汉化 2.1、汉化文件下载 链接: https://pan.baidu.com/s/18Clf…...

中科院1区顶刊|IF14+:多组学MR联合单细胞时空分析,锁定心血管代谢疾病的免疫治疗新靶点

中科院1区顶刊|IF14:多组学MR联合单细胞时空分析,锁定心血管代谢疾病的免疫治疗新靶点 当下,免疫与代谢性疾病的关联研究已成为生命科学领域的前沿热点。随着研究的深入,我们愈发清晰地认识到免疫系统与代谢系统之间存在着极为复…...

GB/T 43887-2024 核级柔性石墨板材检测

核级柔性石墨板材是指以可膨胀石墨为原料、未经改性和增强、用于核工业的核级柔性石墨板材。 GB/T 43887-2024核级柔性石墨板材检测检测指标: 测试项目 测试标准 外观 GB/T 43887 尺寸偏差 GB/T 43887 化学成分 GB/T 43887 密度偏差 GB/T 43887 拉伸强度…...

ffmpeg(三):处理原始数据命令

FFmpeg 可以直接处理原始音频和视频数据(Raw PCM、YUV 等),常见场景包括: 将原始 YUV 图像编码为 H.264 视频将 PCM 音频编码为 AAC 或 MP3对原始音视频数据进行封装(如封装为 MP4、TS) 处理原始 YUV 视频…...

标注工具核心架构分析——主窗口的图像显示

🏗️ 标注工具核心架构分析 📋 系统概述 主要有两个核心类,采用经典的 Scene-View 架构模式: 🎯 核心类结构 1. AnnotationScene (QGraphicsScene子类) 主要负责标注场景的管理和交互 🔧 关键函数&…...

作为点的对象CenterNet论文阅读

摘要 检测器将图像中的物体表示为轴对齐的边界框。大多数成功的目标检测方法都会枚举几乎完整的潜在目标位置列表,并对每一个位置进行分类。这种做法既浪费又低效,并且需要额外的后处理。在本文中,我们采取了不同的方法。我们将物体建模为单…...

基于Java项目的Karate API测试

Karate 实现了可以只编写Feature 文件进行测试,但是对于熟悉Java语言的开发或是测试人员,可以通过编程方式集成 Karate 丰富的自动化和数据断言功能。 本篇快速介绍在Java Maven项目中编写和运行测试的示例。 创建Maven项目 最简单的创建项目的方式就是创建一个目录,里面…...

自定义线程池1.2

自定义线程池 1.2 1. 简介 上次我们实现了 1.1 版本,将线程池中的线程数量交给使用者决定,并且将线程的创建延迟到任务提交的时候,在本文中我们将对这个版本进行如下的优化: 在新建线程时交给线程一个任务。让线程在某种情况下…...

Spring事务传播机制有哪些?

导语: Spring事务传播机制是后端面试中的必考知识点,特别容易出现在“项目细节挖掘”阶段。面试官通过它来判断你是否真正理解事务控制的本质与异常传播机制。本文将从实战与源码角度出发,全面剖析Spring事务传播机制,帮助你答得有…...

使用ch340继电器完成随机断电测试

前言 如图所示是市面上常见的OTA压测继电器,通过ch340串口模块完成对继电器的分路控制,这里我编写了一个脚本方便对4路继电器的控制,可以设置开启时间,关闭时间,复位等功能 软件界面 在设备管理器查看串口号后&…...

基于谷歌ADK的 智能产品推荐系统(2): 模块功能详解

在我的上一篇博客:基于谷歌ADK的 智能产品推荐系统(1): 功能简介-CSDN博客 中我们介绍了个性化购物 Agent 项目,该项目展示了一个强大的框架,旨在模拟和实现在线购物环境中的智能导购。它不仅仅是一个简单的聊天机器人,更是一个集…...

VSCode 没有添加Windows右键菜单

关键字:VSCode;Windows右键菜单;注册表。 文章目录 前言一、工程环境二、配置流程1.右键文件打开2.右键文件夹打开3.右键空白处打开文件夹 三、测试总结 前言 安装 VSCode 时没有注意,实际使用的时候发现 VSCode 在 Windows 菜单栏…...

vxe-table vue 表格复选框多选数据,实现快捷键 Shift 批量选择功能

vxe-table vue 表格复选框多选数据&#xff0c;实现快捷键 Shift 批量选择功能 查看官网&#xff1a;https://vxetable.cn 效果 代码 通过 checkbox-config.isShift 启用批量选中,启用后按住快捷键和鼠标批量选取 <template><div><vxe-grid v-bind"gri…...

Android Framework预装traceroute执行文件到system/bin下

文章目录 Android SDK中寻找traceroute代码内置traceroute到SDK中traceroute参数说明-I 参数&#xff08;使用 ICMP Echo 请求&#xff09;-T 参数&#xff08;使用 TCP SYN 包&#xff09; 相关文章 Android SDK中寻找traceroute代码 设备使用的是Android 11&#xff0c;在/s…...

生信服务器 | 做生信为什么推荐使用Linux服务器?

原文链接&#xff1a;生信服务器 | 做生信为什么推荐使用Linux服务器&#xff1f; 一、 做生信为什么推荐使用服务器&#xff1f; 大家好&#xff0c;我是小杜。在做生信分析的同学&#xff0c;或是将接触学习生信分析的同学&#xff0c;<font style"color:rgb(53, 1…...

react-pdf(pdfjs-dist)如何兼容老浏览器(chrome 49)

之前都是使用react-pdf来渲染pdf文件&#xff0c;这次有个需求是要兼容xp环境&#xff0c;xp上chrome最高支持到49&#xff0c;虽然说iframe或者embed都可以实现预览pdf&#xff0c;但为了后续的定制化需求&#xff0c;还是需要使用js库来渲染。 chrome 49测试环境 能用的测试…...

RKNN开发环境搭建2-RKNN Model Zoo 环境搭建

目录 1.简介2.环境搭建2.1 启动 docker 环境2.2 安装依赖工具2.3 下载 RKNN Model Zoo2.4 RKNN模型转化2.5编译C++1.简介 RKNN Model Zoo基于 RKNPU SDK 工具链开发, 提供了目前主流算法的部署例程. 例程包含导出RKNN模型, 使用 Python API, CAPI 推理 RKNN 模型的流程.   本…...

AT模式下的全局锁冲突如何解决?

一、全局锁冲突解决方案 1. 业务层重试机制&#xff08;推荐方案&#xff09; Service public class OrderService {GlobalTransactionalRetryable(maxAttempts 3, backoff Backoff(delay 100))public void createOrder(OrderDTO order) {// 库存扣减&#xff08;自动加全…...

20250609在荣品的PRO-RK3566开发板的Android13下解决串口可以执行命令但是脚本执行命令异常的问题

20250609在荣品的PRO-RK3566开发板的Android13下解决串口可以执行命令但是脚本执行命令异常的问题 2025/6/9 20:54 缘起&#xff0c;为了跨网段推流&#xff0c;千辛万苦配置好了网络参数。 但是命令iptables -t filter -F tetherctrl_FORWARD可以在调试串口/DEBUG口正确执行。…...

[QMT量化交易小白入门]-六十二、ETF轮动中简单的评分算法如何获取历史年化收益32.7%

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。 QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。 文章目录 相关阅读1. 策略概述2. 趋势评分模块3 代码解析4 木头…...

21-Oracle 23 ai-Automatic SQL Plan Management(SPM)

小伙伴们&#xff0c;有没有迁移数据库完毕后或是突然某一天在同一个实例上同样的SQL&#xff0c; 性能不一样了、业务反馈卡顿、业务超时等各种匪夷所思的现状。 于是SPM定位开始&#xff0c;OCM考试中SPM必考。 其他的AWR、ASH、SQLHC、SQLT、SQL profile等换作下一个话题…...

性能优化中,多面体模型基本原理

1&#xff09;多面体编译技术是一种基于多面体模型的程序分析和优化技术&#xff0c;它将程序 中的语句实例、访问关系、依赖关系和调度等信息映射到多维空间中的几何对 象&#xff0c;通过对这些几何对象进行几何操作和线性代数计算来进行程序的分析和优 化。 其中&#xff0…...

【Zephyr 系列 16】构建 BLE + LoRa 协同通信系统:网关转发与混合调度实战

🧠关键词:Zephyr、BLE、LoRa、混合通信、事件驱动、网关中继、低功耗调度 📌面向读者:希望将 BLE 和 LoRa 结合应用于资产追踪、环境监测、远程数据采集等场景的开发者 📊篇幅预计:5300+ 字 🧭 背景与需求 在许多 IoT 项目中,单一通信方式往往难以兼顾近场数据采集…...

二维数组 行列混淆区分 js

二维数组定义 行 row&#xff1a;是“横着的一整行” 列 column&#xff1a;是“竖着的一整列” 在 JavaScript 里访问二维数组 grid[i][j] 表示 第i行第j列的元素 let grid [[1, 2, 3], // 第0行[4, 5, 6], // 第1行[7, 8, 9] // 第2行 ];// grid[i][j] 表示 第i行第j列的…...

HTML版英语学习系统

HTML版英语学习系统 这是一个完全免费、无需安装、功能完整的英语学习工具&#xff0c;使用HTML CSS JavaScript实现。 功能 文本朗读练习 - 输入英文文章&#xff0c;系统朗读帮助练习听力和发音&#xff0c;适合跟读练习&#xff0c;模仿学习&#xff1b;实时词典查询 - 双…...

【threejs】每天一个小案例讲解:创建基本的3D场景

代码仓 GitHub - TiffanyHoo/three_practices: Learning three.js together! 可自行clone&#xff0c;无需安装依赖&#xff0c;直接liver-server运行/直接打开chapter01中的html文件 运行效果图 知识要点 核心三要素 场景&#xff08;Scene&#xff09; 使用 THREE.Scene(…...

C#中用于控制自定义特性(Attribute)

我们来详细解释一下 [AttributeUsage(AttributeTargets.Class, AllowMultiple false, Inherited false)] 这个 C# 属性。 在 C# 中&#xff0c;Attribute&#xff08;特性&#xff09;是一种用于向程序元素&#xff08;如类、方法、属性等&#xff09;添加元数据的机制。Attr…...