我有大熊猫DataFrame
,df
,index
名为date
,列columnA
,columnB
和{{1 }}
我正在尝试使用columnC
语法在x轴上散布index
,在y轴上散布columnA
。
当我尝试:
DataFrame
我收到错误df.plot(kind='scatter', x='date', y='columnA')
可能是因为KeyError: 'date'
不是列
date
我收到错误df.plot(kind='scatter', y='columnA')
因此在x轴上没有默认索引。
ValueError: scatter requires and x and y column
我收到错误df.plot(kind='scatter', x=df.index, y='columnA')
。
如果我直接使用KeyError: "DatetimeIndex(['1818-01-01', '1818-01-02', '1818-01-03', '1818-01-04',\n '1818-01-05', '1818-01-06', '1818-01-07', '1818-01-08',\n '1818-01-09', '1818-01-10',\n ...\n '2018-03-22', '2018-03-23', '2018-03-24', '2018-03-25',\n '2018-03-26', '2018-03-27', '2018-03-28', '2018-03-29',\n '2018-03-30', '2018-03-31'],\n dtype='datetime64[ns]', name='date', length=73139, freq=None) not in index"
matplotlib.pyplot
有没有办法使用plt.scatter(df.index, df['columnA'])
x-axis
语法将索引绘制为DataFrame
?
答案 0 :(得分:4)
这有点难看(我认为您在问题中使用的matplotlib解决方案更好,FWIW),但您始终可以使用索引作为列来创建临时DataFrame使用
df.reset_index()
如果索引无名,则默认名称为'index'
。假设是这种情况,您可以使用
df.reset_index().plot(kind='scatter', x='index', y='columnA')
答案 1 :(得分:1)
一个更简单的解决方案是:
df['x1'] = df.index
df.plot(kind='scatter', x='x1', y='columnA')
只需在plot语句之外创建索引变量。