Skip to content

Instantly share code, notes, and snippets.

@mickaelandrieu
Created January 23, 2025 19:01
Show Gist options
  • Save mickaelandrieu/e8c6b028ebe97ddc3be50e46f00ad613 to your computer and use it in GitHub Desktop.
Save mickaelandrieu/e8c6b028ebe97ddc3be50e46f00ad613 to your computer and use it in GitHub Desktop.
import streamlit as st
import pandas as pd
sales = pd.read_csv('superstore.csv', parse_dates=['Ship Date', 'Order Date'])
st.markdown('# Suivi des ventes')
orders = sales['Order ID'].nunique()
customers = sales['Customer Name'].nunique()
total_sales = sales['Sales'].sum()
benefits = sales['Profit'].sum()
st.markdown('### KPIs principaux 📈')
col1, col2, col3, col4 = st.columns(4)
col1.metric("Nombre de commandes", orders)
col2.metric("Nombre de clients", customers)
col3.metric("Chiffre d'affaires", str(round(total_sales))+ "$")
col4.metric("Bénéfices", str(round(benefits))+ "$")
with st.expander("### Formulaire de recherche 🔎"):
categories = list(sales['Category'].unique())
category_selector = st.multiselect(
"Choisis ta catégorie de Produit",
categories,
["Furniture"],
)
segments = list(sales['Segment'].unique())
segment_selector = st.multiselect(
"Choisis ton segment de clientèle",
segments,
["Consumer"],
)
def query_builder(filters):
query = ''
i = 0
for filter in filters:
i = i + 1
if(i == 1):
query = query + f"""{filter['column']} in {filter['value']}"""
else:
query = query + " " + f"""or {filter['column']} in {filter['value']}"""
print(query)
return query
filters = [
{"column": "Category", "value": category_selector},
{"column": "Segment", "value": segment_selector}
]
daily_sales = sales[['Sales', 'Order Date', 'Category', 'Segment']].query(query_builder(filters)).groupby(by = ['Order Date']).sum().sort_values(by='Order Date').reset_index()
daily_profit = sales[['Profit', 'Order Date', 'Category', 'Segment']].query(query_builder(filters)).groupby(by = ['Order Date']).sum().sort_values(by='Order Date').reset_index()
st.markdown('### Suivi quotidien 📅')
st.markdown('#### Ventes 🛒')
st.line_chart(daily_sales, x = 'Order Date', y = 'Sales', color = "#e248db", x_label= 'Date', y_label= 'Ventes ($)')
st.markdown('#### Profit 💰')
st.line_chart(daily_profit, x = 'Order Date', y = 'Profit', color = "#39b2ca", x_label= 'Date', y_label= 'Profits ($)')
# utilisation de Plotly pour faire un camembert
import plotly.express as px
st.markdown('#### Nombre de ventes par categorie 📚')
fig = px.pie(sales[['Sales', 'Order Date', 'Category', 'Segment']].query(query_builder(filters)), values='Sales', names='Category')
st.plotly_chart(fig, use_container_width=True)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment