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

news2025/1/16 18:53:34

💡 作者:韩信子@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个数据集 『HCC 数据集

ShowMeAI官方GitHub:https://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的文章 📘机器学习数据漂移问题与解决方案

参考资料

  • 📘 Pandas Profiling
  • 📘 自动化数据分析 (EDA) 工具库大全:https://showmeai.tech/article-detail/284
  • 📘 机器学习数据漂移问题与解决方案:https://showmeai.tech/article-detail/331

推荐阅读

🌍 数据分析实战系列: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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/93786.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

几种数据库jar包获取方式

摘要:以下提供的都是各个数据库较为官方的jar包获取方式。本文分享自华为云社区《JDBC连接相关jar包获取及上传管理中心白名单处理》,作者:HuaWei XYe。 jar包获取 以下提供的都是各个数据库较为官方的jar包获取方式 1、Mysql https://de…

C#启程—游戏开发笔记

文章目录ideRider下载和安装创建C#基础工程(包含form)Rider去除语法警告C#笔记namespace找不到某个class(命名空间)c#相对路径(比较特别)双缓存技术窗体事件绑定窗体初始属性方法生成调式绑定事件成功窗体中…

再探Vue3响应式系统

欲看懂这一篇还是建议先看上一篇,这一篇我们继续往下走 一、嵌套问题 🖖先看背景 在这段代码里面,question1里面嵌套了question2,所以question1的执行会导致question2的执行 let temp1 ,temp2; function question1() {console.…

基于java+springmvc+mybatis+vue+mysql的电子资源管理系统

项目介绍 随着互联网技术的高速发展,人们生活的各方面都受到互联网技术的影响。现在人们可以通过互联网技术就能实现不出家门就可以通过网络进行系统管理,交易等,而且过程简单、快捷。同样的,在人们的工作生活中,也就…

AI加速自动驾驶进程,景联文科技提供数据采集标注服务

“当前,路面上搭载各级别自动驾驶系统的车辆数量逐渐增多。对自动驾驶领域头部企业来说,为了保持自身的竞争优势并加速自动驾驶应用安全落地进程,需要依靠大量的高质量标注数据来训练优化自动驾驶相关算法模型。数据作为AI技术的底层基础&…

备战2023蓝桥国赛-饼干

题目描述: 解析: 这道题我想了很多种解决方法,但无一例外都失败了,实在是按照常规线性DP的思路真的想不出来。 看了题解之后才知道它是分为三步解决这个问题的: 第一步:缩小最优解的范围 先用贪心将最优解…

如何准备好2023年的USACO?

目录 1. 注册 2. 刷题 3. 备考 4. 考试流程/介绍 5. 铜组例题 1. 注册 先进入usaco的官网,主页的右边会有注册的选项,点击Register for New Account。会让你填你自己的用户名,邮箱,实名,毕业的年份,还…

世界杯数据分析

国际足联世界杯(FIFA World Cup) 文章目录前言一、历届世界杯数据分析(一)建表(二)导入数据(三)数据分析1. 全勤巴西2. 夺冠排名3. 扩军历史4. 进球之最二、本届世界杯数据分析&…

【Java寒假打卡】Java基础-数据类型以及转换

【Java寒假打卡】Java基础-数据类型以及转换一、关键字二、强制转换三、常量四、隐式转换的问题五、变量六、程序输入七、标识符八、类型转换一、关键字 含义:java 中被赋予特定含义和特点的单词 二、强制转换 数据范围大变量赋给一个数据范围小的变量int 到byte…

android绘制弧形背景

先看一下效果&#xff1a; 在drawable中写shape.xml文件 <?xml version"1.0" encoding"utf-8"?> <layer-list xmlns:android"http://schemas.android.com/apk/res/android"><item><shape><solid android:color&quo…

Hadoop学习----Hadoop介绍

Hadoop介绍 Hadoop是Apache软件基金会的一款开源软件。底层是由java语言实现。 功能&#xff1a;允许用户使用简单的编程模型实现跨机器集群对海量数据进行分布式计算处理。 Hadoop核心组件&#xff1a; Hadoop HDFS&#xff08;分布式文件存储系统&#xff09;&#xff1a;解…

大道至简——工具类产品的几个思考方向

因为之前没有接触过摹客的产品&#xff0c;对于一个经常使用Axure的产品经理&#xff0c;仅仅通过两周摹客的使用体验写出的体验文档确实不够严谨&#xff0c;所以以下除了表层的几点用户体验&#xff0c;重点还是谈一下对工具类产品发展方向的思考。 体验篇 一款产品的诞生肯…

4.2 YOLOv3算法

文章目录一、林业病虫害数据集和数据预处理方法介绍1.1 读取AI识虫数据集标注信息1.2 数据读取和预处理1.2.1 数据读取1.2.2 数据预处理**随机改变亮暗、对比度和颜色等****随机填充****随机裁剪****随机缩放****随机翻转****随机打乱真实框排列顺序****图像增广方法汇总**1.2.…

Oracle云服务器安全配置

在Oracle云上申请了一个免费云空间&#xff0c;据说是永久免费&#xff0c;这里记录一下安全配置问题。 一、访问Oracle云服务器 1、云服务器申请 如何在oracle注册申请云服务可自行搜索一下&#xff0c;有很多文章介绍。 甲骨文Oracle云服务器详细申请教程步骤及注意事项 …

如何计算香港服务器公网带宽的实际下载速度?

如何计算香港服务器公网带宽的实际下载速度?下面分享香港服务器带宽实际下载速度对照表及计算方法&#xff1a; 香港服务器带宽实际下载速度计算方法 香港服务器以1Mbps公网带宽为例&#xff0c;香港服务器1M带宽实际下载速度峰值128KB/S&#xff0c;为什么不是1M/S&#xff0…

电脑重装系统后重启电脑黑屏是怎么回事

​电脑重装系统后重启电脑黑屏怎么回事&#xff1f;最近有用户反映自己在重装电脑系统后&#xff0c;开机出现了黑屏的现象&#xff0c;检查后发现硬件设备没有故障&#xff0c;那么是怎么回事呢&#xff1f;有可能是显示器不支持该显卡显示的分辨率或者是重装系统后的显卡驱动…

结构建模设计——Solidworks软件之使用钣金折弯功能做一个带折弯固定口的铝合金面板

【系列专栏】&#xff1a;博主结合工作实践输出的&#xff0c;解决实际问题的专栏&#xff0c;朋友们看过来&#xff01; 《QT开发实战》 《嵌入式通用开发实战》 《从0到1学习嵌入式Linux开发》 《Android开发实战》 《实用硬件方案设计》 长期持续带来更多案例与技术文章分享…

31岁才转行程序员,目前34了,我的经历和一些感受

按惯例&#xff0c;先说下我基本情况。我是85年的&#xff0c;计算机专业普通本科毕业。在一个二线城市&#xff0c;毕业后因为自身能力问题、认知水平问题&#xff0c;再加上运气不好&#xff0c;换过多份工作&#xff0c;每份工作都干不长。导致我30多岁时&#xff0c;还一事…

背包问题:蜣螂优化算法(Dung beetle optimizer,DBO)求解背包问题(Knapsack Problem,KP)提供Matlab代码

一、背包问题 1.1背包问题描述 背包问题(Knapsack Problem&#xff0c;KP)是一种重要的组合优化问题&#xff0c;在生活的许多领域都有着十分广泛的应用。背包问题可以描述为&#xff1a;给定一个背包和n种物品&#xff0c;其中&#xff0c;背包的容量为VVV &#xff0c;第i …

C++11标准模板(STL)- 算法(std::min_element)

定义于头文件 <algorithm> 算法库提供大量用途的函数&#xff08;例如查找、排序、计数、操作&#xff09;&#xff0c;它们在元素范围上操作。注意范围定义为 [first, last) &#xff0c;其中 last 指代要查询或修改的最后元素的后一个元素。 返回范围内的最小元素 st…