只需两行代码,解锁强大的自动化数据探索——Sweetviz让EDA变得更简单

探索性数据分析 (EDA) 是大多数数据科学项目中必不可少的早期步骤,它通常包括采取相同的步骤来探索数据集(例如,找出数据类型、缺失信息、值分布、相关性等),鉴于此类任务的重复性和相似性,有一些库可以自动执行并帮助启动该过程

一个名为 Sweetviz(GitHub)的开源 Python 库,它获取 pandas 数据帧并创建一个独立的 HTML 报告,仅用两行代码就可以创建富有洞察力和美观的可视化效果,以下为参考链接


        
            

          https://github.com/fbdesignpro/sweetviz
        
      

1. Sweetviz特点

  • 比较两个数据集: Sweetviz 允许用户比较两个不同的数据集,例如训练集和测试集,以便发现它们之间的差异和相似之处,这种比较可以帮助用户验证数据集的一致性,识别任何潜在的问题或偏差
  • 可视化目标值: Sweetviz 提供了对目标变量的可视化分析功能,对于监督学习问题,用户可以直观地了解目标变量的分布、趋势和与其他特征之间的关系,这种可视化有助于发现目标值的模式和规律,为建模过程提供指导

2. 代码实现

2.1 数据导入


          
import pandas as pd
          
df = pd.read_excel('房价数据.xlsx')
          
df.head()
      

picture.image

安装 Sweetviz 后(pip install sweetviz),只需像往常一样加载 pandas 数据帧,然后根据需要调用(详细使用内容见下文)

2.2 两个数据集比较(测试集 训练集)


          
from sklearn.model_selection import train_test_split
          
import sweetviz
          
train_x, test_x, train_y, test_y = train_test_split(df.drop(['price'], axis=1), df['price'], test_size=0.2, shuffle=False)
          
feature_config = sweetviz.FeatureConfig(skip='id') # skip指定跳过某特征 force_cat强制以某列为分类特征
          
my_report = sweetviz.compare([pd.concat([train_x, train_y], axis=1), 
          
"Train"], [pd.concat([test_x, test_y], axis=1), "Test"], "price", feature_config)
          
my_report.show_html("可视化_1.html")
          

      

在这里存在两个数据帧(训练和测试),想分析目标值“price”,其中“id”是不需要进行EDA的列,通过创建一个 FeatureConfig 对象将其传递给 analyze/compare 函数进行指定即可不进行分析,运行代码后将执行分析并创建报表对象生成“可视化化_1.html”,如果不提供文件名将默认为“SWEETVIZ_REPORT.html”文件,接下来将一步一步解释这个生成的文件“可视化化_1.html

picture.image

2.2.1 摘要

picture.image

摘要并排显示了两个数据帧的特征,可以立即确定测试集、训练集大小,且包含相同的特征,底部的图例展示了目标变量,将鼠标悬停在摘要中的“ASSOCIATIONS”按钮上,关联图将显示在右侧:

picture.image

除了显示传统的数值相关性外,它还在单个图形中统一了数值相关性以及不确定性系数(对于分类-分类)和相关系比(对于分类-数字),正方形表示与分类特征相关的变量,圆圈表示数值-数值相关性,为清楚起见,琐碎的对角线留空

2.2.2 目标变量

picture.image

指定目标变量后,它将首先显示在一个特殊的黑框中,从这个总结中得出结论,“price”在训练集、测试集中没有缺失数据(6325,100%)(1582,100%),在特征中不同取值的数量分别有349、234个(占所有值的 6%、15%),且训练集存在1个数值为0(占所有值的不到 1%)

注意目前只能将数值和布尔特征作为目标

2.2.3 详细信息区域(分类/布尔值)

移动鼠标将鼠标悬停在任何变量上时,右侧的区域将显示详细信息。详细信息的内容取决于所分析的变量的类型,对于分类(或布尔)变量,与目标变量一样,分析如下:

picture.image

在这里,可以看到每个类别的确切统计数据,如在这里“Central Region”在训练集、测试集的占比最大分别占两个类别的78%、85%,另外还可以获得每个其他要素的关联详细信息

2.2.4 数值数据

picture.image

数值数据显示有关其摘要的更多信息(数据描述性),在这里可以看到,在这种情况下,训练集存在10条数据缺失占所有值的不到 1%,且直方图为目标值(在本例中为“price”)绘制了两条线(分别为训练集,测试集目标值),位于分布图的正上方,这样可以即时分析目标分布相对于其他变量的情况

2.3 同一个数据集比较不同类别数据


          
data = df[(df['room_type'] == 'Private room') | (df['room_type'] == 'Entire home/apt')]
          
# 分类别
          
feature_config = sweetviz.FeatureConfig(skip=["id"])
          
my_report = sweetviz.compare_intra(data, data["room_type"] == 'Private room', ["Private room", "Entire home/apt"], 'price', feature_config)
          
my_report.show_html('可视化_2.html')
          

      

picture.image

在这里代码使用Sweetviz 的 compare_intra() 函数来比较数据集中两个类别(Private room 和 Entire home/apt)的”price“特征,如箭头所指就不在是前文的两个数据集(train、test)进行比较

2.4

分析单个数据集


          
feature_config = sweetviz.FeatureConfig(skip=["id"])
          
# 分析单个数据集
          
my_report = sweetviz.analyze(pd.concat([train_x, train_y], axis=1), 'price', feature_config)
          
# 显示报告
          
my_report.show_html('可视化_3.html')
          

      

picture.image

使用 Sweetviz 的 analyze() 函数来分析单个数据集,并生成一个报告

3. 总结

所有这些信息都来自两行代码!


          
my_report = sweetviz.compare([train, "Train"], [test, "Test"], "target")
          
my_report.show_html("Report.html")
          
# 其中train、test为两个数据集、target为目标值,当然其中存在一些其它参数
      

当开始查看新数据集时,使用 Sweetviz 很容易让我们有一个重要的开始

4. 往期推荐

Seaborn的15种可视化图表详解

python交互性可视化

特征工程——数据转换

orange3一个不需要编程知识进行数据挖掘和机器学习的python工具箱

可解释性机器学习库Shapash——鸢尾花XGBoost分类解释实现

常见激活函数详解

利用Pyecharts库实现(世界,国家,区域)地图可视化

如果你对类似于这样的文章感兴趣。

欢迎关注、点赞、转发~

0
0
0
0
评论
未登录
暂无评论