自动执行探索性数据分析 (EDA):更快、更轻松地理解数据

2023年08月21日 由 alex 发表 334 0

什么事EDA?


EDA是我们需要采用的一种方法,以更好地理解数据集。几乎所有的数据分析或数据科学专业人士在生成见解或进行数据建模之前都会进行该过程。在现实生活中,这个过程需要很多时间,这取决于我们拥有的数据集的复杂性和完整性。当然,更多的变量使我们进行更多的探索,以得到我们在进行下一步之前需要的总结。


因此,使用R或Python这些常用的数据分析编程语言,一些软件包可以帮助我们更快、更容易地进行这个过程,但不能保证更好。为什么不能更好?因为它仅仅向我们展示了一个摘要,然后我们才专注于更深入地探索我们认为“有趣”的任何变量。


我们可以使用哪些库?


在R中,我们可以使用以下库:


1. dataMaid


2. DataExplorer


3. SmartEDA


在Python中,我们可以使用以下库:


1. ydata-profiling


2. dtale


3. sweetviz


4. autoviz


让我们尝试上面列出的每个库,了解它们的外观和如何帮助我们进行探索性数据分析!在本文中,我将使用iris常用的数据集来学习如何使用 R 或 Python 进行编码


在R中,你可以使用以下代码加载iris数据集:


# iris is part of R's default, no need to load any packages
df = iris 
# use "head()" to show the first 6 rows
head(df)


2

图1


在Python中,你可以使用以下代码来加载iris数据集:


# need to import these things first 
from sklearn.datasets import load_iris
import numpy as np 
import pandas as pd
# use load_iris 
iris = load_iris()
# convert into a pandas data frame
df = pd.DataFrame(
  data= np.c_[iris['data'], iris['target']], 
  columns= iris['feature_names'] + ['species']
)
# set manually the species column as a categorical variable
df['species'] = pd.Categorical.from_codes(iris.target, iris.target_names)
# use ".head()" to show the first 5 rows
df.head()


2-1

图2


R:dataMaid


首先,我们需要执行下面的简单代码:


# install the dataMaid library
install.packages("dataMaid")
# load the dataMaid library
library(dataMaid) 
# use makeDataReport with HTML as output
makeDataReport(df, output = "html", replace = TRUE)


从第一个快照(图片3)中,我们已经得到了关于iris数据集的许多信息:


1. 观察数量为150。


2. 变量数量为5。


3. 根据每个变量的数据类型进行了变量检查,例如识别错误编码的缺失值、小于6个观测值的水平和异常值。


2-2

图3


从第二个快照(图片4)中:


1. 变量的摘要表包括变量的类别、唯一值、缺失观测和检测到的问题。我们可以看到Sepal.WidthPetal.Length变量有检测到的问题。


2. 提供了Sepal.Length的中心测量值,包括直方图,以给出单变量分布。


3. Sepal.Width有可能的异常值,正如列出的那样。这就是为什么摘要表中说检测到了问题。


2-3

图4


从第三个快照(图片5)中:


1. Petal.Length可能有异常值,如列表所示。


2. Petal.Width提供了中心测量值,包括直方图,以给出单变量分布。


3. Species检测为 a 的目标变量,factor并且每种类型的数据计数相等,均为 50


2-4

图5


根据上面使用R中的dataMaid创建的数据报告,我们只需要执行一行代码,就可以获得关于iris数据集的大量信息。


R:DataExplorer


首先,我们需要执行下面的简单代码:


# install the DataExplorer library
install.packages("DataExplorer")
# load the DataExplorer library
library(DataExplorer) 
# use create_report 
create_report(df)


从第一个到第六个快照(图6、7、8、9、10、11),我们得到的信息与前一个包没有太大的不同。


2-5

图6

2-6

图7

2-7

图8

2-8

图9

2-9

图10

2-10

图11


从第七个快照(图12)中,我们得到了iris数据集中每个数值变量的QQ图。


2-11

图12


从第八个快照(图片13)中,我们得到了鸢尾花数据集中每个变量的相关系数矩阵。我们可以看到一些信息,例如:


1. Petal.Width和Petal.Length具有0.96的强正相关性,这意味着在iris数据集中,Petal.Width越大,长度越长。


2. Species_setosa和Petal.Length之间有-0.92的强负相关性,这意味着在iris数据集中,Petal.Length越短,物种是setosa的可能性越高。


3. 利用上述示例,请提供你在使用这个相关系数矩阵时的发现结果。


2-12

图13


第九张快照(图14),使用主成分分析(PCA),提供了解释方差的百分比,它显示62%,越高越好。


2-13

图14


第十张快照(图15)提供了每个变量的相对重要性,它显示了Petal.Length的重要性最高,约为0.5,其次是Petal.Width,等等。


2-14

图15


R:SmartEDA


首先,我们需要执行下面的简单代码:


# install the SmartEDA library
install.packages("SmartEDA")
# load the SmartEDA library
library(SmartEDA) 
# use ExpReport
ExpReport(df, op_file = 'SmartEDA_df.html')


从图16、17、18、23和24中,我们得到的信息与之前的包没有太大的不同。


2-15

图16

2-16

图17

2-17

图18


从图19中,我们看到了每个变量的密度图,包括偏度和峰度测量,这是用来告诉我们数据是否正态分布。


2-18

图19


从图20、21和22中,我们看到了iris数据集中可用的数值变量之间的散点图,它直观地告诉了我们相关性。它为我们提供了与数字格式的相关矩阵类似的信息。


2-19

图20

2-20

图21

2-21

图22

2-22

图23

2-23

图24


R:结论


使用上述三个软件包,我们可以更快地获取关于iris数据集的许多信息,比起手动创建它来得更加容易。总结如下几点:


1. 没有丢失变量/错误编码变量,我们可以跳过这些步骤。


2. 在一些变量中检测到异常值,我们可以开始使用适当的方法处理异常值,而不是一个个手动查找具有异常值的变量。


3. 如果需要,我们可以开始处理不符合正态分布的变量。


4. 根据相关系数矩阵和散点图,在一定程度上我们了解哪些变量具有强或弱相关性。


5. 使用主成分分析(PCA),我们可以知道变量的解释比例。


6. 这个自动化的EDA还展示了iris数据集每个特征的相对重要性。


Python: ydata-profiling


首先,我们需要执行下面的简单代码:


# install the ydata-profiling package
pip install ydata-profiling
# load the ydata_profiling package
from ydata_profiling import ProfileReport
# use ProfileReport
pr_df = ProfileReport(df)
# show pr_df
pr_df


大多数情况下,它显示类似的信息。我

将尝试提及一些与以前的软件包完全不同的信息:


1. 在图26中,我们用句子总结了哪些变量具有高相关性。


2. 总的来说,与以前的包相比,输出更具交互性,因为我们可以单击以移动到其他选项卡,并选择要显示的特定列。


24

图25

25

图26

26

图27

27

图28

28

图29

29

图30

30

图31

31

图32

32

图33


Python: dtale


首先,我们需要执行下面的简单代码:


# install the dtale package
pip install dtale
# load the dtale
import dtale
# use show 
dtale.show(df)


这个包的输出和以前的包有很大的不同,在如何使用方面,内容都很相似,但是它让我们可以更好的去探索。


33

图34

34

图35

35

图36

36

图37


Python: sweetviz


首先,我们需要执行下面的简单代码:


# install the sweetviz package
pip install sweetviz
# load the sweetviz
import sweetviz
# use analyze 
analyze_df = sweetviz.analyze([df, "df"], target_feat = 'species')
# then show 
analyze_df.show_html('analyze.html')


使用这个包,UI和UX有很大的不同!


37

图38

38

图39


Python: autoviz


首先,我们需要执行下面的简单代码:


# install the dtale package
pip install autoviz
# load the autoviz
from autoviz import AutoViz_Class
# set AutoViz_Class()
av = AutoViz_Class()
# produce AutoVize_Class of df
avt = av.AutoViz(
    "",
    sep = ",",
    depVar = "",
    dfte = df,
    header = 0,
    verbose = 1,
    lowess = False,
    chart_format = "server",
    max_rows_analyzed = 10000,
    max_cols_analyzed = 10,
    save_plot_dir=None
)


使用上面的代码,在浏览器中生成了一些选项卡。使用这个包我们可以看到的新东西:


1. 输出在浏览器的多个选项卡中生成,以前的包将所有输出显示在一个选项卡中。


2. 每个变量的小提琴图。它是箱线图和核密度图的混合版本。仍然显示与以前的包相似的信息。


39

图40

40

图41

41

图41

42

图42

43

图43


Python:结论


使用上述四个软件包,我们可以获得关于iris数据集的许多信息,与R软件包相比,差异不大,但通常而言,拥有更多的视角比拥有较少的视角更好。一些注意事项:


1. 与R软件包相比,Python软件包的输出通常更具交互性。


2. 在安装软件包时,可能会出现一些错误。对于dtale,常见的错误与jinja和escape有关。


3. 在某些软件包中,代码的复杂程度不如R软件包简单。但我认为这不是一个主要问题,只要我们不懒得阅读说明手册,我认为一切都没问题。


文章来源:https://medium.com/codex/automate-the-exploratory-data-analysis-eda-to-understand-the-data-faster-not-better-2ed6ff230eed
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
热门职位
Maluuba
20000~40000/月
Cisco
25000~30000/月 深圳市
PilotAILabs
30000~60000/年 深圳市
写评论取消
回复取消