一周学会Pandas2之Python数据处理与分析-Pandas2数据绘图与可视化
锋哥原创的Pandas2 Python数据处理与分析 视频教程:
2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili
Pandas 集成了 Matplotlib,提供了简单高效的绘图接口,使数据可视化变得直观便捷。本指南将详细介绍 Pandas 绘图的核心知识和方法,涵盖各种图表类型和高级技巧。
一、绘图基础与设置
1.1 基础绘图方法
Pandas 的 plot()
方法是绘图的核心入口点:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl
# 引入支持中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False
# 创建示例数据
np.random.seed(42)
df = pd.DataFrame({'A': np.random.randn(100).cumsum(),'B': np.random.randn(100).cumsum(),'C': np.random.randn(100).cumsum()
}, index=pd.date_range('2023-01-01', periods=100))
# 基本绘图
df.plot(figsize=(10, 6))
plt.title('基本折线图')
plt.ylabel('数值')
plt.xlabel('日期')
plt.grid(True)
plt.show()
1.2 绘图参数详解
常用绘图参数:
df.plot(kind='line', # 图表类型figsize=(12, 8), # 图表尺寸title='图表标题', # 标题grid=True, # 显示网格legend=True, # 显示图例colormap='viridis', # 颜色映射alpha=0.8, # 透明度style=['-', '--', ':'], # 线条样式logy=True, # Y轴对数刻度secondary_y=['B'] # 双Y轴
)
二、图表类型详解
2.1 折线图 (Line Plot)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl
# 引入支持中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False
# 创建示例数据
np.random.seed(42)
df = pd.DataFrame({'A': np.random.randn(100).cumsum(),'B': np.random.randn(100).cumsum(),'C': np.random.randn(100).cumsum()
}, index=pd.date_range('2023-01-01', periods=100))
# 基础折线图
df.plot(kind='line', figsize=(10, 6))
# 多线图定制
ax = df.plot(style={'A': 'g--', # 绿色虚线'B': 'ro-', # 红色圆点实线'C': 'b:' # 蓝色点线},linewidth=2,title='定制折线图'
)
ax.set_ylabel('数值')
ax.set_xlabel('日期')
plt.grid(True, linestyle='--', alpha=0.7)
plt.show()
2.2 柱状图 (Bar Plot)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl
# 引入支持中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False
# 创建示例数据
bar_data = pd.DataFrame({'类别': ['苹果', '香蕉', '橙子', '葡萄', '西瓜'],'销量': [120, 85, 110, 65, 95],'价格': [8.5, 6.0, 7.2, 12.8, 4.5]
})
# 垂直柱状图
bar_data.plot(kind='bar', x='类别', y='销量',color='skyblue', figsize=(10, 6),title='水果销量柱状图')
plt.ylabel('销量')
plt.show()
# 水平柱状图
bar_data.plot(kind='barh', x='类别', y='价格',color='salmon', figsize=(10, 6),title='水果价格水平柱状图')
plt.xlabel('价格(元/公斤)')
plt.show()
2.3 堆叠柱状图 (Stacked Bar Plot)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl
# 引入支持中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False
# 创建示例数据
sales_data = pd.DataFrame({'季度': ['Q1', 'Q2', 'Q3', 'Q4'],'线上': [120, 150, 180, 200],'线下': [80, 95, 110, 125],'批发': [200, 220, 250, 280]
})
# 堆叠柱状图
ax = sales_data.plot(kind='bar',stacked=True,x='季度',figsize=(10, 6),title='季度销售渠道分布',colormap='Set2'
)
# 添加数据标签
for p in ax.patches:width, height = p.get_width(), p.get_height()x, y = p.get_xy()if height > 0:ax.annotate(f'{height:.0f}', (x + width / 2, y + height / 2),ha='center', va='center')
plt.ylabel('销售额(万元)')
plt.show()
2.4 直方图 (Histogram)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl
# 引入支持中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False
# 创建示例数据
np.random.seed(42)
normal_data = pd.Series(np.random.normal(0, 1, 1000))
exp_data = pd.Series(np.random.exponential(1, 1000))
# 直方图
fig, axes = plt.subplots(1, 2, figsize=(14, 6))
normal_data.plot(kind='hist', bins=30, ax=axes[0],color='skyblue', edgecolor='black',title='正态分布直方图')
axes[0].set_xlabel('值')
exp_data.plot(kind='hist', bins=30, ax=axes[1],color='salmon', edgecolor='black',title='指数分布直方图')
axes[1].set_xlabel('值')
plt.tight_layout()
plt.show()
2.5 密度图 (Density Plot)
需要新安装scipy库
pip install scipy -i https://mirrors.aliyun.com/pypi/simple
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl
# 引入支持中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False
# 创建示例数据
np.random.seed(42)
normal_data = pd.Series(np.random.normal(0, 1, 1000))
exp_data = pd.Series(np.random.exponential(1, 1000))
# 密度图
fig, ax = plt.subplots(figsize=(10, 6))
normal_data.plot(kind='kde', ax=ax, label='正态分布')
exp_data.plot(kind='kde', ax=ax, label='指数分布')
ax.set_title('分布密度比较')
ax.set_xlabel('值')
ax.legend()
ax.grid(True, linestyle='--', alpha=0.7)
plt.show()
2.6 箱线图 (Box Plot)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl
# 引入支持中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False
# 创建示例数据
np.random.seed(42)
box_data = pd.DataFrame({'A': np.random.normal(0, 1, 100),'B': np.random.normal(2, 1.5, 100),'C': np.random.normal(-1, 0.8, 100),'D': np.random.exponential(1, 100)
})
# 箱线图
ax = box_data.plot(kind='box', figsize=(10, 6),title='多变量箱线图比较',vert=False, # 水平箱线图patch_artist=True, # 填充颜色boxprops=dict(facecolor='lightblue'),medianprops=dict(color='red', linewidth=2),whiskerprops=dict(color='black'),capprops=dict(color='black'),flierprops=dict(marker='o', markersize=5, markerfacecolor='gray'))
ax.set_xlabel('值')
plt.grid(True, axis='x', linestyle='--', alpha=0.7)
plt.show()
2.7 散点图 (Scatter Plot)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl
# 引入支持中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False
# 创建示例数据
np.random.seed(42)
data = {'销售额': np.random.normal(50000, 15000, 100),'广告投入': np.random.normal(10000, 3000, 100),'客户满意度': np.random.randint(1, 10, 100),'产品类别': np.random.choice(['A', 'B', 'C'], 100)
}
df = pd.DataFrame(data)
# 基础散点图
df.plot.scatter(x='广告投入', y='销售额',title='广告投入 vs 销售额',figsize=(10, 6),grid=True)
plt.tight_layout()
plt.savefig('basic_scatter.png', dpi=120)
plt.show()
2.8 饼图 (Pie Chart)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl
# 引入支持中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False
# 创建示例数据
pie_data = pd.Series({'亚洲': 45,'欧洲': 25,'北美': 15,'南美': 8,'非洲': 5,'大洋洲': 2
}, name='市场份额')
# 饼图
ax = pie_data.plot(kind='pie', figsize=(10, 8), autopct='%1.1f%%',startangle=90, shadow=True, explode=[0.1, 0, 0, 0, 0, 0],colors=['#ff9999', '#66b3ff', '#99ff99', '#ffcc99', '#c2c2f0', '#ffb3e6'],title='全球市场份额分布')
ax.set_ylabel('') # 隐藏Y轴标签
plt.axis('equal') # 保证饼图是圆形
plt.show()
三、时间序列可视化
基础时间序列图
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl
# 引入支持中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False
# 创建时间序列数据
np.random.seed(42)
dates = pd.date_range('2023-01-01', periods=365)
ts_data = pd.DataFrame({'销量': 100 + np.sin(np.linspace(0, 10 * np.pi, 365)) * 50 +np.random.normal(0, 10, 365),'温度': 15 + 20 * np.sin(np.linspace(0, 2 * np.pi, 365)) +np.random.normal(0, 3, 365)
}, index=dates)
# 时间序列图
ax = ts_data['销量'].plot(figsize=(12, 6), color='blue', label='销量')
ax.set_ylabel('销量')
# 双Y轴
ax2 = ax.twinx()
ts_data['温度'].plot(ax=ax2, color='red', linestyle='--', label='温度')
ax2.set_ylabel('温度(℃)')
# 添加标题和图例
plt.title('销量与温度变化趋势')
lines, labels = ax.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
ax.legend(lines + lines2, labels + labels2, loc='upper left')
# 添加网格
ax.grid(True, linestyle='--', alpha=0.7)
plt.show()
相关文章:

一周学会Pandas2之Python数据处理与分析-Pandas2数据绘图与可视化
锋哥原创的Pandas2 Python数据处理与分析 视频教程: 2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili Pandas 集成了 Matplotlib,提供了简单高效的绘图接口,使数据可视化变得直观便捷。本指南将详…...

企业级安全实践:SSL/TLS 加密与权限管理(一)
引言 ** 在数字化转型的浪潮中,企业对网络的依赖程度与日俱增,从日常办公到核心业务的开展,都离不开网络的支持。与此同时,网络安全问题也日益严峻,成为企业发展过程中不可忽视的重要挑战。 一旦企业遭遇网络安全事…...

2025——》VSCode Windows 最新安装指南/VSCode安装完成后如何验证是否成功?2025最新VSCode安装配置全攻略
1.VSCode Windows 最新安装指南: 以下是 2025 年 Windows 系统下安装 Visual Studio Code(VSCode)的最新指南,结合官方文档与实际操作经验整理而成: 一、下载官方安装包: 1.访问官网: 打开浏览器,进入 VSCode 官方下载页面https://code.visualstudio.com/Download 2…...
RabbitMQ如何保证消息可靠性
RabbitMQ是一个流行的开源消息代理,它提供了可靠的消息传递机制,广泛应用于分布式系统和微服务架构中。在现代应用中,确保消息的可靠性至关重要,以防止消息丢失和重复处理。本文将详细探讨RabbitMQ如何通过多种机制保证消息的可靠…...

【MATLAB代码】制导——三点法,二维平面下的例程|运动目标制导,附完整源代码
三点法制导是一种导弹制导策略,主要用于确保导弹能够准确追踪并击中移动目标。该方法通过计算导弹、目标和制导站之间的相对位置关系,实现对目标的有效制导。 本文给出MATLAB下的三点法例程,模拟平面上捕获运动目标的情况订阅专栏后可直接查看源代码,粘贴到MATLAB空脚本中即…...
Spring Security用户管理机制详解
UserDetailsService契约解析 核心方法解析 UserDetailsService接口仅定义了一个关键方法loadUserByUsername(),其方法签名如下: public interface UserDetailsService {UserDetails loadUserByUsername(String username) throws UsernameNotFoundException; }该方法作为用…...

如何爬取google应用商店的应用分类呢?
以下是爬取Google Play商店应用包名(package name)和对应分类的完整解决方案,采用ScrapyPlaywright组合应对动态渲染页面,并处理反爬机制: 完整爬虫实现 1. 安装必要库 # 卸载现有安装pip uninstall playwright scrapy-playwright -y# 重新…...

SQL Relational Algebra(数据库关系代数)
目录 What is an “Algebra” What is Relational Algebra? Core Relational Algebra Selection Projection Extended Projection Product(笛卡尔积) Theta-Join Natural Join Renaming Building Complex Expressions Sequences of Assignm…...
如何安装huaweicloud-sdk-core-3.1.142.jar到本地仓库?
如何安装huaweicloud-sdk-core-3.1.142.jar到本地仓库? package com.huaweicloud.sdk.core.auth does not exist 解决方案 # 下载huaweicloud-sdk-core-3.1.142.jar wget https://repo1.maven.org/maven2/com/huaweicloud/sdk/huaweicloud-sdk-core/3.1.142/huawe…...
Electron桌面应用下,在拍照、展示pdf等模块时,容易导致应用白屏
Electron 应用白屏问题分析与解决方案 Electron 应用中拍照、PDF展示等模块导致白屏的常见原因通常与内存泄漏、渲染进程崩溃或资源加载超时有关。以下是具体排查与解决方法: 检查内存泄漏 项目中,分析代码,高频操作或未释放的资源可能导致…...

智能工业时代:工业场景下的 AI 大模型体系架构与应用探索
自工业革命以来,工业生产先后经历了机械化、电气化、自动化、信息化的演进,正从数字化向智能化迈进,人工智能技术是新一轮科技革命和产业变革的重要驱动力量,AI 大模型以其强大的学习计算能力掀开了人工智能通用化的序幕ÿ…...
【git stash切换】
问题 当前正在修改对应某个bug,突然来了个更紧急的工作,需要保留现场,去对应更紧急的事务,git该如何操作? 1. 查看当前工作状态(确认修改) git status 2. 保存当前工作现场(包含…...
React 18 生命周期详解与并发模式下的变化
1. React 生命周期概述 React 组件的生命周期可以分为三个阶段:挂载(Mounting)、更新(Updating)和卸载(Unmounting),以及错误处理阶段。 1.1. 挂载阶段(Mounting&#…...

易语言使用OCR
易语言使用OCR 用易语言写个脚本,需要用到OCR,因此我自己封装了一个OCR到DLL。 http://lkinfer.1it.top/ 视频演示:https://www.bilibili.com/video/BV1Zg7az2Eq3/ 支持易语言、c、c#使用,平台限制:window 10 介绍…...

C++和C#界面开发方式的全面对比
文章目录 C界面开发方式1. **MFC(Microsoft Foundation Classes)**2. **Qt**3. **WTL(Windows Template Library)**4. **wxWidgets**5. **DirectUI** C#界面开发方式1. **WPF(Windows Presentation Foundation…...
监控 100 台服务器磁盘内存CPU利用率
监控 100 台服务器磁盘,内存,CPU利用率脚本 以下是一个优化后的监控脚本,用于同时监控100台服务器的磁盘、内存和CPU利用率,并支持并发执行以提高效率: #!/bin/bash # 服务器监控脚本 - 支持并发获取100台服务器系统指标 # 功能…...
Linux远程连接主机——ssh命令详解
摘要:SSH是OpenSSH套件中的加密远程连接工具,基于SSH协议提供安全的服务器管理通道。本文详解连接参数、认证方法和功能,提供实用操作示例。 一、SSH核心特性 SSH(Secure Shell)是行业标准的远程管理协议:…...

算法-集合的使用
1、set常用操作 set<int> q; //以int型为例 默认按键值升序 set<int,greater<int>> p; //降序排列 int x; q.insert(x); //将x插入q中 q.erase(x); //删除q中的x元素,返回0或1,0表示set中不存在x q.clear(); //清空q q.empty(); //判断q是否为空&a…...

性能优化 - 理论篇:CPU、内存、I/O诊断手段
文章目录 Pre引言1. CPU 性能瓶颈1.1 top 命令 —— 多维度 CPU 使用率指标1.2 负载(load)——任务排队情况1.3 vmstat 命令 —— CPU 繁忙与等待 2. 内存性能瓶颈2.1 操作系统层面的内存分布2.2 top 命令 —— VIRT / RES / SHR 三个关键列2.3 CPU 缓存…...

算法:二分查找
1.二分查找 704. 二分查找 - 力扣(LeetCode) 二分查找算法要确定“二段性”,时间复杂度为O(lonN)。为了防止数据溢出,所以求mid时要用防溢出的方式。 class Solution { public:int search(vector<int>& nums, int tar…...
Spring Boot3.4.1 集成 mybatis plus
Spring Boot 集成 mybatis plus 第一步 引入依赖 <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.16</version> </dependency><dependency><groupId>com.bao…...

Ubuntu 22.04 上安装 PostgreSQL(使用官方 APT 源)
Ubuntu 22.04 上安装 PostgreSQL(使用官方 APT 源) 步骤 1:更新系统 sudo apt update sudo apt upgrade -y步骤 2:添加 PostgreSQL 官方仓库 # 安装仓库管理工具 sudo apt install wget ca-certificates gnupg lsb-release -y#…...

Linux随记(十八)
一、k8s的node节点磁盘 /data已使用率超过 85% , 出现disk pressure ,驱逐pod现象 evicted , the node had condition:[DiskPressure] #修改/var/lib/kubelet/config.yaml ]# cat /var/lib/kubelet/config.yaml apiVersion: kubelet.config.k8s.io/v1…...

Windows MongoDB C++驱动安装
MongoDB驱动下载 MongoDB 官网MongoDB C驱动程序入门MongoDB C驱动程序入门 安装环境 安装CMAKE安装Visual Studio 编译MongoDB C驱动 C驱动依赖C驱动,需要先编译C驱动 下载MongoDB C驱动源码 打开CMAKE(cmake-gui) 选择源码及输出路径,然后点击configure …...

MS1023/MS1224——10MHz 到 80MHz、10:1 LVDS 并串转换器(串化器)/串并转换器(解串器)
产品简述 MS1023 串化器和 MS1224 解串器是一对 10bit 并串 / 串并转 换芯片,用于在 LVDS 差分底板上传输和接收 10MHz 至 80MHz 的并行字速率的串行数据。起始 / 停止位加载后,转换为负载编 码输出,串行数据速率介于 120Mbps…...
ESOP股权管理平台完整解决方案
——全生命周期合规化、智能化、价值化的资本中枢系统 一、平台顶层架构 1.1 四层驱动模型 #mermaid-svg-QrD0g5nIuRtsMl7c {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-QrD0g5nIuRtsMl7c .error-icon{fill:#552…...

线性调频波形测距测速信号处理——全代码+注释
clear all close all clc %% 参数设置 fs600e6;%采样率 fc10.45e9;% 波形发射载频 t10e-6;%脉宽 f050e6;%波形中频频率 B10e6;%带宽 uB/(2*t);%调频斜率 Tv100e-6;% 脉冲重复周期 Num64;% 测速脉冲数 lamdfs/B;% 抽取带宽 Nsround(fs*t); NTvround(fs*Tv); tt0:1/fs:t-1/fs; ff…...

WPS word 已有多级列表序号
wps的word中,原来已生成的文档里,已存在序号。比如,存在2、2.1、2.1.1、2.1.1.1、2.1.1.1.1 5层序号,而且已分为5级。但增加内容的时候,并不会自动增加序号,应该如何解决? 原来长这样ÿ…...
Vue 3 源码层核心原理剖析(完整详解版)
一、Compiler 编译过程解密:多框架实现对比 Vue 3 编译流程深度解析(基于 /packages/compiler-core/src/parse.ts) 完整编译链条及技术实现: #mermaid-svg-S8ScpxdjkcJv0YWT {font-family:"trebuchet ms",verdana,ari…...
数据库操作-MySQL-4(JDBC编程)
JDBC:通过Java代码操作mysql数据库,数据库会提供一些API供我们调用 MySQL、Oracle、等API有差异,但是Java统一了所有接口,即JDBC; 原始api-驱动包(类似转接头)-统一的api-Java 驱动包࿱…...