Xpence-dash / app.py
sarim's picture
update labels
6bfd7d0
from logging import log
from dash import Dash, html, dcc, callback, Output, Input
import pandas as pd
import plotly.express as px
from plotly.graph_objs import scatter
import plotly.graph_objects as go
df = pd.read_csv('1711709179672.csv',na_values="None")
df.insert(4,"Size",(10 * df["Amount"].abs())/100)
df['Departments'].fillna("no departments",inplace=True)
app = Dash(__name__)
app.layout = html.Div(children = [
html.Div(
className="row",
children=[
html.Div(
className="four columns div-user-controls",
children=[
html.H2("XPENCE-INSIGHT"),
html.H3("""Visualising Xpence transaction"""),
html.H4("""Pick one User from the dropdown below."""),
],
),
html.Div(
className="eight columns div-for-charts bg-grey",
children=[
dcc.Dropdown(
df['Card holder'].unique(),
'Radu Pertescu',
id='xaxis-column',
placeholder= "Radu Pertescu",
),
dcc.Graph(id="scatterGraph",animate=True),
dcc.Graph(id='barGraph'),
dcc.Graph(id='areaGraph'),
dcc.Graph(id='histogramGraph')
]
),
]
),
#dcc.Graph(figure=px.scatter(df,x="Transaction Date", y="Amount")),
##dcc.Graph(figure=px.funnel(df,x='Amount',y='Category'))
#dcc.Graph(figure=px.scatter(df,x="Amount", y="Transaction Date",color="Card holder")),
# dcc.Graph(figure=px.icicle(df,path=[px.Constant("all"), 'Approval Status', 'Card holder','Category'],color='Category',color_continuous_scale='RdBu')),
# dcc.Graph(figure=px.sunburst(df,path=["Transaction Type","Card holder","Approval Status"],color='Amount')),
# dcc.Graph(figure=px.parallel_categories(df,dimensions=["Card holder","Category","Branches","Departments","Approval Status","Receipt"],color="Amount")),
# dcc.Graph(figure=px.scatter(df,x="Amount", y="Merchant",color="Card holder",opacity=0.7)),
])
@callback(
Output("scatterGraph","figure"),
Input("xaxis-column","value")
)
def update_graph(userName):
filtered_df = df[df["Card holder"] == userName]
fig = px.scatter(filtered_df,
x="Amount",
y="Transaction Date",
color="Transaction Type",
title="Transaction type and amount based on date",
labels={
"Amount":"Transaction Amount",
"Transaction Date":"Transaction Date"
}
)
return fig
@callback(
Output("barGraph","figure"),
Input("xaxis-column","value")
)
def update_bar_graph(userName):
filtered_df = df[df["Card holder"] == userName]
count_data_frame = filtered_df
count_data_frame = filtered_df.groupby('Category').count().reset_index()
fig = px.bar(count_data_frame,
x="Category",
y="Amount",
color='Category',
title="Transaction Category count",
labels={
"Category":"Category",
"Amount":"Transaction Category Count"
}
)
return fig
@callback(
Output("areaGraph","figure"),
Input("xaxis-column","value")
)
def update_area_graph(userName):
filtered_df = df[df["Card holder"] == userName]
filtered_df['Transaction Date'] = pd.to_datetime(filtered_df['Transaction Date'],format='%d/%m/%Y %H:%M')
filtered_df['Transaction Date'] = filtered_df['Transaction Date'].dt.round('D')
filtered_df['Transaction Date'].dt.strftime("%Y-%m-%d")
transaction_data_frame = filtered_df
transaction_data_frame = filtered_df.groupby('Transaction Date').count().reset_index()
fig = px.area(transaction_data_frame,
x='Transaction Date',
y='Amount',
markers=True,
title="Number of transaction on a single day",
labels={
"Transaction Date":"Transaction Date",
"Amount":"Transaction Count"
}
)
return fig
@callback(
Output("histogramGraph","figure"),
Input("xaxis-column","value")
)
def update_histogram_graph(userName):
filtered_df = df[df["Card holder"] == userName]
fig=px.histogram(filtered_df,
x='Approval Status',
color="Approval Status",
title="Approval status count",
)
return fig
if __name__ == '__main__':
app.run(port='7860',debug=True,host='0.0.0.0')