Satış verileri için kaydırıcı
Küresel e-ticaret şirketinin verilerindeki eğilim ve desenlerin analizi, tarih seçicilerinle büyük ölçüde gelişti. Şimdi de “yüksek tutarlı” siparişleri hangi kategorilerin sürüklediğini görmek istiyorlar.
Şirket, herhangi bir değeri seçebilecekleri ve bir grafikte bu değerden daha yüksek sipariş tutarına sahip kaç satış olduğunu, ana kategoriye göre bölünmüş şekilde görebilecekleri bir araç istiyor.
Bunun bir aralık girişiyle gayet iyi sağlanacağını biliyorsun.
Bu egzersiz
Dash ve Plotly ile Paneller Oluşturma
kursunun bir parçasıdırEgzersiz talimatları
- Minimum sipariş tutarını seçmek için
value_slidertanımlayıcısına sahipdcc.Slideradlı bir kaydırıcı bileşeni,16numaralı satırın altına ekle. - Kaydırıcının
valueparametresini0olarak20numaralı satırın altına ayarla. - Kaydırıcının
stepparametresini50olarak22numaralı satırın altına ayarla.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
from dash import Dash, dcc, html, Input, Output, callback
import plotly.express as px
import pandas as pd
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'
app = Dash()
app.layout = [
html.Img(src=logo_link, style={'margin':'30px 0px 0px 0px'}),
html.H1('Sales breakdowns'),
html.Div([
html.H2('Controls'),
html.Br(),
html.H3('Minimum OrderValue Select'),
# Add a slider input
____(id='value_slider',
min=ecom_sales['OrderValue'].min(),
max=ecom_sales['OrderValue'].max(),
# Set the starting value of the slider
____=____,
# Set the step increment of the slider
____=____,
vertical=False)],
style={'width':'350px', 'height':'350px', 'display':'inline-block', 'vertical-align':'top', 'border':'1px solid black', 'padding':'20px'}),
html.Div([
dcc.Graph(id='sales_cat'),
html.H2('Sales by Major Category', style={ 'border':'2px solid black', 'width':'400px', 'margin':'0 auto'})],
style={'width':'700px','display':'inline-block'})
]
@callback(
Output(component_id='sales_cat', component_property='figure'),
Input(component_id='value_slider', component_property='value')
)
def update_plot(min_val):
sales = ecom_sales.copy(deep=True)
if min_val:
sales = sales[sales['OrderValue'] >= min_val]
ecom_bar_major_cat = sales.groupby('Major Category')['OrderValue'].size().reset_index(name='Total Sales Volume')
bar_fig_major_cat = px.bar(
title=f'Sales with order value: {min_val}',data_frame=ecom_bar_major_cat, orientation='h',
x='Total Sales Volume', y='Major Category')
return bar_fig_major_cat
if __name__ == '__main__':
app.run(debug=True)