removed dependency with tools.parquet and new mech calls computation timestamps based
278fab8
import pandas as pd | |
import gradio as gr | |
from typing import List | |
import plotly.express as px | |
from tabs.tool_win import sort_key | |
HEIGHT = 600 | |
WIDTH = 1000 | |
def get_error_data_overall_by_market(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", "market_creator"], sort=False) | |
.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_by_market(error_all_df: pd.DataFrame) -> gr.Plot: | |
# Sort the unique values of request_month_year_week | |
sorted_categories = sorted( | |
error_all_df["request_month_year_week"].unique(), key=sort_key | |
) | |
# Create a categorical type with a specific order | |
error_all_df["request_month_year_week"] = pd.Categorical( | |
error_all_df["request_month_year_week"], | |
categories=sorted_categories, | |
ordered=True, | |
) | |
# Sort the DataFrame based on the new categorical column | |
error_all_df = error_all_df.sort_values("request_month_year_week") | |
fig = px.bar( | |
error_all_df, | |
x="request_month_year_week", | |
y="error_perc", | |
color="market_creator", | |
barmode="group", | |
color_discrete_sequence=["purple", "goldenrod", "darkgreen"], | |
category_orders={ | |
"market_creator": ["pearl", "quickstart", "all"], | |
"request_month_year_week": sorted_categories, | |
}, | |
) | |
fig.update_layout( | |
xaxis_title="Week", | |
yaxis_title="Error Percentage", | |
legend=dict(yanchor="top", y=0.5), | |
) | |
fig.update_layout(width=WIDTH, height=HEIGHT) | |
fig.update_xaxes(tickformat="%b %d\n%Y") | |
return gr.Plot(value=fig) | |
def plot_tool_error_data_by_market(error_df: pd.DataFrame, tool: str) -> gr.Plot: | |
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)) | |
# Sort the unique values of request_month_year_week | |
sorted_categories = sorted( | |
error_tool["request_month_year_week"].unique(), key=sort_key | |
) | |
# Create a categorical type with a specific order | |
error_tool["request_month_year_week"] = pd.Categorical( | |
error_tool["request_month_year_week"], | |
categories=sorted_categories, | |
ordered=True, | |
) | |
# Sort the DataFrame based on the new categorical column | |
error_tool = error_tool.sort_values("request_month_year_week") | |
fig = px.bar( | |
error_tool, | |
x="request_month_year_week", | |
y="error_perc", | |
color="market_creator", | |
barmode="group", | |
color_discrete_sequence=["purple", "goldenrod", "darkgreen"], | |
category_orders={ | |
"market_creator": ["pearl", "quickstart", "all"], | |
"request_month_year_week": sorted_categories, | |
}, | |
) | |
fig.update_layout( | |
xaxis_title="Week", | |
yaxis_title="Error Percentage %", | |
legend=dict(yanchor="top", y=0.5), | |
) | |
fig.update_layout(width=WIDTH, height=HEIGHT) | |
fig.update_xaxes(tickformat="%b %d\n%Y") | |
return gr.Plot(value=fig) | |
def plot_week_error_data_by_market(error_df: pd.DataFrame, week: str) -> gr.Plot: | |
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)) | |
fig = px.bar( | |
error_week, | |
x="tool", | |
y="error_perc", | |
color="market_creator", | |
barmode="group", | |
color_discrete_sequence=["purple", "goldenrod", "darkgreen"], | |
category_orders={ | |
"market_creator": ["pearl", "quickstart", "all"], | |
}, | |
) | |
fig.update_layout( | |
xaxis_title="Tool", | |
yaxis_title="Error Percentage %", | |
legend=dict(yanchor="top", y=0.5), | |
) | |
fig.update_layout(width=WIDTH, height=HEIGHT) | |
fig.update_xaxes(tickformat="%b %d\n%Y") | |
return gr.Plot(value=fig) | |