davoodwadi's picture
Upload 3 files
0618ce0 verified
raw
history blame
2.58 kB
import streamlit as st
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
# Load data
def load_data():
df = pd.read_csv("processed_data.csv") # Replace with your dataset
return df
# Create Streamlit app
def app():
# Title for the app
st.title("Retail Data Insights Dashboard")
# Load data
df = load_data()
# Key Metrics from the data
total_orders = df['Transaction ID'].nunique()
total_products_sold = df['Quantity'].sum()
total_revenue = df['Total Amount'].sum()
most_popular_product_cat = df['Product Category'].value_counts().idxmax()
most_frequent_age_cat = df['Age Category'].value_counts().idxmax()
# Display metrics in the sidebar
st.sidebar.header("Key Metrics")
st.sidebar.metric("Total Orders", total_orders)
st.sidebar.metric("Total Products Sold", total_products_sold)
st.sidebar.metric("Total Revenue", f"${total_revenue:,.2f}")
st.sidebar.metric("Most Popular Product Category", most_popular_product_cat)
st.sidebar.metric("Most Frequent Age Category", most_frequent_age_cat)
plots = [
{"title": "Total Products Sold by Product and Age Categories", "x": "Product Category", "hue": "Age Category"},
{"title": "Monthly Revenue Trends by Product Category", "x": "month", "y": "Total Amount", "hue": "Product Category", "estimator": "sum", "marker": "o"},
{"title": "Monthly Revenue Trends by Age Category", "x": "month", "y": "Total Amount", "hue": "Age Category", "estimator": "sum", "marker": "o"},
{"title": "Revenue by Product Category", "x": "Product Category", "y": "Total Amount", "estimator": "sum"},
]
for plot in plots:
st.header(plot["title"])
fig, ax = plt.subplots()
if "Total Products" in plot["title"]:
sns.countplot(data=df, x=plot["x"], hue=plot["hue"], ax=ax)
if "Monthly Revenue" in plot["title"]:
sns.lineplot(data=df, x=plot["x"], y=plot["y"], hue=plot["hue"], estimator=plot["estimator"], errorbar=None, marker=plot["marker"], ax=ax)
if "Revenue by Product" in plot["title"]:
sns.barplot(data=df, x=plot["x"], y=plot["y"], estimator=plot["estimator"], errorbar=None, ax=ax)
ax.set_xlabel(" ".join(plot["x"].split("_")).capitalize())
if "y" in plot.keys():
ax.set_ylabel(" ".join(plot["y"].split("_")).capitalize())
else:
ax.set_ylabel("Quantity")
ax.legend(bbox_to_anchor=(1,1))
st.pyplot(fig)
plt.show()
if __name__ == "__main__":
app()