Pandas 数据可视化指南:从散点图到面积图的全面展示

Pandas 数据可视化指南:从散点图到面积图的全面展示

本文介绍了使用 Pandas 进行数据可视化的多种方法,包括散点图、折线图、条形图、直方图、饼图和面积图等,涵盖了常见的图表类型及其实现方式。通过提供详细的代码示例,展示了如何使用 Pandas 和 Matplotlib 快速创建不同类型的图表,帮助读者轻松掌握数据可视化技术。这篇指南既适合初学者,也为有经验的开发者提供了一些实用技巧,帮助在数据分析中更直观地展示结果。

文章目录

  • Pandas 数据可视化指南:从散点图到面积图的全面展示
      • 一 散点图(Scatter)
      • 二 折线图(Plot)
        • 简单折线图
        • 多折线图
      • 三 条形图(Bar)
        • 垂直条形图
        • 堆叠条形图
        • 水平条形图
      • 四 直方图(Hist)
        • 简单直方图
        • 重叠直方图
      • 五 饼图(Pie)
        • 简单饼图
        • 多个饼图
      • 六 面积图(Area)
        • 堆叠面积图
        • 同起点面积图
      • 七 完整代码示例
      • 八 源码地址

导入库

在开始绘制图表之前,我们首先导入必要的库

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

一 散点图(Scatter)

在这里插入图片描述

n = 1024  # 数据量
# 创建数据框
df = pd.DataFrame({
  "x": np.random.normal(0, 1, n),
  "y": np.random.normal(0, 1, n),
})
# 使用 arctan2 函数计算颜色
color = np.arctan2(df["y"], df["x"])
# 绘制散点图
df.plot.scatter(x="x", y="y", c=color, s=60, alpha=0.5, cmap="rainbow")

二 折线图(Plot)

简单折线图

在这里插入图片描述

n = 20  # 数据量
x = np.linspace(-1, 1, n)
y = x * 2 + 0.4 + np.random.normal(0, 0.3, n)
# 创建数据框
df = pd.DataFrame({
    "x": x,
    "y": y,
})
# 绘制折线图
df.plot(x="x", y="y", alpha=0.5, c="r")
多折线图

在这里插入图片描述

n = 20  # 数据量
x = np.linspace(-1, 1, n)
y1 = x * -1 - 0.1 + np.random.normal(0, 0.3, n)
y2 = x * 2 + 0.4 + np.random.normal(0, 0.3, n)
# 创建数据框
df = pd.DataFrame({
    "x": x,
    "y1": y1,
    "y2": y2,
})
# 绘制多折线图
df.plot(x="x", y=["y1", "y2"], alpha=0.5)

三 条形图(Bar)

垂直条形图

在这里插入图片描述

   	df = pd.DataFrame(np.random.rand(5, 3), columns=["a", "b", "c"])
    df.plot.bar()
堆叠条形图

在这里插入图片描述

   	df = pd.DataFrame(np.random.rand(5, 3), columns=["a", "b", "c"])
    df.plot.bar(stacked=True)
水平条形图

在这里插入图片描述

   	df = pd.DataFrame(np.random.rand(5, 3), columns=["a", "b", "c"])
    df.plot.barh()

四 直方图(Hist)

简单直方图

在这里插入图片描述

df = pd.DataFrame({"a": np.random.randn(1000)})
df.plot.hist()
重叠直方图

在这里插入图片描述

df = pd.DataFrame(
    {
        "a": np.random.randn(1000) + 1,
        "b": np.random.randn(1000),
        "c": np.random.randn(1000) - 4,
    }
)

df.plot.hist(alpha=0.5, bins=30)

五 饼图(Pie)

简单饼图

在这里插入图片描述

    df = pd.DataFrame(
        {"boss": np.random.rand(4)},
        index=["meeting", "supervise", "teaching", "team building"],
    )
    df.plot.pie(y="boss", figsize=(7, 7))
多个饼图

在这里插入图片描述

df = pd.DataFrame(
    {
        "bigBoss": np.random.rand(4),
        "smallBoss": np.random.rand(4),
    },
    index=["meeting", "supervise", "teaching", "team building"],
)
df.plot.pie(subplots=True, figsize=(9, 9), legend=False)

六 面积图(Area)

堆叠面积图

在这里插入图片描述

# 
df = pd.DataFrame(
    np.random.rand(10, 4),
    columns=["a", "b", "c", "d"]
)
df.plot.area()
同起点面积图

在这里插入图片描述

# 
df = pd.DataFrame(
    np.random.rand(10, 4),
    columns=["a", "b", "c", "d"]
)
df.plot.area(stacked=False)

详情见官方文档:Pandas 可视化图表

七 完整代码示例

# This is a sample Python script.

# Press ⌃R to execute it or replace it with your code.
# Press Double ⇧ to search everywhere for classes, files, tool windows, actions, and settings.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt


def print_hi(name):
    # Use a breakpoint in the code line below to debug your script.
    print(f'Hi, {name}')  # Press ⌘F8 to toggle the breakpoint.
    # 散点图Scatter
    n = 1024  # data size
    df = pd.DataFrame({
        "x": np.random.normal(0, 1, n),
        "y": np.random.normal(0, 1, n),
    })
    color = np.arctan2(df["y"], df["x"])
    df.plot.scatter(x="x", y="y", c=color, s=60, alpha=.5, cmap="rainbow")

    # 折线图Plot
    n = 20  # data size
    x = np.linspace(-1, 1, n)
    y = x * 2 + 0.4 + np.random.normal(0, 0.3, n)
    df = pd.DataFrame({
        "x": x,
        "y": y,
    })
    df.plot(x="x", y="y", alpha=.5, c="r")

    n = 20  # data size
    x = np.linspace(-1, 1, n)
    y1 = x * -1 - 0.1 + np.random.normal(0, 0.3, n)
    y2 = x * 2 + 0.4 + np.random.normal(0, 0.3, n)
    df = pd.DataFrame({
        "x": x,
        "y1": y1,
        "y2": y2,
    })
    df.plot(x="x", y=["y1", "y2"], alpha=.5)

    # 条形图Bar
    df = pd.DataFrame(np.random.rand(5, 3), columns=["a", "b", "c"])
    df.plot.bar()

    df.plot.bar(stacked=True)

    df.plot.barh()

    # 分布图Hist
    df = pd.DataFrame({"a": np.random.randn(1000)})
    df.plot.hist()

    df = pd.DataFrame(
        {
            "a": np.random.randn(1000) + 1,
            "b": np.random.randn(1000),
            "c": np.random.randn(1000) - 4,
        }
    )

    df.plot.hist(alpha=0.5, bins=30)

    # 饼图Pie
    df = pd.DataFrame(
        {"boss": np.random.rand(4)},
        index=["meeting", "supervise", "teaching", "team building"],
    )
    df.plot.pie(y="boss", figsize=(7, 7))


    df = pd.DataFrame(
        {
            "bigBoss": np.random.rand(4),
            "smallBoss": np.random.rand(4),
        },
        index=["meeting", "supervise", "teaching", "team building"],
    )
    df.plot.pie(subplots=True, figsize=(9, 9), legend=False)
    # 面积图Area
    df = pd.DataFrame(
        np.random.rand(10, 4),
        columns=["a", "b", "c", "d"]
    )
    df.plot.area()
    plt.show()
    df.plot.area(stacked=False)
    plt.show()
    # https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html

# Press the green button in the gutter to run the script.
if __name__ == '__main__':
    print_hi('绘制图表')

# See PyCharm help at https://www.jetbrains.com/help/pycharm/

复制粘贴并覆盖到你的 main.py 中运行,运行结果如下。

Hi, 绘制图表

八 源码地址

代码地址:

国内看 Gitee 之 pandas/绘制图表.py

国外看 GitHub 之 pandas/绘制图表.py

引用 莫烦 Python

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/907581.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电力电子论文(TPE、TTE)投稿经验分享

本节博客不进行技术分享,仅分享我的投稿经验,主要介绍投稿时间戳、投稿注意事项。 TPE: 首先介绍的是电力电子老牌顶刊——IEEE Transactions on Power Electronics,缩写PE、TPE、TPEL。截止写稿时间,该期刊Impact Fa…

YOLOv11模型架构以及使用命令介绍

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 👍感谢小伙伴们点赞、关注! 《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发…

【高等数学】1函数极限连续

1. 函数 复合函数的性质及其图形 反函数的性质及其图形 分段函数的性质及其图形 隐函数的性质及其图形 基本初等函数(通常包括幂函数、指数函数、对数函数、三角函数、反三角函数)的性质及其图形 初等函数(由基本初等函数经过有限次的四则运算和复合运算所得到的函数)…

评估 机器学习 回归模型 的性能和准确度

回归 是一种常用的预测模型,用于预测一个连续因变量和一个或多个自变量之间的关系。 那么,最后评估 回归模型 的性能和准确度非常重要,可以帮助我们判断模型是否有效并进行改进。 接下来,和大家分享如何评估 回归模型 的性能和准…

移植 AWTK 到 纯血鸿蒙 (HarmonyOS NEXT) 系统 (6) - 触屏事件

AWTK 作为一个GUI引擎,自然少不了对触屏事件的支持。这里我们先支持单点触摸,后续再支持多点手势。 1. 注册 XComponent 的触屏事件回调 这个在 AppNapi 的构造函数中完成: AppNapi::AppNapi(std::string &id) {id_ id;component_ n…

2024年大厂AI大模型面试题精选与答案解析

前言 随着AI市场,人工智能的爆火,在接下来的金九银十招聘高峰期,各大科技巨头和国有企业将会对AGI人才的争夺展开一场大战,为求职市场注入了新的活力。 为了助力求职者在面试中展现最佳状态,深入理解行业巨头的选拔标…

GNN 训练点击-购买 预测模型

搜集到click-buy数据集, 数据集分享在网盘 通过百度网盘分享的文件:数据集_20241031_220915 链接:https://pan.baidu.com/s/1qcXAO_P1h3Vrrui5qFbYLw?pwd6f3m 其中 yoochoose-buys.dat 特征含义buy_df.columns [session_id, timestamp, …

SpringMvc day1102

ok了家人们今天我们学习SpringMvc,之后学习SpringBoot,let‘s go 六.拦截器 6.1 拦截器概述 Spring MVC 的处理器拦截器类似于 Servlet 开发中的过滤器 Filter ,用于对处理器 ( 自己编写的 Controller) 进行预处理和后 处理。用户可以自…

项目管理(风险:范围、成本、时间、质量)

项目管理主要是围绕着范围、成本、时间、质量,每个部分都存在不同的风险。 存在潜在的风险方面,也有可能是法律风险、合作方带来的风险等。 减少风险: 提前与技术沟通方案。产品内部先讨论。每日例会:同步信息,减少…

6.0、静态路由

路由器最主要的功能就是转发数据包。路由器转发数据包时需要查找路由表(你可以理解为地图),管理员可以直接手动配置路由表,这就是静态路由。 1.什么是路由? 在网络世界中,路由是指数据包在网络中的传输路…

网络层3——IP数据报转发的过程

目录 一、基于终点的转发 1、理解 2、IP数据报转发过程 二、最长前缀匹配 1、理解 2、主机路由 3、默认路由 三、二叉线索查找 一、基于终点的转发 1、理解 理解什么叫终点转发 IP数据报的传递,交给路由器后 可不可以做到直接发送给目的主机呢?…

VMware虚拟机Debian扩展磁盘

一、 版本 VMware:Workstation 17 Pro虚拟机:Debian11 二、 VMware虚拟机扩展 虚拟机关机状态快照或者备份:以免扩容失败导致文件丢失虚拟机——设置——硬盘——磁盘使用工具——扩展——扩展磁盘容量——设置为想要的大小 三、 虚拟机…

新能源汽车的未来:车载电源与V2G技术的前景

近年来,新能源汽车在全球市场上发展迅速,尤其是在中国,新能源汽车的月销量已经超过了燃油车。随着新能源技术的不断发展,新能源汽车不仅仅是作为出行工具,而逐渐成为“移动能源站”。本文将探讨电动汽车的车载外放电功…

JavaScript知识点梳理及案例实践

1. Date对象 创建Date对象 //方法1:不指定参数 var nowd1new Date(); console.log(nowd1.toLocaleString( )); //方法2:参数为日期字符串 var d2new Date("2004/3/20 11:12"); console.log(d2.toLocaleString( )); var d3new Date("04/…

[vulnhub]DC:7

https://www.vulnhub.com/entry/dc-7,356/ 端口扫描主机发现 探测存活主机,178是靶机 nmap -sP 192.168.75.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-03 13:30 CST Nmap scan report for 192.168.75.1 Host is up (0.00037s l…

探索React源码:React Diff

本篇文章我们来了解一下Diff算法的实现过程。 相关概念 React中的各种节点 假设当前存在一个DOM节点,触发了一次更新,那么在协调的过程中,会有四种节点和该节点相关联: 该DOM节点本身。 workInProgress fiber,更新过程…

开源库 FloatingActionButton

开源库FloatingActionButton Github:https://github.com/Clans/FloatingActionButton 这个库是在前面这个库android-floating-action-button的基础上修改的,增加了一些更强大和实用的特性。 特性: Android 5.0 以上点击会有水波纹效果 可以选择自定义…

微服务设计模式 - 重试模式(Retry Pattern)

微服务设计模式 - 重试模式(Retry Pattern) 定义 重试模式(Retry Pattern)是一种微服务中的设计模式,用于在临时性失败(如网络故障或暂时不可用的服务)发生时,自动重新尝试请求&…

HTML 基础标签——链接标签 <a> 和 <iframe>

文章目录 1. `<a>` 标签属性详细说明示例2. `<iframe>` 标签属性详细说明示例注意事项总结链接标签在HTML中是实现网页导航的重要工具,允许用户从一个页面跳转到另一个页面或嵌入外部内容。主要的链接标签包括 <a> 标签和<iframe> 标签。本文将深入探…

Netty 组件介绍 - Future Promise

在异步处理时&#xff0c;经常用到这两个接口 netty 中的 Future 继承 jdk 中的 FutuFuture&#xff0c;而Promise 又对 netty Future 进行了扩展。 idk Future 只能同步等待任务结束&#xff08;或成功或失败)才能得到结果netty Future 可以同步等待任务结束得到结也可以异…