File size: 3,171 Bytes
c892f97
 
 
 
 
5b81650
 
c892f97
 
 
 
5b81650
 
 
 
 
 
 
 
 
 
c892f97
 
5b81650
c892f97
 
5b81650
 
 
 
 
 
c892f97
5b81650
c892f97
 
5b81650
c892f97
 
 
 
 
 
 
 
 
 
 
 
 
 
5b81650
c892f97
 
5b81650
c892f97
 
5b81650
c892f97
5b81650
 
c892f97
5b81650
 
 
 
 
 
 
 
 
 
 
 
c892f97
 
5b81650
c892f97
 
5b81650
c892f97
5b81650
c892f97
 
 
 
 
 
 
 
 
 
 
 
5b81650
 
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
import pandas as pd
import gradio as gr
from typing import List


HEIGHT = 600
WIDTH = 1000


def get_error_data(tools_df: pd.DataFrame, inc_tools: List[str]) -> pd.DataFrame:
    """Gets the error data for the given tools and calculates the error percentage."""
    tools_inc = tools_df[tools_df["tool"].isin(inc_tools)]
    error = (
        tools_inc.groupby(["tool", "request_month_year_week", "error"])
        .size()
        .unstack()
        .fillna(0)
        .reset_index()
    )
    error["error_perc"] = (error[1] / (error[0] + error[1])) * 100
    error["total_requests"] = error[0] + error[1]
    return error


def get_error_data_overall(error_df: pd.DataFrame) -> pd.DataFrame:
    """Gets the error data for the given tools and calculates the error percentage."""
    error_total = (
        error_df.groupby("request_month_year_week")
        .agg({"total_requests": "sum", 1: "sum", 0: "sum"})
        .reset_index()
    )
    error_total["error_perc"] = (error_total[1] / error_total["total_requests"]) * 100
    error_total.columns = error_total.columns.astype(str)
    error_total["error_perc"] = error_total["error_perc"].apply(lambda x: round(x, 4))
    return error_total


def plot_error_data(error_all_df: pd.DataFrame) -> gr.BarPlot:
    """Plots the error data for the given tools and calculates the error percentage."""
    return gr.BarPlot(
        value=error_all_df,
        x="request_month_year_week",
        y="error_perc",
        title="Error Percentage",
        x_title="Week",
        y_title="Error Percentage",
        show_label=True,
        interactive=True,
        show_actions_button=True,
        tooltip=["request_month_year_week", "error_perc"],
        height=HEIGHT,
        width=WIDTH,
    )


def plot_tool_error_data(error_df: pd.DataFrame, tool: str) -> gr.BarPlot:
    """Plots the error data for the given tool."""
    error_tool = error_df[error_df["tool"] == tool]
    error_tool.columns = error_tool.columns.astype(str)
    error_tool["error_perc"] = error_tool["error_perc"].apply(lambda x: round(x, 4))

    return gr.BarPlot(
        title="Error Percentage",
        x_title="Week",
        y_title="Error Percentage",
        show_label=True,
        interactive=True,
        show_actions_button=True,
        tooltip=["request_month_year_week", "error_perc"],
        value=error_tool,
        x="request_month_year_week",
        y="error_perc",
        height=HEIGHT,
        width=WIDTH,
    )


def plot_week_error_data(error_df: pd.DataFrame, week: str) -> gr.BarPlot:
    """Plots the error data for the given week."""
    error_week = error_df[error_df["request_month_year_week"] == week]
    error_week.columns = error_week.columns.astype(str)
    error_week["error_perc"] = error_week["error_perc"].apply(lambda x: round(x, 4))
    return gr.BarPlot(
        value=error_week,
        x="tool",
        y="error_perc",
        title="Error Percentage",
        x_title="Tool",
        y_title="Error Percentage",
        show_label=True,
        interactive=True,
        show_actions_button=True,
        tooltip=["tool", "error_perc"],
        height=HEIGHT,
        width=WIDTH,
    )