File size: 2,787 Bytes
5d93d9f e3aca28 9ab023b 694296b 5d93d9f 9ab023b 5d93d9f 9ab023b 2c3deb9 d22f353 2c3deb9 694296b 5d93d9f f6984a9 33c9197 f6984a9 694296b d22f353 e9939db 694296b 3210b75 694296b 5d93d9f e3aca28 5d93d9f 5e99630 5d93d9f d22f353 5d93d9f 2c3deb9 |
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 |
import pandas as pd
import gradio as gr
import matplotlib.pyplot as plt
import seaborn as sns
from seaborn import FacetGrid
import plotly.express as px
HEIGHT = 600
WIDTH = 1000
def plot_daily_invalid_trades_plotly(invalid_trades: pd.DataFrame):
fig = px.histogram(invalid_trades, x="creation_date")
return gr.Plot(value=fig)
def plot_daily_dist_invalid_trades(invalid_trades: pd.DataFrame):
"""Function to paint the distribution of daily invalid trades, no matter which market"""
# invalid_trades["creation_date"] = invalid_trades["creation_date"].astype(str)
plt.figure(figsize=(25, 10))
plot2 = sns.histplot(data=invalid_trades, x="creation_date", kde=True)
plt.xlabel("Creation date")
plt.ylabel("Daily number of invalid trades")
plt.xticks(rotation=45, ha="right")
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="nr_markets",
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: pd.DataFrame = (
invalid_trades.title.value_counts().reset_index()
)
print(top_invalid_markets.head(5))
top_invalid_markets = top_invalid_markets.head(5)
top_invalid_markets.rename(columns={"count": "nr_invalid_trades"}, inplace=True)
return gr.DataFrame(top_invalid_markets)
|