作者:禅茶一味2502922807_527 | 来源:互联网 | 2023-06-19 07:44
EDA(Exploratory Data Analysis),全名为数据探索性分析,是通过了解数据集,了解变量间的相互关系以及变量与预测值之间的关系,从而帮助我们后期更好地进行特征工程和建立模型,是数据挖掘、机器学习中十分重要的一步。
下面我们会将EDA中常用的方法进行总结,帮助大家提高EDA效率。由于本节内容较多,我们将分几篇系列文章为大家分享。
首先来看看一个常规的EDA都需要做哪些事情。
一是对我们要分析的数据进行一个整体的了解即数据的整体概览,这一环节我们可以了解数据的特征、类型、量纲等基本信息,并对缺失值、异常值等进行处理;
二是查看数据的分布情况,尽量将数据的分布调整成利于机器学习的输入形式,对于偏斜分布、重尾分布进行规整,一般调整为正太分布;
三是对类别型数据进行处理,通常采用不同的编码方式对其进行编码,以便转化成数值型数据;
四是重点对数值型数据进一步进行探索分析,查看数据之间的相关性、独立性等,以便选取更为有效的特征。
本文重点介绍数据概览及处理的常用方法
首先导入常用的库
#导入常用库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# 使用 jupyter notebook 自身显示图像
%matplotlib inline
train.head()
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.columns
Index(['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)
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映射为1
df['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()
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表示直接在原数据上进行操作,否则返回一个新DataFrame
data.drop_duplicates(['Age'],'first',inplace=True)
AI自研社是一个专注人工智能、机器学习技术的公众平台,目前已发表多篇连载文章,对机器学习领域知识由浅入深进行详细的讲解,其中包含了大量实例及代码参考,对学习交流有很大帮助,欢迎大家关注。