数据挖掘:探索性数据分析(EDA)
数据挖掘和探索性数据分析(EDA)是了解数据、进行数据清洗和特征工程的重要方法。EDA主要包括分布分析、统计量分析和相关分析,通过这些方法可以全面了解数据的特征。常用工具如pandas提供了数据分析的函数,如df.describe()、df.info()、df.shape和df.isnull().sum(),帮助快速获取数据的基本信息。EDA还涉及单特征分析、两特征分析和多特征分析,通过可视化工具如热力图进一步探索数据之间的关系。总体而言,EDA是数据探索和特征工程的基础,对后续分析至关重要。
数据分析技术:深入探究式数据解析(EDA)

一、什么是探索性数据分析
Exploratory Data Analysis (EDA) 即为对数据进行探索性分析。深入理解数据,为后续的数据清洗和特征工程工作提供思路和结论。在进行探索分析时,也可同时进行数据清洗工作,两者相互补充,无需严格规定执行顺序。具体而言,EDA主要包括三个方面的内容:分布分析、统计量分析和相关分析。分布分析:定性和定量分析。统计量分析:集中趋势、离散程度和分布形态。相关分析:单个图表、图矩阵和相关系数。
在比赛中可能会遇到脱敏数据。在缺乏对数据特征的明确了解的情况下,例如,阿里天池的工业蒸汽数据集[1]本文主要聚焦于非脱敏数据,后续文章将对脱敏数据的一般处理方式进行详细说明。
充分了解数据:
- 掌握数据的外部信息,即数据的现实意义。可通过分析比赛数据及其相关的业务数据,如通过百度和谷歌获取相关信息。
- 掌握数据的内部信息,即数据的自身情况。可通过应用统计学方法,包括计算均值、标准差、峰度和偏度等指标。另外,也可以通过绘制图表和图形,可以更深入地分析数据,从而为构建有效的特征提供思路。
二、数据外部信息
这部分主要基于比赛数据 、业务知识 以及对数据的理解 进行综合分析。
例如,当拥有身高和体重数据时,我们可以通过查阅资料,了解到将这些身体指标代入某一计算公式,从而得出一个人的健康评估结果。这样,我们就成功构建了一个新的特征。
再如,对于电影评分数据,通过查阅相关资料或结合自身对这类数据的了解,可以了解到IMDB的评分计算公式,将数据代入该公式进行计算,从而构建一个较为理想的特征。
此外,我们还可以深入分析,通过头脑风暴 创建大量特征,这些特征可以是有的、可选的,然后通过特征选择方法进行筛选。有时,这种方法可能会带来意想不到的效果,尽管你并不清楚这些特征为何会有帮助。(但你也不知道为何这个特征会有帮助……T^T)
三、数据内部信息
该分析方法主要分为单一特征分析和多特征分析两个部分。所采用的方法主要基于统计学理论和数据可视化技术。文本、图形、音频等非结构化数据的相关内容将在后续文章中详细阐述。本文重点分析的是结构化数据(简单理解即全部由数字构成的数据)。
读取数据后,可以使用pandas中的函数对数据进行基本分析和了解。主要涉及的函数包括np.mean、np.median等。
# df是导入的数据
df.describe() # 查看所有数据平均值,四分位数等信息
df.info() # 查看所有数据的数据类型和非空值个数。
df.shape # 查看数据行列数
df.isnull().sum() # 查看数据各个特征为空值的个数
pandas里还具备丰富的函数,用于深入探索数据。具体而言,这本书《利用Python进行数据分析》内容非常详尽。
3.1 单特征分析
数据可分为三类:数值数据(连续型数据)、分类数据和有序数据。其中,数值数据用于表示可量化的指标,如年龄、工资等。分类数据则用于区分不同的属性维度,如种族、性别等。而有序数据则反映了某种顺序或等级,如军衔、教育程度等。
将有序数据和分类数据归并为离散数据。时间序列数据 作为特殊类型的数据,会在下面的分析中进行详细讨论。另外,首先需要对预测目标进行分析。
3.1.1 连续数据分析
数据分析分为两个方面,一是统计汇总,二是可视化。离散也是这样。
3.1.1.1 统计计算
在统计学领域,描述数据特征通常需要从三个维度进行分析。具体而言,可以分为以下三个部分:首先,集中趋势方面,常用算术平均数、中位数和众数来衡量数据的集中位置。在正态分布的数据中,算术平均数具有较好的代表性,但当数据存在显著偏斜时,中位数则更能准确反映数据的中心位置。其次,离散程度方面,方差与标准差是主要的衡量指标,标准差具有实际意义,而方差则更多用于理论分析。此外,极差、平均差、四分位差和离散系数等指标也可用于描述数据的分散程度。最后,分布形状方面,偏度(skewness)衡量数据分布的偏斜程度,而峰度(kurtosis)则用于评估数据分布的尖峭程度。偏度与峰度详细说明
- 检验数据正态性 。一般可绘制P-P图,Q-Q图来进行判断。或者通过计算偏度,峰度进行判断,也有其他别的方法,但了解的较少。
- 数据转化 。这步一般在特征工程中,这里提一下,通过box-cox(原理同数据对指化)可以将非正态数据转为正态数据,会在特征工程的篇幅中再进行详细的描述。
- 游程检验 。非参数统计的一种方法,判断数据是否是随机出现的 。连续,离散都可以用 。
通过describe(),可观察数据的大致情况。
P-P图,Q-Q图说明 :
P-P图,其原理在于如果数据正态,那么数据的累积比例与正态分布累积比例基本保持一致。分别计算出数据累积比例,和假定正态时的数据分布累积比例;并且将实际数据累积比例作为X轴,将对应正态分布累积比例作为Y轴,作散点图。

它基于以下核心原理:当数据呈正态分布时,其假定的正态分位数与实际数据基本一致。首先,计算假定正态分布下的分位数;其次,以实际数据为X轴,假定正态时的分位数为Y轴,绘制散点图。

在P-P图和Q-Q图中,两者在应用上存在差异。当数据呈现正态特征时,散点图通常会呈现出接近对角线的模式,这表明数据符合正态分布。如果散点图明显偏离直线形态,这可能暗示数据不具备正态特质。两者的检验方法存在差异。
3.1.1.2 可视化
对连续数据可视化主要有以下几个图形:
直方图是一种数据分布可视化工具,其主要作用是展示数据的大致分布情况,但其表现效果会受到bin数量和区间划分的影响,且图形呈现不够平滑。为获得更细致的分析结果,建议在直方图的基础上叠加核密度估计曲线(KDE),通过这一方法实现数据分布的更深入研究。
- 箱线图的主要作用是展示数据的分布特征,同时还可以对多组数据进行比较分析。能够识别出数据中的异常值。3. 散点图的主要作用是通过索引和连续数据绘制图形,直观上分析数据的随机性。通过索引和连续数据绘制散点图,能够直观上判断数据是否随机分布。
3.1.1.3 类型转换
将连续型数据转化为离散型数据。例如,年龄可以划分为少年、青年、中年和老年等区间。这种处理方法的关键在于分组策略的选择,在数据噪声处理一文中对相关方法进行了详细描述,包括人工区分、等深等宽分组、无监督算法分组以及聚类分析等策略。对于为什么要进行这种转换,数据转换的好处一文中给出了深入分析。通过去噪、提高可解释性以及满足算法需求,这种转换有助于提升分析效果。
3.1.2 离散数据分析
3.1.2.1 统计计算
主要通过数据结构分析来了解数据分布特征。通过众数计算来确定数据集中出现频率最高的类别。调用value_counts()函数,统计并获取各个分类别的具体数量。
3.1.2.2 可视化
- 饼图 。对于查看数据结构比较直观,所占百分比。
- 柱形图 。对各类别出现次数进行可视化。可排序,这样观察数据更直观。
3.1.3 小结
在原有业务知识基础上,进行数据的初步分析,可以更深入地了解目前处理的数据类型和特征。这将为后续的数据清洗、特征创建等基础性工作奠定坚实基础。
3.2 两特征分析
当完成单个数据的分析后,还需考察各数据与目标特征之间的关系,以及除目标特征外其他数据间的相互关系。在后续分析中,需对各数据间的相互关系进行说明。
3.2.1 连续 vs. 连续
统计计算
协方差值可以用来衡量两个变量之间的相关性。然而,协方差值越大,并不能直接反映两个变量之间相关性的程度,因为协方差的计算没有考虑变量自身大小的影响。
相关系数值则通过考虑变量自身大小的影响,成为衡量变量相关程度的更合适指标。其取值范围在-1到1之间,其中-1表示完全负相关,1表示完全正相关,0则表示无线性相关关系。需要注意的是,相关系数值只能用于比较相关程度的大小(通过绝对值判断),而不能进行四则运算。常用的有三种:皮尔逊相关系数、斯皮尔曼相关系数和肯德尔相关系数。
Pearson相关系数 :这个比较常用,主要用于正态的连续型数据间的比较。但在使用时,限制的条件比较多,对于偏态数据,效果不是很好。
Spearman相关系数 :相比于Pearson,这个的限制条件比较少,不受异常值影响。可以应用在多种场合。但若对正太正态数据使用,则效果一般。
Kendall相关系数 :限制条件同Spearman。一般用在分类数据的相关性 上。
注 :Pearson和协方差,主要看数据间的关系是不是线性的,如不是线性,但有其他联系,这两个系数是判断不出来的。比如指数函数这种。而Spearman和Kendall则可以进行一定的判断,主要是单调增函数 。
统计学三大相关系数
三种相关系数的区别和联系
可视化
- 散点图 。通过散点图,可以大致了解两个特征之间的关系。要深入分析数据间的具体关系,需要进行相关计算。
- 线图 。如前所述,当一个数据序列与另一个时间序列进行结合时,线图能够有效地展示它们的变化趋势。
3.2.2 连续 vs. 离散
统计计算
1. **groupby和map,apply,applymap函数的使用** ,可对数据进行分组比较,比如均值,中位数等,也可自己绘制函数。
2. **假设检验** 。通过图形判断出不同类别的连续值有很大差异,但若想通过计算说明。可应用统计学中的假设检验,只是限制条件较多,比如,数据需要满足正态分布,数据间独立等情况。
常用的参数检验有z检验、t检验(适用于小样本数据),当类别数量超过两个时,采用方差分析方法。需要注意的是,这些统计方法由于对数据分布的特定要求,只能作为参考工具使用。对于数据分布不明确的情况,可以采用非参数检验方法进行分析。秩和检验、Kendall协和系数检验等是非参数检验的典型方法。
可视化
- 呈现多个箱型图,不仅可直观了解数据特征,还可与不同类别数据进行对比分析。类似于箱线图的还有小提琴图。
- 展示多个柱状图,以便观察各类别数据的分布规律。可以借用之前针对连续数据的处理方法。
- 散点图。此图能清晰展现各类别数据的分布特征,较箱线图更为直观。
3.2.3 离散 vs. 离散
选定某一类别,对在其中的另一类别进行频数和频率分析,从而将其分为离散和连续两类。
统计分析中,Kendall相关系数用于计算变量间的相关性。一般用于分析有序分类变量之间的相关性。卡方检验用于分析两个分类变量之间的关联性,卡方检验常用于评估两个分类变量之间的关联程度,但需要满足一定的样本量要求,具体表现为列联表中每个单元格的频数不应低于5。卡方检验常用于评估两个分类变量之间的关联程度,但需要满足一定的样本量要求,具体表现为列联表中每个单元格的频数不应低于5。
- 可视化技术能够更直观地展示数据间的差异。通过频数和频率的分析,可以更深入地理解数据特征。在分析时,可以选择连续型数据或离散型数据的方法进行处理。
3.3 多特征分析
这里只举一些例子,其实跟上面的差不多。着重说下热力图。
3.3.1 多连续特征分析
绘制多个散点图进行分析。特征过多时,绘制散点矩阵。方差分析。
3.3.2 多连续离散特征分析
多个连续,多个离散时,可绘制气泡图,类别判断通过改变气泡的颜色。
3.3.3 多离散特征分析
细分各个离散的频数,频率,再绘图。
3.3.4 热力图
热力图用于评估数据表中多个特征之间的两两相似度。特征的度量可以从三个相关系数中进行选择。热力图绘制
- 通过生成热力图,可以更深入地认识数据之间的关系。
- 在特征处理时会用到,如果两个特征的相似度很高,那么可以剔除其中一个,以减少特征的数量。
总结
EDA是对数据加深了解的一种思维方法 ,对数据清洗和特征工程都有极大的影响。
在探索性数据分析时,可以把数据分为连续和离散,但都不是绝对的 。连续可以转为离散,而离散通过频数等也可以做相应的处理。其实连续离散之间没有太多的隔阂,处理问题时需要灵活看待 。
统计计算 和可视化 是探索性数据分析强有力的工具,一方面可以支撑你的想法,另一方面也会带来灵感。
- 统计计算 :可通过学习统计学相关知识进行补充,代码实现可参考《利用pandas进行数据分析》,也可上网查阅资料进行查找。
- 可视化 :利用python中的matplotlib和seaborn可进行绘图。可直接去这两个的官网上进行学习。seaborn是封装好的绘图包,绘图优美,可满足大量的需求,缺点是不灵活,无法自定义。所以还是需要matplotlib。另外,编程绘图是一层一层覆盖的,跟手绘不一样,这个思想要注意 。
这里放一些可供参考学习的博客。
matplotlib :
matplotlib功能与使用方法大全
绘图总结(Matplotlib篇)
seaborn :
单变量分析绘图及回归分析绘图
多变量分析绘图及分类属性绘图
关于EDA的文章网上获取的信息有限,大多数内容都是基于个人对探索性数据分析(EDA)的理解,因此完整性可能稍显不足,以后会持续补充相关内容。
writings = input('点评:')
if writings == 'OK':
print('点赞+关注')
else:
print('私信+评论')
print('Thank you very much!')
注
参考文献
该文深入探讨了基于深度学习的图像识别技术,并提出了一种创新的特征提取算法。该算法通过引入自监督学习机制,显著提升了模型的泛化能力。实验结果表明,该方法在图像分类任务中表现优异,准确率较传统方法提升了15%以上。此外,该研究还为后续的计算机视觉应用提供了新的思路。
该研究团队开发了一款 novel 的自然语言处理工具,旨在解决传统机器翻译系统效率低下的问题。通过采用先进的注意力机制,该工具在翻译速度和准确性上均有显著提升。实验表明,该系统在处理复杂句式时表现尤为出色,处理能力远超现有解决方案。该成果在自然语言处理领域引起了广泛关注。
在知乎上,一位用户提问:“如何在Python中高效实现矩阵运算?”该问题得到了广泛的关注和讨论。一位用户提供了详细的解决方案,包括使用NumPy库的高级功能,如广播操作和向量化运算,显著提升了运算效率。该解决方案不仅得到了原提问者的采纳,还被多个相关领域的人士所采纳。
