探索性数据分析 (EDA) 简介

news2024/10/18 14:07:10

文章目录

  • 一、介绍
  • 二、探索性数据分析 (EDA)
  • 三、探索性数据分析的类型
    • 3.1 单变量分析
    • 3.2 双变量分析
    • 3.3 多元分析
  • 四、理解 EDA
  • 五、结论

一、介绍

探索性数据分析是研究或理解数据并提取洞察数据集以识别数据模式或主要特征的过程。EDA 通常分为两种方法,即图形分析和非图形分析。

EDA 非常重要,因为在开始工作之前首先了解问题陈述和数据特征之间的各种关系是一种很好的做法。

在本文中,EDA 注释对于总结发现至关重要。EDA 有助于有效地发现模式、趋势和见解。“eda notes”和“eda”是指导分析过程的关键词,可确保以全面、有条理的方式进行数据探索。

二、探索性数据分析 (EDA)

从技术上讲,EDA 的主要目的是

  • 检查数据分布
  • 处理数据集的缺失值(每个数据集最常见的问题)
  • 处理异常值
  • 删除重复数据
  • 对分类变量进行编码
  • 规范化和缩放
    注意——如果您不熟悉上述某些术语,请不要担心,我们将详细了解每一个术语。

三、探索性数据分析的类型

3.1 单变量分析

单变量分析侧重于一次分析单个变量。它旨在描述数据并发现模式,而不是建立因果关系或关系。使用的技术包括:

描述性统计数据(平均值、中位数、众数、标准差等)
频率分布(直方图、条形图等)

3.2 双变量分析

双变量分析探索两个变量之间的关系。它有助于发现变量对之间的相关性、关系和依赖关系。技术包括:

  • 散点图
  • 相关性分析

3.3 多元分析

多元分析将双变量分析扩展为包括两个以上的变量。它侧重于理解多个变量之间复杂的相互作用和依赖关系。技术包括:

  • 热图
  • 散点图矩阵
  • 主成分分析(PCA)

四、理解 EDA

为了了解探索性数据分析所涉及的步骤,我们将使用 Python 作为编程语言和 Jupyter Notebooks,因为它是开源的,它不仅是一个出色的 IDE,而且非常适合可视化和演示。

步骤 1
首先,我们将导入所需的所有 Python 库,包括用于数值计算和科学计算的NumPy 、用于处理数据的Pandas以及用于可视化的Matplotlib和Seaborn。

步骤 2
然后我们将数据加载到Pandas数据框中。为了进行分析,我们将使用“世界幸福报告”的数据集,该数据集包含以下列:人均 GDP、家庭、预期寿命、自由、慷慨、信任政府腐败等,以描述这些因素对评估幸福感的贡献程度。

步骤3
我们可以通过使用head()方法检查几行来观察数据集 ,该方法返回数据集的前五条记录。

步骤4
利用形状,我们可以观察数据的维度。

步骤5
info()方法显示数据的一些特征,例如列名、列的非空值数量、数据的 Dtype 和内存使用情况。
Python代码:

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

happinessData = pd.read_csv('happiness.csv')
print(happinessData.head())
print("-------------------------")
print("-------------------------")
print(f"Shape of the data: {happinessData.shape}")
print("-------------------------")
print("-------------------------")
print(happinessData.info())

由此,我们可以观察到,我们拥有的数据没有任何缺失值。在这种情况下我们非常幸运,但在现实生活中,数据通常有缺失值,我们需要处理这些缺失值才能使我们的模型准确工作。(注意 - 稍后,我将向您展示如果数据中有缺失值,如何处理)

第 6 步
我们将使用describe()方法,它显示每个数值特征(int64 和 float64 类型)的基本统计特征:非缺失值的数量、平均值、标准差、范围、中位数、0.25、0.50、0.75 四分位数。
在这里插入图片描述
步骤7
处理数据集中的缺失值。幸运的是,此数据集没有任何缺失值,但现实世界并不像我们的情况那么简单。

因此我故意删除了一些值只是为了描述如何处理这种特殊情况。

我们可以通过以下命令检查数据是否包含空值
在这里插入图片描述
我们可以看到,“幸福感分数”和“自由度”特征各有 1 个缺失值。

如何使用一些技巧处理缺失值
删除缺失值——如果数据集很大而缺失值很少,那么我们可以直接删除这些值,因为它不会产生太大影响。
用平均值替换——我们可以用平均值替换缺失值,但如果数据有异常值,则不建议这样做。
用中值替换——我们可以用中值替换缺失值,如果数据有异常值,建议这样做。
用模式值替换——对于分类特征,我们可以这样做。
回归——可以使用数据集中的其他细节来预测空值。
对于我们的情况,我们将用中值替换缺失值来处理缺失值。

幸福感中位数
现在,我们可以再次检查缺失值是否已被处理。
在这里插入图片描述
现在我们可以看到我们的数据集现在没有任何空值。

步骤8
我们可以检查数据集中的重复值,因为重复值的存在会影响我们的 ML 模型的准确性。
在这里插入图片描述
我们可以使用drop_duplicates()删除重复值
在这里插入图片描述
我们可以看到重复值现在已经被处理了。

步骤9

处理数据中的异常值,即数据中的极值。我们可以使用箱线图找到数据中的异常值。
在这里插入图片描述
从上面的箱线图中我们可以看出,数据的正常范围位于块内,异常值则用图最末端的小圆圈表示。

因此,为了处理它,我们可以删除异常值或使用IQR(四分位距法)替换异常值。

在探索性数据分析数据集中,为了识别模式,IQR 被计算为数据的第 25 百分位数和第 75 百分位数之间的差值。百分位数可以通过对特定索引的选择值进行排序来计算。IQR 用于通过定义样本值的限制来识别异常值,这些限制是 IQR 的因子 k。因子 k 的常见值为 1.5。
在这里插入图片描述
现在我们可以再次绘制箱线图并检查异常值是否已被处理。
在这里插入图片描述
第 10 步

规范化和缩放——数据规范化或特征缩放是标准化数据特征范围的过程,因为范围可能有很大差异。所以我们可以使用 ML 算法预处理数据。因此,我们将使用StandardScaler来处理数值,其公式为x-mean/std 偏差。
在这里插入图片描述
我们可以看到,“幸福指数”一栏已经标准化了。

步骤11
我们可以使用corr()方法找到数据不同列之间的 成对相关性。(注意 - 所有非数字数据类型列将被忽略。)

happinessData.corr() 用于查找数据框中所有列的两两相关性。任何“nan”值都会被自动排除。

结果系数是 -1 到 1 之间的值(含 -1 和 1),其中:

1:总正线性相关
0:没有线性相关性,两个变量很可能不会互相影响
-1:总负线性相关性
皮尔逊相关系数是函数“corr”的默认方法。

现在,我们将使用 Seaborn 创建热图来可视化数据不同列之间的相关性:
在这里插入图片描述
从上面的相关性热图中我们可以看出,以下两个因素之间存在很高的相关性:

幸福指数 – 经济(人均 GDP)= 0.78
幸福指数 – 家庭 = 0.74
幸福指数 – 健康(预期寿命) = 0.72
经济(人均 GDP)– 健康(预期寿命)= 0.82
步骤12
现在,我们将使用 Seaborn 通过回归图来可视化经济(人均 GDP)与幸福指数之间的关系。我们可以看到,随着经济的增长,幸福指数也会增加,并呈现出正相关关系。
在这里插入图片描述
现在,我们将使用回归图来直观地展示家庭和幸福指数之间的关系。
在这里插入图片描述

现在,我们将使用回归图来直观地展示健康(预期寿命)和幸福指数之间的关系。我们可以看到,幸福取决于健康,也就是说,健康状况越好,一个人就越幸福。
在这里插入图片描述
现在,我们将使用回归图来可视化自由度和幸福感得分之间的关​​系。我们可以看到,由于这两个参数之间的相关性较小,因此图表更加分散,两者之间的依赖性较小。
在这里插入图片描述
我希望我们现在都对如何执行探索性数据分析(EDA)有一个基本的了解。

因此,以上是我个人遵循的探索性数据分析步骤,但还有各种其他图表和命令,我们可以使用它们来进一步探索数据。

五、结论

探索性数据分析 (EDA) 包括通过单变量、双变量和多变量分析技术检查数据集以发现模式。这些方法依次集中于单个变量、配对变量和多个变量。EDA 还涉及处理缺失值,通常使用均值或中位数插补和预测建模等方法来解决缺失值问题,以确保数据完整性。

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

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

相关文章

Spring Boot 整合 RocketMQ 之顺序消息

前言: 上一篇我们分享了 Spring Boot 整合 RocketMQ 完成普通消息发送的过程,本篇我们来分享一下 RocketMQ 顺序消息的发送。 RocketMQ 系列文章传送门 RocketMQ 的介绍及核心概念讲解 Spring Boot 整合 RocketMQ 之普通消息 Spring Boot 整合 Rock…

大数据-178 Elasticsearch Query - Java API 索引操作 文档操作

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

芯片设计企业ERP软件如何选择更好

在芯片设计这一高科技领域,高效的企业管理成为推动创新与市场响应速度的关键。ERP(企业资源计划)软件作为企业管理的核心工具,其选择直接关系到企业的运营效率与竞争力。那么,芯片设计企业在面对琳琅满目的ERP软件时,如何做出更优…

【HTML + CSS 魔法秀】打造惊艳 3D 旋转卡片

HTML结构 box 类是整个组件的容器。item-wrap 类是每个旋转卡片的包装器&#xff0c;每个都有一个内联样式–i&#xff0c;用于控制动画的延迟。item类是实际的卡片内容&#xff0c;包含一个图片。 <template><div class"box"><div class"item…

Axure横向菜单高级交互

亲爱的小伙伴&#xff0c;在您浏览之前&#xff0c;烦请关注一下&#xff0c;在此深表感谢&#xff01; 课程主题&#xff1a;横向菜单高级交互 主要内容&#xff1a;横向菜单左右拖动、选中效果 应用场景&#xff1a;app横向菜单、pc后台动态区域 案例展示&#xff1a; 演…

ThreadLocal源码详解

目录 Thread、ThreadLocalMap 、ThreadLocal关系 ThreadLocal中的get、Set方法 ThreadLocal 内存泄露问题 Thread、ThreadLocalMap 、ThreadLocal关系 从源码可以看出&#xff1a;Thread类中有成员变量ThreadLocalMap&#xff0c;ThreadLocalMap类中有成员变量Entry[]数组&a…

Spring Cache Caffeine 高性能缓存库

​ Caffeine 背景 Caffeine是一个高性能的Java缓存库&#xff0c;它基于Guava Cache进行了增强&#xff0c;提供了更加出色的缓存体验。Caffeine的主要特点包括&#xff1a; 高性能&#xff1a;Caffeine使用了Java 8最新的StampedLock乐观锁技术&#xff0c;极大地提高了缓存…

buffer/cache内存优化_posix_fadvise_主动释放读缓存cache

1.问题现象 1.htop free命令发现系统 buffer/cache 内存占用高 free -h total used free shared buff/cache available Mem: 61Gi 15Gi 569Mi 1.7Gi 45Gi 43Gi Swap: 30Gi 0.0Ki 30Gi cat /proc/meminfo or grep -E "Buff|Cache" /proc/meminfo Buffers: 370568 kB …

Linux 进程终止和进程等待

目录 0.前言 1. 进程终止 1.1 进程退出的场景 1.2 进程常见退出方法 1.2.1 正常退出 1.2.2 异常退出 2. 进程等待 2.1 进程等待的重要性 2.2 进程等待的方法 2.2.1 wait() 方法 2.2.2 waitpid() 方法 2.3 获取子进程 status 2.4 阻塞等待和非阻塞等待 2.4.1 阻塞等待 2.4.2 非阻…

拼三角问题

欢迎来到杀马特的主页&#xff1a;羑悻的小杀马特.-CSDN博客 目录 一题目&#xff1a; 二思路&#xff1a; 三解答代码&#xff1a; 一题目&#xff1a; 题目链接&#xff1a; 登录—专业IT笔试面试备考平台_牛客网 二思路&#xff1a; 思路&#xff1a;首先明白能组成三角形…

php的echo和print输出语句⑥

在 PHP 中有两个基本的输出方式&#xff1a; echo 和 print。 echo 和 print 区别: echo : 可以输出一个或多个字符串 print : 只允许输出一个字符串。 提示&#xff1a;echo 输出的速度比 print 快&#xff0c; echo 没有返回值&#xff0c;print有返回值1。 <?php …

【赵渝强老师】Oracle的联机重做日志文件与数据写入过程

在Oracle数据库中&#xff0c;一个数据库可以有多个联机重做日志文件&#xff0c;它记录了数据库的变化。例如&#xff0c;当Oracle数据库产生异常时&#xff0c;导致对数据的改变没有及时写入到数据文件中。这时Oracle数据库就会根据联机重做日志文件中的信息来获得数据库的变…

Submariner 服务更新同步测试

测试服务更新同步问题 在集群1 部署 nginx1服务&#xff0c;导出服务&#xff0c;分配的虚拟 IP 为 100.1.255.253 在其他集群检测 serviceimport &#xff0c;可以检测到 nginx1 服务对应的 serviceimport 正常情况下的 serviceexport 如果删除 service 或者 删除 serviceexp…

OpenAI Canvas用户反馈:并不如外界传言般“炸裂”,更不是“AGI的终极交互形态” | LeetTalk Daily...

“LeetTalk Daily”&#xff0c;每日科技前沿&#xff0c;由LeetTools AI精心筛选&#xff0c;为您带来最新鲜、最具洞察力的科技新闻。 Canvas作为一个独立的界面&#xff0c;通过与ChatGPT的结合来提升用户的协作能力和创作效率。尽管用户对其独立性与现有工具的整合存在不同…

闯关leetcode——112. Path Sum

大纲 题目地址内容 解题代码地址 题目 地址 https://github.com/f304646673/leetcode/tree/main/112-Path-Sum 内容 Given the root of a binary tree and an integer targetSum, return true if the tree has a root-to-leaf path such that adding up all the values alo…

OpenCV高级图形用户界面(17)设置一个已经创建的滚动条的最小值函数setTrackbarMin()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::setTrackbarMin 这个函数的作用就是设置指定窗口中轨迹条的最小位置。这使得开发者能够在程序运行时动态地调整轨迹条的范围&#xff0c;而不…

基于STM32的风速风向传感器设计

引言 本项目设计了一个基于STM32的风速和风向传感器系统&#xff0c;能够通过组合使用旋转式风速传感器和电子罗盘&#xff0c;实时测量风速和风向&#xff0c;并将数据通过显示屏或无线模块发送给用户。该系统适用于气象监测、环境监控、农业自动化等场景&#xff0c;具有准确…

微信好友变顾客,7天成效的秘诀

在如今的社交媒体时代&#xff0c; 微信不仅是沟通工具&#xff0c;更是商业营销的重要平台。很多人拥有大量的微信好友&#xff0c;但成交的客户很少&#xff1f;以下四个有效的社交销售秘诀&#xff0c;帮助你在7天内实现转化。 01保持耐心&#xff0c;合理安排跟进时间 在销…

Springboot 整合 Java DL4J 实现安防监控系统

&#x1f9d1; 博主简介&#xff1a;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编程&#xff0c;…

【网络安全】-vulnhub靶场-noob

1.靶机下载&#xff1a; https://www.vulnhub.com/entry/noob-1,746/ 得到ova文件导入虚拟机&#xff0c;并打开虚拟机设置&#xff0c;将靶机-Noob与攻击机-kali的网络适配器都改成NAT仅主机模式&#xff0c;确保两台虚拟机在同一网段上。 2.靶机-Noob ip 判断 命令&#x…