R语言是否有类似Pandas Profile的轻量数据探查工具?
R语言数据探查工具:优化DataExplorer或替代方案
一、调整DataExplorer的create_report解决宽数据集缺失值问题
DataExplorer默认的缺失值热力图在宽数据集(变量多)时确实拥挤难读,你可以通过自定义模块替换默认的缺失值可视化,改用更适合的条形图展示每个变量的缺失值数量和占比:
library(DataExplorer) library(ggplot2) # 自定义缺失值统计与可视化函数 custom_missing_report <- function(data) { # 计算缺失值统计数据 missing_stats <- data.frame( 变量名 = colnames(data), 缺失值数量 = colSums(is.na(data)), 缺失值占比 = round(colSums(is.na(data))/nrow(data)*100, 2) ) # 按缺失值占比降序排序 missing_stats <- missing_stats[order(missing_stats$缺失值占比, decreasing = TRUE), ] # 生成横向条形图 p <- ggplot(missing_stats, aes(x = reorder(变量名, 缺失值占比), y = 缺失值占比)) + geom_bar(stat = "identity", fill = "#4285F4") + # 添加缺失值数量和占比标签 geom_text(aes(label = paste0(缺失值数量, " (", 缺失值占比, "%)")), hjust = -0.1, size = 3.5) + coord_flip() + labs(title = "缺失值统计", x = "变量", y = "缺失值占比 (%)") + theme_minimal() # 返回可视化图和统计表格 return(list(plot = p, table = missing_stats)) } # 生成自定义报告,仅保留需要的模块 create_report( your_data, # 替换成你的数据集 custom = list( "缺失值统计" = custom_missing_report ), sections = c("introduction", "missing", "distribution") # 保留介绍、缺失值、分布模块 )
这个自定义函数会生成横向条形图,变量按缺失值占比排序,每个条形旁标注具体的缺失值数量和占比,宽数据集下也能清晰查看。
二、替代工具推荐
如果不想修改DataExplorer,以下几个工具更贴合你的需求:
1. DataProfileR
完全对标Pandas Profile Report,默认生成包含缺失值统计(数量+占比)、变量分布的HTML报告,用法极简:
library(DataProfileR) # 生成HTML报告 DataProfileR(your_data, output_file = "数据探查报告.html")
报告结构和Pandas Profile高度一致,每个变量单独展示缺失值信息和分布图表,宽数据集适配良好。
2. skimr + R Markdown
skimr专注生成简洁的变量统计信息,包含缺失值、分布特征,配合R Markdown可以快速生成结构化HTML报告:
library(skimr) library(rmarkdown) # 生成变量统计摘要 skim_summary <- skim(your_data) # 渲染为HTML报告 render(input = textConnection("--- title: '数据探查报告' output: html_document --- ## 变量统计摘要 ```{r, echo=FALSE} skim_summary
"), output_file = "数据探查报告.html")
skimr的输出中,每个变量会明确列出缺失值数量、占比,数值变量附带直方图和分位数,分类变量展示频数分布。 ### 3. visdat + R Markdown visdat主打缺失值和变量分布可视化,适合需要更直观图形展示的场景,结合R Markdown整合为HTML报告: ```r library(visdat) library(ggplot2) library(rmarkdown) render(input = textConnection("--- title: '数据探查报告' output: html_document --- ## 缺失值分布 ```{r, echo=FALSE, fig.width=12} vis_miss(your_data, sort_miss = TRUE) + ggtitle("变量缺失值排序")
数值变量分布
vis_dist(your_data[, sapply(your_data, is.numeric)])
分类变量分布
for (col in colnames(your_data)[sapply(your_data, is.factor)]) { print(ggplot(your_data, aes(x = .data[[col]])) + geom_bar() + ggtitle(paste(col, "分布"))) }
"), output_file = "数据探查报告.html")
内容的提问来源于stack exchange,提问作者circle25
相关产品推荐
相关产品推荐

