Hi,
I have been trying to rum my code. However, I do not know where I am wrong. Could you help me show the way to correct it, please? The problem lies in the third plot.
here is my code:
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
# Import data (Make sure to parse dates. Consider setting index column to 'date'.)
data= pd.read_csv('fcc-forum-pageviews.csv', parse_dates= ['date'], index_col='date')
# Clean data
df = data= data[(data['value']>= data['value'].quantile(0.025))&
(data['value']<= data['value'].quantile(0.975))]
def draw_line_plot():
fig,ax = plt.subplots(figsize=(8,5))
ax.plot(data.index, data['value'], 'r', linewidth=1)
ax.set_xlabel('Date')
ax.set_ylabel('Page Views')
ax.set_title('Daily freeCodeCamp Forum Page Views 5/2016-12/2019') # Draw line plot
# Save image and return fig (don't change this part)
fig.savefig('line_plot.png')
return fig
def draw_bar_plot():
# Copy and modify data for monthly bar plot
df= data.copy()
df['month']=df.index.month
df['year']=df.index.year
df_bar=df.groupby(['year','month'])['value'].mean().unstack()
# Draw bar plot
fig=df_bar.plot.bar(legend=True, figsize=(10,5), ylabel='Average Page Views', xlabel='Years').figure
plt.legend(['January','February','March','April','May','June','July','August','September','November','December'])
plt.xticks(fontsize=10)
plt.yticks(fontsize=10)
# Save image and return fig (don't change this part)
fig.savefig('bar_plot.png')
return fig
def draw_box_plot():
# Prepare data for box plots (this part is done!)
df_box = df.copy()
df_box.reset_index(inplace=True)
df_box['year'] = [d.year for d in df_box.date]
df_box['month'] = [d.strftime('%b') for d in df_box.date]
# Draw box plots (using Seaborn)
df_box["month_num"]= df_box["date"].dt.month
df_box= df_box.sort_values("month_num")
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(10,5))
axes[0]= sns.boxplot(x=df_box["year"], y= df_box["value"],ax= axes[0])
axes[1]= sns.boxplot(x=df_box["month"], y= df_box["value"],ax= axes[1])
axes[0].set_title("Year-wise Box Plot (Trend)")
axes[0].set_xlabel("Year")
axes[0].set_ylabel("Page Views")
axes[1].set_title("Month-wise Box Plot (Seasonality)")
axes[1].set_xlabel("Month")
axes[1].set_ylabel("Page Views")
# Save image and return fig (don't change this part)
fig.savefig('box_plot.png')
return fig