因此,我尝试为我的 Dataframe 创建一个年龄间隔列:
df['age_interval'] = pd.cut(x=df['Age'], bins=[18, 22, 27, 32, 37, 42, 47, 52, 57, 60], include_lowest=True)
然后我添加了我的图表:
**问题:**在可视化中,[18-22] bin显示为[17.99-22]。
**我想要的:**我想要它显示[18-22]。
下面是plot代码:
plt.figure(figsize=(15,8))
dist = sns.barplot(x=ibm_ages.index, y=ibm_ages.values, color='blue')
dist.set_title('IBM Age Distribution', fontsize = 24)
dist.set_xlabel('Age Range', fontsize=18)
dist.set_ylabel('Total Count', fontsize=18)
sizes=[]
for p in dist.patches:
height = p.get_height()
sizes.append(height)
dist.text(p.get_x()+p.get_width()/2.,
height + 5,
'{:1.2f}%'.format(height/total*100),
ha="center", fontsize= 8)
plt.tight_layout(h_pad=3)
plt.show()
2条答案
按热度按时间to94eoyn1#
这是因为它是一个float64类型,你想要一个整数try:
你可以使用.astype('Int64 ')每当你想转换float64到Int64
uurity8g2#
条形图在这里是误导性的,因为柱的宽度不相等。年龄是一个连续变量。为什么要掩盖柱彼此相邻的事实呢?
这正是直方图有用的地方。您仍然可以自定义柱并相应地设置刻度线。其他图自定义也同样有效。