Data Analysis with Python Projects - Page View Time Series Visualizer

What’s happening:
Hello, guys!
Asking for help to deal with the ‘draw_bar_plot()’ function.
My code works well in Spyder and Jupyter, but when running it on Replit, it returns an error:
Traceback (most recent call last):
File “”, line 73, in
File “”, line 62, in draw_bar_plot + offset, measurement, width, label=attribute)
File “/home/runner/ExpensiveTraumatic
ackages/matplotlib/”, line 1442, in inner
return func(ax, *map(sanitize_sequence, args), **kwargs)
File “/home/runner/Expensive Traumatic
ackages/matplotlib/axes/”, line 2436, in bar
raise ValueError(f’number of labels ({len(patch_labels)}) ’
ValueError: number of labels (2) does not match number of bars (4).
**Here below is my code **
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

Use Pandas to import the data from “fcc-forum-pageviews.csv”. Set the index to the date column.

import os

df_raw = pd.read_csv(‘fcc_forum_pageviews.csv’, parse_dates = [‘date’], index_col=‘date’)
df_raw.rename(columns = {‘value’:‘page_views’}, inplace=True)
df_1 = df_raw.applymap(lambda x: x.strip() if isinstance(x, str) else x)


Clean the data by filtering out days when the page views were in the top 2.5%

of the dataset or bottom 2.5% of the dataset.

cond_1 = df_1[‘page_views’] <= df_1[‘page_views’].quantile(0.975)
cond_2 = df_1[‘page_views’] >= df_1[‘page_views’].quantile(0.025)
df_2 = df_1.loc[cond_1 & cond_2]

Create a draw_line_plot function that uses Matplotlib to draw a line chart similar to “examples/Figure_1.png”. The title should

be Daily freeCodeCamp Forum Page Views 5/2016-12/2019.

The label on the x axis should be Date and the label on the y axis should be Page Views.

def draw_line_plot(x, y,):
plt.plot(x, y, color=‘red’)
plt.title(‘Daily freeCodeCamp Forum Page Views 5/2016-12/2019’)
plt.ylabel(‘Page Views 5/2016-12/2019’)

draw_line_plot(df_2.index, df_2[‘page_views’])

Create a draw_bar_plot function that draws a bar chart similar to


It should show average daily page views for each month grouped by year.

The legend should show month labels and have a title of Months.

On the chart, the label on the x axis should be Years and the label on the

y axis should be Average Page Views.

def draw_bar_plot(df):
df = df.reset_index()
df[‘Year’] =‘Y’)
df[“Month”] =‘M’)
df = df[[‘Year’, ‘Month’, ‘page_views’]]
df_3_gr = df.groupby([‘Year’, ‘Month’], as_index=False).mean().rename(columns={‘page_views’:‘average_page_views’})
df_3_gr[‘month’] = df_3_gr[‘Month’].astype(str).str[-2:]
df_gr = df_3_gr[[‘Year’,‘month’,‘average_page_views’]]
df_piv = df_gr.pivot(index=‘Year’, columns=‘month’).replace(np.nan,0)

x = np.arange(len(df_piv.index.astype(int)))  # the label locations
width = .05  # the width of the bars
multiplier = 0

fig, ax = plt.subplots(layout='constrained')

for attribute, measurement in df_piv.items():
    offset = width * multiplier + offset, measurement, width, label=attribute)
    multiplier += 1

# Add text for labels, and custom x-axis tick labels, etc.
ax.set_ylabel('Average Page Views')
ax.set_xticks(x + width + 0.22, df_piv.index)
ax.legend(loc='upper left', title='Month', labels=['Jan', 'Feb', 'Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'])


Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/ Safari/537.36

Challenge: Data Analysis with Python Projects - Page View Time Series Visualizer

Link to the challenge:

The posted repl does not have the tests and you’ve added all your code to You should have the tests in and your code in like the boilerplate. It’s impossible to debug easily without a complete repl from the project boilerplate.

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.