热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据探索性分析(EDA)常用方法大合集

EDA(ExploratoryDataAnalysis),全名为数据探索性分析,是通过了解数据集,了解变量间的

EDA(Exploratory Data Analysis),全名为数据探索性分析,是通过了解数据集,了解变量间的相互关系以及变量与预测值之间的关系,从而帮助我们后期更好地进行特征工程和建立模型,是数据挖掘、机器学习中十分重要的一步。

下面我们会将EDA中常用的方法进行总结,帮助大家提高EDA效率。由于本节内容较多,我们将分几篇系列文章为大家分享。

首先来看看一个常规的EDA都需要做哪些事情。

一是对我们要分析的数据进行一个整体的了解即数据的整体概览,这一环节我们可以了解数据的特征、类型、量纲等基本信息,并对缺失值、异常值等进行处理;

二是查看数据的分布情况,尽量将数据的分布调整成利于机器学习的输入形式,对于偏斜分布、重尾分布进行规整,一般调整为正太分布;

三是对类别型数据进行处理,通常采用不同的编码方式对其进行编码,以便转化成数值型数据;

四是重点对数值型数据进一步进行探索分析,查看数据之间的相关性、独立性等,以便选取更为有效的特征

本文重点介绍数据概览及处理的常用方法

首先导入常用的库

#导入常用库import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as sns# 使用 jupyter notebook 自身显示图像%matplotlib inline

  • 显示数据前5行

train.head()


  • 显示数据末尾5行

train.tail()


  • 显示数据维度

df.shape # 查看行数和列数


  • 显示数据基本信息

train.info()


  • 显示数据统计信息

train.describe()

 

其中25%、50%、75%为分位数,分别表示数据按照从小到大进行排序后,前25%、50%、75%数据中最大值的那个点,以season列为例,前25%数据中最大值为2;前50%数据中最大值为3,前75%数据中最大值为4,这样可以方便我们快速了解数据的分布情况。

diabetes_data.describe().T


  • 查看非数值型数据的统计情况

Sample.describe(include=['O'])

 


  • 查看列名

df.columnsIndex(['Product_ID', 'Gender', 'Age', 'Occupation', 'City_Category',       'Stay_In_Current_City_Years', 'Marital_Status', 'cat1', 'cat2', 'cat3',       'Purchase', 'B', 'C'],      dtype='object')


  • 删除某一列无用特征

df.drop(['User_ID'],axis=1,inplace=True)


  • 查看某一列取值的唯一值,Age、City_Category为列名

df.Age.unique()array(['0-17', '55+', '26-35', '46-50', '51-55', '36-45', '18-25'],      dtype=object)
df.City_Category.unique()array(['A', 'C', 'B'], dtype=object)


  • 对某列取值进行映射

#例如将Gender列原取值F映射为0,M映射为1df['Gender']=df['Gender'].map({'F':0, 'M':1})#将Age取值映射到1-7。df['Age']=df['Age'].map({'0-17':1, '18-25':2, '26-35':3, '36-45':4, '46-50':5, '51-55':6, '55+':7 })


  • 获取每一列中数据为空的数量

df.isnull().sum()


  • 统计某一列不同的取值的数量,Product_Category为列名,返回值第一列为取值情况,第二列为该值的数量

df.Product_Category.value_counts()  


  • 空值处理的方法

#直接删除空值行test_set.dropna(inplace=True)#使用众数填充空值df['cat2'] = df['cat2'].fillna(df['cat2'].mode()[0], inplace = True)#使用均值填充空值df['Purchase'] = df['Purchase'].fillna(df['Purchase'].mean(), inplace = True)#使用中位数填充空值diabetes_data_copy['SkinThickness'].fillna(diabetes_data_copy['SkinThickness'].median(), inplace = True)


  • 改变某一列的数据类型(只能向下转换)

df['Stay_In_Current_City_Years']=df['Stay_In_Current_City_Years'].astype(int)


  • 使用某一列或几列为唯一标识,删除重复数据,保留唯一值。

#inplace=True表示直接在原数据上进行操作,否则返回一个新DataFramedata.drop_duplicates(['Age'],'first',inplace=True)

AI自研社是一个专注人工智能、机器学习技术的公众平台,目前已发表多篇连载文章,对机器学习领域知识由浅入深进行详细的讲解,其中包含了大量实例及代码参考,对学习交流有很大帮助,欢迎大家关注。


推荐阅读
  • 在机器学习领域,深入探讨了概率论与数理统计的基础知识,特别是这些理论在数据挖掘中的应用。文章重点分析了偏差(Bias)与方差(Variance)之间的平衡问题,强调了方差反映了不同训练模型之间的差异,例如在K折交叉验证中,不同模型之间的性能差异显著。此外,还讨论了如何通过优化模型选择和参数调整来有效控制这一平衡,以提高模型的泛化能力。 ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • OpenAI首席执行官Sam Altman展望:人工智能的未来发展方向与挑战
    OpenAI首席执行官Sam Altman展望:人工智能的未来发展方向与挑战 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 本文详细介绍了批处理技术的基本概念及其在实际应用中的重要性。首先,对简单的批处理内部命令进行了概述,重点讲解了Echo命令的功能,包括如何打开或关闭回显功能以及显示消息。如果没有指定任何参数,Echo命令会显示当前的回显设置。此外,文章还探讨了批处理技术在自动化任务执行、系统管理等领域的广泛应用,为读者提供了丰富的实践案例和技术指导。 ... [详细]
  • 使用Maven JAR插件将单个或多个文件及其依赖项合并为一个可引用的JAR包
    本文介绍了如何利用Maven中的maven-assembly-plugin插件将单个或多个Java文件及其依赖项打包成一个可引用的JAR文件。首先,需要创建一个新的Maven项目,并将待打包的Java文件复制到该项目中。通过配置maven-assembly-plugin,可以实现将所有文件及其依赖项合并为一个独立的JAR包,方便在其他项目中引用和使用。此外,该方法还支持自定义装配描述符,以满足不同场景下的需求。 ... [详细]
  • 本文介绍了如何利用 Delphi 中的 IdTCPServer 和 IdTCPClient 控件实现高效的文件传输。这些控件在默认情况下采用阻塞模式,并且服务器端已经集成了多线程处理,能够支持任意大小的文件传输,无需担心数据包大小的限制。与传统的 ClientSocket 相比,Indy 控件提供了更为简洁和可靠的解决方案,特别适用于开发高性能的网络文件传输应用程序。 ... [详细]
  • 如何在C#中配置组合框的背景颜色? ... [详细]
  • Objective-C 中的委托模式详解与应用 ... [详细]
  • 在前文探讨了Spring如何为特定的bean选择合适的通知器后,本文将进一步深入分析Spring AOP框架中代理对象的生成机制。具体而言,我们将详细解析如何通过代理技术将通知器(Advisor)中包含的通知(Advice)应用到目标bean上,以实现切面编程的核心功能。 ... [详细]
  • 投融资周报 | Circle 达成 4 亿美元融资协议,唯一艺术平台 A 轮融资超千万美元 ... [详细]
  • 深入浅出解读奇异值分解,助你轻松掌握核心概念 ... [详细]
  • 从2019年AI顶级会议最佳论文,探索深度学习的理论根基与前沿进展 ... [详细]
author-avatar
禅茶一味2502922807_527
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有