|
import streamlit as st |
|
import seaborn as sns |
|
import matplotlib.pyplot as plt |
|
import pandas as pd |
|
|
|
|
|
def load_data(): |
|
df = pd.read_csv("processed_data.csv") |
|
return df |
|
|
|
|
|
def app(): |
|
|
|
st.title("Pizza Sales Data Analysis Dashboard") |
|
df = load_data() |
|
|
|
df = pd.DataFrame(df) |
|
|
|
"""""""""""" |
|
|
|
|
|
|
|
|
|
total_orders = df['order_id'].drop_duplicates() |
|
total_revenue = df['total_price'].sum() |
|
most_popular_size = df['pizza_size'].value_counts().idxmax() |
|
most_frequent_category = df['pizza_category'].value_counts().idxmax() |
|
total_pizzas_sold = df['quantity'].sum() |
|
|
|
|
|
"""""""""""" |
|
|
|
|
|
|
|
|
|
|
|
|
|
st.sidebar.header("Key Metrics") |
|
st.sidebar.metric("Total Orders", total_orders) |
|
st.sidebar.metric("Total Revenue", f"${total_revenue:,.2f}") |
|
st.sidebar.metric("Most Popular Size", most_popular_size) |
|
st.sidebar.metric("Most Popular Category", most_frequent_category) |
|
st.sidebar.metric("Total Pizzas Sold", total_pizzas_sold) |
|
|
|
|
|
|
|
""""""""""""" |
|
|
|
# Provide the details of the plots here |
|
|
|
plots = [ |
|
{"title": "Top Selling Pizzas (by Quantity)", "x": "pizza_name", "y": "quantity", "top": 5}, #Write the appropriiate column as per the title given |
|
{"title": "Quantity of Pizzas Sold by Category and Time of the Day", "x": "order_time", "hue": "pizza_category"}, #Write the appropriiate column as per the title given |
|
{"title": "Quantity of Pizzas Sold by Size and Time of the Day", "x": "order_time", "hue": "pizza_size"}, #Write the appropriiate column as per the title given |
|
{"title": "Monthly Revenue Trends by Pizza Category", "x": "order_date", "y": "total_price", "hue": "pizza_category", "estimator": "sum", "marker": "o"}, #Write the appropriiate column as per the title given |
|
] |
|
|
|
for plot in plots: |
|
st.header(plot["title"]) |
|
|
|
fig, ax = plt.subplots() |
|
|
|
if "Top Selling" in plot["title"]: |
|
sns.countplot(data=df, x=plot["x"], y=plot["y"],top=plot["top"]) |
|
if "Category" in plot["title"]: |
|
sns.countplot(data=df, x=plot["x"], hue=plot["hue"]) |
|
if "Size" in plot["title"]: |
|
sns.countplot(data=df, x=plot["x"], hue=plot["hue"]) |
|
if "Revenue" in plot["title"]: |
|
sns.countplot(data=df, x=plot["x"], y=plot["y"],ax=plot["top"], hue=plot["hue"], estimator=plot["estimator"], marker=plot["marker"]) |
|
|
|
else: |
|
ax.set_ylabel("quantity") |
|
ax.legend(bbox_to_anchor=(1,1)) |
|
|
|
|
|
st.pyplot(fig) |
|
plt.show() |
|
|
|
|
|
if __name__ == "__main__": |
|
app() |
|
|