如何制作展示数据集列中0、1及NA计数的直方图?
针对含0、1、NA列的计数可视化方案
因为你要展示的是离散类别(0、1、NA)的计数,用条形图比直方图更贴合需求(直方图多用于连续数据的分布展示),以下是R和Python两种常用工具的实现方法:
R 实现(ggplot2)
核心是把NA转为显式的因子类别,避免绘图时被忽略:
library(ggplot2) # 模拟示例数据(替换成你的数据集即可) set.seed(123) df <- data.frame(target_col = sample(c(0, 1, NA), 100, replace = TRUE)) # 将目标列转为包含NA的因子 df$target_cat <- factor(df$target_col, levels = c(0, 1, NA), labels = c("0", "1", "NA")) # 绘制条形图 ggplot(df, aes(x = target_cat)) + geom_bar(fill = "#2E86AB") + labs(x = "值", y = "计数", title = "0、1、NA的计数分布") + theme_bw()
Python 实现(pandas + matplotlib)
通过value_counts(dropna=False)直接统计NA的数量,再调整展示顺序:
import pandas as pd import matplotlib.pyplot as plt import numpy as np # 模拟示例数据(替换成你的数据集) np.random.seed(123) df = pd.DataFrame({'target_col': np.random.choice([0, 1, np.nan], 100)}) # 统计所有类别(含NA)的计数,并调整顺序 counts = df['target_col'].value_counts(dropna=False).reindex([0, 1, np.nan]) counts.index = ['0', '1', 'NA'] # 绘制条形图 counts.plot(kind='bar', color="#2E86AB") plt.xlabel('值') plt.ylabel('计数') plt.title('0、1、NA的计数分布') plt.xticks(rotation=0) plt.tight_layout() plt.show()
内容的提问来源于stack exchange,提问作者user123
相关产品推荐
相关产品推荐

