Python统计DataFrame各列equal值数量并绘制柱状图
实现方法
整体实现分两步:先逐列统计取值为equal的单元格总数,再基于统计结果绘制柱状图,空字符串、not equal、空值等非equal取值都会自动被排除,不会计入统计。
完整可运行代码
先导入需要的依赖,假设你的原始DataFrame变量名为df:
import pandas as pd import matplotlib.pyplot as plt # --- 可选:如果单元格存在前后多余空格,先执行这一步去空格,避免漏统 # df = df.applymap(lambda x: x.strip() if isinstance(x, str) else x) # 1. 逐列统计"equal"的数量 equal_count = df.eq("equal").sum() # 2. 绘制柱状图 plt.figure(figsize=(10, 6)) # 列数多的话可以把宽度值(第一个参数)调大 equal_count.plot(kind='bar', color='#4c72b0') # 添加图表标注 plt.xlabel('DataFrame列名', fontsize=12) plt.ylabel('"equal"值计数', fontsize=12) plt.title('各列"equal"取值数量统计', fontsize=14) plt.xticks(rotation=45, ha='right') # x轴标签旋转45度,避免长列名重叠 plt.tight_layout() # 自动调整画布边距,防止标签被截断 # 显示图表 plt.show()
代码逻辑说明
df.eq("equal")会逐元素匹配单元格值是否严格等于equal,返回和原表形状一致的布尔型结果:True代表匹配成功,False代表是其他取值- 链式调用
.sum()默认按列对布尔值求和,其中True记为1、False记为0,最终得到的equal_count是一个Series:索引为原DataFrame的所有列名(对应柱状图x轴),值为对应列equal的总个数(对应柱状图y轴),直接满足绘图的数据要求 - 运行后会弹出matplotlib的绘图窗口,展示最终的柱状图效果。
内容的提问来源于stack exchange,提问作者ysmnrn.csv
相关产品推荐
相关产品推荐

