File size: 2,555 Bytes
120d6b7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import pandas as pd
import gradio as gr

def set_error(row):
    if row.error not in [True, False]:
        if not row.prompt_response:
            return True
        return False
    return row.error


def get_tool_winning_rate(tools_df, inc_tools):
    tools_inc = tools_df[tools_df['tool'].isin(inc_tools)]
    tools_inc['error'] = tools_inc.apply(set_error, axis=1)
    tools_non_error = tools_inc[tools_inc['error'] != True]
    tools_non_error['currentAnswer'].replace('no', 'No', inplace=True)
    tools_non_error['currentAnswer'].replace('yes', 'Yes', inplace=True)
    tools_non_error = tools_non_error[tools_non_error['currentAnswer'].isin(['Yes', 'No'])]
    tools_non_error = tools_non_error[tools_non_error['vote'].isin(['Yes', 'No'])]
    tools_non_error['win'] = tools_non_error['currentAnswer'] == tools_non_error['vote']
    tools_non_error['win'] = tools_non_error['win'].astype(int)
    tools_non_error.columns = tools_non_error.columns.astype(str)
    wins = tools_non_error.groupby(['tool', 'request_month_year_week', 'win']).size().unstack().fillna(0)
    wins['win_perc'] = (wins[1] / (wins[0] + wins[1]))*100
    wins.reset_index(inplace=True)
    wins['total_request'] = wins[0] + wins[1]
    wins.columns = wins.columns.astype(str)
    return wins


def get_overall_winning_rate(wins_df):
    overall_wins = wins_df.groupby('request_month_year_week').agg({
        "0": 'sum',
        "1": 'sum',
        "win_perc": 'mean',
        "total_request": 'sum'
    }).rename(columns={"0": 'losses', "1": 'wins'}).reset_index()
    return overall_wins


def plot_winning_trades(
    wins_df,
    winning_selector="win_perc"
    ):
    return gr.BarPlot(
        title="Winning Rate", 
        x_title="Date", 
        y_title=winning_selector,
        show_label=True,
        interactive=True,
        show_actions_button=True,
        tooltip=["request_month_year_week", winning_selector],
        width=800,
        value=wins_df,
        x="request_month_year_week",
        y=winning_selector
    )


def plot_winning_plot_by_tool(wins_df, tool):
    return gr.BarPlot(
                title="Winning Rate", 
                x_title="Week", 
                y_title="Winning Rate", 
                x="request_month_year_week", 
                y="win_perc",
                value=wins_df[wins_df['tool'] == tool],
                width=800,
                show_label=True,
                interactive=True,
                show_actions_button=True,
                tooltip=["request_month_year_week", "win_perc"]
            )