sourize
commited on
Commit
·
5d59f3a
1
Parent(s):
02ea34e
Initial Commit
Browse files
pages/📈 Analytics Dashboard.py
CHANGED
|
@@ -48,6 +48,7 @@ def analytics_dashboard_page():
|
|
| 48 |
}).round(3)
|
| 49 |
hourly_stats.columns = ['Total_Transactions', 'Fraud_Count', 'Fraud_Rate']
|
| 50 |
hourly_stats = hourly_stats.reset_index()
|
|
|
|
| 51 |
fig = px.line(
|
| 52 |
hourly_stats,
|
| 53 |
x='Hour',
|
|
@@ -71,6 +72,7 @@ def analytics_dashboard_page():
|
|
| 71 |
st.markdown("### 💵 Transaction Amount Analysis")
|
| 72 |
col1, col2 = st.columns(2)
|
| 73 |
with col1:
|
|
|
|
| 74 |
fig = px.histogram(
|
| 75 |
transactions,
|
| 76 |
x='Amount',
|
|
@@ -80,7 +82,6 @@ def analytics_dashboard_page():
|
|
| 80 |
labels={'Is_Fraud': 'Fraud Status'},
|
| 81 |
marginal="box"
|
| 82 |
)
|
| 83 |
-
fig.update_layout(xaxis_range=[0, 2000])
|
| 84 |
st.plotly_chart(fig, use_container_width=True)
|
| 85 |
with col2:
|
| 86 |
fig = px.box(
|
|
@@ -90,13 +91,13 @@ def analytics_dashboard_page():
|
|
| 90 |
title="Amount Distribution: Normal vs Fraud",
|
| 91 |
labels={'Is_Fraud': 'Fraud Status', 'Amount': 'Transaction Amount (₹)'}
|
| 92 |
)
|
| 93 |
-
fig.update_layout(yaxis_range=[0, 1000])
|
| 94 |
st.plotly_chart(fig, use_container_width=True)
|
| 95 |
st.markdown("### 👥 Customer Demographics & Fraud Risk")
|
| 96 |
age_bins = pd.cut(transactions['Customer_Age'], bins=6, precision=0)
|
| 97 |
age_stats = transactions.groupby(age_bins)['Is_Fraud'].agg(['count', 'sum', 'mean']).reset_index()
|
| 98 |
age_stats.columns = ['Age_Group', 'Total', 'Fraud_Count', 'Fraud_Rate']
|
| 99 |
-
age_stats['Age_Group'] = age_stats['Age_Group'].astype(str)
|
|
|
|
| 100 |
fig = px.bar(
|
| 101 |
age_stats,
|
| 102 |
x='Age_Group',
|
|
|
|
| 48 |
}).round(3)
|
| 49 |
hourly_stats.columns = ['Total_Transactions', 'Fraud_Count', 'Fraud_Rate']
|
| 50 |
hourly_stats = hourly_stats.reset_index()
|
| 51 |
+
st.write("hourly_stats", hourly_stats) # Debug output
|
| 52 |
fig = px.line(
|
| 53 |
hourly_stats,
|
| 54 |
x='Hour',
|
|
|
|
| 72 |
st.markdown("### 💵 Transaction Amount Analysis")
|
| 73 |
col1, col2 = st.columns(2)
|
| 74 |
with col1:
|
| 75 |
+
st.write("transactions", transactions) # Debug output
|
| 76 |
fig = px.histogram(
|
| 77 |
transactions,
|
| 78 |
x='Amount',
|
|
|
|
| 82 |
labels={'Is_Fraud': 'Fraud Status'},
|
| 83 |
marginal="box"
|
| 84 |
)
|
|
|
|
| 85 |
st.plotly_chart(fig, use_container_width=True)
|
| 86 |
with col2:
|
| 87 |
fig = px.box(
|
|
|
|
| 91 |
title="Amount Distribution: Normal vs Fraud",
|
| 92 |
labels={'Is_Fraud': 'Fraud Status', 'Amount': 'Transaction Amount (₹)'}
|
| 93 |
)
|
|
|
|
| 94 |
st.plotly_chart(fig, use_container_width=True)
|
| 95 |
st.markdown("### 👥 Customer Demographics & Fraud Risk")
|
| 96 |
age_bins = pd.cut(transactions['Customer_Age'], bins=6, precision=0)
|
| 97 |
age_stats = transactions.groupby(age_bins)['Is_Fraud'].agg(['count', 'sum', 'mean']).reset_index()
|
| 98 |
age_stats.columns = ['Age_Group', 'Total', 'Fraud_Count', 'Fraud_Rate']
|
| 99 |
+
age_stats['Age_Group'] = age_stats['Age_Group'].astype(str) # Fix Interval serialization
|
| 100 |
+
st.write("age_stats", age_stats) # Debug output
|
| 101 |
fig = px.bar(
|
| 102 |
age_stats,
|
| 103 |
x='Age_Group',
|