I've got pandas DataFrame
, df
, with index
named date
and the columns columnA
, columnB
and columnC
I am trying to scatter plot index
on a x-axis and columnA
on a y-axis using the DataFrame
syntax.
When I try:
df.plot(kind='scatter', x='date', y='columnA')
I ma getting an error KeyError: 'date'
probably because the date
is not column
df.plot(kind='scatter', y='columnA')
I am getting an error:
ValueError: scatter requires and x and y column
so no default index on x-axis.
df.plot(kind='scatter', x=df.index, y='columnA')
I am getting error
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"
I can plot it if I use matplotlib.pyplot
directly
plt.scatter(df.index, df['columnA'])
Is there a way to plot index as x-axis
using the DataFrame
kind
syntax?
This is kind of ugly (I think the matplotlib solution you used in your question is better, FWIW), but you can always create a temporary DataFrame with the index as a column usinng
df.reset_index()
If the index was nameless, the default name will be 'index'
. Assuming this is the case, you could use
df.reset_index().plot(kind='scatter', x='index', y='columnA')
A more simple solution would be:
df['x1'] = df.index
df.plot(kind='scatter', x='x1', y='columnA')
Just create the index variable outside of the plot statement.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With