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

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

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/727313.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存