File size: 2,852 Bytes
5d93d9f e3aca28 694296b 5d93d9f 694296b 5d93d9f 694296b 5d93d9f f6984a9 33c9197 f6984a9 694296b c6ff818 e9939db 694296b 3210b75 694296b 5d93d9f e3aca28 5d93d9f 5e99630 5d93d9f 694296b 5d93d9f 694296b 5d93d9f |
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 |
import pandas as pd
import gradio as gr
import matplotlib.pyplot as plt
import seaborn as sns
from seaborn import FacetGrid
from matplotlib.axes import Axes
HEIGHT = 600
WIDTH = 1000
def plot_daily_dist_invalid_trades(invalid_trades: pd.DataFrame):
"""Function to paint the distribution of daily invalid trades, no matter which market"""
plt.title("Distribution of daily invalid trades over time")
plt.xlabel("Creation date")
plt.ylabel("Daily number of invalid trades")
plt.xticks(rotation=45, ha="right")
plot2: Axes = sns.histplot(data=invalid_trades, x="creation_date", kde=True)
daily_trades_fig = plot2.get_figure()
return gr.Plot(value=daily_trades_fig)
def plot_daily_nr_invalid_markets(invalid_trades: pd.DataFrame):
"""Function to paint the number of invalid markets over time"""
daily_invalid_markets = (
invalid_trades.groupby("creation_date")
.agg(trades_count=("title", "count"), nr_markets=("title", "nunique"))
.reset_index()
)
daily_invalid_markets["creation_date"] = daily_invalid_markets[
"creation_date"
].astype(str)
daily_invalid_markets.columns = daily_invalid_markets.columns.astype(str)
return gr.LinePlot(
value=daily_invalid_markets,
x="creation_date",
y="trades_count",
y_title="nr_markets",
interactive=True,
show_actions_button=True,
tooltip=["creation_date", "nr_markets", "trades_count"],
height=HEIGHT,
width=WIDTH,
)
def plot_ratio_invalid_trades_per_market(invalid_trades: pd.DataFrame):
"""Function to paint the number of invalid trades that the same market accummulates"""
cat = invalid_trades["title"]
codes, uniques = pd.factorize(cat)
# add the IDs as a new column to the original dataframe
invalid_trades["title_id"] = codes
plot: FacetGrid = sns.displot(invalid_trades, x="title_id")
plt.xlabel("market id")
plt.ylabel("Total number of invalid trades by market")
plt.title("Distribution of invalid trades per market")
return gr.Plot(value=plot.figure)
def plot_top_invalid_markets(invalid_trades: pd.DataFrame):
"""Function to paint the top markets with the highest number of invalid trades"""
top_invalid_markets = invalid_trades.title.value_counts().reset_index()
top_invalid_markets.rename(columns={"count": "nr_invalid_trades"}, inplace=True)
return gr.BarPlot(
title="Top markets with the highest number of invalid trades",
x="nr_invalid_trades",
y="title",
x_title="Nr_invalid_trades",
y_title="Market title",
show_label=True,
interactive=True,
show_actions_button=True,
value=top_invalid_markets,
tooltip=["title", "nr_invalid_trades"],
height=HEIGHT,
width=WIDTH,
)
|