File size: 3,214 Bytes
1e94a51
4e6de4c
 
1e94a51
4e6de4c
 
 
1e94a51
4e6de4c
 
 
1e94a51
 
 
 
79201e4
1e94a51
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79201e4
4e6de4c
 
 
 
79201e4
4e6de4c
79201e4
 
 
4e6de4c
 
 
 
 
79201e4
4e6de4c
 
 
 
 
 
79201e4
 
 
4e6de4c
 
 
 
 
1e94a51
 
 
 
79201e4
1e94a51
 
 
 
4e6de4c
 
1e94a51
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
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) # contains the number of complaints in each bucket
graphs = st.container(border=True) # 
dataset = st.container(border=True) #


# TOTAL COUNT SECTION
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 ")


#Graphs SECTION
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)
        }
        # Convert to DataFrame
        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) 



# RECENT COMPLAINTS SECTION
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
                 )