Matplotlib和Seaborn数据可视化

目录

Matplotlib图表绘制

准备工作

折线图line

柱状图bar

水平条形图barh

饼图pie

散点图scatter

气泡图csatter

箱线图boxplot

直方图hist

蜂巢图hexbin

Seaborn图表绘制

准备数据

关系散点图scatterplot

关系散点线形图replot

分类散点图stripplot

分类小提琴图violinplot

分类平均值分布图barplot

分类技计数图countplot

矩形热力图heatmap

成对关系图pairplot


Matplotlib图表绘制

准备工作

import pandas as pdanscombe = pd.read_csv('../data/e_anscombe.csv') # 资料中提供了这份数据
print(anscombe)df1 = anscombe[anscombe['dataset']=='I']
df2 = anscombe[anscombe['dataset']=='II']
df3 = anscombe[anscombe['dataset']=='III']
df4 = anscombe[anscombe['dataset']=='IV']

折线图line

  • 折线图适用于时间序列数据分析、不同变量变化趋势比较、科学研究实验数据分析以及趋势预测和未来规划等多个场景。

df1.plot() # 默认折线图
#df1.plot(kind='line') # 结果与df1.plot()
#df1.plot.line() # 结果与df1.plot()
# x轴是索引值,y轴是各列的具体值
# 也可以通过参数指定xy轴对应的列名
df1.plot.line(x='x', y='y')
plt.show()

柱状图bar

  • 柱状图可应用于销售和市场分析、人口统计、学术研究、项目管理等场景,直观展示不同类别数据大小差异及分布情况,方便比较和分析。

df1.plot.bar() # 柱状图
df1.plot.bar(stacked=True) # 柱状堆积
# 也可以通过参数指定xy轴对应的列名
df1.plot.bar(x='x', y='y')
plt.show()

水平条形图barh

  • 条形柱状图适用于销售业绩对比、人口统计分布展示、学术研究成果呈现、项目进度管理等众多场景,以直观的方式展现不同类别数据的大小差异,便于比较和分析各类数据的分布情况。

df1.plot.barh() # 水平条形图
df1.plot.barh(stacked=True) # 水平条形堆积图
# 也可以通过参数指定xy轴对应的列名
df1.plot.barh(x='x', y='y')
plt.show()

饼图pie

  • 饼图主要应用于展示各部分占总体的比例关系,常见于市场份额分析、财务报表展示、人口构成统计等场景,能让人直观地看出不同部分在整体中的相对重要程度。

# 饼图,只能展示一维数据
# 参数y指定列名
# 参数autopct='%.2f%%'指定显示百分比 %.2f%%表示保留2位小数
# 参数radius=0.9 指定饼图直径的比例,最大为1
# 参数figsize=(16, 8) 设定图片大小
df1.plot.pie(y='x', autopct='%.2f%%', radius=0.9, figsize=(16, 8)) 
plt.show()

散点图scatter

  • 散点图适用于展示两个变量之间的关系,可用于科学研究中分析变量相关性、金融领域判断资产价格关系、市场调研中探索因素关联等场景。

# 指定xy轴,grid=True开启背景辅助线
df1.plot.scatter(x='x', y='y', grid=True)
plt.show()

气泡图csatter

  • 气泡图通常用于展示三个变量之间的关系,在市场分析中呈现不同产品的多个指标关系、科学研究中展示数据的多维特征等场景有广泛应用。

# 参数s表示每个点的大小,与普通散点图相比能够描述三维数据
df1.plot.scatter(x='x', y='y', grid=True, s=df1['x']*100)
plt.show()

箱线图boxplot

  • 箱线图用于显示多种统计信息:最小值,1/4分位,中位数,3/4分位,最大值,以及离群值(如果有)

  • 箱线图主要应用于显示数据的分布情况,可用于质量控制中监测生产数据的稳定性、统计分析中比较多组数据的分布差异、金融领域分析股票收益的波动等场景。

df1.boxplot()
# df1.plot.boxplot() # 报错
plt.show()

直方图hist

  • 直方图适用于展示数据的分布形态,常见于质量控制中分析产品指标分布、统计研究中判断数据集中趋势和离散程度、市场调研中了解消费者特征分布等场景。

# 描述数据出现的次数
df1['x'].plot.hist()
plt.show()

蜂巢图hexbin

  • 蜂巢图主要应用于复杂数据的可视化展示,可在社交网络分析中呈现关系结构、生物信息学中展示基因网络、物流网络规划中展示节点连接关系等场景。

# gridsize=12设定蜂箱格子的大小,数字越小格子越大
df1.plot.hexbin(x='x', y='y', gridsize=12)
plt.show()

Seaborn图表绘制

准备数据

# 导包
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns # Anaconda内置,无需额外安装
# 加载数据
tips_df = pd.read_csv('../data/f_tips.csv')
print(tips_df)

关系散点图scatterplot

# 关系型散点图
# 指定数据集,指定x轴为消费订单金额,y轴为消费金额,
# 散点图通用的可选参数 hue='sex'通过颜色指定分组
# 散点图通用的可选参数 style='smoker' 通过形状指定分组
# 散点图通用的可选参数 size='time' 通过大小指定分组
sns.scatterplot(data=tips_df, x='total_bill', y='tip', hue='sex', style='smoker', size='time'
)
plt.show()

关系散点线形图replot

# replot关系散点图
sns.relplot(data=tips_df, x='total_bill', y='tip') # 默认 kind='scatter'
sns.relplot(data=tips_df, x='total_bill', y='tip', kind='line')
plt.show()

分类散点图stripplot

# stripplot分类散点图
f = plt.figure()
f.add_subplot(2,1,1)
# 按照x属性所对应的类别分别展示y属性的值,适用于分类数据
# 不同饭点的账单总金额的散点图
sns.stripplot(data=tips_df, x='time', y='total_bill')
f.add_subplot(2,1,2)
# hue通用参数按颜色划分
# jitter=True 当数据点重合较多时,尽量分散的展示数据点
# dodge=True 拆分分类
sns.stripplot(data=tips_df, x='time', y='total_bill', jitter=True, dodge=True, hue='day')
plt.show()

# 下边的代码只能输出一张图表
sns.stripplot(data=tips_df, x='time', y='total_bill')
sns.stripplot(data=tips_df, x='time', y='total_bill', jitter=True, dodge=True, hue='day')
plt.show()
# 所以我们使用下面的方法进行多图的输出
# f = plt.figure() # 创建画布
# f.add_subplot(2,1,1) # 在画布上申请图表空间,参数2,1,1表示2行1列中的第1个
# 图1 # sns.stripplot(data=tips_df, x='time', y='total_bill')
# f.add_subplot(2,1,2) # 在画布上申请图表空间,参数2,1,2表示2行1列中的第2个
# 图2 # sns.stripplot(data=tips_df, x='time', y='total_bill', jitter=True, dodge=True, hue='day')
# plt.show()

分类小提琴图violinplot

# violinplot分类小提琴
# 下图分别描述午餐账单、晚餐账单的最大值、最小值、三个四分位数,以及所有账单金额出现的次数(频率)
sns.violinplot(data=tips_df, x='time', y='total_bill')
plt.show()

分类平均值分布图barplot

# 下图中黑色的粗线条展示了数据的分布(误差线), 线条越短, 数据分布越均匀
# 下图中每个柱的顶点就是该分类y指定列的平均值
sns.barplot(data=tips_df, x='day', y='total_bill')
plt.show()

分类技计数图countplot

# 按x指定的列值分组统计出现次数
sns.countplot(data=tips_df, x='day')
plt.show()

矩形热力图heatmap

# 热力图
# 男女在午餐晚餐的平均消费
new_df = tips_df.pivot_table(index='sex', columns='time', values='total_bill', aggfunc='mean')
print(new_df)
# 输出为热力图:男性在晚餐花费最多
sns.heatmap(data=new_df)
plt.show()

成对关系图pairplot

# pairplot成对比关系图
sns.pairplot(tips_df)
#sns.pairplot(df) # 全部数值列进行两两组合
#sns.pairplot(df, vars=['列名1', '列名2']) # 指定要组合展示的列名
plt.show()

  • 按右上、左下、中间轴线(左上至右下)的方式分别设置图表类型

pair_grid = sns.PairGrid(tips_df)
# 中间轴线上的图设为kdeplot
pair_grid.map_diag(sns.kdeplot) 
# 右上设为lineplot
pair_grid.map_upper(sns.lineplot) 
# 左下设为scatterplot
pair_grid.map_lower(sns.scatterplot) 
plt.show()

  • 将 Seaborn 提供的样式声明代码 sns.set() 放置在绘图前,就可以设置图像的样式

sns.set(context='paper', style='darkgrid', palette='deep', font='sans-serif', font_scale=1
)
# context: 参数控制着默认的画幅大小,分别有 {paper, notebook, talk, poster} 四个值。其中,poster > talk > notebook > paper。
# style:参数控制默认样式,分别有 {darkgrid, whitegrid, dark, white, ticks},你可以自行更改查看它们之间的不同。
# palette:参数为预设的调色板。分别有 {deep, muted, bright, pastel, dark, colorblind} 等,你可以自行更改查看它们之间的不同。
# font:用于设置字体
# font_scale:设置字体大小sns.scatterplot(data=tips_df, x='total_bill', y='tip', hue='sex', style='smoker', size='time')
plt.show()

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法训练营第五天| 哈希表理论基础 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

哈希表基础课程笔记 1. 什么是哈希表 哈希表(Hash Table)又称为散列表,是一种基于关键码(Key)直接进行访问的数据结构。简单理解,数组其实也是一种哈希表。哈希表通过关键码映射到数组的索引,…

Flink窗口分配器WindowAssigner

前言 Flink 数据流经过 keyBy 分组后,下一步就是 WindowAssigner。 WindowAssigner 定义了 stream 中的元素如何被分发到各个窗口,元素可以被分发到一个或多个窗口中,Flink 内置了常用的窗口分配器,包括:tumbling wi…

前缀和和差分算法

文章目录 一维前缀和一维前缀和概念一维前缀和数组的构建 二维前缀和二维前缀和概念二维前缀和数组的构建 一维差分一维差分概念一维差分数组的构建 二维差分二维差分概念二维差分数组的构建 一维前缀和 一维前缀和概念 一维前缀和是一种常用的数据预处理方法,它能…

JS事件和DOM

1. DOM 1.1 基本概念 DOM,全称 Document Object Model,即文档对象模型。它是 Web 上最常用的 API 之一,是加载在浏览器中的文档模型,可以将文档表示为节点树(或称 DOM 树),其中每个节点代表文…

Docker system

docker system --help siqialiyun-sh-001:~/images$ sudo docker system --helpUsage: docker system COMMANDManage DockerCommands:df Show docker disk usage(显示docker磁盘使用情况)events Get real time events from the server(从服务器获取实时事件)in…

MySQL新手向:对比常用存储引擎

前言 为什么MySQL拥有的存储引擎有那么多,偏偏最常用的是InnoDB呢?带着这个问题,让我们对比几种常用的存储引擎,理解InnoDB的优势吧。 一、MyISAM存储引擎 1.1、MyISAM介绍 先说说MyISAM存储引擎的特点: 不支持事…

【协议】IIC总线协议学习

一、IIC基本介绍 设计I2C的初衷是减少电视机等复杂电子系统内部的布线数量,同时也降低制造成本。通过使用只有两根线的通信总线,它有效地减少了器件间连接的复杂性。 IIC总线是两线制总线,仅有串行数据线SDA和串行时钟线SCL进行通信。减少…

代码笔记:Linux系统上解压文件

zip unzip filename.zip -d /path/to/directorytar.gz tar -xzvf file.tar.gz -x: 表示提取(extract)文件,从压缩包中解压内容。-z: 表示使用 gzip 压缩,.tar.gz 文件是经过 gzip 压缩的 tar 包,因此需要这个选项来处…

存储设备专栏 2.5 -- linux 下块设备信息查看命令 lsblk 详细介绍】

> 请阅读【嵌入式及芯片开发学必备专栏】< 文章目录 lsblk 命令命令结构常用参数示例示例 1&#xff1a;基本用法示例 2&#xff1a;显示文件系统信息示例 3&#xff1a;仅列出磁盘示例 4&#xff1a;指定输出格式示例 5&#xff1a;以 JSON 格式输出 Summary lsblk 命令…

算法之二分查找

概述 二分查找算法的应用&#xff0c;包括有序和无序数据&#xff0c;有序数组默认按从小到大排序 在有序数组中找到num /*** 4 二分查找 在有序数组中找到num* 思路&#xff1a;找中值&#xff0c;然后中值元素和目标值比较。如果中值元素比目标值大&#xff0c;则继续在左…

React开发一个WebSocket

export default class SocketService {static instance null;static get Instance() {if (!this.instance) {this.instance new SocketService();}return this.instance;}// 和服务端连接的socket对象ws null;// 存储回调函数callBackMapping {};// 标识是否连接成功connec…

【Python实例】Python读取并绘制tif数据

【Python实例】Python读取并绘制tiff数据 Python实例-以全球不透水面积数据为例数据准备&#xff1a;全球不透水面积数据基于gdal库绘制tif图基于Rasterio库绘制tif图 参考 GeoTIff 是一个标准的.tif 文件或是一个图像文件格式&#xff0c;它包含了一些额外的空间信息&#xff…

Prometheus 抓取 nginx 访问日志的指标

要通过 Prometheus 的 NGINX Exporter 来抓取 NGINX 中的日志信息&#xff0c;例如状态码为 4xx 或 5xx 的日志&#xff0c;需要结合以下几种工具和方法&#xff1a; 1. NGINX Exporter 基础功能 NGINX Exporter 是一个 Prometheus Exporter&#xff0c;用于从 NGINX 的 /sta…

.mkp勒索病毒攻击全攻略:防护、数据恢复与安全建议

导言 随着互联网的发展&#xff0c;勒索病毒的威胁也在不断升级&#xff0c;给个人和企业的数据安全带来了巨大的挑战。其中&#xff0c;[datastorecyberfear.com].mkp、 [tsai.shenmailfence.com].mkp、 [sspdlk00036cock.li].mkp勒索病毒作为一种新型的加密型恶意病毒&#…

Chromium 中HTML5 WebSocket实现分析c++(一)

一、WebSocket前端接口定义&#xff1a; WebSocket 对象提供了用于创建和管理 WebSocket 连接&#xff0c;以及可以通过该连接发送和接收数据的 API。 使用 WebSocket() 构造函数来构造一个 WebSocket。 构造函数 WebSocket(url[, protocols]) 返回一个 WebSocket 对象。 …

如何读书?

如何读书&#xff1f; 方法论、读书、意义、思考背景 对于知识获取一直有一个疑问&#xff0c;那就是如何有效获取知识&#xff1f;这个答案我自己并没有总结出来&#xff0c;其一是本文要谈的读书&#xff0c;其他呢&#xff1f;多了暂未想到&#xff0c;先写读书吧。 恰巧…

System:oneshot类型的service

有的时候,某个进程只在特殊的情况下运行一下即可,不需要一直以服务的形式待命,这种情况下,可以设置service的type为oneshot,然后设置RemainAfterExit=yes。 这样设置的service,即使在其进程启动完成之后退出了,systemd 也仍然会认为这个服务还在运行中,将此服务视为活…

新时代下吉林省城乡流动人才就业问题及路径探析

摘要&#xff1a;新时代背景下&#xff0c;中国经济快速发展&#xff0c;城乡融合发展成为缩小城乡差距&#xff0c;推动共同富裕的重要方式。吉林省作为东北老工业基地&#xff0c;传统产业竞争优势减弱&#xff0c;城乡流动人才就业规模增加&#xff0c;并呈现“农村-城市”的…

prompt learning

prompt learning 对于CLIP&#xff08;如上图所示&#xff09;而言&#xff0c;对其prompt构造的更改就是在zero shot应用到下游任务的时候对其输入的label text进行一定的更改&#xff0c;比如将“A photo of a{obj}”改为“[V1][V2]…[Vn][Class]”这样可学习的V1-Vn的token…

业务开发常见问题-并发工具类

hello&#xff0c;大家好&#xff0c;本讲我们一起聊一下常见的几个并发工具类的使用和坑&#xff01; 在日常工作中&#xff0c;我们经常会遇到多线程并发问题&#xff0c;比如ThreadLocal、锁、ConcurrentHashMap、CopyOnWriteArrayList等。那么如何正常的使用呢&#xff1f;…