-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAutomobile_Sales_Dashboard.py
More file actions
111 lines (91 loc) · 4.85 KB
/
Copy pathAutomobile_Sales_Dashboard.py
File metadata and controls
111 lines (91 loc) · 4.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import dash
from dash import dcc, html
from dash.dependencies import Input, Output
import pandas as pd
import plotly.express as px
# Load the dataset
data = pd.read_csv('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-DV0101EN-SkillsNetwork/Data%20Files/historical_automobile_sales.csv')
# Initialize the Dash app
app = dash.Dash(__name__)
app.layout = html.Div([
html.H1("Automobile Sales Statistics Dashboard",
style={'textAlign': 'center', 'color': '#503D36', 'font-size': 24}),
html.Div([
html.Label("Select Statistics:"),
dcc.Dropdown(
id='dropdown-statistics',
options=[
{'label': 'Yearly Statistics', 'value': 'Yearly Statistics'},
{'label': 'Recession Period Statistics', 'value': 'Recession Period Statistics'}
],
placeholder='Select a report type',
value='Select Statistics',
style={'width': '80%', 'padding': '3px', 'font-size': '20px', 'text-align-last': 'center'}
)
]),
html.Div([
dcc.Dropdown(
id='select-year',
options=[{'label': i, 'value': i} for i in range(1980, 2024)],
placeholder='Select-year',
value='Select-year'
)
]),
html.Div(id='output-container', className='chart-grid', style={'display': 'flex'})
])
@app.callback(
Output(component_id='select-year', component_property='disabled'),
Input(component_id='dropdown-statistics', component_property='value')
)
def update_input_container(selected_statistics):
if selected_statistics == 'Yearly Statistics':
return False
else:
return True
@app.callback(
Output(component_id='output-container', component_property='children'),
[Input(component_id='dropdown-statistics', component_property='value'),
Input(component_id='select-year', component_property='value')]
)
def update_output_container(selected_statistics, input_year):
if selected_statistics == 'Recession Period Statistics':
recession_data = data[data['Recession'] == 1]
yearly_rec = recession_data.groupby('Year')['Automobile_Sales'].mean().reset_index()
R_chart1 = dcc.Graph(figure=px.line(yearly_rec, x='Year', y='Automobile_Sales',
title="Average Automobile Sales Fluctuation"))
average_sales = recession_data.groupby('Vehicle_Type')['Automobile_Sales'].mean().reset_index()
R_chart2 = dcc.Graph(figure=px.bar(average_sales, x='Vehicle_Type', y='Automobile_Sales',
title="Average Vehicles Sold by Type"))
exp_rec = recession_data.groupby('Vehicle_Type')['Advertising_Expenditure'].sum().reset_index()
R_chart3 = dcc.Graph(figure=px.pie(exp_rec, values='Advertising_Expenditure', names='Vehicle_Type',
title="Total Expenditure Share"))
unemp_data = recession_data.groupby(
['unemployment_rate', 'Vehicle_Type'])['Automobile_Sales'].mean().reset_index()
R_chart4 = dcc.Graph(figure=px.bar(unemp_data, x='unemployment_rate', y='Automobile_Sales',
color='Vehicle_Type', title='Effect of Unemployment Rate'))
return [
html.Div(className='chart-item', children=[R_chart1, R_chart2], style={'display': 'flex'}),
html.Div(className='chart-item', children=[R_chart3, R_chart4], style={'display': 'flex'})
]
elif (input_year and selected_statistics == 'Yearly Statistics'):
yearly_data = data[data['Year'] == int(input_year)]
yas = data.groupby('Year')['Automobile_Sales'].mean().reset_index()
Y_chart1 = dcc.Graph(figure=px.line(yas, x='Year', y='Automobile_Sales',
title='Yearly Average Automobile Sales'))
mas = yearly_data.groupby('Month')['Automobile_Sales'].sum().reset_index()
Y_chart2 = dcc.Graph(figure=px.line(mas, x='Month', y='Automobile_Sales',
title='Total Monthly Automobile Sales'))
avr_vdata = yearly_data.groupby('Vehicle_Type')['Automobile_Sales'].mean().reset_index()
Y_chart3 = dcc.Graph(figure=px.bar(avr_vdata, x='Vehicle_Type', y='Automobile_Sales',
title='Average Vehicles Sold per Type'))
exp_data = yearly_data.groupby('Vehicle_Type')['Advertising_Expenditure'].sum().reset_index()
Y_chart4 = dcc.Graph(figure=px.pie(exp_data, values='Advertising_Expenditure', names='Vehicle_Type',
title='Total Advertisement Expenditure'))
return [
html.Div(className='chart-item', children=[Y_chart1, Y_chart2], style={'display': 'flex'}),
html.Div(className='chart-item', children=[Y_chart3, Y_chart4], style={'display': 'flex'})
]
else:
return None
if __name__ == '__main__':
app.run(debug=True)