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

Pandas可视化

目录

一.单变量可视化

1.柱状图

2.折线图

3.面积图

4.直方图

5.饼状图

二.双变量可视化

1.散点图

2.蜂窝图

3.堆叠图

4.折线图


pandas提供了非常方便的绘图功能,可以直接在DataFrame或Series上调用plot()方法来生成各种类型的图表。底层实现依赖于Matplotlib,pandas的绘图功能集成了许多常见的图形类型,易于使用。

一.单变量可视化

使用sleep(睡眠健康和生活方式)数据集,其中包含13个字段:

  • person_id:每个人的唯一标识符。
  • gender:个人的性别(男/女)。
  • age:个人的年龄(以岁为单位)。
  • occupation:个人的职业或就业状况(例如办公室职员、体力劳动者、学生)。
  • sleep_duration:每天的睡眠总小时数。
  • sleep_quality:睡眠质量的主观评分,范围从 1(差)到 10(极好)。
  • physical_activity_level:每天花费在体力活动上的时间(以分钟为单位)。
  • stress_level:压力水平的主观评级,范围从 1(低)到 10(高)。
  • bmi_category:个人的 BMI 分类(体重过轻、正常、超重、肥胖)。
  • blood_pressure:血压测量,显示为收缩压与舒张压的数值。
  • heart_rate:静息心率,以每分钟心跳次数为单位。
  • daily_steps:个人每天行走的步数。
  • sleep_disorder:存在睡眠障碍(无、失眠、睡眠呼吸暂停)。

加载数据:

import pandas as pd df = pd.read_csv("data/sleep.csv") df.info() # 查看数据集信息

运行结果:

1.柱状图

柱状图用于展示类别数据的分布情况。它通过一系列矩形的高度(或长度)来展示数据值,适合对比不同类别之间的数量或频率。简单直观,容易理解和比较各类别数据。

使用柱状图展示不同睡眠时长的数量。

import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv("data/sleep.csv") pd.cut(df["sleep_duration"], [0, 5, 6, 7, 8, 9, 10, 11, 12]).value_counts().plot.bar(color=["red", "green", "blue", "yellow", "cyan", "magenta", "black", "purple"]) plt.show()

运行结果:

2.折线图

折线图通常用于展示连续数据的变化趋势。它通过一系列数据点连接成的线段来表示数据的变化。能够清晰地展示数据的趋势和波动。

使用折线图展示不同睡眠时长的数量。

import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv("data/sleep.csv") pd.cut(df["sleep_duration"], [0, 5, 6, 7, 8, 9, 10, 11, 12]).value_counts().sort_index().plot() plt.show()

运行结果:

3.面积图

面积图是折线图的一种变体,线下的区域被填充颜色,用于强调数据的总量或变化。可以更直观地展示数据量的变化,适合用来展示多个分类的累计趋势。

使用面积图展示不同睡眠时长的数量。

import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv("data/sleep.csv") pd.cut(df["sleep_duration"], [0, 5, 6, 7, 8, 9, 10, 11, 12]).value_counts().sort_index().plot.area() plt.show()

运行结果:

4.直方图

直方图用于展示数据的分布情况。它将数据范围分成多个区间,并通过矩形的高度显示每个区间内数据的频率或数量。可以揭示数据分布的模式,如偏态、峰度等。

使用直方图展示不同睡眠时长的数量。

import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv("data/sleep.csv") df["sleep_duration"].value_counts().plot.hist() plt.show()

运行结果:

5.饼状图

饼状图用于展示一个整体中各个部分所占的比例。它通过一个圆形图形分割成不同的扇形,每个扇形的角度与各部分的比例成正比。能够快速展示各部分之间的比例关系,但不适合用于展示过多的类别或比较数值差异较小的部分。

使用饼状图展示不同睡眠时长的占比。

import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv("data/sleep.csv") pd.cut(df["sleep_duration"], [0, 5, 6, 7, 8, 9, 10, 11, 12]).value_counts().sort_index().plot.pie() plt.show()

运行结果:

二.双变量可视化

1.散点图

散点图通过在二维坐标系中绘制数据点来展示两组数值数据之间的关系。能够揭示两个变量之间的相关性和趋势。

绘制睡眠时间与睡眠质量的散点图。

import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv("data/sleep.csv") df.plot.scatter(x="sleep_duration", y="sleep_quality") plt.show()

运行结果:

2.蜂窝图

蜂窝图是散点图的扩展,通常用于表示大量数据点之间的关系。它通过将数据点分布在一个六边形网格中,每个六边形的颜色代表其中的数据密度。适合展示大量数据点,避免了散点图中的过度重叠问题。

绘制睡眠时间与睡眠质量的蜂窝图。

import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv("data/sleep.csv") df.plot.hexbin(x="sleep_duration", y="sleep_quality", gridsize=10) plt.show()

运行结果:

3.堆叠图

堆叠图用于展示多个数据系列的累积变化。常见的堆叠图包括堆叠柱状图、堆叠面积图等。它通过将每个数据系列堆叠在前一个系列之上,展示数据的累积情况。能够清晰地展示不同部分的相对贡献,适合多个数据系列的比较。

绘制睡眠时间与睡眠质量的堆叠图。

import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv("data/sleep.csv") df["sleep_quality_stage"] = pd.cut(df["sleep_quality"], range(11)) df["sleep_duration_stage"] = pd.cut(df["sleep_duration"], [0, 5, 6, 7, 8, 9, 10, 11, 12]) df_pivot_table = df.pivot_table(values="person_id", index="sleep_quality_stage", columns="sleep_duration_stage", aggfunc="count") df_pivot_table.plot.bar() plt.show()

运行结果:

设置stacked=True,会将柱体堆叠。

df_pivot_table.plot.bar(stacked=True)

运行结果:

4.折线图

import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv("data/sleep.csv") df["sleep_quality_stage"] = pd.cut(df["sleep_quality"], range(11)) df["sleep_duration_stage"] = pd.cut(df["sleep_duration"], [0, 5, 6, 7, 8, 9, 10, 11, 12]) df_pivot_table = df.pivot_table(values="person_id", index="sleep_quality_stage", columns="sleep_duration_stage", aggfunc="count") df_pivot_table.plot.line() plt.show()

运行结果:

http://www.jsqmd.com/news/720890/

相关文章:

  • 英语阅读_not wise to follow every trend blindly
  • oh-my-codex 简介(Codex免费使用方法)
  • 苹果微软双修党福音:Navicat如何熟悉Mac版专属快捷键_硬核实战技巧
  • 保姆级教程:Ubuntu 20.04/18.04系统下Atlas 300i Pro/T 芯片驱动、CANN 6.3.RC1及MindSpore 2.0环境配置详解
  • Win11笔记本耳机没弹窗?手把手教你修复Realtek Audio Console的RPC连接问题
  • 两个线程循环打印奇偶数
  • 禾川HCQ0-1100-D PLC从开箱到跑通第一个CANopen轴:Codesys配置避坑全记录
  • 英语阅读_How can we develop our own style
  • 017、PCIe数据包结构:TLP、DLLP与Ordered Sets
  • 如何在OBS中实现专业级面部跟踪?2025最新插件完整指南
  • Claude Pulse:实时监控AI编程助手请求的VS Code扩展
  • Kimi K2.6 + Claude 多代理路由栈
  • 算法训练营第十六天 | 反转字符串 II
  • 抖音下载神器:5分钟掌握批量无水印下载技巧
  • 认识CPU篇
  • 风控特征缓存怎么设计?一次讲清热点特征、批量查询、缓存失效与一致性边界
  • 怎么让 AI 听懂你的话?——同一个 AI,为什么他用得比你好 倍
  • Hermes Agent 15 个隐藏特性
  • 深度学习进阶:预训练权重到底是个啥?看完这篇你就懂了(上篇)
  • 2026年3月优质的盐雾试验箱厂家推荐,高低温交变量热试验箱/高低温试验箱,盐雾试验箱厂商推荐 - 品牌推荐师
  • 别再傻傻重启电脑了!Google Drive大文件下载失败的5个真正原因与保姆级修复指南
  • 【车载C#中控实时通信黄金标准】:20年汽车电子专家亲授低延迟、高可靠通信架构设计(含CAN-FD+WebSocket双模实测数据)
  • 别再死磕开题!
  • SteamDeck_rEFInd:终极多系统引导方案,让Steam Deck变身全能设备
  • WRF输出变量管理避坑指南:从iofields配置到多流输出,一次讲清常见错误
  • 期刊合规插图这样做
  • RFG技术在机器人视觉动作规划中的应用与优化
  • 构建人格化AI聊天系统:从提示工程到向量记忆的实战指南
  • 5分钟免费体验:如何用Deep3D将普通2D视频变成震撼3D立体大片?
  • 3步搞定黑苹果:OpCore-Simplify零代码配置终极指南