数据科学 - 数据可视化(持续更新)

news2024/12/23 9:16:16

1. 前言​​​​​​​

数据可视化能够将复杂的数据集转化为易于理解的图形、图表或图像。这种直观的表现形式使得人们能够更快地理解数据的分布、趋势、异常值以及数据之间的关系,从而更深入地洞察数据背后的信息。

数据可视化在数据分析和决策制定过程中具有不可替代的作用。它不仅能够帮助人们更好地理解数据、识别模式和趋势、增强沟通效果,还能够辅助决策制定、提升数据质量、激发创新思维和提高工作效率。因此,掌握数据可视化技能对于数据分析师、数据科学家以及任何需要处理和分析数据的人员来说都至关重要。

2. 基础作图

2.1 折线图

在使用python进行可视化操作最离不开的就是我们的matplotlib库

import matplotlib.pyplot as plt

在这个库中有着多种工具帮助我们对数据作出相应的绘图。

#可视化matplotlib
import matplotlib.pyplot as plt
train = pd.DataFrame({'code':[1,2,3,4,5],'price':[222,333,444,555,666]})
train.plot()
plt.plot(train)

自定义一个数据集train,包含code与price,让我们对此简单的作一个图。

直接选用train数据集作图我们可以看出系统自动画了两条折线,plot会默认样本数量为x轴的刻度,y轴就是对应标签属性数。在未指明的情况下,plot会默认创建相应的坐标轴。

2.2 plot参数

如上图所示,这是一个十分简陋的折线统计图,plot函数为我们提供了许多参数可以对图进行进一步调整:

  1. x:指定x轴的数据,可以是一个数组、列表或者NumPy数组。这是绘制图形时横坐标的数据。

  2. y:指定y轴的数据,可以是一个数组、列表或者NumPy数组。这是绘制图形时纵坐标的数据。

  3. linestyle(或简写为ls):指定线条的样式,如实线('-')、虚线('--')、点划线('-.')等。默认为实线。

  4. linewidth(或简写为lw):指定线条的宽度,可以是整数或浮点数。默认为1。

  5. color(或简写为c):指定线条的颜色。可以是字符串(如'red'、'blue'等)、缩写(如'r'、'b'等)或者十六进制颜色代码(如'#FF0000')。默认为蓝色。

  6. marker:指定数据点的标记样式,如'o'(圆圈)、'+'(加号)等。默认为不使用标记('None')。

  7. markersize(或简写为ms):指定数据点标记的大小,可以是整数或浮点数。默认为6。

  8. markeredgecolor(或简写为mec):指定数据点边缘的颜色。可以是字符串、缩写或者十六进制颜色代码。默认为与线条颜色相同。

  9. markerfacecolor(或简写为mfc):指定数据点填充的颜色。可以是字符串、缩写或者十六进制颜色代码。默认为无填充颜色('none')。

  10. label:指定线条的标签,用于图例显示。默认为不显示图例('None')。注意,虽然plot()函数提供了图例标签信息,但需要配合legend()函数才能显示图例。

  11. alpha:指定线条和数据点的透明度,取值范围为0(完全透明)到1(完全不透明)。默认为1。

  12. zorder:指定图层顺序,数值越大,图层越靠前。默认为0。

  13. data = pd.DataFrame([1,4,5,7,9,11,20])
    data.plot(color='red',alpha=0.9,legend=True,marker='o',linestyle='--',markeredgecolor='blue',label=2)
  14. 其他常见参数

  15. xlabel:指定x轴的标签。

  16. ylabel:指定y轴的标签。

  17. title:指定图表的标题。

  18. xlimylim:分别指定x轴和y轴的显示范围。

  19. grid:是否显示网格线,可以设置为True或False。

  20. legend:虽然作为参数传入时通常用于控制图例的显示(但更常见的做法是使用legend()函数),但注意plot函数本身不接受legend作为直接控制图例显示的参数。

  21. figsize:指定图表的大小,以英寸为单位,格式为(width, height)。

2.3 图像调整

在图中看到最下面的一个直线趋近于直线,是因为我们的y轴刻度范围给的太大,这就需要我们进一步对图进行刻画。

作图

plt.plot(color='red')

坐标轴刻度范围

plt.xlim([0,4])
plt.ylim([0,300])

坐标轴刻度

plt.xticks([1,2,10],labels=['a','b','c'],rotation=0)

坐标轴标签

plt.xlabel('sample')
plt.ylabel('amount')

图的标题

plt.title('easy')

请记住,DataFrame的行表示图的横坐标,列为纵坐标

3. 可视化图像

以wine数据集为例

获取到如此庞大的数据集我们一脸懵逼,但通过使用作图的方式我们可以很好的去找到每一个类别中相比较下独特的属性。

例如柱状统计图直观反映各个数据项的比较关系。

3.1 柱状图

3.1.1 离散柱状图

柱状图特别适合用来展示分类变量的数据,所以一般横坐标表示分类变量,柱的高度代表其对应数值。

df1 = data['class'][data['Alcohol'] >13].value.counts() #统计这一列中出现元素的个数
df2 = data['class'][data['Alcohol'] <= 13].value_counts()
train = pd.DataFrame({'>13':df1,'<=13':df2}) #每一个类别有两个柱
train.plot(kind=bar)

上述代码统计每一个类别中酒精度超过13以及不超过13的数量。

离散柱状图作为最常见的柱状统计图,能够一眼看出各个数据的大小,便于比较数据之间的差别。

运行结果如下: 

 上图可以发现类别为1的样本大多数酒精含量超过13,相比之下偏高,类别2则大部分低于13;类别3的样本则是较为均匀,一半一半。

3.1.2 堆叠柱状图

train.plot(kind='bar',stacked=True) #堆叠柱状图

 

 堆叠柱状图可以更加直观看出每一类别的组成成分,以及不同类别之间总量的大小关系。

  • 同类数据对比:在同一根柱子内,不同分类的数据可以直接进行对比,观察者可以清楚地看到哪些分类占据主导地位,哪些分类贡献较小。
  • 跨类别数据对比:通过对比不同柱子(即不同分类或时间点)的高度和构成,观察者可以分析不同分类或时间点之间的数据变化趋势和差异。

3.2 直方图

直方图通过连续变量的区间分布来展示数据的分布情况。它主要用于描述数值变量的分布。

注意区分柱状图bar主要用于描述分类(categorical)变量的数据,统计分类变量的大小。所以为了区分每一类别,bar图不同类别柱都是相隔开的。

data = {'A': [2, 2, 2, 2, 1],  
        'B': [5, 4, 3, 2, 1],  
        'C': [2.5, 2.7, 3.0, 3.2, 3.5]}  
df1 = pd.DataFrame(data)  
df1
df1['A'].plot(kind='hist',bins=10,alpha=0.7,align='mid') #alpha控制透明度

调节hist标签位置

上图看出,柱子的中心并没有与x轴标签对齐

调节hist标签位置通常是一个两步过程:首先绘制直方图,然后(可选地)调整x轴的刻度标签位置。

import pandas as pd  
import numpy as np  
  
# 示例数据  
#手动调节对齐
data = {'A': [2, 2, 2, 2, 1],  
        'B': [5, 4, 3, 2, 1],  
        'C': [2.5, 2.7, 3.0, 3.2, 3.5]}  
df1 = pd.DataFrame(data)  
df1
#hist默认上下界限为count第一个与最后一个,想要更改x轴标签,需要选中上下限位置中柱体的居中位置的标签修改labels
# 计算直方图的柱子和中心  
counts, bin_edges = np.histogram(df1['A'], bins=11, density=False)  #bins代表柱子个数,一般为间距+1,与计数点一样多
bin_centers = (bin_edges[:-1] + bin_edges[1:]) / 2  
print(counts,bin_edges)
print(bin_centers)
# 绘制直方图  
df1['A'].plot(kind='hist', bins=11, alpha=0.7,density=Flase)  #density是否应该被归一化为概率密度
  
# 手动设置x轴的刻度标签(可选)  
plt.xticks(bin_centers,labels=[1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0])  
  
# 显示图形  
plt.show()

hist默认上下界限为count第一个与最后一个,想要更改x轴标签,需要选中上下限位置中柱体的居中位置的标签修改labels。换句话来讲想要通过修改标签位置,实际上是找到柱子中心底座的标签,再将其标签的label进行修改,柱子是不会移动的。 

 ​​​​​​​

这样就是手动对齐直方图与其标签。 

3.3 散点图

3.3.1 分组散点图

plt.scatter(data['class'],data['Total_phenols'],color='red')
plt.xticks(ticks=[1,2,3],labels=['A','B','C'],rotation=-45) #负数为逆时针旋转
plt.xlabel('class')
plt.ylabel('Total phenols')
#plt.grid() 显示网格

scatter(x,y),上述代码中class类别代表横坐标,Total_phenols代表纵坐标。通过散点图,可以直观看出每一个类别中的phenols的分布情况。

如下图所示:

上述散点图得知,class1中phenols含量相对较高,离散程度较小;class2离散程度大,phenols含量每一个样本浮动程度也大;而class3含量相对较低。

通过散点图,可以直观的对数据进行统计分析,较为基础的发现每一类别中数据离散程度,极值的相对大小,数据集中内部关系;但仍然需要进一步计算各个指标得出更精准的结论。 

4. 可视化进阶

4.1 子图

#子图
import pandas as pd
data = pd.DataFrame({'A':[2,3],'B':[1,7]})

import matplotlib.pyplot as plt
fig = plt.figure() #创建一张图
ax1 = plt.subplot(1,2,1) #在行为1,列为2(及列方向创建)2个子图
data.plot(kind='bar',ax=ax1) #指定坐标轴
ax1.set_xlabel('Example1')
ax1.set_title('Example1')

ax2 = plt.subplot(1,2,2)

单个图形窗口中创建多个子图(即多个图表),允许用户在一个视图内展示多个数据集或数据维度的对比和关联,从而提高数据分析的效率和深度。 

 

创建子图的作用主要是以下三点:

1. 多角度展示数据

  • 数据对比:subplot允许将不同数据集或同一数据集的不同方面在同一图形界面中展示,便于用户直接对比各数据集或数据维度的差异。

  • 多维度分析:在数据分析中,经常需要从多个角度观察数据,subplot提供了一种直观的方式来同时展示这些不同角度的视图。

2. 提高空间利用率

  • 节省空间:相比于分别创建多个独立的图表,subplot能够在有限的图形界面空间内展示更多信息,减少了图表之间的切换需求。

  • 优化布局:通过合理的布局设计,subplot可以使得整个图形界面看起来更加整洁、有序,提高了数据的可读性。

3. 便于故事讲述

  • 连贯性:在数据报告或演示中,subplot可以帮助构建一个连贯的故事线,通过多个子图的相互呼应和补充,使得数据的呈现更加生动、有力。

  • 引导性:通过合理的子图排列和顺序,可以引导观众或读者的注意力,按照特定的逻辑顺序来理解和分析数据。

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

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

相关文章

【LLM基础知识】LLMs-Attention知识总结笔记v4.0

Attention机制 【1】简要介绍Attention机制 提出Attention的论文**&#xff1a;**Attention Is All You Need 论文地址&#xff1a;https://arxiv.org/pdf/1706.03762.pdf 提出Attention的背景&#xff1a;RNN处理序列数据时&#xff0c;token是逐个喂给模型的。比如在a3的位…

C++:map容器的使用

一、map的使用介绍 map文档介绍 1.1 map的模版参数 Key&#xff1a;键值对中Key的类型 T&#xff1a;键值对中value的类型 Compare&#xff1a;比较器的类型&#xff0c;map中的元素是按照Key来进行比较的&#xff0c;缺省情况&#xff08;不传参数时&#xff09;按照小于来…

健康读物:浮毛带来的危害竟这么大?去浮毛宠物空气净化器分享

前两天去我朋友家玩&#xff0c;进他家扑面而来的浮毛让我觉得呼吸都困难了不少&#xff0c;朋友说也有打扫&#xff0c;空气中的浮毛是真没辙&#xff0c;而且他觉得浮毛那么大又进不了肺部&#xff0c;对健康没啥危害&#xff0c;顶多吃几口猫毛&#xff0c;就没有处理。于是…

2024年7月国产数据库大事记-墨天轮

本文为墨天轮社区整理的2024年7月国产数据库大事件和重要产品发布消息。 目录 2024年7月国产数据库大事记 TOP102024年7月国产数据库大事记&#xff08;时间线&#xff09;产品/版本发布兼容认证代表厂商大事记排行榜新增数据库厂商活动相关资料 2024年7月国产数据库大事记 …

操作系统(七)深入理解Linux内核进程上下文切换

本文深入探讨了Linux内核中的进程上下文切换机制。作者韩传华首先解释了进程上下文的概念&#xff0c;包括虚拟地址空间和硬件上下文&#xff0c;并以Linux 5.0内核源码和ARM64架构为例进行讲解。文章详细介绍了进程上下文切换的两个主要过程&#xff1a;进程地址空间切换和处理…

PHP餐饮点餐系统小程序源码

&#x1f37d;️餐饮新纪元&#xff1a;揭秘高效点餐系统的魅力✨ &#x1f4f1;一键下单&#xff0c;快捷就餐新体验&#x1f680; 在这个快节奏的时代&#xff0c;谁不渴望在忙碌之余享受一顿快速而美味的餐食呢&#xff1f;餐饮点餐系统的出现&#xff0c;就像是为我们的餐…

Spring Boot实战:拦截器

一.拦截器快速入门 1.1了解拦截器 什么是拦截器&#xff1a; 概念 &#xff1a;拦截器是Spring框架提供的核⼼功能之⼀, 主要⽤来拦截⽤⼾的请求, 在指定⽅法前后, 根据业务需要执⾏预先设定的代码。 也就是说, 允许开发⼈员提前预定义⼀些逻辑, 在⽤⼾的请求响应前后执⾏. 也…

CoA:提升大型语言模型的多步推理能力

人工智能咨询培训老师叶梓 转载标明出处 大模型&#xff08;LLMs&#xff09;在处理复杂问题时&#xff0c;往往需要借助外部工具来获取现实世界知识&#xff0c;例如网络搜索、数学和物理规则等。然而现有的工具辅助语言模型在多步推理问题中调用工具时存在效率和准确性的挑战…

企业级敏捷框架:业务驱动型敏捷与产品需求团队

本文介绍了一种新的企业级敏捷框架——业务驱动型敏捷&#xff08;Business-driven Agile&#xff09;与 PRT&#xff08;Product Requirement Team&#xff09;&#xff0c;旨在解决传统敏捷方法中需求定义的瓶颈&#xff0c;从而提升产品价值并提高开发效率。原文: A new ent…

dynamic-datasource+Mybatis多数据源使用

Gitee地址:dynamic-datasource: 基于 SpringBoot 多数据源 动态数据源 主从分离 快速启动器 支持分布式事务 依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency&…

腾讯云AI代码助手:智驭Python,编织代码的诗篇 —— 深度测评体验

文章目录 引言&#x1f496;1. 开发环境介绍&#x1f4bb;vscode安装插件方法一&#xff1a;链接访问下载安装方法二&#xff1a;vscode直接安装 2. 使用实例✨1. &#x1f6e1;️代码补全&#xff0c;分秒必争2. &#x1f4a1; 技术对话&#xff0c;智慧碰撞3. &#x1f527; …

【分享】洁净室环境检测必测项目详细解读

环境监测&#xff08;Environmental monitoring&#xff09;在实现此目标中起着重要的作用——它提供了有关制造环境的关键信息&#xff0c;避免放行可能受污染的产品。 由于环境监测在制造过程中的重要性&#xff0c;相关机构围绕市场活动推出了许多法规要求和指南。这些标准随…

el-table自动滚动到最底部

我的需求是这样的&#xff0c;因为我的表格是动态的&#xff0c;可以手动新增行&#xff0c;固定表头&#xff0c;而且需要一屏显示&#xff0c;为了方便用户就需要再新增的时候表格自动向上滚动。 差了官方文档后发现有一个属性可以支持 这个属性正是自己需要的&#xff0c;所…

朵拉朵尚:坚持深耕护肤领域 荣获2023年度影响力品牌奖

朵拉朵尚&#xff1a;坚持深耕护肤领域 荣获2023年度影响力品牌奖 伴随着经济全球化的浪潮&#xff0c;新产业、新业态、新动能不断涌现&#xff0c;我国化妆品消费也迅速崛起&#xff0c;成为近年来化妆品行业发展增长速度最快的国家。1月30日&#xff0c;朵拉朵尚受邀参加快…

使用 Plotly 创建专业可视化时你应该知道的七个关键功能

欢迎来到雲闪世界。我们习惯于在在线报纸上看到交互式可视化&#xff0c;并且我们经常想知道数据记者使用什么工具来创建这些看起来专业的可视化。事实是&#xff0c;创建这种类型的可视化不需要任何特殊软件&#xff1b;Python 中的大多数交互式可视化库都是高度可定制的&…

Stable Diffusion史诗级更新! WebUI 1.10.0时代来了!

前言 大家好&#xff0c;我是每天分享AI应用的萤火君&#xff01; 前几天 AUTOMATIC1111 发布了Stable Diffusion WebUI 1.10&#xff0c;我也在第一时间将云环境的镜像升级到了最新版本&#xff0c;有兴趣的同学可以去体验下&#xff0c;目前已经发布到了AutoDL&#xff0c;…

博客趣二维码生成器网站源码

这款二维码生成源码可以把电子名片、文本、wifi网络、电子邮件、短信、电话号码、网址等信息生成对应的二维码图片。地图位置二维码生成使用是谷歌地图的api地址&#xff0c;懂程序的可以改成国内地图http://www.bokequ.com/588.html

CST软件如何添加和管理自定义的材料?

经常有用户想手动添加材料到CST软件的材料库&#xff0c;或让CST软件指向自定义的材料库&#xff0c;由于CST软件没有自动追踪用户材料数据的功能&#xff0c;这里就需要用户知道一些小技巧&#xff0c;不然看不到这些材料哦 1. 材料库的路径&#xff1a; 首先解释材料库…

Django中事务的基本使用

1. Django事务处理 事务(Transaction): 是一种将多个数据库操作组合成一个单一工作单元的机制. 如果事务中的所有操作都成功完成, 则这些更改将永久保存到数据库中. 如果事务中的某个操作失败, 则整个事务将回滚到事务开始前的状态, 所有的更改都不会被保存到数据库中. 这对于…

流媒体服务器XMedia插件服务安装使用

XMedia是AMS流媒体服务器的一个插件服务&#xff0c;可以扩展支持 FLV 、GB28181上传、WEBRTC、SRT协议上传&#xff0c;增强了服务器的功能 一、服务插件安装 资源下载 XMedia-CentOS7-x86-64-20240710-212007 把安装包放入LINUX服务器&#xff0c;执行如下命令,如果未安装u…