शीर्ष ग्राहक लोकेशन का विश्लेषण
ई-कॉमर्स कंपनी के साथ आपके अच्छे काम के आधार पर, आपसे देशवार उनकी सेल्स पर बने मौजूदा रिपोर्ट को विस्तार देने में मदद मांगी गई है.
सेल्स मैनेजर यह समझना चाहते हैं कि उनके शीर्ष ग्राहक कहाँ स्थित हैं. अभी उन्हें 'शीर्ष' का अर्थ स्पष्ट नहीं है. आदर्श रूप से, वे आसानी से अलग-अलग कट-ऑफ वैल्यू आज़मा सकें ताकि किसी ग्राहक को शीर्ष मानने की सीमा तय कर सकें और देख सकें कि अलग-अलग कट-ऑफ पर ग्राफ कैसे बदलता है.
आपका काम है सेल्स मैनेजर की मदद करना: एक रेंज इनपुट का उपयोग करके ऐसा लाइव-अपडेट ऐप बनाइए जो न्यूनतम OrderValue राशि के आधार पर सेल्स को फ़िल्टर करे.
यह अभ्यास पाठ्यक्रम का हिस्सा है
Dash और Plotly के साथ डैशबोर्ड बनाना
अभ्यास निर्देश
- लाइन
34के नीचेmin_order_valआइडेंटिफ़ायर के साथdcc.Inputनाम का एक रेंज इनपुट कंपोनेंट जोड़ें, जिससे उपयोगकर्ता50से550के बीच कोई वैल्यू चुन सकें. - लाइन
53के नीचे दिए गए कॉलबैक में,input_valकी जाँच करें और चुनी गई वैल्यू से बड़ेOrderValueके आधार परsalesDataFrame को फ़िल्टर करें.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
from dash import Dash, dcc, html, Input, Output, callback
import plotly.express as px
import pandas as pd
from datetime import datetime, date
ecom_sales = pd.read_csv('/usr/local/share/datasets/ecom_sales.csv')
logo_link = 'https://assets.datacamp.com/production/repositories/5893/datasets/fdbe0accd2581a0c505dab4b29ebb66cf72a1803/e-comlogo.png'
def make_break(num_breaks):
br_list = [html.Br()] * num_breaks
return br_list
def add_logo():
corp_logo = html.Img(
src=logo_link,
style={'width':'75px','margin':'20px 20px 5px 5px','border':'1px dashed lightblue','display':'inline-block'})
return corp_logo
def style_c():
layout_style={'display':'inline-block','margin':'0 auto','padding':'20px'}
return layout_style
app = Dash()
app.layout = [
add_logo(),
*make_break(2),
html.H1('Sales Dashboard'),
*make_break(3),
html.Div([
html.H2('Controls', style=style_c()),
html.H3('Set minimum OrderValue'),
*make_break(2),
dcc.Input(
# Add a range input
id='min_order_val', type='____',
____=____, ____=____, value=50,
debounce=False,
style={'width':'300px', 'height':'30px'})],
style={'width':'350px', 'height':'350px', 'vertical-align':'top', 'border':'1px solid black',
'display':'inline-block', 'margin':'0px 80px'}),
html.Div([
dcc.Graph(id='sales_country'),
html.H2('Sales Quantity by Country', style={ 'border':'2px solid black', 'width':'400px', 'margin':'0 auto'})],
style={'width':'500px','display':'inline-block'})
]
@callback(
Output(component_id='sales_country', component_property='figure'),
Input(component_id='min_order_val', component_property='value'))
def update_plot(input_val):
sales = ecom_sales.copy(deep=True)
# Check for input and filter sales
if ____:
input_val = round(float(input_val), 2)
sales = sales[sales['OrderValue'] > ____]
fig = px.scatter(data_frame=sales, y='OrderValue', height=400,
x='Quantity', color='Country',
title=f'Orders of Min Value ${input_val}')
return fig
if __name__ == '__main__':
app.run(debug=True)