1. 概述
探索性数据分析(Exploratory Data Analysis,EDA)是一种数据分析的方法,用于探索和理解数据集的特征、关系和分布等。EDA旨在揭示数据中的模式、异常值、缺失值等信息,并为后续的分析和建模提供基础。以下是关于探索性数据分析的一些重要概念和方法:
(1)数据摘要:通过计算描述性统计量,如均值、中位数、标准差、最小值、最大值等,对数据集的特征进行摘要和总结。这些统计量可以帮助了解数据的中心趋势、离散程度和分布情况。
(2)数据可视化:利用图表、图形和可视化技术,将数据以直观的方式展示出来。常用的可视化方法包括直方图、箱线图、散点图、折线图等。通过数据可视化,可以发现数据的分布、趋势、异常值和关系等特征。
(3)缺失值处理:探索性数据分析中常常需要处理缺失值。可以通过计算缺失值的数量和比例来了解数据缺失的情况,并根据具体情况选择合适的方法进行处理,如删除缺失值、填充缺失值等。
(4)异常值检测:通过观察数据的分布和统计指标,识别可能存在的异常值或离群点。异常值可能是数据采集或记录错误,或者表示了潜在的特殊情况。在探索性数据分析中,可以使用箱线图、散点图等方法来辅助异常值检测。
(5)变量之间的关系探索:通过相关性分析、散点图矩阵、热力图等方法,探索不同变量之间的关系。这可以帮助了解变量之间的相关性、依赖关系和影响因素。
探索性数据分析是数据分析的重要环节,它可以帮助熟悉数据、发现数据中的规律和异常,为后续的数据建模、特征工程和推断性分析提供基础。在进行探索性数据分析时,需要充分利用统计和可视化工具,同时保持灵活性和开放性的思维,以发现潜在的数据洞察和问题。
2. 探索性数据分析(单因子与对比分析)可视化
在探索性数据分析中,可以使用单因子分析和对比分析来探索数据,并通过可视化方法呈现结果。下面是一些常用的可视化技术和图表,适用于单因子和对比分析:
2.1 单因子分析可视化:
(1)直方图:将数据按照不同的区间进行分组,并用矩形条表示每个区间的频数或频率。直方图可以显示数据的分布情况和形状。
(2)箱线图:通过五数概括(最小值、下四分位数、中位数、上四分位数、最大值),展示数据的中心趋势和离散程度。箱线图还可以显示异常值和离群点。
(3)密度图:通过在数据分布曲线下方填充面积,展示数据的概率密度。密度图可以显示数据的分布形态和峰值。
(4)折线图:将数据按照顺序和连线方式展示,可以显示数据的变化趋势和趋势方向。
2.2 对比分析可视化:
(1)柱状图:用垂直或水平的矩形条表示不同类别或组别的数据,并可比较它们之间的差异。柱状图常用于对比不同组别的数据。
(2)帕累托图:将数据按照贡献程度排序,并用累积百分比的折线图展示。帕累托图可以帮助确定主要因素或贡献最大的类别。
(3)散点图:用二维坐标轴表示两个变量的关系,并以散点的形式展示数据点。散点图可以用于比较两个变量之间的关系和趋势。
(4)雷达图:以多个坐标轴表示不同变量,通过将数据点连接起来形成多边形区域,展示多个变量之间的对比关系。雷达图适用于多维度的对比分析。
以上是常见的可视化方法,可以根据具体情况和数据特点选择合适的图表进行探索性数据分析。这些可视化方法能够直观地呈现数据,帮助发现数据中的规律、异常和差异,并为进一步分析和决策提供参考。
3. 数据示例
数据源文件:
读取数据流程
import pandas as pd
# 读取数据
df=pd.read_csv("data/HR.csv")
# 设置显示选项,将最大列数设置为None,以显示所有列
pd.set_option('display.max_columns', None)
# 使用head()查看DataFrame
df.head(10)
Out[6]:
satisfaction_level last_evaluation number_project average_monthly_hours
0 0.38 0.53 2 157 \
1 0.80 0.86 5 262
2 0.11 0.88 7 272
3 0.72 0.87 5 223
4 0.37 0.52 2 159
5 0.41 0.50 2 153
6 0.10 0.77 6 247
7 0.92 0.85 5 259
8 0.89 1.00 5 224
9 0.42 0.53 2 142
time_spend_company Work_accident left promotion_last_5years department
0 3 0 1 0 sales \
1 6 0 1 0 sales
2 4 0 1 0 sales
3 5 0 1 0 sales
4 3 0 1 0 sales
5 3 0 1 0 sales
6 4 0 1 0 sales
7 5 0 1 0 sales
8 5 0 1 0 sales
9 3 0 1 0 sales
salary
0 low
1 medium
2 medium
3 low
4 low
5 low
6 low
7 low
8 low
9 low
通过调用pd.set_option('display.max_columns', None)
,将display.max_columns
选项设置为None,可以显示所有列。然后使用print(df.head())
打印DataFrame,将会显示所有列的数据。
注意:当DataFrame具有很多列时,可能会导致输出结果在控制台中显示不全,因为控制台有一定的宽度限制。在这种情况下,你可以使用水平滚动条或将结果导出到文件中来查看完整的列数据。