如何使用Python基于pandas DataFrame绘制0与1计数对比柱状图
绘制各列0/1取值数量分组柱状图的方法
首先导入所需依赖库:
import pandas as pd import matplotlib.pyplot as plt
你提供的示例DataFrame构造代码如下:
df = pd.DataFrame(dict( A=[1, 0, 0, 1], B=[0, 1, 1, 1], C=[1, 0, 0, 0] ))
方法1:x轴为列名,每列对应0、1两个柱子(和示例效果一致)
可以直接用seaborn的countplot自动统计计数并绘图,步骤最简单:
- 如果未安装seaborn,先执行
pip install seaborn完成安装 - 转换数据格式后绘图:
import seaborn as sns # 转换为长表格式,适配seaborn绘图入参要求 df_long = df.melt(var_name='列名', value_name='取值') # 绘制分组柱状图,自动统计各取值的出现次数 sns.countplot(data=df_long, x='列名', hue='取值') # 可按需添加图表标注 plt.ylabel('出现次数') plt.title('各列0/1取值数量分布') plt.show()
方法2:x轴为取值,每个取值对应各列的柱子
如果需要按0、1取值分组对比各列的数量,可以直接用pandas内置的绘图接口:
# 先统计每列0、1的出现次数 count_df = df.apply(pd.Series.value_counts) # 绘制柱状图 count_df.plot(kind='bar', figsize=(6,4)) # 调整样式 plt.xticks(rotation=0) plt.xlabel('取值') plt.ylabel('出现次数') plt.legend(title='列名') plt.show()
内容的提问来源于stack exchange,提问作者Adler Müller
相关产品推荐
相关产品推荐

