3morrrrr commited on
Commit
ab6bd39
·
verified ·
1 Parent(s): 02315b3

Update helper.py

Browse files
Files changed (1) hide show
  1. helper.py +6 -37
helper.py CHANGED
@@ -11,24 +11,12 @@ import pandas as pd
11
  from sklearn.preprocessing import MinMaxScaler
12
 
13
  def assign_main_accounts(creators_file, chatter_files):
14
- """
15
- Process creators and chatter files to assign main accounts to chatters and prepare data for scheduling.
16
- Returns the updated chatter files, processed creator file, and combined assignments for preview.
17
- """
18
- # Load and process creators data
19
  creators = pd.read_excel(creators_file)
20
  creators.columns = creators.columns.str.strip()
21
 
22
- # Ensure required columns
23
- required_columns = ["Creator", "Total earnings", "Subscription", "Total active fans"]
24
- missing_columns = [col for col in required_columns if col not in creators.columns]
25
- if missing_columns:
26
- raise KeyError(f"Missing required columns in creators file: {missing_columns}")
27
-
28
- # Normalize and rank creators
29
  creators["Total earnings"] = creators["Total earnings"].replace("[\$,]", "", regex=True).astype(float)
30
  creators["Subscription"] = creators["Subscription"].replace("[\$,]", "", regex=True).astype(float)
31
- creators["Total active fans"] = creators["Total active fans"].fillna(0).astype(int)
32
 
33
  scaler = MinMaxScaler()
34
  creators[["Earnings_Normalized", "Subscriptions_Normalized"]] = scaler.fit_transform(
@@ -39,39 +27,20 @@ def assign_main_accounts(creators_file, chatter_files):
39
  0.7 * creators["Earnings_Normalized"] + 0.3 * creators["Subscriptions_Normalized"]
40
  ) * creators["Penalty Factor"]
41
  creators["Rank"] = creators["Score"].rank(ascending=False)
42
-
43
  creators = creators.sort_values(by="Rank").reset_index(drop=True)
44
 
45
- # Save processed creator file
46
- processed_creator_file = creators[["Creator", "Total active fans"]].rename(
47
- columns={"Total active fans": "ActiveFans"}
48
- )
49
 
50
- # Assign main accounts to chatters
51
  updated_chatter_files = []
52
- combined_assignments = []
53
 
54
  for idx, chatter_file in enumerate(chatter_files):
55
- shift_name = ["Overnight", "Day", "Prime"][idx]
56
  chatters = pd.read_excel(chatter_file)
57
- chatters.columns = chatters.columns.str.strip()
58
-
59
- if "Final Rating" not in chatters.columns:
60
- raise KeyError(f"'Final Rating' column is missing in {chatter_file}")
61
-
62
- chatters = chatters.sort_values(by="Final Rating", ascending=False).reset_index(drop=True)
63
- num_chatters = len(chatters)
64
- top_creators = creators.iloc[:num_chatters]
65
- chatters["Main Account"] = top_creators["Creator"].values
66
- chatters["Shift"] = shift_name
67
-
68
  updated_chatter_files.append(chatters)
69
- combined_assignments.append(chatters)
70
-
71
- # Combine all assignments for display
72
- combined_assignments_df = pd.concat(combined_assignments, ignore_index=True)
73
 
74
- return updated_chatter_files, processed_creator_file, combined_assignments_df
75
 
76
 
77
 
 
11
  from sklearn.preprocessing import MinMaxScaler
12
 
13
  def assign_main_accounts(creators_file, chatter_files):
 
 
 
 
 
14
  creators = pd.read_excel(creators_file)
15
  creators.columns = creators.columns.str.strip()
16
 
 
 
 
 
 
 
 
17
  creators["Total earnings"] = creators["Total earnings"].replace("[\$,]", "", regex=True).astype(float)
18
  creators["Subscription"] = creators["Subscription"].replace("[\$,]", "", regex=True).astype(float)
19
+ creators["ActiveFans"] = pd.to_numeric(creators["ActiveFans"], errors="coerce").fillna(0)
20
 
21
  scaler = MinMaxScaler()
22
  creators[["Earnings_Normalized", "Subscriptions_Normalized"]] = scaler.fit_transform(
 
27
  0.7 * creators["Earnings_Normalized"] + 0.3 * creators["Subscriptions_Normalized"]
28
  ) * creators["Penalty Factor"]
29
  creators["Rank"] = creators["Score"].rank(ascending=False)
 
30
  creators = creators.sort_values(by="Rank").reset_index(drop=True)
31
 
32
+ processed_creator_file = creators[["Creator", "ActiveFans"]]
 
 
 
33
 
 
34
  updated_chatter_files = []
35
+ assignments = []
36
 
37
  for idx, chatter_file in enumerate(chatter_files):
 
38
  chatters = pd.read_excel(chatter_file)
39
+ chatters["Main Account"] = creators.iloc[:len(chatters)]["Creator"].values
 
 
 
 
 
 
 
 
 
 
40
  updated_chatter_files.append(chatters)
41
+ assignments.append(chatters)
 
 
 
42
 
43
+ return updated_chatter_files, processed_creator_file, pd.concat(assignments)
44
 
45
 
46