pandas 绘图入门:从一行 `.plot()` 快速可视化到 Matplotlib 深度定制
pandas 绘图入门从一行.plot()快速可视化到 Matplotlib 深度定制【免费下载链接】pandasFlexible and powerful data analysis / manipulation library for Python, providing labeled data structures similar to R data.frame objects, statistical functions, and much more项目地址: https://gitcode.com/gh_mirrors/pa/pandas导读本文以 pandas 官方入门教程“How do I create plots in pandas?”对应仓库中的 04_plotting.rst为核心讲解如何用 pandas 内建的绘图接口完成从“快速总览数据”到“深度定制并保存图表”的完整流程。你将掌握.plot访问器的用法、Series 与 DataFrame 的绘图差异、scatter/box/area等常用图表类型、subplots子图布局以及把 pandas 图表与 Matplotlib 对象打通后进行定制与导出的实战技巧。文中所有代码均可基于仓库自带的空气质量示例数据 doc/data/air_quality_no2.csv 直接运行。准备数据空气质量 NO₂ 时序数据集本教程使用空气质量的 NO₂ 监测数据该数据由 OpenAQ 提供。air_quality_no2.csv数据集记录了巴黎站点 FR04014、安特卫普站点 BETR801和伦敦站点 London Westminster三个测量站的 NO₂ 浓度值文件位于仓库的 doc/data/air_quality_no2.csv共 1036 行数据包含datetime、station_antwerp、station_paris、station_london四列。import pandas as pd import matplotlib.pyplot as plt air_quality pd.read_csv( doc/data/air_quality_no2.csv, index_col0, parse_datesTrue ) air_quality.head()这里read_csv的两个关键参数值得说明index_col0将第 0 列datetime指定为结果 DataFrame 的索引parse_datesTrue将该列中的日期字符串解析为Timestamp对象而不是普通字符串。两者配合后数据就变成了一个真正的时序 DataFrame索引是时间戳三列分别是三个站点的 NO₂ 浓度读数——这正是后续所有绘图示例的数据基础。快速总览一行代码画出所有数值列拿到数据后最常见的需求是“先快速看一眼数据长什么样”。对 DataFrame 调用无参的plot()即可air_quality.plot() plt.show()当调用对象是 DataFrame 时pandas 会默认为每一列数值数据绘制一条折线图三列数据对应三条曲线并自动附带图例。这个默认行为在源码中可以看到完整的定义DataFrame 的plot属性是挂在 pandas/core/frame.py 上的访问器plot Accessor(plot, pandas.plotting.PlotAccessor)而PlotAccessor类定义在 pandas/plotting/_core.py其默认kind为line且 DataFrame 路径下legend默认值为TrueSeries 路径下默认值为False这就是为什么 DataFrame 折线图默认带图例而 Series 不带。只绘制特定列Series 与 DataFrame 共用.plot如果只想看巴黎站点的数据可以先用上一教程03_subset_data.rst介绍的列选择方法取出该列再调用plotair_quality[station_paris].plot() plt.show()选择出的air_quality[station_paris]是一个 Series它同样拥有.plot方法。也就是说.plot系列方法同时适用于 Series 和 DataFrame选择操作与绘图操作可以自然地组合在一起。散点图比较伦敦与巴黎两列数据折线图适合观察随时间的变化趋势而要“比较两个站点的读数关系”时散点图更直观air_quality.plot.scatter(xstation_london, ystation_paris, alpha0.5) plt.show()x与y参数分别指定散点图的横纵坐标列alpha0.5控制散点的透明度用于缓解数据点重叠造成的视觉遮挡。从源码看scatter与hexbin是仅针对 DataFrame 开放的图表类型定义在 pandas/plotting/_core.py 的scatter方法与同文件第 2310 行的hexbin方法因为它们天然依赖 DataFrame 的多列映射。有哪些绘图类型dir()快速盘点除了默认的折线图pandas 还内置了多种图表类型。用标准 Python 即可快速枚举访问器上的全部公开方法[ method_name for method_name in dir(air_quality.plot) if not method_name.startswith(_) ]在 IPython 或 Jupyter Notebook 等开发环境中也可以直接输入air_quality.plot.后按TAB 键触发自动补全实时查看可用方法列表。这些绘图类型在源码 pandas/plotting/_core.py 中被明确分类为三组类别图表类型说明通用类型Series 与 DataFrame 均可用line、bar、barh、kde、density、area、hist、boxdensity是kde的别名Series 专属pie饼图DataFrame 专属scatter、hexbin散点图、六边形分箱图每种类型在PlotAccessor中都有对应的同名方法例如linepandas/plotting/_core.py、bar第 1542 行、box第 1830 行、area第 2072 行等调用DataFrame.plot.bar()与DataFrame.plot(kindbar)是等价的两种写法。箱线图示例快速查看数值分布其中DataFrame.plot.box对应统计学中的箱线图box plot适用于快速查看各列数值的分布、四分位数与离群点情况。直接作用于空气质量数据air_quality.plot.box() plt.show()每个站点的 NO₂ 浓度序列会分别生成一个箱体便于横向对比三个站点的浓度水平与波动范围。更多除默认折线图之外的图表类型介绍可参见用户指南中的 supported plot styles 章节。子图布局subplotsTrue让每列各占一个坐标系默认情况下DataFrame 的所有列会被画在同一个坐标系中。当各列的数值量级差异较大、互相重叠难以辨认时可以要求每列一个独立子图axs air_quality.plot.area(figsize(12, 4), subplotsTrue) plt.show()subplotsTrue为每一列生成独立的子图figsize(12, 4)设置整幅图的宽高单位英寸plot.area面积图默认即为堆叠stacked效果。subplots参数在 PlotAccessor 的文档字符串中有更细致的说明它除了接受布尔值还可以接受“由列标签迭代器组成的序列”例如[(a, c), (b, d)]会把列a、c合并到第一个子图列b、d合并到第二个子图未指定的其余列则各自单独成图。与之配套的常用参数还包括sharex多个子图共享 x 轴axNone时默认True、sharey共享 y 轴默认False和layout子图的行列排布。这些参数的组合使用可参考用户指南的 plot formatting 章节。深度定制与保存打通 pandas 与 Matplotlibpandas 绘制的每一个图表对象本质上都是一个Matplotlib 对象。Matplotlib 提供了海量的定制能力只要把 pandas 与 Matplotlib 的通道显式打通就能把全部 Matplotlib 能力应用到图表上。下面的例子演示了这一策略fig, axs plt.subplots(figsize(12, 4)) # 1. 创建空白的 Matplotlib Figure 与 Axes air_quality.plot.area(axaxs) # 2. 用 pandas 把面积图绘制到准备好的 Figure/Axes 上 axs.set_ylabel(NO$_2$ concentration) # 3. 任意调用 Matplotlib 定制方法 fig.savefig(no2_concentrations.png) # 4. 用 Matplotlib 自带方法保存图表 plt.show() # 5. 显示图表四步分工非常清晰plt.subplots(figsize(12, 4))由 Matplotlib 创建一个空白 Figure 和 Axes同时设定画布尺寸air_quality.plot.area(axaxs)通过 pandas 的ax参数把数据绘制到上一步准备的坐标系上而非自动新建axs.set_ylabel(...)此后即可对坐标系做任意 Matplotlib 层面的定制例如这里设置 y 轴标签$_2$是 Matplotlib 的 LaTeX 风格数学下标写法fig.savefig(...)/plt.show()用标准 Matplotlib 方法导出图片文件或显示图表。从底层实现看pandas 绘图之所以能与 Matplotlib 无缝衔接是因为PlotAccessor在 _get_plot_backend 中通过选项plotting.backend选择绘图后端默认后端即为 Matplotlib。这意味着你甚至可以把后端替换为其他可视化库通过pd.options.plotting.backend ...设置会话级后端或在单次调用时传backend...参数指定后端。只要理解了“pandas 负责把数据翻译成 Matplotlib 调用、Matplotlib 负责渲染与定制”这一分层关系就掌握了扩展的方向。小结记住这三点.plot.*方法同时适用于 Series 和 DataFrame可以自由地与选择、聚合等操作组合默认情况下每一列数据会被绘制为不同的图形元素折线、箱体等pandas 创建的任何图表都是 Matplotlib 对象因此 Matplotlib 的全部定制、标注与导出能力都可直接使用。本教程的完整绘图能力总览含全部图表类型、格式化选项与后端扩展机制可继续阅读用户指南的 visualization 章节以及PlotAccessor在 pandas/plotting/_core.py 中的完整参数文档含xlim/ylim、logx/logy、colormap、secondary_y、stacked、rot、fontsize等全部参数的含义与默认值。【免费下载链接】pandasFlexible and powerful data analysis / manipulation library for Python, providing labeled data structures similar to R data.frame objects, statistical functions, and much more项目地址: https://gitcode.com/gh_mirrors/pa/pandas创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Kafka核心原理深度解析:架构、存储、副本与消费模型实战

Kafka核心原理深度解析:架构、存储、副本与消费模型实战

1. 为什么值得把 Kafka 的底层逻辑啃透刚接触 Kafka 那会儿,我跟很多人一样,觉得它就是个"发消息、收消息"的中间件,会敲几条命令行、能跑通生产消费就算入门了。直到线上真出问题——消费组莫名其妙卡住、Lag 一路飙升、重复消费把…

2026/9/19 5:35:30 阅读更多 →
Unity游戏Google Play闪退排查指南:Graphics Jobs等隐藏设置实战解析

Unity游戏Google Play闪退排查指南:Graphics Jobs等隐藏设置实战解析

1. 闪退问题到底出在哪儿?先分清崩溃阶段再动手前阵子后台收到一条差评,说游戏在Google Play下载安装没问题,但一点图标就白屏闪退。我自己在本地用同一台测试机装了好几次都好好的,为什么到了线上就崩?后来拉了一堆日…

2026/9/19 5:35:30 阅读更多 →
Textual 滚动条(textual.scrollbar):终端滚动条的渲染、交互与自定义扩展指南

Textual 滚动条(textual.scrollbar):终端滚动条的渲染、交互与自定义扩展指南

Textual 滚动条(textual.scrollbar):终端滚动条的渲染、交互与自定义扩展指南 【免费下载链接】textual The lean application framework for Python. Build sophisticated user interfaces with a simple Python API. Run your apps in the …

2026/9/19 5:35:30 阅读更多 →

最新新闻

N_m3u8DL-RE完整用法:一条命令把M3U8/MPD/ISM流媒体存成本地文件

N_m3u8DL-RE完整用法:一条命令把M3U8/MPD/ISM流媒体存成本地文件

N_m3u8DL-RE完整用法:一条命令把M3U8/MPD/ISM流媒体存成本地文件 【免费下载链接】N_m3u8DL-RE Cross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文. 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3…

2026/9/19 6:14:49 阅读更多 →
STM32F103开发环境搭建:MDK-ARM v5.43a安装配置与调试指南

STM32F103开发环境搭建:MDK-ARM v5.43a安装配置与调试指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 6:14:49 阅读更多 →
网盘直链下载指南:10 分钟免客户端拿到九大网盘的真实下载地址

网盘直链下载指南:10 分钟免客户端拿到九大网盘的真实下载地址

网盘直链下载指南:10 分钟免客户端拿到九大网盘的真实下载地址 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘…

2026/9/19 6:14:49 阅读更多 →
sqlmap 使用指南:自动化 SQL 注入检测与数据库接管工具的安装与实战入门

sqlmap 使用指南:自动化 SQL 注入检测与数据库接管工具的安装与实战入门

sqlmap 使用指南:自动化 SQL 注入检测与数据库接管工具的安装与实战入门 【免费下载链接】sqlmap Automatic SQL injection and database takeover tool 项目地址: https://gitcode.com/gh_mirrors/sq/sqlmap sqlmap 是一款开源的渗透测试工具,用…

2026/9/19 6:14:49 阅读更多 →
Sunshine 游戏串流快速上手:30 分钟从安装到开串

Sunshine 游戏串流快速上手:30 分钟从安装到开串

Sunshine 游戏串流快速上手:30 分钟从安装到开串 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine 是一款免费开源的自托管游戏串流服务器,搭配 Moo…

2026/9/19 6:14:49 阅读更多 →
淘客导购网站怎么做进阶技巧

淘客导购网站怎么做进阶技巧

没代码基础?3步教你从零搭建高转化淘客导购站 很多想搞副业的朋友卡在第一关:手里有选品思路,脑子有流量玩法,但一听到“建站”俩字就头大。 自己不会代码想做网站 ,这是最真实的痛点。别慌,现在的技术栈早就不是只有写代码才能上网的时代了。…

2026/9/19 6:14:29 阅读更多 →

日新闻

BP神经网络时序预测:滑窗长度与多窗口平均策略

BP神经网络时序预测:滑窗长度与多窗口平均策略

简介:面向机器学习、深度学习与数据建模学习者的一份完整研究文献,聚焦BP神经网络在农业产量预测中的应用。文档以1980—2018年全国棉花产量为样本,系统讲解数据归一化处理、激活函数原理、多层神经网络结构搭建及训练流程,展示敏…

2026/9/19 0:00:30 阅读更多 →
Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

上个月调一个Deformable DETR模型,在单卡上要跑将近两天。第二天早上我下意识打开终端翻日志,发现loss从凌晨两点就开始往上爬,一路从0.8涨到1.35,整整六个小时没人发现。那六个小时的训练不仅白跑,还霸占着卡——等于…

2026/9/19 0:00:30 阅读更多 →
OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南 【免费下载链接】opencloud 🌤️ OpenCloud is the open source platform for file management, sharing and collaboration. Simple and sovereign. 项目地址: htt…

2026/9/19 0:00:30 阅读更多 →

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/19 3:59:36 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/19 3:53:08 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/19 4:02:43 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/16 22:31:27 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/15 21:39:18 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/16 22:32:59 阅读更多 →