File size: 3,171 Bytes
04a2c17
 
 
 
 
bd172d3
 
04a2c17
 
 
 
bd172d3
 
 
 
 
 
 
 
 
 
04a2c17
 
bd172d3
04a2c17
 
bd172d3
 
 
 
 
 
04a2c17
bd172d3
04a2c17
 
bd172d3
04a2c17
 
 
 
 
 
 
 
 
 
 
 
 
 
bd172d3
04a2c17
 
bd172d3
04a2c17
 
bd172d3
04a2c17
bd172d3
 
04a2c17
bd172d3
 
 
 
 
 
 
 
 
 
 
 
04a2c17
 
bd172d3
04a2c17
 
bd172d3
04a2c17
bd172d3
04a2c17
 
 
 
 
 
 
 
 
 
 
 
bd172d3
 
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,
    )