如何用Pandas DataFrame绘制以date索引为X轴的散点图?
解决Pandas散点图中索引作为X轴的报错问题
这个问题我之前也踩过坑!咱们先理清楚为啥会报错:
- 第一个
KeyError: 'date':因为df.plot()的x参数默认只会在DataFrame的列里查找,而你的date是索引,不是普通列,所以找不到对应字段。 - 第二个
ValueError:散点图和折线图逻辑不同——折线图可以默认把索引当X轴,但散点图要求必须明确指定X和Y的数据源,不能用默认索引。
下面给你三种实用的解决方法,按需选择:
方法一:把索引转为普通列(修改原DataFrame)
如果不介意改动原数据,可以先把date索引转成列,之后就能正常用x='date'参数了:
# 把索引转为列,inplace=True直接修改原df df.reset_index(inplace=True) # 现在可以正常绘制散点图 df.plot(kind='scatter', x='date', y='columnA')
方法二:直接传入索引作为X轴(不修改原DataFrame)
如果不想改动原数据,直接把索引对象传给x参数即可:
# 直接用df.index作为X轴数据源 df.plot(kind='scatter', x=df.index, y='columnA')
如果你的date是datetime类型的索引,Pandas会自动处理时间刻度的显示,不用额外转换。
方法三:用Matplotlib原生函数绘制(更灵活)
如果你需要更多自定义设置,直接用Matplotlib的scatter函数会更自由:
import matplotlib.pyplot as plt # 直接指定X为索引,Y为columnA plt.scatter(df.index, df['columnA']) # 自定义轴标签 plt.xlabel('date') plt.ylabel('columnA') # 显示图形 plt.show()
内容的提问来源于stack exchange,提问作者Kocur4d
相关产品推荐
相关产品推荐

