cyberosa commited on
Commit
45dbef5
·
1 Parent(s): 5e64ef2

fixing error in agents graph

Browse files
Files changed (1) hide show
  1. tabs/agent_graphs.py +11 -70
tabs/agent_graphs.py CHANGED
@@ -24,58 +24,6 @@ def plot_rolling_average_dune(
24
  )
25
 
26
 
27
- def plot_rolling_average(
28
- daa_df: pd.DataFrame,
29
- market_creator: str = None,
30
- ) -> gr.Plot:
31
- """Function to plot the rolling average of daily active agents"""
32
- if market_creator is not None:
33
- filtered_traders_df = daa_df.loc[daa_df["market_creator"] == market_creator]
34
- rolling_avg_df = get_sevenday_rolling_average(filtered_traders_df)
35
- else:
36
- rolling_avg_df = get_sevenday_rolling_average(daa_df)
37
- print(rolling_avg_df.head())
38
-
39
- # Ensure 'creation_date' is a column, not an index
40
- if "tx_date" not in rolling_avg_df.columns:
41
- rolling_avg_df = rolling_avg_df.reset_index()
42
-
43
- fig = px.bar(
44
- rolling_avg_df,
45
- x="tx_date",
46
- y="rolling_avg_traders",
47
- )
48
- fig.update_layout(
49
- xaxis_title="Date",
50
- yaxis_title="7-day rolling average of DAA",
51
- )
52
-
53
- return gr.Plot(
54
- value=fig,
55
- )
56
-
57
-
58
- def get_sevenday_rolling_average(daa_df: pd.DataFrame) -> pd.DataFrame:
59
- """Function to get the 7-day rolling average of the number of unique
60
- trader_address"""
61
- # Create a local copy of the dataframe
62
- local_df = daa_df.copy()
63
-
64
- # Sort the dataframe by date
65
- local_df = local_df.sort_values(by="tx_date").set_index("tx_date")
66
-
67
- # Group by market_creator and calculate rolling average of unique trader_address
68
- rolling_avg = (
69
- local_df.resample("D")["trader_address"]
70
- .nunique()
71
- .rolling(window=7)
72
- .mean()
73
- .reset_index()
74
- )
75
- rolling_avg.rename(columns={"trader_address": "rolling_avg_traders"}, inplace=True)
76
- return rolling_avg
77
-
78
-
79
  def plot_rolling_average_roi(
80
  traders_data: pd.DataFrame, pearl_agents: pd.DataFrame
81
  ) -> gr.Plot:
@@ -96,20 +44,21 @@ def plot_rolling_average_roi(
96
 
97
  # Get the 2-week rolling average of ROI
98
  rolling_avg_roi_df = get_twoweeks_rolling_average_roi(filtered_traders_data)
 
99
  print(rolling_avg_roi_df.head())
100
 
101
- fig = px.bar(
102
  rolling_avg_roi_df,
103
  x="creation_date",
104
  y="rolling_avg_roi",
105
  )
106
- fig.update_layout(
107
  xaxis_title="Week",
108
  yaxis_title="2-week rolling average of ROI at the trader level",
109
  )
110
 
111
  return gr.Plot(
112
- value=fig,
113
  )
114
 
115
 
@@ -124,20 +73,14 @@ def get_twoweeks_rolling_average_roi(traders_data: pd.DataFrame) -> pd.DataFrame
124
  local_df["creation_date"] = pd.to_datetime(local_df["creation_date"])
125
 
126
  # Aggregate ROI at the date level
127
- daily_avg = local_df.groupby("creation_date")["roi"].mean().reset_index()
128
 
129
  # Set the datetime index
130
- daily_avg = daily_avg.set_index("creation_date")
131
 
132
  # Now resample and rolling average
133
- weekly_avg = daily_avg.resample("W").mean()
134
- rolling_avg = weekly_avg.rolling(window=2).mean().reset_index()
135
-
136
- # Rename columns
137
- rolling_avg.rename(
138
- columns={"roi": "rolling_avg_roi", "date": "creation_date"},
139
- inplace=True,
140
- )
141
 
142
  return rolling_avg
143
 
@@ -164,9 +107,6 @@ def get_weekly_average_roi(traders_data: pd.DataFrame) -> pd.DataFrame:
164
  # Remove NaN values
165
  weekly_avg = weekly_avg.dropna(subset=["roi"])
166
 
167
- # Rename columns for clarity
168
- weekly_avg = weekly_avg.rename(columns={"roi": "weekly_avg_roi"})
169
-
170
  return weekly_avg
171
 
172
 
@@ -176,12 +116,12 @@ def plot_weekly_average_roi(
176
  """Function to plot the weekly average of ROI for pearl agents"""
177
  # Get the list of unique addresses from the daa_pearl_df
178
  unique_addresses = pearl_agents["safe_address"].unique()
179
-
180
  # Filter the weekly_roi_df to include only those addresses
181
  filtered_traders_data = traders_data[
182
  traders_data["trader_address"].isin(unique_addresses)
183
  ].copy()
184
-
185
  # create the date column
186
  filtered_traders_data["creation_timestamp"] = pd.to_datetime(
187
  filtered_traders_data["creation_timestamp"]
@@ -192,6 +132,7 @@ def plot_weekly_average_roi(
192
 
193
  # Get the weekly average ROI
194
  weekly_avg_roi_df = get_weekly_average_roi(filtered_traders_data)
 
195
  print(weekly_avg_roi_df.head())
196
 
197
  # Update the plot to use the correct column name 'weekly_avg_roi'
 
24
  )
25
 
26
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  def plot_rolling_average_roi(
28
  traders_data: pd.DataFrame, pearl_agents: pd.DataFrame
29
  ) -> gr.Plot:
 
44
 
45
  # Get the 2-week rolling average of ROI
46
  rolling_avg_roi_df = get_twoweeks_rolling_average_roi(filtered_traders_data)
47
+ print("Rolling average ROI DataFrame:")
48
  print(rolling_avg_roi_df.head())
49
 
50
+ fig2 = px.bar(
51
  rolling_avg_roi_df,
52
  x="creation_date",
53
  y="rolling_avg_roi",
54
  )
55
+ fig2.update_layout(
56
  xaxis_title="Week",
57
  yaxis_title="2-week rolling average of ROI at the trader level",
58
  )
59
 
60
  return gr.Plot(
61
+ value=fig2,
62
  )
63
 
64
 
 
73
  local_df["creation_date"] = pd.to_datetime(local_df["creation_date"])
74
 
75
  # Aggregate ROI at the date level
76
+ daily_avg2 = local_df.groupby("creation_date")["roi"].mean().reset_index()
77
 
78
  # Set the datetime index
79
+ daily_avg2 = daily_avg2.set_index("creation_date")
80
 
81
  # Now resample and rolling average
82
+ weekly_avg2 = daily_avg2.resample("W").mean()
83
+ rolling_avg = weekly_avg2.rolling(window=2).mean().reset_index()
 
 
 
 
 
 
84
 
85
  return rolling_avg
86
 
 
107
  # Remove NaN values
108
  weekly_avg = weekly_avg.dropna(subset=["roi"])
109
 
 
 
 
110
  return weekly_avg
111
 
112
 
 
116
  """Function to plot the weekly average of ROI for pearl agents"""
117
  # Get the list of unique addresses from the daa_pearl_df
118
  unique_addresses = pearl_agents["safe_address"].unique()
119
+
120
  # Filter the weekly_roi_df to include only those addresses
121
  filtered_traders_data = traders_data[
122
  traders_data["trader_address"].isin(unique_addresses)
123
  ].copy()
124
+
125
  # create the date column
126
  filtered_traders_data["creation_timestamp"] = pd.to_datetime(
127
  filtered_traders_data["creation_timestamp"]
 
132
 
133
  # Get the weekly average ROI
134
  weekly_avg_roi_df = get_weekly_average_roi(filtered_traders_data)
135
+ print("Weekly average ROI DataFrame:")
136
  print(weekly_avg_roi_df.head())
137
 
138
  # Update the plot to use the correct column name 'weekly_avg_roi'