2023年5个自动化EDA库推荐
EDA或探索性数据分析是一项耗时的工作,但是由于EDA是不可避免的,所以Python出现了很多自动化库来减少执行分析所需的时间。EDA的主要目标不是制作花哨的图形或创建彩色的图形,而是获得对数据集的理解,并获得对变量之间的分布和相关性的初步见解。我们在以前也介绍过EDA自动化的库,但是现在已经过了1年的时间了,我们看看现在有什么新的变化。
为了测试这些库的功能,本文使用了两个不同的数据集,只是为了更好地理解这些库如何处理不同类型的数据。
YData-Profiling
以前被称为Pandas Profiling,在今年改了名字。如果你搜索任何与EDA自动化相关的内容时,它都会作为第一个结果出现,这也是有充分理由的。
这个库最有用和最常用的是ProfileReport()命令。它生成整个数据集的详细摘要,报告对于获得数据的概览非常有用,特别是如果你不知道从哪里或如何开始分析(通常是这种情况)。这对于那些想要节省时间的新手或有经验的分析师来说非常有用。该报告提供单变量分布,突出数据质量问题,并创建相关性。让我们看一下患者风险概况数据的报告:
patient_data = pd.read_csv('/kaggle/input/patient-risk-profiles/patient_risk_profiles.csv')
zomato_data=pd.read_csv('/kaggle/input/zomato-data-40k-restaurants-of-indias-100-cities/zomato_dataset.csv')from ydata_profiling import ProfileReport
patient_report=ProfileReport(patient_data)
patient_reportzomato_report=ProfileReport(zomato_data)
zomato_report
这份报告在很直观,也非常全面,它提供了一个很好的概述:
变量统计的简明概述,缺失值的百分比,重复值等。
在Alerts选项卡的简单文本中高亮显示数据质量问题,如高相关性,类不平衡等。
在variables 选项卡中给出了所有变量的单变量分析。有助于了解该变量的分布和统计特性。
点击变量下的“More Details”可以提供对各种其他统计数据,直方图,常见值和极值的更深入分析。基本上包含了一般我们想要知道的所有信息。
对于文本变量,报告生成了一个类似于NLP的概述,如下所示:
Interactions选项卡可以进行双变量分析,其中x轴变量在左列,y轴变量在右列。可以混搭来观察变量之间的相关性。这里唯一的限制是可用的图表类型只有散点图,所以如果想使用不同类型的图表,必须手动绘制。
在Correlations 下,可以观察到所有变量的热图。但是由于变量数量太多,热图几乎难以辨认,所以最好是用自定义参数绘制手动热图。
最后还显示了缺失值和相应的列,以及重复的行(如果有的话)。
现YData报告对于在新数据集上获得立足点并找到进一步调查的方向非常有用。因为Pandas Profiling算是最早 的一个自动化EDA库了,并且YData对它做了非常大的更新。但是在较大数据集的情况下生成报告所需的时间很长,并且有时会崩溃。
SweetViz
这是我自己最喜欢用的自动化库。它有三个主要函数可用于汇总数据集
analyze() -汇总单个数据集并生成报告。
compare() -比较两个df,如’ train ‘和’ test '。它只会比较常见的功能。
compare_intra() -比较相同数据集的子集。例如,同一数据中的“男性”和“女性”统计数据。
如果在Jupyter或Kaggle中工作,可以使用show_notebook()来呈现报告,在本地可以使用show_html()在新的浏览器窗口中打开报告。
import sweetviz as sv
patient_report_2=sv.analyze(patient_data)
patient_report_2.show_notebook(w="100%", h="full")
该报告与YData类似,提供了类似的信息,但UI感觉有点过时。
Association 选项卡创建了一个热图,提供了对变量相关性的洞察,由于变量的数量很大,热图是难以辨认的,对我们没有用处。所以可以使用explore_correlations()函数导出相关矩阵,并使用这些数据绘制带有自定义参数的热图。
为每个变量提供的信息更加简洁。缺失值、惟一值、分布甚至相关性都在每个变量部分中一起给出,所以不必在各个模块之间跳转以查看信息。
对于直方图,箱的数量也可以改变。统计信息可以在右上角查看,频繁值和极值也可以在底部看到。
但是它除了热图之外没有提供双变量分析,因此无法看到两个变量如何相互作用,这与YData不同。
在分析文本数据时,所提供的信息主要基于类和百分比分布,这比YData报告中少了很多
SweetViz给出了数据集的一个很好的概述,并且作为任何分析的起点都是很好的,关键是它运行的速度很快。
D-Tale
D-Tale只需一行代码就可以创建一个完全交互的界面,其中有大量的选项可随意使用。只需点击一个按钮就可以完成一些事情,不需要编写许多行代码。几乎所有你想通过编码做的事情都有一个UI功能,可以通过下拉菜单轻松获得。
import dtale
patient_report=dtale.show(patient_data)
patient_report
也可以在单独的浏览器中打开报表,而不是在jupyter中工作。这可以提供更大的空间来探索数据及其特性。只需点击左上角箭头,选择“Open in New Tab”。
这个菜单包含了一个列表中所有可用的功能,这些功能也在顶部的行中被划分为自动隐藏,所以需要保将光标悬停在列上方以查看工具栏,这是一个对于新手不好的地方。
Actions:在这个类别下,你可以使用pandas函数来实现聚合、数据清理、数据转换等功能。所有这些都是交互式的,只需点击鼠标即可。最棒的是,当你将鼠标悬停在每个功能上时,每个功能的解释都会弹出。可以使用Clean column从文本数据中删除标点符号,并且只需单击几下即可标准化文本数据。这是一个非常方便的特性,特别是对于新手来说。
Visualize:这是最有用的分类,给出了整个数据集的漂亮摘要。类似于pandas的describe()方法。
可以做缺失值分析、时间序列分析、查找相关性或创建图表。选择想要的图表类型,选择x和y变量,如果需要,选择组,图形将自动加载。也可以选择多个变量或组。不需要代码,只需点击几下就可以绘制完整的图表。
还可以单击列标题以显示更多选项,包括列分析,更改数据类型,查找重复项,重命名列,删除或更改位置等。这些任务可以通过编写基本代码轻松完成,但是使用这个工具可以节省很多时间。你也可以编辑任何单元格的值,只需点击它,就像在excel中一样。
这个库可以说是EDA的第二步,通过自动化EDA我们对数据有了一定了解后使用这个库,可以在数据清理、预处理和可视化方面节省很多时间。
Klib
Klib是一个有趣的小库,非常容易使并且创建了非常有用的视觉效果。它还包含清理和预处理数据的功能。它还将一些非常常见的预处理步骤(这些步骤可能很繁琐)合并为单个命令,这些命令可以运行以获得相同的结果。这个库是由著名的数据科学教育家Krish Naik推荐的,所以值得一试。
df = pd.DataFrame(data)# klib.describe - functions for visualizing datasets
- klib.cat_plot(df) # returns a visualization of the number and frequency of categorical features
- klib.corr_mat(df) # returns a color-encoded correlation matrix
- klib.corr_plot(df) # returns a color-encoded heatmap, ideal for correlations
- klib.corr_interactive_plot(df, split="neg").show() # returns an interactive correlation plot using plotly
- klib.dist_plot(df) # returns a distribution plot for every numeric feature
- klib.missingval_plot(df) # returns a figure containing information about missing values# klib.clean - functions for cleaning datasets
- klib.data_cleaning(df) # performs datacleaning (drop duplicates & empty rows/cols, adjust dtypes,...)
- klib.clean_column_names(df) # cleans and standardizes column names, also called inside data_cleaning()
- klib.convert_datatypes(df) # converts existing to more efficient dtypes, also called inside data_cleaning()
- klib.drop_missing(df) # drops missing values, also called in data_cleaning()
- klib.mv_col_handling(df) # drops features with high ratio of missing vals based on informational content
- klib.pool_duplicate_subsets(df) # pools subset of cols based on duplicates with min. loss of information
我尝试了一些可视化功能,下图显示了所有变量的热图,上面的三角形被消去了(这是默认的),这是一个很好的特性。它使图表更具可读性。由于变量的数量非常多,因此很难看到相关性,但默认的配色方案可以让我们看到相关性较高的地方聚集在一起,用深蓝色标记。
图表的配色方案很好,信息也很清晰。但是信息水平不像前几个库那样密集,这对于那些只希望看到某些特定数据而不希望被信息淹没的人来说是件好事。但是为了获得数据的概览,必须编写更多行代码来获得想要的内容。
这个库很有趣,它肯定是工具箱中一个有用的工具,但我发现它在预处理的时候会更有用,因为许多常用的预处理技术已经被压缩成单行命令,可以直接执行节省编码时间。
Dabl
数据分析基线库- Dabl。这个库在执行时需要确定一个目标变量,将目标列作为y轴进行绘图。虽然这个库仍在开发中,但是它可以直接帮你进行双变量分析,这通常是我们真正想看到的。每个变量相对于目标变量的表现。
import dabl
import matplotlib.pyplot as pltdabl.plot(patient_data, target_col='predicted risk of Pulmonary Embolism')
plt.show()
这与seaborn中的pairplot()命令非常相似。
Dabl也有一些数据清理功能,并开始引入一些基本的机器学习模型,但是我觉得这些功能都太多了,没有必要。
这是一个不错的库,具有良好的双变量分析和一些额外的数据清理功能。如果已经确定了目标变量,并且只是希望观察它与其他特征的行为,那么它可能非常有用。
Sketch
它是一个基于LLM(大型语言模型)的库,只有三个命令,其中一个使用OpenAI API。这导致它有大小限制,所以我们必须取数据的一个子集。
就像其他LLM(ChatGPT)一样,Sketch使用自然语言来处理查询并产生类似人类的输出。它利用人工智能将数据分析过程转化为对话。
这三个命令是ask()、howto()和apply()。最后一个使用OpenAI的API,对数据生成很有用。第一个函数ask()将导致会话输出,而howto()将导致给出如何实现目标的代码。两者如下所示:
query="How do I plot a chart of all missing values ?"
query2="I want an overview of this dataset"patient_data_subset=patient_data.iloc[:, :19]
以对话的形式探索数据集是非常有趣的,从一个查询到下一个查询,直到获得所需的信息。新手和老手都可以使用howto()函数来快速生成代码块,不必从头编写整个代码,节省了时间。
Sketch允许在Jupyter中使用类似GPT的功能。但是ChatGPT也直接支持了Jupyter,可以集成到开发环境中,这使得这个库变得多余,但是如果你希望通过使用OpenAIs API密钥来避免复杂性,简单地使用Sketch作为python包是最简单的方法。
这个库可以很有趣,但是也只是有趣,并不能作为自动EDA来推荐,我提到他只是因为他包含了LLM的功能,不建议在线上使用。
总结
YData Profiling执行起来很简单,UI很直观,给了我所有的信息,这是开始EDA过程的一个很好的切入点。
D-Tale不仅是EDA过程的一个很好的起点,而且可以用来轻松地预处理数据,最主要是不需要编写任何代码,这使得它非常节省时间,并且任何人都可以轻松访问。
SweetViz的UI有点过时,但它提供了相当数量的信息,最主要的时他可以比较两个数据集。
https://avoid.overfit.cn/post/78e5dbb18cc442619cb7727c08c43588
作者:Sharod Dey
相关文章:

2023年5个自动化EDA库推荐
EDA或探索性数据分析是一项耗时的工作,但是由于EDA是不可避免的,所以Python出现了很多自动化库来减少执行分析所需的时间。EDA的主要目标不是制作花哨的图形或创建彩色的图形,而是获得对数据集的理解,并获得对变量之间的分布和相关…...

7-1 查找书籍
给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。 输入格式: 输入第一行给出正整数n(<10),随后给出n本书的信息。每本书在一行中给出书名,即长度不超过30的字…...

【无线网络技术】——无线广域网(学习笔记)
📖 前言:无线广域网(WWAN)是指覆盖全国或全球范围内的无线网络,提供更大范围内的无线接入,与无线个域网、无线局域网和无线城域网相比,它更加强调的是快速移动性。典型的无线广域网:蜂窝移动通信系统和卫星…...

【java+vue+微信小程序项目】从零开始搭建——健身房管理平台(2)后端跨域、登录模块、springboot分层架构、IDEA修改快捷键、vue代码风格
项目笔记为项目总结笔记,若有错误欢迎指出哟~ 【项目专栏】 【java+vue+微信小程序项目】从零开始搭建——健身房管理平台(1)spring boot项目搭建、vue项目搭建、微信小程序项目搭建 【java+vue+微信小程序项目】从零开始搭建——健身房管理平台(2)后端跨域、登录模块、sp…...

NGINX相关配置
全局配置 NGINX配置信息 nginx 官方帮助文档:http://nginx.org/en/docs/Nginx的配置文件的组成部分: 主配置文件:/conf/nginx.conf(/nginx/conf/nginx.conf) 子配置文件: include conf.d/*.conf#事件驱动相关的配置 同步 event { worker_…...

如何将idea中导入的文件夹中的项目识别为maven项目
问题描述 大家经常遇到导入某个文件夹的时候,需要将某个子文件夹识别为maven项目 解决方案...

CleanMyMac4.16中文最新版本下载
当很多人还在为电脑运行缓慢、工作问题不能快速得到解决而烦恼的时候,我已经使用过了多款系统清理工具,并找到了最适合我的那一款。我的电脑是超耐用的Mac book,接下来给大家介绍三种在众多苹果电脑清理软件的排名较高的软件。 一、Maintena…...

谷歌正式发布最强 AI 模型 Gemini
2023年12月6日,谷歌公司宣布推出其被认为是规模最大、功能最强大的人工智能模型 Gemini。 Gemini将分为三个不同的套件:Gemini Ultra、Gemini Pro和Gemini Nano。 Gemini Ultra被认为具备最强大的能力,Gemini Pro则可扩展至多任务&#x…...

无人机语音中继电台 U-ATC118
简介 甚高频无线电中继通讯系统使用经过适航认证的机载电台连接数字网络传输模块,通过网络远程控制无缝实现无人机操作员与塔台直接语音通话。无人机操作员可以从地面控制站远程操作机载电台进行频率切换、静噪开关、PTT按钮,电台虚拟面板与真实面板布局…...

两种测量方式的自适应卡尔曼滤波数据融合
文章目录 测试效果代码CMakeLists.txt参考测试效果 代码 #include <iostream> #include <Eigen/Dense> #include...

.Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
机缘 不知不觉,.NET8都已经面世,而我们一直还停留在.netframework4.5开发阶段,最近准备抽空研究一下.Net6,一是为了提高技术积累,一方面想着通过这次的学习,看有没有可能将老的FX版本替换到.Net6开发上,经过查找官方资料,对.Net6支持的系统版本做一个分享,方便大家后期…...

CopyOnWriteArraySet怎么用
简介 CopyOnWriteArraySet是一个线程安全的无序集合,它基于“写时复制”的思想实现。它继承自AbstractSet,可以将其理解成线程安全的HashSet。 CopyOnWriteArraySet在读取操作比较频繁、写入操作相对较少的情况下可以提高程序的性能和可靠性。它的线程…...

uniapp得app云打包问题
获取appid,具体可以查看详情 也可以配置图标,获取直接生成即可 发行 打包配置 自有证书测试使用时候不需要使用 编译打包 最后找到安装包apk安装到手机 打包前,图片命名使用要非中文,否则无法打包成功会报错...

Linux bin包生成
需求背景: 在实际项目时我们很少把源码用个tar给到客户,这样显得很不专业,且有的时候我们提供补丁,那么这个时候我们提供一个补丁的bin包可以直接安装运行就显得很高大上了。 物料准备 准备一台liunx,虚拟机亦可&am…...

Java多人聊天
服务端 import java.io.*; import java.net.*; import java.util.ArrayList; public class Server{public static ServerSocket server_socket;public static ArrayList<Socket> socketListnew ArrayList<Socket>(); public static void main(String []args){try{…...

自动驾驶:传感器初始标定
手眼标定 机器人手眼标定AxxB(eye to hand和eye in hand)及平面九点法标定 Ax xB问题求解,旋转和平移分步求解法 手眼标定AXXB求解方法(文献总结) 基于靶的方法 相机标定 (1) ApriTag (2) 棋盘格:cv::f…...

如何将 MySQL 数据库转换为 SQL Server
本文解释了为什么组织希望将其 MySQL 数据库转换为 Microsoft SQL 数据库。本文接着详细介绍了尝试转换之前需要记住的事项以及所涉及的方法。专业的数据库转换器工具将帮助您快速将 MySQL 数据库记录转换为 MS SQL Server。 在继续之前,我们先讨论一下 MySQL 到 M…...

【开源】基于Vue+SpringBoot的河南软件客服系统
文末获取源码,项目编号: S 067 。 \color{red}{文末获取源码,项目编号:S067。} 文末获取源码,项目编号:S067。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统管理人员2.2 业务操作人员 三、…...

《算法面试宝典》--深度学习常见问题汇总
第三章 深度学习基础 3.1 基本概念 3.1.1 神经网络组成? 神经网络类型众多,其中最为重要的是多层感知机。为了详细地描述神经网络,我们先从最简单的神经网络说起。 感知机 多层感知机中的特征神经元模型称为感知机,由Frank Rosenblatt于1957年发明。 其中 x 1 x_1 x...

【计算机网络实验】实验三 IP网络规划与路由设计(头歌)
目录 一、知识点 二、实验任务 三、头歌测试 一、知识点 IP子网掩码的两种表示方法 32位IP子网掩码,特点是从高位开始连续都是1,后面是连续的0,它有以下两种表示方法: 传统表示法,如:255.255.255.0IP前…...

CodeBlocks添加头文件,解决fatal error: ui.h No such file or directory
问题描述 在使用codeblocks工具进行LVGL仿真过程中报错,找不到头文件 原因分析: 没有将头文件加入编辑器搜索的目录中,编译时找不到头文件。 解决方案: 将要包含的头文件的目录加进去就可以了...

鸿蒙开发:UIAbility组件与UI的数据同步-使用EventHub进行数据通信【鸿蒙专栏-21】
文章目录 ArkTS应用模型中UIAbility组件与UI的数据同步使用EventHub进行数据通信使用globalThis进行数据同步1. UIAbility和Page之间使用globalThis2. UIAbility和UIAbility之间使用globalThis3. 使用globalThis的注意事项4. 使用globalThis的注意事项同名对象覆盖导致问题的场…...

云架构的思考3--云上开发
目录 1 DevOps--简单灵活性高2 服务化(微服务)--弹性(可扩展)、按需自主服务3 无状态(Serverless)--弹性(可扩展)4 日志--安全5 配置中心--安全6 设计模式6.1 使用“适配器模式”调用…...

vue3日常知识点学习归纳
1,父子组件传递: 父组件传递参数 <template><div><!-- 子组件 参数:num 、nums --><child :num"nums.num" :doubleNum"nums.doubleNum" increase"handleIncrease"></child>&l…...

策略模式终极解决方案之策略机
我们在开发时经常会遇到一堆的if else …, 或者switch, 比如我们常见的全局异常处理等, 像类似这种很多if else 或者多场景模式下, 策略模式是非常受欢迎的一种设计模式, 然而, 一个好的策略模式却不是那么容易写出来. 我在工作中也因为写烦了switch,if else 觉得很不优雅, 因…...

linux 常用指令目录大纲
Linux下的Signal信号处理及详解,test ok-CSDN博客 Linux下怎样判断一个binary是否可以debug//test ok_感知算法工程师的博客-CSDN博客 linux file命令的用法//test ok-CSDN博客 linux下生成core dump方法与gdb解析core dump文件//test ok-CSDN博客 linux readel…...

webpack该如何打包
1.我们先创建一个空的大文件夹 2.打开该文件夹的终端 输入npm init -y 2.1.打开该文件夹的终端 2.2在该终端运行 npm init -y 3.安装webpack 3.1打开webpack网址 点击“中文文档” 3.2点击“指南”在点击“起步” 3.3复制基本安装图片画线的代码 4.在一开始的文件夹下在创建一…...

【STM32】TIM定时器输入捕获
1 输入捕获 1.1 输入捕获简介 IC(Input Capture)输入捕获 输入捕获模式下,当通道输入引脚出现指定电平跳变时(上升沿/下降沿),当前CNT的值将被锁存到CCR中(把CNT的值读出来,写入到…...

webrtc 设置不获取鼠标 启用回声消除
数 getDisplayMedia()(属于 navigator.mediaDevices 的一部分)与 getUserMedia() 类似,用于打开显示内容(或部分内容,如窗口)。返回的 MediaStream 与使用 getUserMedia() 时相同。 显示鼠标与否 getDisplayMedia() 的约束条件与常规视频或音频输入资源的限制不同。 {…...

JVM虚拟机:如何查看JVM初始和最终的参数?
本文重点 在前面的课程中,我们学习了如何查看当前程序所处于的xx参数,本文再介绍一种如何参看JVM的xx参数? 查看JVM的所有初始化参数 方式一:java -XX:PrintFlagsInitial 方式二:java -XX:PrintFlagsInitial -versio…...