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

简介: 本文介绍如何使用 Pandas Profiling 的比较报告功能,分析两个数据集的分布差异,完成数据探索分析 (EDA) 的完整流程,为后续分析做准备。
2d96cebeac609ab648dfc31e6bbb9ae8.png
💡 作者: 韩信子@ ShowMeAI
📘 数据分析实战系列https://www.showmeai.tech/tutorials/40
📘 本文地址https://www.showmeai.tech/article-detail/411
📢 声明:版权所有,转载请联系平台与作者并注明出处
📢 收藏 ShowMeAI查看更多精彩内容

💡 引言

99e1daf10549d28bdb515cb163a80c4a.png

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

b9b0fb7d28236a3f9c72c7de3b91ae20.png

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

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

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

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

9feba32bcd67ca6915adf183513b4f1c.png

关于更多数据自动化探索工具,可以参考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")

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

1c9b84315262681ec105bc611b127e8e.png

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") 

最后的对比报告如下:

e456b58dea254057aaa40c9cbacde0de~tplv-k3u1fbpfcp-watermark.image

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

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

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

500ef6acfffaef8414791ef2b2ea9a0c.gif

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

889860fe71d025d3d5d92fba03fd7fe1.png

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

e492cdc638685bd56d6aae5e9af482a2.png

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

70f6f60e3ee325f5bbfe8a037d921e62.png

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

💡 总结

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

79dfe75c2ddc0686eb1d0fe9dead7296.png

关于数据漂移,可以参考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

e9190f41b8de4af38c8a1a0c96f0513b~tplv-k3u1fbpfcp-zoom-1.image

目录
相关文章
|
8月前
|
数据采集 存储 API
网络爬虫与数据采集:使用Python自动化获取网页数据
【4月更文挑战第12天】本文介绍了Python网络爬虫的基础知识,包括网络爬虫概念(请求网页、解析、存储数据和处理异常)和Python常用的爬虫库requests(发送HTTP请求)与BeautifulSoup(解析HTML)。通过基本流程示例展示了如何导入库、发送请求、解析网页、提取数据、存储数据及处理异常。还提到了Python爬虫的实际应用,如获取新闻数据和商品信息。
1253 2
|
8月前
|
JSON 监控 数据管理
【Elasticsearch专栏 12】深入探索:Elasticsearch使用索引生命周期管理(ILM)自动化删除旧数据
Elasticsearch的ILM功能允许用户定义策略,自动管理索引从创建到删除的生命周期。用户可以设置策略,根据索引年龄或大小自动删除旧数据,节省存储空间。通过应用ILM策略于索引模板,新索引将遵循预定义的生命周期。用户还可以监控ILM状态,确保策略按预期执行。使用ILM,用户可以高效地管理数据,确保旧数据及时删除,同时保持数据完整性和安全性。
241 3
|
1月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
105 10
|
3月前
|
数据采集 存储 JavaScript
自动化数据处理:使用Selenium与Excel打造的数据爬取管道
本文介绍了一种使用Selenium和Excel结合代理IP技术从WIPO品牌数据库(branddb.wipo.int)自动化爬取专利信息的方法。通过Selenium模拟用户操作,处理JavaScript动态加载页面,利用代理IP避免IP封禁,确保数据爬取稳定性和隐私性。爬取的数据将存储在Excel中,便于后续分析。此外,文章还详细介绍了Selenium的基本设置、代理IP配置及使用技巧,并探讨了未来可能采用的更多防反爬策略,以提升爬虫效率和稳定性。
176 4
|
10天前
|
数据采集 人工智能 自然语言处理
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
Midscene.js 是一款基于 AI 技术的 UI 自动化测试框架,通过自然语言交互简化测试流程,支持动作执行、数据查询和页面断言,提供可视化报告,适用于多种应用场景。
110 1
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
|
10天前
|
存储 人工智能 人机交互
PC Agent:开源 AI 电脑智能体,自动收集人机交互数据,模拟认知过程实现办公自动化
PC Agent 是上海交通大学与 GAIR 实验室联合推出的智能 AI 系统,能够模拟人类认知过程,自动化执行复杂的数字任务,如组织研究材料、起草报告等,展现了卓越的数据效率和实际应用潜力。
85 1
PC Agent:开源 AI 电脑智能体,自动收集人机交互数据,模拟认知过程实现办公自动化
|
2月前
|
数据采集
使用 Puppeteer 绕过 Captcha:实现商家数据自动化采集
本文介绍了如何使用Puppeteer结合代理IP和用户伪装技术,轻松绕过大众点评的Captcha验证,实现商家信息的高效采集。通过配置Puppeteer、设置代理和用户伪装参数、模拟人类操作等步骤,成功提取了目标页面的数据。该方法不仅提高了爬虫的稳定性和隐蔽性,还为市场研究和商业分析提供了有力支持。注意,数据采集需遵守法律法规及网站政策。
使用 Puppeteer 绕过 Captcha:实现商家数据自动化采集
|
5月前
|
SQL 存储 数据处理
"SQL触发器实战大揭秘:一键解锁数据自动化校验与更新魔法,让数据库管理从此告别繁琐,精准高效不再是梦!"
【8月更文挑战第31天】在数据库管理中,确保数据准确性和一致性至关重要。SQL触发器能自动执行数据校验与更新,显著提升工作效率。本文通过一个员工信息表的例子,详细介绍了如何利用触发器自动设定和校验薪资,确保其符合业务规则。提供的示例代码展示了在插入新记录时如何自动检查并调整薪资,以满足最低标准。这不仅减轻了数据库管理员的负担,还提高了数据处理的准确性和效率。触发器虽强大,但也需谨慎使用,以避免复杂性和性能问题。
74 1
|
4月前
|
存储 监控 安全
在自动化测试环境中,如何确保测试数据的安全性和隐私性
在自动化测试环境中,如何确保测试数据的安全性和隐私性
128 0