全自动化数据洞察!数据分布对比可视化!⛵

本文介绍如何使用 Pandas Profiling 的比较报告功能,分析两个数据集的分布差异,完成数据探索分析 (EDA) 的完整流程,为后续分析做准备。

💡 作者:韩信子@ShowMeAI
📘 数据分析实战系列https://www.showmeai.tech/tutorials/40
📘 本文地址https://www.showmeai.tech/article-detail/411
📢 声明:版权所有,转载请联系平台与作者并注明出处
📢 收藏ShowMeAI查看更多精彩内容

💡 引言

可视化是EDA的基础。当面对一个新的、未知的数据集时,视觉检查使我们能够了解可用的信息,绘制一些有关数据的模式,并诊断出我们可能需要解决的几个问题。在这方面,📘Pandas Profiling 一直是每个数据科学家工具箱中不可或缺的瑞士刀,可以帮助我们快速生成数据摘要报告,包括数据概览、变量属性、数据分布、重复值和其他指标。它能够在可视化中呈现这些信息,以便我们更好地理解数据集。但如果我们能够比较两个数据集呢,有没有快速的方式可以实现?

在本篇博客文章中,ShowMeAI将介绍如何利用 Pandas Profiling 的比较报告功能来提升数据探索分析 (EDA) 流程。我们会介绍到如何使用 Pandas Profiling 比较报告功能来比较两个不同的数据集,这可以帮助我们更快地对比分析数据,获取分布差异,为后续做准备。

我们本次用到的数据集是 🏆Kaggle 的 HCC 数据集,大家可以通过 ShowMeAI 的百度网盘地址下载。

🏆 实战数据集下载(百度网盘):公众号『ShowMeAI研究中心』回复『实战』,或者点击 这里 获取本文 [[42]Pandas Profiling:使用高级EDA工具对比分析2个数据集](https://www.showmeai.tech/art...) 『HCC 数据集

ShowMeAI官方GitHubhttps://github.com/ShowMeAI-Hub

关于更多数据自动化探索工具,可以参考ShowMeAI过往文章 📘自动化数据分析 (EDA) 工具库大全

💡 全自动数据EDA工具 Pandas Profiling 功能回顾

我们回顾一下 Pandas Profiling 的安装与使用方式:

# 通过pip安装
pip install pandas-profiling==3.5.0

如果我们需要对 hcc 数据集进行分析,参考代码如下:

import pandas as pd
from pandas_profiling import ProfileReport


# Read the HCC Dataset
df = pd.read_csv("hcc.csv")


# Produce the data profiling report
original_report = ProfileReport(df, title='Original Data')
original_report.to_file("original_report.html")

我们会得到非常清晰的数据分析结果报告,如下是报告的头部信息:

Alerts部分对数据进行分析后,给出了4种主要类型的潜在分析结果,包含可能有的风险和处理方式:

  • Duplicates :数据中有 4 个重复行;
  • Constant :'O2'是常量字段,求职999
  • High Correlation :有强相关性的几个特征;
  • Missing :“Ferritin”字段存在缺失值。

💡 数据处理

这对这些问题我们可以做一些处理。

💦 删除重复行

在数据集中,有些特征非常具体,涉及到个人的生物测量值,比如血红蛋白、MCV、白蛋白等。所以,很难有多个患者报告所有特征的相同精确值。因此,我们可以从数据中删除这些重复项。

# Drop duplicate rows
df_transformed = df.copy()
df_transformed = df_transformed.drop_duplicates()

💦 删除不相关的特征

在数据分析过程中,有些特征可能不具有太多价值,比如 O2 常数值。删除这些特征将有助于模型的开发。

# Remove O2
df_transformed = df_transformed.drop(columns='O2')

💦 缺失数据插补

数据插补是用于处理缺失数据的方法。它允许我们在不删除观察值的情况下填补缺失值。均值插补是最常见和最简单的统计插补技术,它使用特征的均值来填充缺失值。我们将使用均值插补来处理 HCC 数据集中的缺失数据。

# Impute Missing Values
from sklearn.impute import SimpleImputer
mean_imputer = SimpleImputer(strategy="mean")
df_transformed['Ferritin'] = mean_imputer.fit_transform(df_transformed['Ferritin'].values.reshape(-1,1))

💡 数据并行对比分析

下面我们就进入高级功能部分了!我们在对1份数据分析后,如果希望有另外一份数据能够比对分析,怎么做呢。下面我们以处理前后的数据为例,来讲解这个分析的实现方式:

transformed_report = ProfileReport(df_transformed, title="Transformed Data")
comparison_report = original_report.compare(transformed_report)
comparison_report.to_file("original_vs_transformed.html") 

最后的对比报告如下:

我们可以从数据集概述中立即了解什么?

  • 转换后的数据集包含更少的分类特征("O2"已被删除)
  • 165个观察值(而原来的171个包括重复项)
  • 没有缺失值(与原始数据集中的79个缺失观察值形成对比)

这种转变如何影响我们的数据质量?这些决定是否很好?我们发现在删除重复记录方面,没有特别的影响,数据缺失和数据分布有一些变化,如下图所示:

从上述图解中,可以看出一些信息,比如对于“铁蛋白”字段,插补数据的均值估算值导致原始数据分布被扭曲。这样处理可能是有问题的,我们应该避免使用均值估算来替换缺失值。在这种情况下,应该使用其他方法来处理缺失值,例如删除缺失值或使用其他统计方法来估算缺失值。

也可以通过相互作用和相关性的可视化来观察到这一点,在“铁蛋白”与其他特征之间的关系中,会出现不一致的相互作用模式和更高的相关值。

上图为铁蛋白与年龄之间的相互作用,估算值显示在对应于平均值的垂直线上。

上图为相关性情况对比,铁蛋白相关值似乎在数据插补后增加。

💡 总结

在本篇内容中,ShowMeAI讲解了 pandas-profiling 工具对不同数据进行对比分析的方法,我们用处理前后的数据做了一个简单的讲解,实际这个方法也可以用到训练集和测试集的对比中,用于发现数据漂移等问题。

关于数据漂移,可以参考ShowMeAI的文章 📘机器学习数据漂移问题与解决方案

参考资料

推荐阅读

🌍 数据分析实战系列https://www.showmeai.tech/tutorials/40
🌍 机器学习数据分析实战系列https://www.showmeai.tech/tutorials/41
🌍 深度学习数据分析实战系列https://www.showmeai.tech/tutorials/42
🌍 TensorFlow数据分析实战系列https://www.showmeai.tech/tutorials/43
🌍 PyTorch数据分析实战系列https://www.showmeai.tech/tutorials/44
🌍 NLP实战数据分析实战系列https://www.showmeai.tech/tutorials/45
🌍 CV实战数据分析实战系列https://www.showmeai.tech/tutorials/46
🌍 AI 面试题库系列https://www.showmeai.tech/tutorials/48

1 声望
1 粉丝
0 条评论
推荐阅读
交互式仪表板!Python轻松完成!⛵
💡 作者:韩信子@ShowMeAI📘 数据分析实战系列:[链接]📘 本文地址:[链接]📢 声明:版权所有,转载请联系平台与作者并注明出处📢 收藏ShowMeAI查看更多精彩内容💡 引言在本篇内容中,ShowMeAI将给大家讲解使用 📘ipywid...

ShowMeAI阅读 932

数据结构与算法:二分查找
一、常见数据结构简单数据结构(必须理解和掌握)有序数据结构:栈、队列、链表。有序数据结构省空间(储存空间小)无序数据结构:集合、字典、散列表,无序数据结构省时间(读取时间快)复杂数据结构树、 堆图二...

白鲸鱼9阅读 5.3k

滚蛋吧,正则表达式!
你是不是也有这样的操作,比如你需要使用「电子邮箱正则表达式」,首先想到的就是直接百度上搜索一个,然后采用 CV 大法神奇地接入到你的代码中?

良许3阅读 1.5k

搭个ChatGPT算法模型,从哪开始?
最近 ChatGPT 很火,火到了各行各业。记得去年更多的还是码农最新体验后拿它搜代码,现在各行各业都进来体验,问它咋理财、怎么写报告和给小孩起名。😂 也因此让小傅哥在头条的一篇关于 ChatGPT 的文章都有了26万...

小傅哥6阅读 1.3k

封面图
程序员适合创业吗?
大家好,我是良许。从去年 12 月开始,我已经在视频号、抖音等主流视频平台上连续更新视频到现在,并得到了不错的评价。每个视频都花了很多时间精力用心制作,欢迎大家关注哦~考虑到有些小伙伴没有看过我的视频,...

良许3阅读 1.3k

PyCharm 激活破解教程, 2023 年 2 月亲测有用
本文分享一下PyCharm 2022.2.3 版本最新激活破解教程,注意不要使用太新的版本,都是 Jetbrains 产品,本文专门配上了 Pycharm 的图片,跟着下面教程一步一步来即可。

程序员徐公阅读 9.8k评论 1

Ubuntu20.04 从源代码编译安装 python3.10
Ubuntu 22.04 Release DateUbuntu 22.04 Jammy Jellyfish is scheduled for release on April 21, 2022If you’re ready to use Ubuntu 22.04 Jammy Jellyfish, you can either upgrade your current Ubuntu syste...

ponponon1阅读 4.6k评论 1

1 声望
1 粉丝
宣传栏