|
import streamlit as st |
|
st.set_page_config(page_title="CRIS CMS System",layout="wide") |
|
|
|
import pandas as pd |
|
import numpy as np |
|
|
|
import altair as alt |
|
|
|
complaints_count = st.container(border=True) |
|
graphs = st.container(border=True) |
|
dataset = st.container(border=True) |
|
|
|
|
|
|
|
with complaints_count: |
|
st.header("Complaints counts",divider=True) |
|
data = "./data/complaints_v1.csv" |
|
complaints_df = pd.read_csv(data,sep=",") |
|
total_counts = len(complaints_df.index) |
|
service_issues_counts = complaints_df['sub_cat'].value_counts()['service_issues'] |
|
product_issues_counts = complaints_df['sub_cat'].value_counts()['product_issues'] |
|
billing_issues_counts = complaints_df['sub_cat'].value_counts()['billing_issues'] |
|
|
|
col1,col2,col3,col4 = st.columns(4) |
|
col1.metric(label="Total Complaints", value=total_counts, delta="1.2 %") |
|
col2.metric(label="Total Billing Issues", value=service_issues_counts, delta="-1 %") |
|
col3.metric(label="Total Product Issues", value=product_issues_counts, delta="-1.3 %") |
|
col4.metric(label="Total Service Issues ", value=billing_issues_counts, delta="+1.2 ") |
|
|
|
|
|
|
|
with graphs: |
|
st.header("Complaints plots", divider=True) |
|
col1, col2 = st.columns(2) |
|
with col1: |
|
st.subheader('Complaints mon-o-mon', divider=True) |
|
data = { |
|
'mon_indx': [1,2,3,4,5,6], |
|
'Month': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'], |
|
'Service Issues': np.random.randint(0, 36, size=6), |
|
'Product Issues': np.random.randint(0, 22, size=6), |
|
'Billing Issues': np.random.randint(0, 19, size=6) |
|
} |
|
|
|
mom_df = pd.DataFrame(data) |
|
st.line_chart(mom_df, |
|
x='Month', |
|
y=['Service Issues','Product Issues','Billing Issues'], |
|
use_container_width=True) |
|
|
|
with col2: |
|
st.subheader('Frequent Issues', divider=True) |
|
issue_labels = ['service_issues', 'product_issues', 'billing_issues'] |
|
issue_counts = [complaints_df['sub_cat'].value_counts().get(label, 0) for label in issue_labels] |
|
|
|
source = pd.DataFrame({"issue_labels": ['Service Issues', 'Product Issues', 'Billing Issues'], "issue_counts": issue_counts}) |
|
chart = alt.Chart(source).mark_arc(innerRadius=120).encode( |
|
theta=alt.Theta(field="issue_counts", type="quantitative"), |
|
color=alt.Color(field="issue_labels", type="nominal"), |
|
) |
|
st.altair_chart(chart, theme="streamlit", use_container_width=True) |
|
|
|
|
|
|
|
|
|
with dataset: |
|
st.header("Recent Complaints",divider=True) |
|
ground_truth_data = pd.read_csv("./data/ground_truth.csv") |
|
ground_truth_data.rename(columns= {'audio_id':'Audio ID','file_name':'File Name', 'transcription':'Complaints', 'sub_cat':'Complaint Category'}, inplace = True) |
|
columns = ['Audio ID','File Name', 'Complaints', 'Complaint Category'] |
|
st.dataframe(ground_truth_data[columns].iloc[15:23], |
|
hide_index=True, |
|
use_container_width=True |
|
) |
|
|