You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

绘制Pandas DataFrame列时Y轴刻度值混乱问题求助

问题

我的DataFrame某列记录了1991-2020年的基尼系数(Gini index),仅1993、2004、2009、2011、2015-2019年有有效值,其余年份为空。我用以下代码绘制柱状图:

final_df=final_df.replace('..','')
final_df1=final_df.dropna(subset=['Gini index'])
ax4.bar(final_df1['Year'],final_df1['Gini index'])

但Y轴刻度值混乱,没有特定顺序。尝试以下代码修复无效:

yticks = ax4.get_yticks()
ax4.set_yticklabels(['{:.1f}'.format(y) for y in yticks])
解决方法

问题出在Gini index列是字符串类型,matplotlib会把字符串当作离散类别处理,导致Y轴刻度乱序。按以下步骤修复:

  • 转换列的数值类型:
    把空值标记为pd.NA后转为浮点型,确保数据是数值格式:

    import pandas as pd
    
    final_df['Gini index'] = final_df['Gini index'].replace('..', pd.NA).astype(float)
    final_df1 = final_df.dropna(subset=['Gini index'])
    
  • 重新绘制柱状图:
    此时Y轴会自动按数值顺序生成刻度:

    ax4.bar(final_df1['Year'], final_df1['Gini index'])
    
  • 可选:自定义Y轴刻度格式
    如果需要调整刻度显示精度,用FuncFormatter更可靠:

    from matplotlib.ticker import FuncFormatter
    ax4.yaxis.set_major_formatter(FuncFormatter(lambda y, _: '{:.1f}'.format(y)))
    

内容的提问来源于stack exchange,提问作者user21294168

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 04:43:17