How to plot columns on x axis and use index as y axis using pandas?
Question:
I have a data frame with 60 columns. I want the columns to be plotted on the X axis, and the index to be plotted on the y-axis.
df.plot()
The above code puts the index on the x-axis by default. I am unable to work out how to switch the axes.
Any help appreciated.
Answers:
Maybe you can plot the DataFrame transposed.
Creating a DataFrame with 10 columns and 5 rows.
In [1]: import pandas as pd
In [2]: import numpy as np
In [3]: df = pd.DataFrame(np.random.rand(5,10))
In [4]: df
Out[4]:
0 1 2 3 4 5 6
0 0.221466 0.375541 0.318416 0.695447 0.117332 0.836268 0.326673
1 0.439128 0.546087 0.380608 0.599192 0.553365 0.739253 0.984701
2 0.189311 0.799067 0.322041 0.171035 0.595848 0.106069 0.940712
3 0.971887 0.416420 0.945873 0.828611 0.055950 0.690107 0.526104
4 0.643041 0.800376 0.010879 0.677169 0.268208 0.151503 0.062268
7 8 9
0 0.690805 0.741308 0.487934
1 0.827711 0.284417 0.878259
2 0.734911 0.597626 0.256107
3 0.583156 0.398342 0.406590
4 0.247892 0.990469 0.611637
In [8]: df.plot()
In [9]: df.T.plot()
The following are the contents of the DataFrame transposed.
In [10]: df.T
Out[10]:
0 1 2 3 4
0 0.221466 0.439128 0.189311 0.971887 0.643041
1 0.375541 0.546087 0.799067 0.416420 0.800376
2 0.318416 0.380608 0.322041 0.945873 0.010879
3 0.695447 0.599192 0.171035 0.828611 0.677169
4 0.117332 0.553365 0.595848 0.055950 0.268208
5 0.836268 0.739253 0.106069 0.690107 0.151503
6 0.326673 0.984701 0.940712 0.526104 0.062268
7 0.690805 0.827711 0.734911 0.583156 0.247892
8 0.741308 0.284417 0.597626 0.398342 0.990469
9 0.487934 0.878259 0.256107 0.406590 0.611637
I have a data frame with 60 columns. I want the columns to be plotted on the X axis, and the index to be plotted on the y-axis.
df.plot()
The above code puts the index on the x-axis by default. I am unable to work out how to switch the axes.
Any help appreciated.
Maybe you can plot the DataFrame transposed.
Creating a DataFrame with 10 columns and 5 rows.
In [1]: import pandas as pd In [2]: import numpy as np In [3]: df = pd.DataFrame(np.random.rand(5,10)) In [4]: df Out[4]: 0 1 2 3 4 5 6 0 0.221466 0.375541 0.318416 0.695447 0.117332 0.836268 0.326673 1 0.439128 0.546087 0.380608 0.599192 0.553365 0.739253 0.984701 2 0.189311 0.799067 0.322041 0.171035 0.595848 0.106069 0.940712 3 0.971887 0.416420 0.945873 0.828611 0.055950 0.690107 0.526104 4 0.643041 0.800376 0.010879 0.677169 0.268208 0.151503 0.062268 7 8 9 0 0.690805 0.741308 0.487934 1 0.827711 0.284417 0.878259 2 0.734911 0.597626 0.256107 3 0.583156 0.398342 0.406590 4 0.247892 0.990469 0.611637 In [8]: df.plot()
In [9]: df.T.plot()
The following are the contents of the DataFrame transposed.
In [10]: df.T Out[10]: 0 1 2 3 4 0 0.221466 0.439128 0.189311 0.971887 0.643041 1 0.375541 0.546087 0.799067 0.416420 0.800376 2 0.318416 0.380608 0.322041 0.945873 0.010879 3 0.695447 0.599192 0.171035 0.828611 0.677169 4 0.117332 0.553365 0.595848 0.055950 0.268208 5 0.836268 0.739253 0.106069 0.690107 0.151503 6 0.326673 0.984701 0.940712 0.526104 0.062268 7 0.690805 0.827711 0.734911 0.583156 0.247892 8 0.741308 0.284417 0.597626 0.398342 0.990469 9 0.487934 0.878259 0.256107 0.406590 0.611637