【Python语言速回顾】——数据可视化基础

目录

引入

一、Matplotlib模块(常用)

1、绘图流程&常用图

​编辑

2、绘制子图&添加标注

​编辑

3、面向对象画图

4、Pylab模块应用

二、Seaborn模块(常用)

1、常用图

2、代码示例

​编辑

​编辑

​编辑

​编辑

三、Artist模块

四、Pandas绘图

1、数据框(dataframe)&系列(series)

2、pandas常用绘图函数


引入

Python中数据可视化有多种实现方式,下面以实战项目需求为导向介绍几种比较流行的数据可视化模块:Pyplot模块、Seaborn模块、Artist模块、Pandas模块。(个人经常用到pyplot和seaborn)

一、Matplotlib模块(常用)

Matplotlib提供了一整套和Matlab类似的命令API,适合交互式制图。可方便地作为绘图控件,嵌入GUI应用程序。文档完备https://matplotlib.org/3.1.1/gallery/index.html各种图打开都有源程序。

1、绘图流程&常用图

①分别导入Matplotlib.pyplot和numpy
②定义横轴标度并以横轴标度为自变量,定义纵轴功能函数
③figure()函数指定图像长宽比
④plot()函数绘制功能函数
⑤plt的属性函数设置图像属性
⑥show()函数显示图像

格式:

plt.plot(x,y,其他参数)

其他参数label、color、linewidth、b--(同时指定颜色和线型,点(.)实线(-)虚点线(-.)点线(:)虚线(--)无线条(‘"‘))

常用图类型:

折线图plt.plot演示:

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,10,1000)
y = np.sin(x)
z = np.cos(x**2)
plt.figure(figsize=(8,4))
plt.plot(x,y,label = "$sin(x)$",color = "red",linewidth = 2)  #绘图并指定了线的标签,颜色,粗细
plt.plot(x,z,label = "$cos(x^2)$",color = "blue",linewidth = 1)
plt.xlabel("Times")
plt.ylabel("Volt")
plt.title("PyplotTest")
plt.ylim(-1.2,1.2)  #y轴显示范围
plt.legend() #显示图中左下角的提示信息,即提示标签(哪个线是哪个函数)

2、绘制子图&添加标注


Matplotlib中用轴表示一个绘图区域,一个绘图对象(figure)可包含多个轴(axis),可理解为子图。可用subplot函数快速绘制有多个轴的图表(子图):

subplot(numRows,numCols,plotNum)

将绘图区域分为numRows x numCols个子区域,从左到右从上到下依次编号,从编号1开始。三个参数都小于10时可省略之间逗号

标注即为图的注释:
①text()函数可将文本放置在轴域的任意位置,用来标注绘图的某些特征
②annotate()方法提供辅助函数进行定位,使标注变得准确方便
文本位置及标注点位置均由元组(x,y)描述,参数x,y表示标注点位置,参数xytext表示文本位置

③...

#子图绘制演示(接着上面示例的构建的函数)
fig = plt.figure(figsize=(8,4))
ax = fig.add_subplot(211) #创建Axes对象
plt.subplot(2,1,1)  #两行一列个子区域,编号1位置
plt.plot(x,y,label = "$sin(x)$",color = "red",linewidth = 2)
plt.ylabel("y-Volt")
plt.legend()
plt.subplot(2,1,2)  #两行一列个子区域,编号2位置
plt.plot(x,z,label = "$cos(x^2)$",color = "blue",linewidth = 1)
plt.ylabel("z-Volt")
plt.xlabel("Times")
ax.annotate("sin(x)",xy=(2,1),xytext=(3,1.5),arrowprops = dict(facecolor='black',shrink = 0.05))  #添加文字和黑色箭头(Artist模块的简单类型Artist)
ax.set_ylim(-2,2)
plt.show()

3、面向对象画图

4、Pylab模块应用


也是matplotlib里面的一个模块,提供可绘制二维、三维数据的工具模块,包含numpy和pyplot模块中的常见函数,方便快速计算和绘图。

二、Seaborn模块(常用)

它基于matplotlib,但提供了更高级的统计图形方法!

1、常用图

2、代码示例

下面选取逻辑回归算法(一种分类算法,titannic数据集)中特征工程(数据预处理)中的一段代码演示:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn
import sklearn
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn import preprocessingtitanic_data = pd.read_csv("titanic_data.csv")   #泰坦尼克号幸存或遇难者信息
titanic_data = titanic_data[['Survived', 'Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Embarked', 'Fare']] #选取需要的8列
#1.特征工程
titanic_data['Age'].fillna((titanic_data['Age'].mean()), inplace=True) #Age有177个空值,这里用平均值替代
titanic_data.dropna(inplace=True)  #Embarked只有2个空值,可放弃这两个值
titanic_data_X = titanic_data[['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Embarked', 'Fare']]
titanic_data_Y = titanic_data[['Survived']]  #分离自变量X和因变量Y(最后的分类结果为2个1或0,是否存活)
X_train, X_test, Y_train, Y_test = train_test_split(titanic_data_X, titanic_data_Y,test_size=0.20)  #将数据分成训练集和测试集
seaborn.countplot(x='Pclass', data = X_train)  #检查Pclass(舱位等级)柱状图
plt.show()

seaborn.displot(X_train['Age'])                #检查Age分布图(柱状图+核密度估计)
plt.show()

seaborn.displot(X_train['Fare'])               #检查Fare(票价)分布图(柱状图+核密度估计)
plt.show()

age_scaler = StandardScaler()                  #创建Z-Score标准化对象,对Age进行分类特征标准化
age_scaler.fit(pd.DataFrame(X_train['Age']))
X_train.loc[:, 'Age'] = age_scaler.transform(X_train[['Age']])   #双[]fare_scaler = StandardScaler()                  #创建Z-Score标准化对象,对Fare(票价)进行分类特征标准化
fare_scaler.fit(pd.DataFrame(X_train['Fare']))
X_train.loc[:, 'Fare'] = fare_scaler.transform(X_train[['Fare']])  #双[]X_train.loc[:, 'Sex'] = X_train['Sex'].map({'female': 0, 'male': 1}) #将Sex映射为0,1embarked_encoder = preprocessing.LabelEncoder() #创建编码对象,对Embarked(登船口3个)编码
embarked_encoder.fit(pd.DataFrame(X_train['Embarked']))
X_train.loc[:, 'Embarked'] = embarked_encoder.transform(X_train[['Embarked']])#截至此,将所有数据的格式转换完成,用heatmap检查下特征之间的关联性
seaborn.heatmap(X_train.corr())
plt.show()

三、Artist模块


Matplotlib绘图库的API包含3个图层——画板、渲染、artist.Artist(如何渲染)。相比Pyplot和Pylab两个API,Artist用于处理所有的高级结构,如处理图表、文字、曲线等的绘制和布局,不需要关注底层的绘制细节。
Artist分简单类型、容器类型两种。简单类型的Artist为标准的绘图元件,如Line2D、Rectangle、Text、AxesTmage等;容器类型可以包含许多简单类型的Artist组成一个整体,如Axis、Axes、Figure等。

步骤:

①创建Figure对象
②用Figure对象创建一个或多个Axes或者Subplot对象
③调用Axes等对象的方法创建各种简单类型的Artist

Matplotlib所绘制的图表中的每一个元素都由Artist控制,而每一个Artist对象包含很多属性来控制显示效果,常见属性:

alpha透明值,0完全透明,1完全不透明
animate布尔值,绘制动画效果是使用
axes此Artist对象所在的Axes对象,可能为None
figure此Artist对象所在的Figure对象,可能为None
label文本标签
picker控制Artist对象选取
zorder控制绘图顺序

所有属性都可通过相应的get_*和set_*函数读写,如将alpha设置为当前值的一半:

fig.set_alpha(0.5*fig.get_alpha())

若一句代码设置多个属性:

fig.set(alpha = 0.5,zorder = 2,label = '$sin(x)$')

四、Pandas绘图

pandas是python最强大的数据分析和探索工具,包含高级的数据结构和精巧的工具。它构建在numpy之上,使得以numpy为中心的应用更便捷;支持类似于SQL的数据操作,具有丰富的数据处理函数;它的作图依赖于matplotlib,通常两者一起使用。

1、数据框(dataframe)&系列(series)

pandas带两个重要数据结构:数据框(dataframe)、系列(series)
①数据框

二维表,行列都有索引,面向行列的操作对称。创建数据框的方法很多,常用包含相等长度列表的字典或Numpy数组来创建数据库,行索引默认由0开始,列索引用户自定义(也可自定义行索引,列索引要与字典对应不然数据为空)

import pandas as pd
data = {'name':['小明','小红','小刚','小强','大壮'],'age':[15,16,14,18,20],'score':[88,99,65,95,67]}
dataframe1 = pd.DataFrame(data)
dataframe2 = pd.DataFrame(data,columns=['name','age','score'],index=['one','two','three','four','five'])
print(dataframe1)
print(dataframe2)
运行结果:name  age  score
0   小明   15     88
1   小红   16     99
2   小刚   14     65
3   小强   18     95
4   大壮   20     67name  age  score
one     小明   15     88
two     小红   16     99
three   小刚   14     65
four    小强   18     95
five    大壮   20     67

②系列

对具有同一属性的值的统称,可理解为一维数组(退化了的数据框)

print(dataframe2['name'])
运行结果:
one      小明
two      小红
three    小刚
four     小强
five     大壮
Name: name, dtype: object

2、pandas常用绘图函数

plot():绘制线性二维图(matplotlib/pandas库都有)
pie():绘制饼形图(matplotlib/pandas、库都有)
hist():绘制二维条形直方图(matplotlib/pandas库都有)
boxplot():绘制样本数据箱体图(pandas库)
plot(logy = True):绘制y轴的对数图(pandas库)
plot(yerr = error):绘制误差条形图(pandas库)

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

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

相关文章

kafka为什么如此之快?

天下武功,唯快不破。同样的,kafka在消息队列领域,也是非常快的,这里的块指的是kafka在单位时间搬运的数据量大小,也就是吞吐量,下图是搬运网上的一个性能测试结果,在同步发送场景下,…

Java SE 学习笔记(十七)—— 单元测试、反射

目录 1 单元测试1.1 单元测试概述1.2 单元测试快速入门1.3 JUnit 常用注解 2 反射2.1 反射概述2.2 获取类对象2.3 获取构造器对象2.4 获取成员变量对象2.5 获取常用方法对象2.6 反射的作用2.6.1 绕过编译阶段为集合添加数据2.6.2 通用框架的底层原理 1 单元测试 1.1 单元测试概…

【Linux】常见的Linux命令

目录 一、与目录有关的操作 二、与文件有关的操作 三、针对目录的操作 三、在linux上搭建环境 一、与目录有关的操作 1.ls 显示目录内容列表 ls / 这里的 / 表示根目录,相当于windows中的此电脑,linux中没有盘符。 ls -l / 显示详细信息 可以…

Redis Twemproxy 集群,水平扩展 ,扩容方案

文章目录 一、概述二、Twemproxy 分布模式三、测试规划四、Redis 服务实例准备4.1 配置Redis实例4.2 创建关资源4.3 启动Redis服务实例 五、Twemproxy 安装准备六、Twemproxy 安装及集群配置6.1 安装 Twemproxy6.2 配置 Twemproxy6.3 启动 twemproxy6.4 测试 twemproxy 集群 如…

基于Spring Boot的大学课程排课系统设计与实现

摘 要 大学课程排课是现代教育管理中重要的一环。目前,传统的排课方式已经无法满足日益增长的课程需求和学生个性化的诉求。因此,研究一种基于遗传算法的大学课程排课系统是非常必要的。本研究旨在开发一种基于SpringBoot Vue的大学课程排课系统&#x…

[架构之路-252/创业之路-83]:目标系统 - 纵向分层 - 企业信息化的呈现形态:常见企业信息化软件系统 - 企业应用信息系统集成

目录 第一章 什么是企业应用信息系统集成What 1.1 简介 1.2 架构 二、为什么需要企业应用信息系统集成Why 三、如何实现企业应用信息系统集成 3.1 步骤 3.2 企业应用集成的层次 3.3 业务流程重组 第一章 什么是企业应用信息系统集成What 1.1 简介 企业应用信息系统集…

HDFS 读写架构

一、组成架构 1、NameNode(NN) : 集群的Master,它是一个主管,管理者 (1) 管理HDFS的命名空间 (2) 配置副本策略 (3) 管理数据块(Block)映射信息 (4) 处理客户端读写请求 2、DataNode(DN) : 集群的Slave。NN下达命令,DataNode执行实际操作。…

最新版付费进群源码带自动定位和分销以及分站功能完整版无加密

简介 看到别人发那些不是挂羊头卖狗肉,要么就是发的缺少文件引流的。非常滴恶心 这源码是我付费花钱买的免费分享给大家,功能完整。而且无加密 功能:新建分销会员,设置账号密码,收款方式等 说明: 分站…

Flutter 04 按钮Button和事件处理、弹框Dialog、Toast

一、按钮组件 1、按钮类型: 2、按钮实现效果: import package:flutter/material.dart;void main() {runApp(const MyApp()); }class MyApp extends StatelessWidget {const MyApp({Key? key}) : super(key: key);overrideWidget build(BuildContext co…

【设计模式】第16节:行为型模式之“命令模式”

一、简介 命令模式:将请求(命令)封装为一个对象,这样可以使用不同的请求参数化其他对象(将不同请求依赖注入到其他对象),并且能够支持请求(命令)的排队执行、记录日志、…

硬件测试(二):波形质量

一、信号质量测试 信号在传输的过程中,一般不是标准的矩形波信号,信号质量测试即通过示波器测试单板硬件的数字信号和模拟信号的各项指标,包括电源、时钟、复位、CPU小系统、外部接口(USB、网口、串口)、逻辑芯片(CPLD…

WiFi 6下的大规模部署策略

随着数字化时代的快速发展,我们正处于一个多设备、高密度连接的时代。在这个背景下,WiFi 6(802.11ax)作为一项新的无线通信标准,被广泛认为是满足未来大规模连接需求的关键技术。本文将深入研究WiFi 6在大规模部署中的…

ardupilot开发 --- 代码解析 篇

0. 前言 根据SITL的断点调试和自己阅读代码的一些理解,写一点自己的注释,有什么不恰当的地方请各位读者不吝赐教。 1. GCS::update_send 线程 主动向MavLink system发送消息包。 1.1 不断向地面站发送飞机状态数据 msg_attitude: msg_location: n…

【腾讯云HAI域探秘】AI让我变成灵魂画手

【腾讯云HAI域探秘】AI让我变成灵魂画手 文章目录 【腾讯云HAI域探秘】AI让我变成灵魂画手前言环境搭建进入 StableDiffusionWebUI使用 高性能应用服务HAI 部署的 StableDiffusionWebUI 快速进行AI绘画总结 前言 最近有幸参与了腾讯云举办的 腾讯云 HAI 产品体验活动。在这个过…

Java——java.time包使用方法详解

Java——time包使用方法详解 java.time 包是 Java 8 引入的新日期和时间 API(JSR 310),用于替代旧的 java.util.Date 和 java.util.Calendar 类。它提供了一组全新的类来处理日期、时间、时间间隔、时区等,具有更好的设计和易用性…

“泰山众筹:引爆全球的财富狂潮!“

想象一下,你手中的白酒不再只是简单的饮品,而是一份珍贵的投资,一份充满惊喜的冒险,一份财富的种子!在这个神奇的时刻,让我们一起探索泰山众筹模式的魅力! 在传统的投资领域,你是否…

PC端视频编辑处理的全方位解决方案

视频已经成为企业传播信息、展示品牌形象的重要工具。然而,制作高质量的视频并非易事,需要专业的技术和设备。这就是美摄科技发挥作用的地方。我们为企业提供一站式的PC端视频编辑处理解决方案,帮助企业轻松制作出专业级别的视频。 美摄科技…

学习笔记二十八:K8S控制器Daemonset入门到企业实战应用

DaemonSet控制器:概念、原理解读 DaemonSet概述DaemonSet工作原理:如何管理PodDaemonset典型的应用场景DaemonSet 与 Deployment 的区别DaemonSet资源清单文件编写技巧 DaemonSet使用案例:部署日志收集组件fluentdDaemonset管理pod&#xff1…

【ES专题】ElasticSearch 高级查询语法Query DSL实战

目录 前言阅读对象阅读导航前置知识数据准备笔记正文一、ES高级查询Query DSL1.1 基本介绍1.2 简单查询之——match-all(匹配所有)1.2.1 返回源数据_source1.2.2 返回指定条数size1.2.3 分页查询from&size1.2.4 指定字段排序sort 1.3 简单查询之——…

图片路径名动态生成

写成这样也可以 :src"./src/assets/ScreenLeft/btn${isShowLeft ? Show : Hide}.png"为了节省开销&#xff0c;这种小图标&#xff0c;可以用i标签 const imgUrl ref("icon1");<iclass"w-50px h-50px":style"{backgroundImage: url(./…