Month,Year with Value Plot,Pandas and MatPlotLib

i have DataFrame with Month,Year and Value and i want to do a TimeSeries Plot.

Sample:

month   year    Value
12      2016    0.006437804129357764
1       2017    0.013850880792606646
2       2017    0.013330349031207292
3       2017    0.07663058273768052
4       2017    0.7822831457266424
5       2017    0.8089573099244689
6       2017    1.1634845000200715

im trying to plot this Value data with Year and Month, Year and Month in X-Axis and Value in Y-Axis.

Upvotes: 4

Views: 26997

Answers (2)

Joe
Joe

Reputation: 12417

One way is this:

import pandas as pd
import matplotlib.pyplot as plt

df['date'] = df['month'].map(str)+ '-' +df['year'].map(str)
df['date'] = pd.to_datetime(df['date'], format='%m-%Y').dt.strftime('%m-%Y')
fig, ax = plt.subplots()
plt.plot_date(df['date'], df['Value'])
plt.show()

enter image description here

Upvotes: 11

fernandezcuesta
fernandezcuesta

Reputation: 2448

You need to set a DateTime index for pandas to properly plot the axis. A one line modification for your dataframe (assuming you don't need year and month anymore as columns and that first day of each month is correct) would do:

df.set_index(pd.to_datetime({
    'day': 1,
    'month': df.pop('month'),
    'year': df.pop('year')
}), inplace=True)

df.Value.plot()

Upvotes: 1

Related Questions