EDA(探索性数据分析)步骤及常用函数总结

csdn博客的第一次尝试–
总结一下两天以来对EDA的学习
主要来自于三个博客和一些官方文档:
1.1.探索性数据分析(EDA,Exploratory Data Analysis)
2.一文带你探索性数据分析(EDA)
3.数据挖掘——EDA(数据探索性分析)(我的同学写的博客,我的编辑思路来自于此)

需要用到的python包

Numpy、Pandas、Matplotlib、Seaborn,Warnings、Missingno(缺失值可视化包)、pandas_profiling(用于生成数据报告)、scipy

文件读取

df=pd.read_csv('train.csv')

数据探索

基本信息

df.shape                 #查看数据的形状
df.info()                #查看数据的基本信息
df.columns               #查看数据的列名
df.head()                #查看数据的前5行
df.describe()            #查看数据的统计信息(均值、方差等)

数据质量评估

缺失值

1.统计

df.isnull()        #表级判断是否为空(若为空返回True)
df.isnull().any()  #列级判断是否为空
df.isnull().sum()  #列级空值统计
#去掉空值并可视化
missing=df.isnull().sum()     
missing=missing[missing>0]        #保留含有空值的列的空值数量
missing.sort_values(inplace=True) #排序  inplace表示是否在原对象上操作
missing.plot.bar()                #条形图可视化

2.可视化
使用Missingno工具包

msno.matrix(df) 
msno.bar(df)
#生成可以表示出缺失值的图像(还有heatmap等图)

3.插补:将含有空值的列中的Nan值补全,插补方式有很多种,在此示例两种

#均值插补
#两种均可完成插补
df.Age.fillna(df.Age.mean(),inplace=True)
df['Age'].fillna(df['Age'].mean())
#inplace=True表示在原数据对象上修改,=False表示复制了一个对象并修改

#中值插补
df['Age'].fillna(df['Age'].median())

数据特征

去掉无用的数据

去掉常量值,因为常量值对分析没有用处

df.nunique()   #查看每一列数据有多少种(去重)(不包括空值)
df['Age'].nunique() 
df['Age'].unique()   #去重之后的数据

去掉重复的列

df.drop_duplicates()
偏度与峰度

峰度是描述总体中所有取值分布形态陡缓程度的统计量,绝对值数值越大表示其分布形态的陡缓程度与正态分布的差异程度越大
偏度是描述数据分布形态的统计量,其描述的是某总体取值分布的对称性,偏度的绝对值数值越大表示其分布形态的偏斜程度越大

df.skew()            #每一列的偏度
df.kurt()            #每一列的峰度
#可视化
df.skew().plot.bar()
df.kurt().plot.bar()
相关性
df.corr()            #相关系数矩阵
sns.heatmap()        #热力图适合做相关系数矩阵的可视化

类别特征

1.箱型图:
五数概括法:
最小值(Q1-1.5IQR)、第一四分位数(Q1)、中位数(Q2)、第三四分位数(Q3)、最大值(Q3+1.5IQR)
优点:不受异常值的影响,可以以一种相对稳定的方式描述数据的离散分布情况
EDA(探索性数据分析)步骤及常用函数总结_第1张图片

#关于箱型图有多种方法绘制
#法一 pandas
df.plot.box()
df['PassengerId'].plot.box()
#法二  seaborn
sns.boxplot(df['Age'])

2.小提琴图
箱型图+密度表示

#seaborn
sns.violinplot(df['Age'])

数据报告

最后介绍一个神奇的库pandas_profiling–用于生成数据报告

#非常详细的数据报告
pp.ProfileReport(df)

你可能感兴趣的:(数据分析)